ardu uno ce la fà? quanto è potente??

ciao a tutti , dopo alcune settimane a studiare arduino ho finito di "fritzingare" il mio progetto, ma prima di procedere con l'acquisto del materiale ho il dubbio se riesce un solo arduino uno a fare tutte queste cose o se devo dividere il carico fra due ardu...

brevemente: si tratta del classico lettore di consumi di un'impianto fotovoltaico, dei consumi di casa, invio dei dati a 2 display e sul web.

le cose che deve fare sono:

  • lettura analogica tramite sensore di corrente, della produzione del fotovoltaico, fare la media fra 1000 letture analogiche e printare il risultato ogni uno o due secondi
  • identico come sopra ma dal contatore enel per calcolare acquisto o vendita di energia, media di 1000 letture e print.
  • sensore per calcolare la tensione che mi serve per avere più precisione nel calcolo dei due punti precedenti.
  • creazione di una serie di dati , tipo energia prodotta , consumata etc etc con i riferimenti orari ( rtc preso online ) ed invio di questi su un server web tramite lan rj45.
  • gestire due display con gli stessi dati uno pilotato in digitale ed uno in seriale

riesce il processore come potenza a fare tutto questo secondo voi ??

grazie e buon anno a tutti

Si, senza dubbio ma, a che ti servono 1000 o 500 letture analogiche al secondo su due canali ? voglio dire per controllare la produzione di corrente ti basta campionare a 20-30Hz che comunque sono 20-30 letture al secondo, io non salirei oltre questa velocità anche perchè dubito che sensori tipo quelli della serie ACS o similari a costi non esorbitanti possano avere un refresh rate superiore appunto a 20-30Hz...
Per gli schermi bisogna valutare, io ne metterei due seriali o due via I2C, la comunicazione tramite rj45 la fai attraverso una Eth shield o cosa ? se si tra memoria usata e i pin usati arduino uno forse ti diventa stretto...
questa cosa non la capisco però, che vuoi dire ?- sensore per calcolare la tensione che mi serve per avere più precisione nel calcolo dei due punti precedenti.

ciaoo :slight_smile:

1000 letture al secondo significa leggere (1000/50Hz) 20 volte lo stesso contenuto e come dice ratto a che ti serve?

Se vuoi avere la media devi estendere il tempo fino ad esempio 10 secondi, cioè campioni ogni 10 secondi per 6 volte sommi i valori ottenuti e dividi per 6 e hai la media di consumo in quel minuto.

Comunque non c'è la fa, almeno la uno e la MEGA no, la DUE ha potenza da vendere.

Ciao.

Ciao Mauro :slight_smile:
Perchè dici che non ce la fà ? secondo me ottimizzando un poco il codice e risicando con funzioni furbe forse ce la fa', oppure mettendo due micro in parallelo, uno fa le letture e gestisce gli LCD mentre l'altro gestisce le comunicazioni e la parte relativa alla matematica che gli serve....

rispondo alle vostre domande ma scusatemi se non sono precisissimo perchè per me è tutto un mondo nuovo questo.:

  1. i due sensori che utilizzerei per misurare la corrente sono il asc714 http://www.robot-italy.com/it/1187-acs714-current-sensor-carrier-30-to-30a.html
  2. ho detto un cosa sbagliata quando parlavo di 1000 letture AL SECONDO, in realta era la media di mille letture senza riferimenti temporali. Questo lo vedo fare in altri progetti simili dove però usano le pinze amperometriche e dicono che avendo la lettura su un segnale alternato non si sà dove avviene la lettura di preciso e quindi facendo la media di una numero alto di letture esempio 1000 - 3000 si ottiene un valore abbastanza veritiero.
  3. mi chiedete perchè la lettura della tensione , serve per calcolare i watt precisi . qui un'esempio di come realizzare questa lettura http://openenergymonitor.org/emon/buildingblocks/measuring-voltage-with-an-acac-power-adapter
  4. vorrei fare tutto con un arduino ethernet puro senza shiel
  5. userò 2 lcd rgb i2c cosi risparmio pin e non dovrei aver problemi di pin

