Chiedo aiuto per primo progetto

Buongiorno a tutti,
sono al mio primissimo progetto personale (dopo aver completato i progetti dello starter kit) e avrei bisogno di sottoporvelo per verificare che non ci siano lacune.

Il tema è la compensazione delle contrazioni termiche di un telescopio per avere sempre una messa a fuoco perfetta.

Ho previsto

  • microcontrollore Arduino Nano
  • sensore di temperatura DHT22/AM2302
  • motore stepper Nema17 con driver A4988
  • display LCD 16x2
  • telecomando IR con relativo ricevitore
  • memoria EEPROM supplementare da 256kB

collegati come nell’immagine (la EEPROM non è presente nel disegno)

Alimentazione 12V da batteria auto (che nel frattempo alimenta anche tutto il resto dell’attrezzatura, quindi voltaggio al ribasso)

Il display mi serve per gestire un veloce menu e vedere quale funzione ho attiva al momento. ho già approntato uno switch…case con 4 funzioni:

  • Manuale: freccia su/giù del telecomando muovono il motore avanti/indietro, pulsanti da 1 a 4 modificano la velocità del motore
  • Calibra: fatta la messa a fuoco si preme OK su questa funzione e viene memorizzato la posizione del motore abbinata alla temperatura. il dato viene salvato nella EEPROM aggiuntiva in modo cumulativo a oltranza in modo da fare una media che renda più precisa la stima del movimento necessario a compensare la differenza di temperatura rilevata (chiaramente non si dovrà più muovere il focheggiatore a mano)
  • Set timer: per evitare che la correzione venga fatta durante una foto. Sarà un semplice delay variabile in base al tempo settato
  • Automatico: in base ai dati delle calibrazioni e alla temperatura attuale si muove automaticamente il motore per correggere la dilatazione/contrazione termica
  • Reset dati: in caso di movimenti manuali che renderebbero inutile tutta la mole di dati presi

Chiedo le vostre impressioni e consigli, soprattutto in merito all’hardware scelto (il DHT22 è affidabile? Ho scartato l’idea del TMP36 perché a ogni riaccensione, o anche solo dopo un paio d’ore, mostra valori completamente sballati, anche di 10-20°C. ES. stanza con riscaldamento impostato a 19°C, legge 34-37°C)

Vorrei anche sapere se è possibile gestire digitalmente il contrasto dell’LCD? (nello starter kit fa usare un potenziometro, ma preferirei fare in modo che non si debba mai toccare l’aggeggino)

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

koten90:
Ho scartato l'idea del TMP36 perché a ogni riaccensione, o anche solo dopo un paio d'ore, mostra valori completamente sballati, anche di 10-20°C. ES. stanza con riscaldamento impostato a 19°C, legge 34-37°C

Strano, ma hai usato AREF e fatto una media delle letture?

No era collegato alla porta A0 e leggevo i valori in tempo reale con Serial.print e lcd.print.
Per fare quello che mi serve il sensore deve leggere la temperatura in tempo reale che scende durante la notte. Al massimo, potrebbe avere senso fare delle medie degli ultimi 5-10sec ma i valori che correvano nella finestra del monitor seriale erano molto stabili.

koten90:
No era collegato alla porta A0 e leggevo i valori in tempo reale con Serial.print e lcd.print.

Allora mi pare possibile una bassa precisione, per qualche consiglio leggi QUI dove spiegano l'uso di AREF per migliorare la precisione col TMP36.

Anche se, diciamo, mi aspettavo una variabilità di 5-6 gradi al massimo se dovuta all'imprecisione della misura (non solo del TMP ma anche ad esempio dal tipo e cablaggio dei cavi o contatti del sensore...)
Certo, ci sono comunque altre variabili, come la temperatura dell'aria impostata al termostato non è detto che sia quella che hai tu attorno al sensore, il quale può essere influenzato dalla tua presenza e/o delle tue mani o dalla vicinanza con un radiatore, o anche da un alimentatore o Arduino stesso se abbastanza vicino (anche per questo i sensori delle auto ad esempio hanno una ventolina per far circolare l'aria attorno al sensore).

Quindi se vuoi fare misure ti consiglierei o di procurarti un termometro digitale tenendolo accanto al sensore, oppure quantomeno andare più vicino possibile al termostato ed isolare il sensore da qualsiasi altra eventuale fonte di calore o interferenze non solo termiche ma anche elettriche.

