LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

Nella costruzione, siamo costantemente confrontati con misurazioni della temperatura: la temperatura deve essere controllata durante la cottura del clinker durante il processo di produzione del cemento, il rispetto delle condizioni di temperatura è importante durante la cottura a vapore del calcestruzzo e del calcestruzzo monolitico, senza garantire il controllo termico è impossibile preparare correttamente l'asfalto miscela di calcestruzzo, quando si testa il calcestruzzo per la resistenza al gelo è anche importante resistere al regime di temperatura. Per risolvere ciascuno di questi problemi sono necessari termometri diversi: per diversi intervalli di temperatura, con diversi sensori (temperatura media, temperatura superficiale), termometro a canale singolo, termometro a due canali, termometro multicanale, con e senza modalità di registrazione.

Qualsiasi compito costruttivo legato al controllo termico può essere risolto utilizzando i dispositivi Interpribor. Ciò è possibile grazie ad un'ampia gamma di sensori collegati ai dispositivi. L'inclusione dell'uno o dell'altro sensore nella confezione del dispositivo di monitoraggio termico consentirà all'acquirente di acquistare un dispositivo destinato a scopi specifici.

Tipi di sensori di temperatura

Tra i sensori per i dispositivi di controllo della temperatura troviamo:

  • Una serie di sensori di temperatura superficiale: TZ-P e TZ-PO. Il sensore TZ-P è progettato per misurare la temperatura di superfici curve. Si distingue per le elevate prestazioni grazie alla sua esecuzione su termocoppia fredda con errore relativo di ±2,0%. La struttura del sensore TZ-PO fornisce una precisione di ±0,5% (nel campo di temperatura –50...+100 C) quando si misura la temperatura superficiale di corpi con conduttività termica relativamente bassa (vetro, cemento, ecc.) . TZ-PO è realizzato sulla base di un elemento in platino a bassa inerzia Pt1000.
  • I sensori di temperatura ambiente hanno anche diverse versioni: TZ-S, DTS-1.0 e DTS-1.4. Il sensore TZ-S è realizzato su una termocoppia XK, la sua caratteristica distintivaÈ aumento delle prestazioni e un'ampia gamma di temperature misurate con precisione di misurazione ±1,0%. I sensori DTS-1.0 e 1.4 sono sensori di temperatura digitali con una precisione di misurazione aumentata di ±0,5% in un intervallo di temperatura ristretto di –10…+85 C e un intervallo di –55…+125 C con una precisione di ±2,0%. Il sensore DTS-1.4 offre prestazioni più elevate grazie alle sue caratteristiche di progettazione.

25/11/2012 Attenzione! Il programma del termostato è stato aggiornato alla versione v2b_1.

Presento alla vostra attenzione il mio dispositivo: un termometro-termostato a due canali. Ho realizzato un termostato su richiesta dei parenti per mantenere una temperatura costante in una scatola con le patate. Se negli altri anni non ce n'era bisogno, lo scorso inverno ha dimostrato che è necessario.

Ho usato DS18B20 come sensori. Il microcontrollore (ATmega8) funziona da un oscillatore master interno da 4 MHz (inoltre, la scheda ha la possibilità di installare il quarzo). A causa degli artefatti della visualizzazione dinamica (si è notato un ammiccamento nel momento in cui il sensore è stato interrogato), abbiamo dovuto abbandonare la lettura della ROM del sensore e il calcolo del CRC. Tuttavia, il dispositivo utilizza due sensori collegati a pin diversi dell'MK. Uno misura la temperatura dell'aria esterna, l'altro nella scatola. Il controllo della temperatura è organizzato solo per il sensore n. 2 (scatola).



Il termometro-termostato è diviso in due alloggiamenti. In uno c'è una parte di controllo e un display, nell'altro c'è un alimentatore e un relè di controllo del carico. La scheda di controllo prevede l'installazione di uno stabilizzatore di potenza con condensatori per alimentare il microcontrollore, ma poiché l'alimentazione arriva a 5 v non è saldata (nel caso di alimentazione da alimentatori con tensione in uscita maggiore di 5 v, deve essere saldato). La custodia del controllo è dotata di una staffa che consente l'installazione sia su guida DIN che semplicemente con viti autofilettanti a parete.



Connettori del dispositivo:
— i segnali di controllo vengono trasmessi tramite il connettore USB per accendere il relè;
— i sensori di temperatura sono collegati tramite connettori audio.

Poiché il programma occupa il 66% della memoria, si è deciso di creare un secondo canale di controllo, per ogni evenienza, da PB5. Non esiste un secondo canale in questo programma e non so ancora se sarà necessario, ma sul PP il secondo canale è completamente organizzato, solo il relè non è installato.