quindi ricapitolando:

  • lettura volt
  • lettura ampere fotovoltaico
  • calcolo watt prodotti
  • lettura ampere enel
  • calcolo watt consumati
  • calcolo watt venduti
  • printo sui 2 display lsd rgb un pò dei numeri appena calcolati con un refresh ogni 3 sec e qualche cambio colore lcd in base a determinati valori
  • leggo rtc sul web
  • preparo dati dei vari watt prodotti/venduti/consumati in un file tipo csv da spedite su un server
  • invio questi dati ogni 5 minuti ? al server su internet
    ( in alternativa agli ultimi due passaggi posso far salvare i dati su sd e poi far fare una rischiesta dal server web ogni 5 minuti di inviare questi dati)

ci riuscirà la arduino ethernet come potenza ?

ratto93:
Ciao Mauro :slight_smile:
Perchè dici che non ce la fà ? secondo me ottimizzando un poco il codice e risicando con funzioni furbe forse ce la fa', oppure mettendo due micro in parallelo, uno fa le letture e gestisce gli LCD mentre l'altro gestisce le comunicazioni e la parte relativa alla matematica che gli serve....

scusa cosa intendi con " due micro in parallelo" ?? dividere il tutto su due arduini ?

mflash:

ratto93:
Ciao Mauro :slight_smile:
Perchè dici che non ce la fà ? secondo me ottimizzando un poco il codice e risicando con funzioni furbe forse ce la fa', oppure mettendo due micro in parallelo, uno fa le letture e gestisce gli LCD mentre l'altro gestisce le comunicazioni e la parte relativa alla matematica che gli serve....

scusa cosa intendi con " due micro in parallelo" ?? dividere il tutto su due arduini ?

Esattamente, solo che si usa un Arduino e un micro identico a quello dell'arduino programmato con lo stesso linguaggio ma montato in una scheda custom fatta da te..

quello che dici è possibile, l'unico problema è che non c'è memoria per 1000 letture su una UNO, e forse nemmeno sulla MEGA. Ma puoi ovviare salvando i dati su SD, o facendo una "media" che non tenga conto di tutti i valori.

Per esempio se fai

lettura = (lettura + nuovaLettura)/2

stai facendo una media pesata, dando a tutte le letture precedenti un peso uguale pari al peso dell'ultima lettura, quindi una lettura abbastanza sensibile alle variazioni (notare che la prima lettura non va divisa per due, oppure si inizializza lettura = valoreMedioAtteso)

oppure potresti fare una cosa così :slight_smile:

lettura=lettura+nuovaLettura;
Nlettura=Nlettuda+1;
media=lettura/Nlettura;

giusto, ma attento agli overflow!

per ovviare a questo problema si potrebbe fare una cosa così

void setup()
{
int N2lettura=0;
}

void loop()
{
if(Nlettura<10000) // ho messo un numero a caso nn ho idea di quando vada in overflow
{
lettura=lettura+nuovaLettura;
Nlettura=Nlettuda+1;
media=lettura/Nlettura;
}
if(Nlettura>=10000) // ho messo un numero a caso nn ho idea di quando vada in overflow
{
lettura=lettura+nuovaLettura;
N2lettura=N2lettura+1;
media=lettura/(Nlettura+N2lettura);
}
}

può essere una soluzione?

Ciao mflash,
sto cercando di fare una cosa simile alla tua (controllo produzione/consumi fotovoltaico) e sono alla scelta dei sensori di corrente.
Ho letto che tu, dopo qualche ricerca, sei indirizzato verso gli ACS714. Quello che mi chiedo è: quale è la lunghezza massima tra il Sensore e Arduino?

Inoltre mi permetto di portare alla tua attenzione Questo Topic. In pratica ho risolto il problema della Energia Generata leggendola direttamente dall'Inverter via LAN. Può esserti utile?

Alessio.

visto che l'unico possibile problema e' il discorso delle letture necessarie a fare la media, io andrei verso un discorso hw invece che sw, o trovi un sensore che ti da gia' di per se in uscita un segnale continuo che e' rappresentante di cio' che appare in ingresso, oppure lo rendi continuo tu a livello hw.
In questo modo il micro non avra' veramente nulla da fare e potra' eseguire in tranquillita' tutti gli altri compiti

secondo me siete fuori strada.
l'unità di misura dell'energia elettrica è il wattora. per misurarlo devi fare la sommatoria di ( VxI ) / la frequenza di campionamento (50-100Hz) a questo punto hai i watt al secondo (e la potenza istantanea).
ogni 3600 watt secondo hai 1 watt ora.
ora questo valore lo sommi e lo salvi ogni tot minuti a seconda di quanti valori vuoi avere sul grafico.

