WEB SERVER CORRENTE-TENSIONE

Buonasera a tutti,
sono Franco un radioamatore e da molti anni, gestisco una postazione con un ripetitore ATV a quota 2000 mt a scopo hobbistico e non di lucro.

Dopo interessanti esperienze con arduino usato per controllare le funzioni sequenziali del ripetitore per ATV, un arduino per la sovraimpressione video
della temperatura della postazione a 2000 mt di quota, ora vorrei affrontare un’altra piccola per voi, ma grande per me, sfida.

Vorrei controllare la temperatura, la corrente e la tensione delle nostre batterie, ho utilizzato Ethernet shield e lo skecth degli esempi “web server”
A banco funziona tutto ma purtroppo non riesco, e qui emergono le mie Ardu-lacune, a modificare il programma in modo tale di non avere un gruppo completo di lettura di tutti gli ingressi, quindi ogniuno con il suo nome, ma sopratutto poter effettuare i conteggi in modo da avere una lettura completa e diretta dei valori rilevati.
Io credo che il problena sia la scomposizione di:

analogChannel = 0; analogChannel < 5; analogChannel++)

Poi riesco a salvarmi sui conteggi delle formule per sensore corrente partitore resistivo,e temperatura
ma avere gli ingressi da 0 a 5 chiamati con il loro singolo nome e per ogniuno un conteggio diverso di conversione.
Ho cercato molto sul web prima di riapprodare qui e non ho trovato nulla o perlomeno nulla che non si intrippi (termine altamente tecnologio)
Ringrazio fin d’ora chi mi potrà aiutare

IZ3GGL Franco

Venezia

e si, il problema è proprio qui

analogChannel = 0; analogChannel < 5; analogChannel++)

se lo sai perchè lo chiedi, il programma lo hai tu, a noi ci dai mezza riga … cosa potremmo mai dirti?

Ok scusate se non sono stato troppo chiaro, avevo specificato l’utilizzo dello skecth del Web server, ma non ho detto che lo si trova nella sezione Esempi-Ethernet-Web server nell’ide.

allego copia:

Grazie e saluti
Franco

WebServer30.11.ino (3.02 KB)

Ok, se vuoi delle singole scritte con ciascuno il suo nome indicativo dovrai eliminare il ciclo FOR
cioè si elimina questo

for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("
");
          }

e andrai a mettere il singolo ingresso

client.print("teperatura batteria ");
client.print(analogRead(0));
client.println("
");
client.print("teperatura batteria 2 ");
client.print(analogRead(1));
client.println("
");
....
....

Il for serviva per risparmiare ram, si consiglia la funzione F() se le linee del client.print diventano troppo numerose
es: client.print(F("teperatura batteria 2 "));
da usare solo dove non si devono stampare variabili

Grazie Pablos delle preziose informazioni,cambiato righe funziona tutto!

Ho provato ad inserire una formula relative alla lettura diretta della corrente con un sensore che converte la corrente in tensione ACS712 e sembra funzioni.
Non riesco per ad andare oltre per gli altri ingressi, devo sempre gestirli con la funz float?

Allego lo skecth
Grazie
Franco

web_monte_frascone.ino (3.25 KB)

Se hai un float si, continui a gestirli così, cosa intendi col "non riesco ad andare oltre"?

Buonasera a tutti,
dopo la seconda sera di tentativi riapprodo nel Forum e cerco di approffitare della vostra disponibilità a conoscenza di Arduino.
Seguendo i consiglii da voi ricevuti ho settato i vari singoli ingressi analogici con un loro nome e valore, tutto ok per la sezione della misura della corrente facendo leggere e convertendo i valori
ho corretto il valore di correzzione e la lettura risulta corretta.
Adesso e il turno della misura della tensione, realizzato partitore il cui valore della formula e di 0.3388
in pratica( r2 diviso r1 +r2)
non riesco a far scrivere un valore di tensione, ho trovato uno stratagemma dividendo per 75 il valore analogico letto ma il valore mi salta da 13 a 12 a 11 senza considerare i decimali.
Non sarà una soluzione corretta ma a parte i decimali mi sembra funzioni
Se qualcuno desse un occhio allo skecth e mi formisse qualche consiglio ne sarei grato.
Allego lo scketch, (per cortesia non ridete)

Franco

web_monte_frascone.ino (3.7 KB)

non ho seguito tutto ma …
?? ma quel pezzo di codice mica fa una media, legge 1000 volte e memorizza solo l’ultimo:

float  average3 = 0.00;
for(int i = 0; i < 1000; i++) 
{   average3 = (analogRead(A2)/75); 
    delay(1);
}

Grazie della risposta ma posso dirti che è la formula che ho utilizzato per la lettura del sensore della corrente che per evitare le fluttuazioni del valore in uscita ( 0/5 volt) che vedendo il data sheet sono molte, mi avevano cosigliato cosi.

Errore?Consiglio?

Franco

Buonasera a tutti,
finalmente dopo un po di studio e tanta pazienza e grazie alla preziona collaborazione di questo forum ho terminato il progetto web server preso dagli esempi dell’ide.Ho adattato il progetto alla mie esigenze di leggere via web due correnti carica scarica batteria una, assorbimento carico, tensione batterie e temperatura all’interno del box che ricordo si trova a 2000 mt di quota.
Grazie ancora per la vostra preziosa collaborazione, posto lo scketch per chi vorrà utilizzarlo per qualche altra applicazione.
Franco

web_server1.1.ino (3.92 KB)

Una mia curiosità, ma non si potrebbe mettere una password. Poi come fai ad arrivare a 2000 m di altezza ?

Sarà una postazione di ripetitori tv, di solito ci sono le strade che ti ci portano.

Scusate, mi intendevo come fa il client a leggere il web-server a 2000 m. Penso che si voglia leggere le informazioni comodamente da casa, per questo lo scopo del server in montagna.

Buonasera, si tratta di una postazione radioamatoriale per trasmissioni video ATV ameteur television, esattamente si trova sulla piu alta cima delle prealpi venete a quota 1910 mt. Li abbiamo portato una rete via radio da un'altra postazione a 50 km di distanza e cosi inviamo i dati a casa tramite internet. Purtroppo non e raggiungibile tutto l'anno, quando inizia a nevicare la strada non e più percorribile se non a piedi o con motoslitta. Negli altri periodi e percorribile anche se sterrata Grazie

Franco IZ3GGL

Capisco, quindi vicino all' arduino c'è il router/trasmettitore.