Descrizione del funzionamento del termostato.
Il dispositivo ha tre pulsanti per il controllo. Pulsante (OK), (Su), (Giù). Quando l'alimentazione è accesa, la temperatura del sensore n. 1 (aria esterna) viene visualizzata sull'indicatore.




Per visualizzare la temperatura nel riquadro premere il pulsante (OK). Contemporaneamente si accende il LED blu HL1 (vedi schema), indicando che sul display viene visualizzata la temperatura del sensore n°2.




Premendo nuovamente il pulsante (OK), viene visualizzata la temperatura del sensore n. 1 e il LED HL1 si spegne.

Per entrare nella modalità di impostazione della soglia superiore per lo spegnimento e della soglia inferiore per il riscaldamento. È necessario premere entrambi i pulsanti (Su), (Dn) e mantenerli premuti per almeno 5 secondi. Trascorso questo tempo il dispositivo passerà alla modalità di visualizzazione della soglia superiore per lo spegnimento del riscaldamento. Ora è necessario rilasciare i pulsanti. Sul display verrà visualizzato il valore della soglia e in corrispondenza della quarta cifra si illuminerà il segmento superiore, indicando che si tratta della soglia superiore.




Per modificare l'impostazione della soglia, è necessario premere il pulsante (OK). Il valore sul display inizierà a lampeggiare, indicando che il setpoint è pronto per essere modificato. L'impostazione può essere modificata da +1 a +10 gradi, con incrementi di 1 grado. Il valore viene aumentato utilizzando il pulsante (Su) e diminuito utilizzando il pulsante (Dn). Per salvare l'impostazione o semplicemente passare alla soglia successiva è necessario premere il pulsante (OK). Il display mostrerà la soglia inferiore e la quarta cifra avrà un segmento inferiore, ad indicare che questa è la soglia inferiore.




Per modificare l'impostazione della soglia è necessario premere nuovamente il pulsante (OK). Il valore sul display inizierà a lampeggiare, indicando che il setpoint è pronto per essere modificato. Dopo aver impostato la soglia di commutazione, premere il pulsante (OK) per salvare e uscire dalla modalità di impostazione delle soglie del termostato. Le impostazioni vengono salvate nella memoria non volatile del MK e non vengono ripristinate quando si interrompe l'alimentazione.

Per comodità di monitoraggio della temperatura nel box, è stato introdotto un ulteriore algoritmo di allarme per la bassa temperatura nel box. Cos'è veramente? Quando sul display viene visualizzata la temperatura del sensore n°1, e la temperatura nel box diminuisce (ad esempio a causa di un malfunzionamento del riscaldatore) e raggiunge un valore inferiore a +1 gradi, il LED HL1 inizia a lampeggiare segnalando una bassa temperatura in la scatola. Se la temperatura all'interno del box supera i +2 gradi il LED smetterà di lampeggiare.

Algoritmo di malfunzionamento del sensore. Se il sensore non funziona correttamente, sul display viene visualizzato Err No.. Il numero indica un codice di guasto da 1 a 3. Il numero 1 significa nessun livello alto, 2 significa nessun sensore, 3 significa che il livello alto non è stato ripristinato.




Quando il display mostra la temperatura del sensore n. 1 e si verifica un malfunzionamento del sensore n. 2, il LED HL1 inizia a lampeggiare, indicando un malfunzionamento. Pertanto, con la temperatura del sensore n. 1 visualizzata sul display, non vi sfuggirà un malfunzionamento del termostato. Naturalmente, se il sensore n. 2 non funziona correttamente, il riscaldamento si spegne.

Ancora qualche punto. Il termostato viene spento se l'impostazione della soglia inferiore è uguale all'impostazione della soglia superiore oppure se l'impostazione della soglia inferiore è superiore all'impostazione della soglia superiore. Se il sensore n. 1 o n. 2 è difettoso, nel menu delle impostazioni non vedrai il valore impostato, sebbene il setpoint possa essere modificato, ma alla cieca. Questo viene fatto in modo che l'utente non si preoccupi di modificare le impostazioni quando i sensori sono difettosi.


File per assemblare il dispositivo.

(Visitato 19.717 volte, 1 visite oggi)

Sezione: Tag: ,

Posta navigazione