quello che dici è possibile, l'unico problema è che non c'è memoria per 1000 letture su una UNO, e forse nemmeno sulla MEGA. Ma puoi ovviare salvando i dati su SD, o facendo una "media" che non tenga conto di tutti i valori.

Non credo sia la scelta migliore usare una sd per fare il campionamento

Io per fare il monitoraggio dell 'impianto fotovoltaico avevo pensato di leggere in uscita dall'inverter la potenza con uno di quei misuratori che inviano un impulso ogni 0,5w e che hanno lo schermino dove conteggiano i kW/h
invece per verificarne l'efficienza pensavo di montare un pannellino pilota con caratteristiche note in termini di W e di V (5V nello specifico) e di monitorarlo con l'Arduino.... chi mi sa dire come potrei fare a determinarne la potenza effettivamente prodotta? Io pensavo di leggere i V prodotti sfruttando un pin analogico e con un sensore tipo http://www.robot-italy.com/it/1187-acs714-current-sensor-carrier-30-to-30a.html di determinarne la corrente per poter poi determinare i W e confrontarli con i W nominali, chiaramente pensavo di inserire un carico per permettere il corretto funzionamento del pannello!

Che ne pensate? Idee in merito?? Proposte???

Vorrei correggerti solo per evitare che altri che leggono possano confondersi.

L'energia si misura in Wh e non in W/h, essendo il multiplo kWh.

Il misuratore digitale a cui alludi emette 2 impulsi ogni Wh.
In teoria, contando il numero di impulsi ricevuti in un ora, si riesce a determinare la potenza (W), ma non è molto significativa, a meno che il carico non sia puramente resistivo (cosFi = 1).

Infatti, se il carico ha una componente induttiva o capacitiva, la potenza è determinata dal prodotto P = V x I x cosFi ove cosFi (un numero variabile tra (0 e 1) indica lo sfasamento temporale tra Tensione e Corrente (se minore di 1 siamo in presenza di sfasamento).

Buona la scelta del sensore ACS714 per la misura della corrente, a patto di misurare il valore medio raggiunto dopo almeno 50 cicli a 50Hz (20ms x 50 = 1 s): questo significa che dovresti campionare per ridurre il rumore almeno 4 volte (meglio 8) ogni ciclo, quindi ogni 5ms (o 2.5ms).

Io ho preso un cosino da 20A, ad effetto hall, per misurare la corrente di casa, ma poi guardandolo mi sono chiesto, ma potro' mai mettere in serie alla fase del contatore enel quest'aggeggio ?
secondo voi e' corretto far passare tutto il carico di un appartamento attraverso due miseri pin di un integrato ? :astonished:

Leggendo il datasheet, viene detto che quel chippino ha la pista in rame capace di reggere fino a 5 volte la massima corrente per cui è tarato.

cyberhs:
Vorrei correggerti solo per evitare che altri che leggono possano confondersi.

L'energia si misura in Wh e non in W/h, essendo il multiplo kWh.

Il misuratore digitale a cui alludi emette 2 impulsi ogni Wh.
In teoria, contando il numero di impulsi ricevuti in un ora, si riesce a determinare la potenza (W), ma non è molto significativa, a meno che il carico non sia puramente resistivo (cosFi = 1).

Non capisco: la potenza attiva misurata dal contatore Enel é la potenza attiva. Perché non dovrebbe essere significativa quando il cosFi é diverso da 1 ?

cyberhs:
Infatti, se il carico ha una componente induttiva o capacitiva, la potenza è determinata dal prodotto P = V x I x cosFi ove cosFi (un numero variabile tra (0 e 1) indica lo sfasamento temporale tra Tensione e Corrente (se minore di 1 siamo in presenza di sfasamento).

Buona la scelta del sensore ACS714 per la misura della corrente, a patto di misurare il valore medio raggiunto dopo almeno 50 cicli a 50Hz (20ms x 50 = 1 s): questo significa che dovresti campionare per ridurre il rumore almeno 4 volte (meglio 8) ogni ciclo, quindi ogni 5ms (o 2.5ms).

Visto che la corrente é alternata si deve trovare il valore massimo della corrente per calcolarne il valore effettivo. 4 o 8 campionamenti in un semionda sono troppo poche per pensare di determinare il valore massimo.
Per calcolare la potenza attiva di un generatore di elettricitá o un utenza devi misurare la corrente, la tensione e il sfasamento tra i due.

Ciao Uwe