koten90:
... Ho scartato l'idea del TMP36 perché a ogni riaccensione, o anche solo dopo un paio d'ore, mostra valori completamente sballati, anche di 10-20°C. ES. stanza con riscaldamento impostato a 19°C, legge 34-37°C)

Mai avuto problemi con i TMP36 ... se non di dover correggere, con una calibrazione, il valore che ritornano (del resto, se ben ricordo, hanno una "accuratezza" di +/- 2°).

Piuttosto ... dove li hai presi e quanto li hai pagati? ... perché c'è in giro tanta di quella "monnezza" che neanche immagini ...

Guglielmo

Il TMP36 è quello presente nello starter kit e la mia idea di cambiare è scaturita anche dai +/-2ºC di accuratezza. Ho bisogno di una precisione decisamente maggiore.
Mi è appena arrivato il DHT22 (su Amazon a 4,80€) che da datasheet dovrebbe avere +/-0,1ºC. In più comincio a studiarmelo per quando mi servirà anche il dato dell’umidità relativa nel prossimo progetto.
Ho già pensato anche io di isolare il sensore dal resto della circuiteria e visto che produrrò da me anche il case, avrò cura di separare con una parete il sensore. Per schermare i campi elettrici può servire un foglio di alluminio?

koten90:
Il TMP36 è quello presente nello starter kit e la mia idea di cambiare è scaturita anche dai +/-2ºC di accuratezza. Ho bisogno di una precisione decisamente maggiore.

Attento, stiamo parlado di +/- 2° di "accuratezza" (quindi , fatta la calibrazione, questo NON è più un problema). La "linearità" è di solo +/- 0.5° !

Il DHT probabilmente è un qualche decimo più lineare, ma ... "invecchia" a ritmi impressionanti ... ::slight_smile:

Guglielmo

koten90:
... compensazione delle contrazioni termiche di un telescopio per avere sempre una messa a fuoco perfetta ...

Ehm ... mi spiace fare l'avvocato del diavolo (soprattutto gratis :stuck_out_tongue: :D) ... ma temo che senza un "feedback" ottico, la messa a fuoco anche compensando non riuscirai mai ad averla perfetta ... voglio dire che le variabili sono troppe per potersi basare solo su tabelle di deformazione termica ed essere sicuri di avere sempre un risultato corretto ...

Presumendo che tu stia parlando di un riflettore da una certa dimensione e con telaio metallico (perche' in genere i piccoli telescopi a tubo in plastica non dovrebbero risentire delle variazioni termiche medie abbastanza da sfuocare) ... includi la deformazione dello specchio ? ... quella differenziale dell'armatura ? (in base alla differenza di temperatura fra un'estremo e l'altro del telaio) ... usi solo dei sensori termici oppure anche alcuni estensimetri ? (che sarebbe il sistema piu corretto, in effetti) ... le possibili variabili sono tante ... giusto per sapere, non per scoraggiarti, s'intende :wink:

Perché non usi la classica DS18B20, con uscita seriale 1-wire? I dati sono numerici, quindi non devi passare per l'analogico e già questo ti evita dei problemi inutili.

Non so molto di telescopi, ma se le sfocature sono strettamente correlate alla temperatura e ripetibili (cioè a una data temperatura è associabile una esatta regolazione del fuoco) dovresti memorizzare le varie temperature e le rispettive regolazioni del fuoco. Mi sembra che sia proprio ciò che vuoi fare tu: una sera, al calare della temperatura, ti metti lì e, ogni volta che perde il fuoco, lo regoli e memorizzi temperatura e regolazione. Non so che valori possa avere la regolazione, ma probabilmente ti basta l'area EEPROM dell'atmega328p.

Il mio telescopio è un rifrattore (lenti in vetro alla fluorite e intubazione in alluminio). La camera di ripresa permette la regolazione del fuoco a livelli finissimi (valori da considerare accettabili con stelle che illuminano max 2,5x2,5pixel) che permettono di avere sempre la migliore nitidezza possibile.
Quello che intendo fare, come dice datman, è basare il tutto su dati empirici realmente rilevati e avere un sistema autonomo che mi permetta anche di dormire di notte, visto che la correzione del fuoco è da fare circa ogni ora. Non mi interessa prevedere quale sará il punto di messa a fuoco, il sistema saprà già dove andare perché, memorizzando i dati, avrò l’associazione ΔT/Δs (al variare della temperatura, varia la posizione)