084-Termometro-termostato a doppio canale su ATmega8.: 86 commenti

  1. fizik_89

    Ciao SVN.
    Ho intenzione di assemblare un dispositivo secondo il tuo progetto. Sei curioso di sapere che riscaldatore hai utilizzato per il thermobox? A giudicare dall'alimentatore, produce 12V 0,5A. Quindi il riscaldatore è solo 6 W? Mi sembra che una potenza di 6 W non fornirà le condizioni termiche richieste. Oppure ho capito qualcosa di sbagliato?)

  2. Autore del messaggio SVN
  3. alex52

    Ho assemblato il termostato e ha funzionato subito. Solo che mostra una temperatura strana: meno 38,6 (entrambi i sensori) in una stanza calda, dove ci sono circa 20 gradi. I sensori (DC18B20) rispondono ai cambiamenti di temperatura. Se riscaldato con un saldatore, la temperatura sale a meno 21 gradi. Qual è il problema?

  4. Autore del messaggio SVN
  5. alex52

    Quando il dispositivo è stato alimentato, il display ha mostrato un valore di 85,0 * C, quindi dopo circa 2 secondi: -36,3 * C. Poi ho scambiato i sensori: ancora una volta è stato visualizzato il valore 85,0 * C, e poi dopo circa 2 secondi: -36,5 * C. Sfortunatamente ero malato e non ho potuto acquistare nuovi sensori. Uno di questi giorni lo farò e scriverò dei risultati. Grazie per l'aiuto.

  6. Autore del messaggio SVN

    :
    Quando il dispositivo è stato alimentato, il display ha mostrato un valore di 85,0 * C, quindi dopo circa 2 secondi: -36,3 * C. Poi ho scambiato i sensori: ancora una volta è stato visualizzato il valore 85,0 * C, e poi dopo circa 2 secondi: -36,5 * C. Sfortunatamente ero malato e non ho potuto acquistare nuovi sensori. Uno di questi giorni lo farò e scriverò dei risultati. Grazie per l'aiuto.

    Quando viene data alimentazione al sensore, il sensore scrive nei registri un valore pari a 85.0, che è quello che legge il dispositivo. Ciò conferma il corretto ricalcolo dei valori letti. Sembra quindi che ti sia imbattuto in asset illiquidi, il che è molto raro. Prova ad acquistare i sensori da un altro negozio. Ma questo effetto può verificarsi se al sensore non arrivano +5 V. Controllare che l'alimentazione del sensore corrisponda.

  7. alex52

    Sì, avevi ragione, i sensori si sono rivelati scadenti. Il nuovo sensore mostra valori normali. Mi sembrava improbabile che due sensori fossero ugualmente scadenti. Probabilmente è possibile analizzare il funzionamento di questi sensori e correggere programmaticamente le letture. Lo proverò nel tempo libero. Grazie.

  8. alex52

    A proposito, forse questo è DS18S20? Loro hanno tipo diverso rappresentazioni della temperatura. Per il DS18S20, la temperatura è rappresentata come valore in complemento a due a 9 bit e per il DS18B20 come un numero binario con una larghezza da 9 a 12 bit. Per DS18S20 e DS18B20 escluso numero di serie la ROM contiene il codice della famiglia (10h per DS18S20 e 28h per DS18B20). Non hai un lettore di codici famiglia o un programma per funzionare con il DS18S20?

  9. Autore del messaggio SVN

    :
    A proposito, forse questo è DS18S20? Hanno un diverso tipo di rappresentazione della temperatura. Per il DS18S20, la temperatura è rappresentata come valore in complemento a due a 9 bit e per il DS18B20 come un numero binario con una larghezza da 9 a 12 bit. Per DS18S20 e DS18B20, oltre al numero di serie, la ROM contiene un codice famiglia (10h per DS18S20 e 28h per DS18B20). Non hai un lettore di codici famiglia o un programma per funzionare con il DS18S20?

    Non ho un programma del genere. Ma se questi fossero DS18S20, non vedresti il ​​valore +85*C all'inizio del programma. Questo è sicuramente un matrimonio. È meglio restituire il difetto al negozio.

  10. alex52
  11. pino24

    Ma non sarebbe più bello se utilizzassi un display a due righe??

  12. Autore del messaggio SVN

    :
    Ma non sarebbe più bello se utilizzassi un display a due righe??

    È così che piace a chiunque. Per una visualizzazione a due righe il programma dovrà essere completamente riscritto.

  13. Vladimir1619

    Ciao. Grazie all'autore e a tutti coloro che hanno partecipato allo sviluppo di questo dispositivo.
    L'ho assemblato, ma si è verificato un problema che non riesco più a risolvere (mi mancano conoscenza ed esperienza).
    Il dispositivo funziona, ma gli indicatori mostrano il contrario;
    Tutte le virgole tranne la seconda sono illuminate e i numeri sono incomprensibili,
    disabilitando tutti i sensori DS18B20, scrive E.9.9.2..
    Ho assemblato l'indicatore da solo, ma è sicuramente collegato correttamente e funziona con altri dispositivi.
    Si prega di fornire consigli se possibile. Grazie.

  14. Skifco

    Mille grazie agli sviluppatori! Volevo chiarire questa questione. Sto realizzando più o meno lo stesso dispositivo, ma di natura più medica. Vorrei sapere se è possibile aiutarvi a realizzare diagrammi temporali per il vostro dispositivo e vorrei sapere quali pacchetti e come trasmettono i sensori, cosa è necessario inviare loro per interrogarli e qual è la frequenza di polling ?
    Grazie in anticipo!

Termometro a due canali basato su microcontrollore ATmega8 e sensori DS18B20

Caratteristiche del termometro:
— 2 canali per misurare la temperatura attuale, i sensori sono collegati a diversi bit della porta del microcontrollore
— ciascun canale consente di misurare la temperatura attuale nell'intervallo da +125 ºС a -55 ºС con una risoluzione fino a 0,1 ºС
— errore di misurazione della temperatura ±0,5 ºС
- rilevamento e indicazione possibili errori nel lavorare con i sensori di temperatura
— intervallo di misurazione della temperatura attuale — 2 secondi

Cari lettori del sito!
Se sei interessato specificamente alla progettazione di un termometro a due canali, allora posso consigliarti di utilizzare il firmware per la progettazione per eseguire il flashing del microcontrollore (ecco un codice più ottimizzato e "combinato")

Oggi, proseguendo lo sviluppo del progetto su ATmega8, esamineremo il design di “ Termometro a doppio canale con sensori di temperatura DS18B20«.
Il design portato alla tua attenzione è semplice, contiene un minimo di parti e non richiede configurazione.

(Vorrei avvertirvi subito che il tempo non si ferma e dopo la pubblicazione dell'articolo è stato finalizzato il programma del termometro - sono state apportate tre modifiche: nel lavoro viene utilizzato solo un timer T0, la frequenza dell'orologio interno di il microcontrollore è stato portato a 8 MHz, è stato cambiato l'algoritmo per la determinazione dei decimi di temperatura (ora i decimi non si calcolano ma assumono un valore a seconda del numero scritto nel nibble basso del registro LS-bite. Nuovo programma pubblicato di seguito descritto in questo articolo))

La temperatura attuale è indicata su due indicatori LED a sette segmenti a tre cifre, con:
— temperatura inferiore a +100 ºС — l'indicazione viene effettuata su tre cifre con una precisione di decimi
— temperatura superiore a +99,9 ºС — l'indicazione viene effettuata su tre cifre con una precisione di un grado
- temperatura superiore a -10 ºС - l'indicazione viene eseguita: la prima cifra è il segno "-", la seconda e la terza cifra sono unità e decine di gradi
- temperatura inferiore a -9,9 ºС - l'indicazione viene eseguita: la prima cifra è il segno "-", la seconda e la terza cifra sono decine e unità di gradi
— gli zeri non significativi non vengono visualizzati
Se si verificano possibili errori durante l'utilizzo dei sensori di temperatura, sugli indicatori viene visualizzato quanto segue:
— non è presente il livello alto sulla linea DQ del sensore — “Er1”
— nessun impulso di presenza dal sensore — “Er2”
- dopo l'impulso di presenza la linea DQ non è tornata allo stato logico “1” - “Er3”
L'indicazione degli errori consente di identificare e correggere tempestivamente i guasti.

Schema di un termometro a due canali basato sui sensori ATmega8 e DS18B20:


Parti utilizzate nella progettazione del termometro

Microcontrollore ATmega8-16PU con una frequenza di clock interna di 4 MHz.
Indicatori— indicatori LED a sette segmenti a tre cifre con un circuito di commutazione a "catodo comune".
Transistor— Strutture “NPN” BC547 (i transistor possono essere sostituiti con qualsiasi altra struttura NPN a bassa potenza).
Resistenze costanti- di qualsiasi tipo, potenza 0,25 W, prossima ai valori indicati nello schema.
Sensori— sensori di temperatura DS18B20. La risoluzione è impostata "per impostazione predefinita" - 12 bit, che corrisponde ad una risoluzione di misurazione della temperatura di 0,0625 ºС.

I sensori comunicano con il microcontrollore tramite un bus 1-Wire, che consente, in linea di principio, di “collocare” i sensori sulla stessa linea. Nel progetto presentato, i sensori sono collegati a diversi bit della porta “PB” (6 e 7, rispettivamente) per tre motivi:
— se è necessario separare i sensori direzioni diverse semplifica l'installazione delle linee di collegamento
- il programma è semplificato - non è necessario definire codici di sensori a 64 bit e di conseguenza il tempo impiegato per comunicare con i sensori è ridotto (che è importante in questo progetto quando si visualizzano dinamicamente 6 cifre di indicatori)
- e così l'intero porto resta inutilizzato
Il controllo di ridondanza ciclica (CRC) non è definito: in questo progetto non vedo alcun motivo di verificare la corretta trasmissione dei risultati di conversione della temperatura da parte dei sensori.
A grandi distanze tra i sensori e l'unità principale, potrebbe essere necessario selezionare resistenze di pull-up (da 1 a 5 kOhm). Potrebbe essere meglio collegare questi resistori direttamente ai sensori.

La struttura è alimentata da una sorgente stabilizzata a 5 volt. È possibile utilizzare apparecchiature non necessarie come fonte di energia Caricabatterie da cellulare con una tensione di uscita di 5 volt

Funzionamento del termometro

Il programma del termometro a due canali è stato scritto nell'ambiente Algorithm Builder


Il programma utilizza due timer del microcontrollore ATmega8: T0 e T1, che sono configurati per chiamare gli interrupt quando i contatori vanno in overflow.
Quando il dispositivo è acceso, preimpostazioni porte del microcontrollore coinvolte nell'operazione, inserendo i dati necessari nelle variabili e abilitando gli interrupt, quindi il programma entra in un ciclo infinito. In futuro, tutte le operazioni del dispositivo verranno eseguite mediante interruzioni dai timer T0 e T1.
In cui:
Quando si elabora un'interruzione dal timer T0:
— indicazione dinamica dei valori attuali della temperatura attiva Indicatori LED
— lettura alternata dei dati provenienti dai sensori di temperatura
— calcolo e conversione della temperatura per la visualizzazione sugli indicatori
Quando si elabora un'interruzione dal timer T1,
— inviando alternativamente un comando per convertire la temperatura da parte dei sensori (con una frequenza di 1 secondo)
Divisori di frequenza del timer alla frequenza interna del microcontrollore di 4 MHz sono configurati:
- T1 - SK/64 - la chiamata di interruzione avviene quasi dopo 1 secondo
— T0 — l'impostazione della frequenza del divisore per il timer deve essere SK o SK/8 — 512 mc o 64 mc — non critica (ma non inferiore a 2 ms). Ciò è dovuto al fatto che il tempo di elaborazione dell'interruzione dal timer T1 è pari al tempo impiegato dal sensore per convertire la temperatura (secondo il datasheet, con una risoluzione di 12 bit, il tempo massimo di conversione è 750 ms, in in realtà è molto più veloce)

Per più aggiornamenti frequenti temperatura attualeÈ possibile impostare l'oscillatore interno del microcontrollore su una frequenza di 8 MHz e impostare i divisori di frequenza del timer:
— T0 — SK/64 (la frequenza delle chiamate in interruzione è di circa 2 ms)
- T1 - SK/64 (la frequenza delle chiamate in interruzione è di circa 0,5 secondi)
che ti consentirà di aggiornare la temperatura attuale dai sensori ogni secondo. Comandi più frequenti per convertire la temperatura in sensori possono portare al loro riscaldamento e, di conseguenza, ad un aumento dell'errore di misurazione.

Se sei “amico” del programma “Algorithm Builder”. quindi può essere configurato per aggiornare continuamente la temperatura corrente, immediatamente dopo che la temperatura è stata convertita dal sensore. Per fare ciò è necessario fare quanto segue:
1. Disabilitare il timer T1
2. Disabilitare la routine di elaborazione dell'interruzione dal timer T1 (non è necessario disabilitarla)
3. Includere un pezzo di “codice grigio” in un “loop infinito”
È possibile che per evitare lo sfarfallio degli indicatori, la frequenza dell'orologio del microcontrollore dovrà essere aumentata a 8 MHz
4. Impostare il divisore di frequenza del timer T0 su una frequenza di interruzione di almeno 2 ms

Se gli indicatori continuano a lampeggiare, prova a "giocare" con i comandi NOP all'inizio e alla fine del ciclo infinito: aggiungi o rimuovi. Per esempio:


Una parte del codice del programma è disabilitata; ha lo scopo di ridurre la risoluzione dei sensori. Per modificare la risoluzione del convertitore di temperatura è necessario:
1. Includere parte del codice su pagina iniziale e una subroutine per modificare la risoluzione nella scheda “DS18B20”:

2. Abilitare le costanti evidenziate in rosso nella scheda “DS18B20”:

Scopo delle costanti:
- Read_Scratchpad - Comando funzione DS18B20 ($4E). Questo comando consente al dispositivo di controllo di scrivere 3 byte di dati nella memoria DS18B20. Il primo byte di dati viene scritto nel registro (TH), il secondo byte viene scritto nel registro (TL), il terzo byte viene scritto nel registro di configurazione
— TH e TL — registri di allarme limite superiore e inferiore, costante b#01010101 — corrisponde a 85 ºС (come impostato nei sensori per impostazione predefinita)
bit11— registro di configurazione, scrivendo la costante b#01011111 si modificherà la risoluzione da 12 a 11 bit, dimezzando il tempo di conversione della temperatura dei sensori. Per risoluzione a 10 bit - b#00111111, per risoluzione a 9 bit - b#00011111
3. Modificare il numero 625 nella subroutine di calcolo della temperatura sulla scheda “DS18B20” con il numero di risoluzione della misurazione della temperatura per la risoluzione corrispondente (125, 25, 5) e i numeri 1000 e 999, rispettivamente (per 125 - 1000 e 999, per 25 - 100 e 99, per 5 - 10 e 9)

Se avete domande scrivete, vi risponderò.

Allegati all'articolo:

(50,6 KiB, 26.984 visite)

Ecco un progetto per un termometro a due canali. Può misurare temperature nell'intervallo da -50,0 a +99,9 gradi. Il dispositivo è stato progettato per misurare la temperatura in ambienti interni ed esterni, ma ha anche molti altri usi. Con una leggera modifica al programma l'apparecchio può essere utilizzato anche come termostato. Il termometro è costruito sul popolare e molto diffuso sensore e microcontrollore ATtiny2313, che ha notevolmente semplificato lo sviluppo e consentito una significativa riduzione delle dimensioni. Il termometro è stato compresso in modo che quasi tutti gli elementi si trovino sotto il display a tre cifre da 15 mm. Quasi tutti gli elementi sono SMD. Naturalmente si potrebbero utilizzare componenti TH, ma nell'era della miniaturizzazione è meglio fare un ulteriore passo avanti per creare un sistema con le dimensioni più piccole. Il termometro può misurare la temperatura in due punti, utilizzando due sensori collegati su bus indipendenti. La modifica della temperatura visualizzata viene effettuata utilizzando due pulsanti.

Principio di funzionamento

Diagramma schematico:

Il cuore del dispositivo è il microcontrollore U1 (ATTINY2313), che è sincronizzato da un oscillatore interno da 8 MHz, senza divisore di frequenza. L'assenza di quarzo ha permesso di ridurre le dimensioni del dispositivo e anche di liberare due gambe MK, il pulsante S2 è ora collegato a una di esse. Il microcontrollore riceve letture di temperatura da due sensori, converte i dati in un formato adatto per la visualizzazione sul display ed elabora la pressione dei pulsanti S1 e S2. Il condensatore C1 (100nF), situato accanto al microcontrollore, è un condensatore di filtraggio. I condensatori C2 (10 µF) e C3 (10 µF) sono necessari per il corretto funzionamento di U3 (78L05).La semplicità del circuito è dovuta al sensore di temperatura utilizzato. Questo è un termometro digitale a 12 bit che può funzionare da -55 a +125 gradi. Il tempo di elaborazione (conversione) della temperatura non dura più di 750 ms. La comunicazione con il microcontrollore avviene tramite un'interfaccia 1-Wire. L'indicatore della temperatura è un display LED a tre cifre (AT5636BMR-B) con connessioni a segmenti interni, adattato per la visualizzazione dinamica. I resistori R4-R11 limitano la corrente a Display a LED fino a 10-12 mA (per segmento). Tuttavia, la corrente media è inferiore a causa dell'uso della visualizzazione dinamica. Gli anodi sono controllati da tre popolari transistor T1 - T3 (BC857). Le correnti di base sono limitate dai resistori R1-R3 (3,3 kOhm). Un componente importante è il connettore GP1, attraverso il quale sono collegati i sensori e l'uscita di controllo (nel caso di un termostato).

Produzione

Il dispositivo è realizzato sulla base scheda a circuito stampato. La scheda è unilaterale e quasi tutti gli elementi sono SMD. L'eccezione è il display, i pulsanti di controllo e i connettori. L'assemblaggio non è difficile, ma richiede molta abilità durante la saldatura SMD. Lo svantaggio della scheda è la mancanza di un connettore di programmazione, quindi se è necessario apportare modifiche al programma sarà necessario saldare i fili del programmatore direttamente alla scheda. Ma puoi installare un connettore in miniatura sulla scheda.

Pinatura del connettore

I pin 1 e 2 di questo connettore sono alimentazione e terra. Il pin 3 è destinato al collegamento dell'indicazione delle temperature negative (catodo al connettore, anodo a +5V tramite una resistenza da 200 - 300 Ohm). I sensori sono collegati tramite un cavo a tre fili. Il primo sensore è collegato al pin 5 e il secondo sensore è collegato al pin 6. Il dispositivo è alimentato da 7-12 V tramite uno stabilizzatore 78L05.

Programmazione

Il programma è scritto in un noto ambiente di programmazione. Occupa circa il 70% della memoria del microcontrollore e può essere compilato con successo nella versione demo di BASCOM"a. Il programma non è complicato. Di seguito sono riportati alcuni elementi di codice

Gestore delle interruzioni Temporizzatore0:

Przerwanie0: Timer0 = 131 Imposta F4ms Incr Dziel(1) Se Dziel(1) = 25 Allora Dziel(1) = 0 Imposta F100ms Incr Dziel(2) Se Dziel(2) = 10 Allora Dziel(2) = 0 Imposta F1s End Se Fine Se Ritorna

Ciclo principale:

Esegui Se F4ms = 1 Quindi Reset F4ms "co 4ms Wysw = T Gosub Wyswietl_zmierz End If If F100ms = 1 Quindi Reset F100ms "co 100ms Se Pind.2 = 0 Allora Kanal = 1 Se Pina.0 = 0 Allora Kanal = 0 End If Fine del ciclo

Procedura di controllo del display:

Wyswietl_zmierz: Incr Mux Se Mux = 5 Allora Mux = 0 Portd.3 = Not Minus For I = Da 1 a 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I Se W(3) = 40 Allora W(3) = 255 "wygaszenie zera wiodącego Seleziona Case Mux Case 0: Portb = W(3) Reset Portd.6 Case 1: Set Portd.6 Portb = W(2) And &B11011111 Reset Portd.5 Caso 2: Imposta Portd.5 Portb = W(1) Reset Portd.4 Caso 3: Imposta Portd.4 Portb = 255 Gosub Temp "Caso 4: End Select Return Tablea: Data 40 , 235 , 50 , 162 , 225, 164, 36, 234, 32, 160

Procedura di misurazione della temperatura:

Temp: Se F1s = 1 Resettare F1s 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &HBE , 1 , Pind , Kanal T = 1wread(2 , Pind , Kanal): Meno = T.15 T = Abs(t ) T = T * 10 T = T / 16 1wreset Pind , Canale 1wwrite &HCC , 1 , Pind , Canale 1wwrite &H44 , 1 , Pind , Canale End If Return

I fusibili del microcontrollore devono essere impostati per funzionare con l'oscillatore RC interno da 8 MHz

Fotografie

Elenco dei radioelementi

Designazione Tipo Denominazione Quantità NotaNegozioIl mio blocco note
U1 MK AVR 8 bit

ATtiny2313

1 SO20 Al blocco note
U3 Regolatore lineare

L78L05

1 SOT89 Al blocco note
T1-T3 Transistor bipolare

BC857

3 Al blocco note
C1 Condensatore100 nF1 Al blocco note
C2, C3 Condensatore elettrolitico10 µF2 Tantalio SMD 3216A Al blocco note
R1-R3 Resistore

3,3 kOhm

3 SMD0805 Al blocco note
R4-R11 Resistore

330 Ohm

8 SMD0805 Al blocco note
R12, R13 Resistore

4,7 kOhm

2 SMD0805 Al blocco note
W1 Indicatore a sette segmentiAT5636BMR1

Ho deciso di realizzare un termometro a due canali, ma non normale, ma con un sensore wireless per la strada. L’idea non è certo nuova; termometri industriali simili sono già sul mercato. Poiché avevo esperienza nel collegare moduli radio a un microcontrollore, ho iniziato a sviluppare la mia versione di un termometro wireless.

Per misurare la temperatura ho utilizzato i comuni sensori DS18B20 e per visualizzare le letture ho utilizzato quello non meno diffuso. Ho discusso dei moduli radio e dell'algoritmo di trasmissione dei dati in precedenza in un articolo su

Di seguito è riportato uno schema di un sensore wireless su un microcontrollore PIC12F675.

Dopo aver collegato l'alimentazione, il microcontrollore legge il valore della temperatura dal sensore BK1 e invia questi dati al trasmettitore radio A1, dopodiché entra in modalità sospensione. Il microcontrollore si sveglia tramite un interrupt, generato da una variazione di livello sulla linea GP0. A questa linea è collegato un circuito RC sugli elementi R2 e C4, che svolge la funzione di un timer. Quando si esce dalla modalità di sospensione, la linea GP0 viene impostata su un livello logico basso, scaricando così il condensatore C4. Prima di andare in “sonno”, la linea viene adattata all'ingresso, il condensatore inizia a caricarsi tramite il resistore R4 e quando viene raggiunta la tensione di soglia (circa 1,2 V), il microcontrollore viene interrotto e risvegliato. Con i valori di R2 e C4 indicati nel diagramma, il periodo di risveglio è di circa 5 minuti. Installando il ponticello JP1 è possibile ridurre il periodo a 5,5 secondi. Selezionando un condensatore e un resistore, è possibile regolare il periodo di tempo desiderato, ma è necessario tenere conto della corrente di carica del condensatore in termini di consumo energetico.

Il valore della temperatura viene trasmesso sul canale radio sotto forma di un pacchetto di 3 byte, l'ultimo byte è la somma di controllo dei primi 2 byte. L'algoritmo di trasferimento dati che utilizzo, in linea di principio, ci consente di farne a meno somma di controllo, la probabilità di ricevere dati errati è bassa. La velocità di trasmissione è di 3,3 Kbps. Ogni volta che dopo aver misurato la temperatura vengono inviati 3 pacchetti di byte, la pausa tra i pacchetti è di 10 ms, ho utilizzato questa opzione di trasmissione per aumentare l'affidabilità della ricezione dei dati da parte del ricevitore. Ciò è dovuto al fatto che il lato ricevente interrompe la ricezione del segnale per 4-5 ms durante la misurazione della temperatura dal sensore interno (domestico).

Come alimentazione viene utilizzata una batteria 6F22 9V (“Krona”); il modulo trasmettitore radio A1 è alimentato direttamente dalla batteria. Per alimentare il microcontrollore, viene utilizzato uno stabilizzatore di tensione micro-power DA1 da 5 V (MCP1702); il consumo di corrente dello stabilizzatore è di soli 1-2 µA, la corrente di carico massima è fino a 250 mA. Lo stabilizzatore MCP1702 può essere sostituito con l'LP2950, ​​il cui consumo di corrente è maggiore ed è di 75 μA. Gli stabilizzatori di tensione convenzionali del tipo L78xx hanno un elevato consumo di corrente di diversi milliampere e quindi non sono adatti per apparecchiature alimentate a batteria. Il consumo di corrente del dispositivo in modalità sleep cambia nel tempo man mano che il condensatore C4 si carica; per i primi 2,5 minuti il ​​consumo è di 10 μA, per i successivi 2,5 minuti la corrente aumenta gradualmente fino all'uscita dalla modalità sleep. Questo fenomeno si verifica a causa della presenza di correnti di commutazione nel buffer di ingresso del microcontrollore.

Vorrei sottolineare che alle basse temperature la capacità della batteria diminuisce più velocemente, non tutti i tipi di batterie possono essere utilizzati in tali condizioni. Le batterie al litio hanno le migliori prestazioni a temperature negative, seguite dalle batterie Ni-Mh, le batterie alcaline occupano la terza posizione, le celle al sale non sono adatte a tali condizioni.

Di seguito è riportato uno schema di un termometro su un microcontrollore PIC16F628A.


Il display HG1, il sensore BK1 e il microcontrollore sono alimentati da una tensione di 3,3 V proveniente dallo stabilizzatore DA2. Questo valore è stato scelto per le caratteristiche del display, tensione massima la cui alimentazione è di 3,3 V, inoltre, non è necessario far corrispondere i livelli di tensione tra le linee di ingresso/uscita del display e il microcontrollore. Il modulo ricevitore A1 è alimentato dallo stabilizzatore DA1, con una tensione di uscita di 5 V. I resistori R6, R7 sono installati per abbinare i livelli di tensione.

Il microcontrollore DD1 legge il valore della temperatura dal sensore BK1 ogni 2 secondi, in parallelo riceve un segnale dal ricevitore e quando viene ricevuto un pacchetto di byte dal trasmettitore, il LED HL1 lampeggia. Nella parte superiore del display viene visualizzata la scritta "Home", sotto la quale viene visualizzato il valore della temperatura dal sensore interno (casa), sotto la scritta "Street" e viene visualizzata la temperatura ricevuta dal sensore wireless. Dopo aver ricevuto i dati sul canale radio, il microcontrollore avvia un timer che conta il tempo per controllare la ricezione dei dati. Se i dati non sono stati ricevuti durante il conto alla rovescia del timer, invece delle letture della temperatura, sul display vengono visualizzati i simboli del trattino “- – – – -”. Il tempo del conto alla rovescia può essere impostato da 1 a 15 minuti con incrementi di un minuto. Per fare ciò, prima di programmare il microcontrollore, è necessario scrivere un numero da 1 a 15 nella cella EEPROM con indirizzo 0x00. Il periodo predefinito è 7 minuti. In caso di malfunzionamento delle sonde BK1, per entrambi i dispositivi, al posto del corrispondente valore di temperatura viene visualizzato il messaggio “ERRORE”. Il pulsante SB1 controlla la retroilluminazione del display; per impostazione predefinita, la retroilluminazione è attiva. Il pulsante SB2 è progettato per regolare il contrasto del display, poiché può differire da un modello all'altro.

Per alimentare il dispositivo è adatta una fonte di alimentazione non stabilizzata con una tensione di uscita di 8-12 V. Entrambi i dispositivi sono alloggiati in custodie di plastica. L'antenna per moduli radio è realizzata sotto forma di un pezzo di filo unipolare lungo 17 cm (un quarto della lunghezza d'onda della frequenza portante).





LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam