Come configurare smartphone e PC. Portale informativo
  • casa
  • Ferro
  • Termometro-termostato a due canali su ATmega8. Termometro elettronico con sensore wireless Schema di un termometro a due canali su microcontrollore

Termometro-termostato a due canali su ATmega8. Termometro elettronico con sensore wireless Schema di un termometro a due canali su microcontrollore

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 sul display LED 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 di un 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

Tipo di attrezzatura: termometro, dispositivo di controllo termico, analizzatore di temperatura.

Produttore: Russia

Serie: TK-5

Modello: TK-5.11

Descrizione: Dispositivo per la misurazione della temperatura e dell'umidità relativa.

Garanzia per termometro a contatto TK-5.11: 24 mesi.

Termometro a contatto TK-5.11 è incluso nel registro statale degli strumenti di misura.

Scopo del dispositivo:

Il termometro a contatto digitale TK-5.11 è progettato per misurare la temperatura di vari ambienti e l'umidità relativa dell'aria mediante il contatto diretto della sonda con l'oggetto da misurare. Il termometro è un dispositivo a due canali che consente il funzionamento simultaneo di due sonde di misurazione. Sono costituiti da un'unità elettronica e da sonde sostituibili. Convertitori termoelettrici (TC) da NSKh a GOST R8.585. E i sensori di umidità capacitivi vengono utilizzati come elemento di misura nelle sonde di umidità relativa.

Funzionalità del termometro TK-5.11:

  • misurazione simultanea di umidità o temperatura tramite due canali in qualsiasi combinazione con un unico dispositivo;
  • misurazione della temperatura con una risoluzione di 0,1 °C;
  • misurazione dell'umidità con una risoluzione dello 0,1%;
  • possibilità di cambio sonda;
  • la possibilità di visualizzare la temperatura del sensore di compensazione della temperatura;
  • possibilità di visualizzare la temperatura dell'aria quando si utilizza una sonda di umidità;
  • memorizzazione dei valori di temperatura o umidità misurati nella memoria del dispositivo;
  • visualizzare il valore medio di temperatura o umidità per un numero specificato di misurazioni;
  • visualizzazione del valore massimo di temperatura o umidità (per un numero specificato di misurazioni);
  • visualizzazione del valore minimo di temperatura o umidità (per un numero specificato di misurazioni);
  • indicazione della tensione di alimentazione;
  • impostazione dei valori limite della temperatura o dell'umidità misurata;
  • indicazione sonora quando vengono raggiunti i livelli specificati di temperatura o umidità misurate;
  • spia;
  • spegnimento automatico del dispositivo dopo un tempo specificato;
  • salvataggio automatico allo spegnimento della tensione di alimentazione corrente, media, massima, minima, tempo di funzionamento rimanente del dispositivo al momento dello spegnimento.

Caratteristiche del termometro TK-5.11:

  • Misurazione dell'umidità.
  • Misurazione simultanea di temperatura e umidità.
  • Possibilità di lavorare con sonde sostituibili.
  • Doppio canale.
  • Alimentato da batterie AA standard.
  • Basso consumo energetico (almeno 350 ore di funzionamento con un set di batterie).

Caratteristiche tecniche del termometro TK-5.11:

Intervallo di temperature misurate, °C

100...+1800 (a seconda del tipo di sonda utilizzata)

Errore relativo, %

±0,5 + unità ml.dimensione

Prezzo unitario della cifra più bassa, °C

0,1

Numero di tipi di sonde sostitutive

Intervallo di misurazione dell'umidità relativa, %

3...97

Errore assoluto della misurazione dell'umidità relativa, %

Condizioni operative operative, °C

20...+50

Tensione di alimentazione, V

1,5x2

termini di utilizzo

temperatura ambiente, °C

20...+50

umidità relativa, %

non più dell'80% a T = 35 °C

pressione atmosferica, kPa

86 - 106

Ambito di applicazione del termometro TK-5.01:

  • Ingegneria termoelettrica e attrezzature tecniche dei servizi comunali. Audit energetico dei locali, controllo della temperatura della qualità dei servizi, adeguamento delle condizioni termiche nei locali caldaie.
  • Imprese industriali. Monitoraggio della temperatura delle parti durante la saldatura, nella metallurgia, regolazione delle condizioni di temperatura nella produzione di materiali da costruzione e prodotti in plastica, determinazione della temperatura degli stampi nell'industria del vetro e dei dolciumi.
  • Industria alimentare. Monitoraggio della temperatura dei processi tecnici di cottura, affumicatura, cottura al forno, produzione di lievito, malto, ecc.

Set di consegna del termometro TK-5.01P:

  • termometro TK-5.11
  • manuale di istruzioni e passaporto
  • certificato di verifica
  • borsa-astuccio

*Le specifiche e la fornitura dei dispositivi di controllo della temperatura sono soggette a modifiche da parte del produttore senza preavviso.

Ulteriori informazioni sui termometri potranno essere ottenute contattando i nostri specialisti telefonando ai numeri indicati sezione" contatti".

Forniamo dispositivi di misurazione della temperatura in tutta la Russia tramite corrieri e società di trasporto.

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 trasmissione dati che utilizzo, in linea di principio, ci consente di fare a meno del checksum; 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, la cui tensione di alimentazione massima è 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).





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 di possibili errori nel funzionamento con 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 modificato l'algoritmo per la determinazione dei decimi di temperatura (ora i decimi non vengono calcolati ma assumono un valore a seconda del numero scritto nel nibble basso del registro LS-bite. Il nuovo programma è pubblicato sotto il uno 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:
— qualora sia necessario distanziare i sensori in direzioni diverse, la posa delle linee di collegamento risulta semplificata
- 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. Come fonte di alimentazione, è possibile utilizzare un caricabatterie per cellulare non necessario 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 viene acceso, vengono effettuate le impostazioni preliminari per le porte del microcontrollore coinvolte nell'operazione, i dati necessari vengono inseriti nelle variabili e gli interrupt vengono abilitati, 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 sugli 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 aggiornare la temperatura attuale più frequentementeÈ 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 nella pagina principale e la subroutine per modificare la risoluzione nella scheda “DS18B20”:

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

Scopo delle costanti:
- Read_Scratchpad - Comando della 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)

Condividere a:

Recentemente, nella letteratura radioamatoriale sono state pubblicate molte descrizioni di vari progetti di microcontrollori, molto spesso della famiglia picmicro del microchip. Senza nulla togliere ai loro meriti, l'autore ha deciso di ricordare che esistono altri microcontrollori e ha realizzato il dispositivo proposto su uno di essi: AT89C2051 della famiglia MCS-51.

I microcontrollori della famiglia MC5-51 sono indubbi campioni tra quelli a otto bit sia nel numero di varietà che nel numero di aziende che producono le loro modifiche. Il primo rappresentante di questa famiglia, l'Intel 8051, fu rilasciato nel 1980. Per l'epoca si trattava di un prodotto molto complesso. Sul suo chip ci sono 128mila transistor, quattro volte di più che nel microprocessore Intel 8086, la base dei personal computer IBM PC. Un insieme di successo di dispositivi periferici, la capacità di lavorare con memoria di programma esterna e interna e un prezzo accessibile hanno assicurato un grande successo al microcontrollore Intel 8051. Un ruolo importante è stato svolto dalla politica aperta di Intel, che ha ampiamente distribuito le licenze per la produzione di dispositivi con il core 8051 tra le principali aziende mondiali di semiconduttori: Philips, Siemens, Intel, Atmel, Dallas. temico, ahi. amd, mhs, lg (winbond, sistemi di silicio e numerosi altri. Nell'URSS, i microcontrollori della famiglia msc-51 sono stati prodotti a Kiev (1816BE31. 1816BE51), Voronezh (1830BE31, 1830BE51), Minsk (1834BEZ1) e Novosibirsk (1850BE31).
Oggi, in tutto il mondo vengono prodotte più di 200 modifiche di microcontrollori di questa famiglia, che vanno dal semplice 20 pin al complesso 100 pin con ADC integrati, numerosi contatori timer, moltiplicatori hardware e 64 KB di memoria di programma su un singolo chip. Hanno tutti un sistema di comando comune e, dal punto di vista del programmatore, differiscono solo per il numero di registri specifici.
Quando l'autore ha avuto la necessità di proteggere il seminterrato del garage dal gelo monitorando e regolando a distanza la temperatura al suo interno, è stato scelto il microcontrollore at89c2051-24pi della famiglia menzionata per l'unità di misurazione della temperatura e il controllo del riscaldatore. A causa della mancanza di memoria dati non volatile per memorizzare informazioni sulla modalità impostata e sui valori di temperatura consentiti, è stato necessario utilizzare un chip di memoria non volatile separato at24c02-10pi Entrambi i chip sono progettati per funzionare in ambiente "industriale". ” range di temperatura ambiente (-40...+85°C).
La scelta è stata influenzata anche dal fatto che il costo totale di questi microcircuiti in una delle società commerciali di Mosca è la metà del prezzo del popolare microcontrollore pic16f84a-04i/p, che funziona nello stesso intervallo di temperature.

Principali caratteristiche tecniche
Tipo di sensore ds1820 o ds18b20
Temperatura misurata, °C
massimo+99.9
minimo- 55
Risoluzione di lettura, "C 0.1
Temperatura mantenuta C
massimo+99,9
minimo0
Consumo di tempo per inserire un nuovo valore della temperatura mantenuta, s.
non più15

Il diagramma mostrato in Fig. 1 è diventato quasi classico per i dispositivi a microcontrollore per questo scopo. Sul microcontrollore dd1 viene caricato il programma riportato in tabella.


La capacità di carico delle uscite del microcontrollore utilizzato è di 20 mA a basso livello di tensione su di essi e solo 50 μA ad alto livello di tensione, pertanto gli indicatori LED a sette elementi hg1 e hg2 sono selezionati con anodi comuni. Per ridurre il numero di pin del microcontrollore necessari per collegare gli indicatori, un display dinamico è organizzato a livello di codice con una durata di visualizzazione di ciascuna cifra di 3 ms. L'elemento g (segno meno) dell'indicatore hg1.1 si collega invece dell'elemento h (punto decimale) dell'indicatore hg1.2. quindi l'indicazione è in realtà a tre cifre, il suo ciclo completo dura 9 ms.
Spesso, durante l'acquisizione delle letture dei sensori, il calcolo delle temperature, la scrittura dei dati sull'eeprom e altre operazioni relativamente lunghe, la visualizzazione dinamica viene sospesa, il che viene percepito come indicatori tremolanti. Per eliminare questo spiacevole fenomeno, il programma è ottimizzato e funziona strettamente legato al tempo di visualizzazione.
I resistori r7-r14 limitano la corrente dei catodi degli indicatori hg1 e hg2. I transistor vt1, vt2, vt4 commutano i loro anodi, collegandosi a loro volta al positivo della fonte di alimentazione. I resistori r1, r2 limitano la corrente in caso di cortocircuiti accidentali dei fili diretti ai sensori VK1 e VK2, la cui lunghezza può raggiungere diversi metri. Poiché questi fili possono essere posati in prossimità di cavi di alimentazione, gli ingressi P3.2 del microcontrollore dd1 e SCL del chip di memoria ds1 sono protetti da possibili disturbi impulsivi mediante i diodi vd5 e vd6. È possibile utilizzare lo stesso pin del microcontrollore per la comunicazione dei sensori e la gestione della memoria perché queste funzioni non vengono mai eseguite contemporaneamente. Il resistore r4 è un carico per la linea di interfaccia a 1 filo, in base alla quale vengono scambiati comandi e dati tra il microcontrollore e il sensore.
Il resistore r3 mantiene un livello logico alto all'ingresso RZ.Z del microcontrollore quando nessuno dei pulsanti di controllo sb1-sb3 viene premuto. I diodi vd7-vd9 eliminano le conseguenze della pressione di più pulsanti contemporaneamente. Il transistor vt3, secondo i comandi del microcontrollore, accende e spegne il relè K1, che controlla il riscaldatore (o altro attuatore), e il LED di segnale hl1. Il diodo vd10 protegge il LED hl1 dalla tensione inversa.
Il LED hl2, collegato al posto dell'elemento h dell'indicatore hg2.2, funge da indicatore aggiuntivo. Ad esempio, si spegne quando le letture del sensore VK1 vengono visualizzate sull'indicatore e si accende quando vengono visualizzate le letture del sensore VK2.
L'alimentatore del dispositivo è costituito da un raddrizzatore su un ponte a diodi vd1 -vd4 e uno stabilizzatore di tensione +5 V da1.
I sensori di temperatura digitali VK1, VK2 - ds1820 o più moderni ds18s20 - sono inclusi nel registro statale degli strumenti di misura con il numero 3169-02 e, quindi, sono ufficialmente approvati per l'uso nella Federazione Russa. In alcuni casi questo è fondamentale. I sensori funzionano con una tensione di alimentazione di 3...5,5 V, consumando una corrente non superiore a 1 μA in modalità standby e durante la lettura della temperatura e la generazione del risultato (questi processi non richiedono più di 750 ms) - circa 1 mA . La risoluzione del risultato della misurazione (0,5 C) può essere ridotta leggendo i valori dei registri del sensore count_remain (il resto dopo il conteggio) e count_perc (il numero corrispondente a un grado Celsius). Conoscendoli e temp read (temperatura letta dal sensore in modo standard), il suo valore più accurato può essere calcolato utilizzando la formula:

Questa tecnica porta la discrezione della rappresentazione della temperatura a 0,1 °C.
A ciascuna istanza dei tipi di sensori di cui sopra viene assegnato un numero individuale univoco di 48 cifre binarie, memorizzato nella sua ROM interna. Ciò consente di collegare in parallelo un numero quasi illimitato di sensori, interagendo con ciascuno di essi separatamente.
Nel dispositivo descritto, il microcontrollore invia innanzitutto ai sensori il comando skip_rom (OSSN), ordinando loro di saltare la procedura di controllo del singolo numero. Successivamente, il comando convert_t (44H) avvia il processo di misurazione della temperatura in due sensori contemporaneamente. Dopo 750 ms necessari per completare questo processo, il microcontrollore emette il comando match_rom (55H), accompagnato dal numero individuale di uno dei sensori. Di conseguenza, solo questo sensore risponde al successivo comando read_scratchpad (ARIES) e segnala il risultato della misurazione al microcontrollore. Quindi (dopo il comando di configurazione iniziale) la sequenza dei comandi match_rom e read_scratchpad viene ripetuta per il secondo sensore.
Il microcontrollore elabora i dati ricevuti e li visualizza sull'indicatore. Per comodità, lo zero insignificante non viene visualizzato sull'indicatore e il segno meno, se necessario, è adiacente alla cifra più significativa a sinistra. Se la comunicazione con un sensore fallisce, il che potrebbe indicare un sensore difettoso o mancante, verrà visualizzato un messaggio "-dat" (in forma stilizzata) al posto del valore della temperatura.
Premendo brevemente il pulsante sb1, il dispositivo passa alla visualizzazione delle letture del sensore VK1 o VK2. Se si tiene premuto questo pulsante per più di 5 s, verrà attivata la modalità di emissione sequenziale automatica delle letture del sensore con un periodo di 5 s. Uscire da questa modalità premendo brevemente lo stesso pulsante.
Il termostato funziona sempre in base alle letture del sensore BK2. Premendo il pulsante sb2 sull'indicatore, i valori di temperatura vengono richiamati nella seguente sequenza: soglia inferiore (al raggiungimento della quale il riscaldatore viene acceso) - soglia superiore (al raggiungimento della quale il riscaldatore verrà acceso) spento) - corrente. La visualizzazione della temperatura di soglia superiore sull'indicatore è accompagnata dall'accensione del led hl2.
Modificare il valore della soglia di temperatura attualmente visualizzata sull'indicatore premendo i pulsanti sbi (aumento) e 5ВЗ (diminuzione). Il passo di cambiamento è 0,1 °C. Se si tiene premuto il pulsante corrispondente per più di 1 secondo, il valore inizierà ad aumentare o diminuire ad una velocità di 30 passi al secondo. Se entro 5 s non viene premuto alcun pulsante, l'apparecchio passa automaticamente alla visualizzazione della temperatura attuale. Per spegnere il termostato è sufficiente impostare le soglie di temperatura uguali oppure quella inferiore è maggiore di quella superiore.
Prima di iniziare a misurare la temperatura e a regolarla, il dispositivo deve "registrare" i sensori ad esso collegati - determinare e ricordare i loro numeri individuali. Per registrarsi, i sensori vengono collegati uno per uno (il secondo in questo momento deve essere spento).
Dopo aver acceso il dispositivo, premere il pulsante sb2 e mantenerlo premuto per almeno 5 s finché sull'indicatore non appare la scritta stilizzata “pr1”. indicando la disponibilità a registrare il sensore collegato come BK1. Se è necessario registrare il sensore come BK2, premere brevemente il pulsante sb2, che visualizzerà il messaggio "pr2" sull'indicatore. Con un'altra pressione si può riportare sull'indicatore la scritta “pr1” e così via.
La registrazione effettiva avviene dopo aver premuto il pulsante sb1. Se nove tentativi del microcontrollore di comunicare con il sensore, determinare e ricordare il suo numero individuale non hanno avuto successo, si concluderà che il sensore è difettoso o mancante e sull'indicatore verrà visualizzato il messaggio "-dat". Dopo aver effettuato con successo la registrazione, l'indicatore visualizzerà il valore della temperatura misurata dal sensore registrato. La procedura descritta deve essere seguita anche in caso di sostituzione di uno o entrambi i sensori. I dati sui sensori e sulle modalità di visualizzazione sono memorizzati nel chip di memoria non volatile ds1.


Il termometro-termostato è assemblato su un circuito stampato monofaccia di dimensioni 75x74 mm, mostrato in Fig. 2. Durante lo sviluppo non è stato fissato l'obiettivo di raggiungere la massima densità di montaggio e le dimensioni minime della scheda. In condizioni amatoriali, la facilità di produzione, la facilità di installazione e configurazione sono molto più importanti. Ovviamente, utilizzando elementi di piccole dimensioni e il montaggio in superficie su due lati, le dimensioni della scheda potrebbero essere notevolmente ridotte. Ma ciò non fornirebbe alcun vantaggio operativo. C'è molto spazio libero dove installare il dispositivo. L'aspetto del pannello montato e operativo è mostrato in Fig. 3.

Il dispositivo è alimentato dalla rete tramite un qualsiasi trasformatore step-down con una tensione sull'avvolgimento secondario di 9 V con una corrente di 300 mA e un buon isolamento tra gli avvolgimenti. Invece dei doppi indicatori LED verdi hlec-d512gwb, puoi utilizzarne altri con un anodo comune, da una cifra a quadrupla. Naturalmente con gli opportuni adattamenti al circuito stampato.
I diodi 1n4148 vengono sostituiti con qualsiasi diodo al silicio a bassa potenza, ad esempio la serie KD522, e i diodi 1n4007 vengono sostituiti con diodi raddrizzatori con una corrente di almeno 300 mA, ad esempio le serie KD208 o KD209.Sostituzione dei transistor KT3107A - KT502B, KT502G, VS327. Lo stabilizzatore 7805 può essere sostituito con KR142EN5A o KR142EN5V domestico. Si consiglia di dotarlo di un piccolo dissipatore di calore. Invece del microcircuito AT24C02, puoi utilizzare AT24C01A. La frequenza del risonatore al quarzo può essere compresa tra 10 e 12 MHz. Relè K1 - con un avvolgimento di 12 V, una corrente operativa di 70 mA e contatti progettati per una corrente di 10 A con una tensione di 250 V. Invece di una rapa elettromagnetica, è possibile utilizzare un interruttore triac con isolamento ottico, assemblandolo secondo ad un circuito simile a quello mostrato in Fig. 2 nell'articolo di S. Koryakov “Termometro con funzione timer o controllo termostato” (Radio. 2003, n. 10, pp. 26-28).
Il dispositivo è inserito in un alloggiamento in materiale isolante con connettori per il collegamento di sensori (sono convenienti connettori audio a tre pin con un diametro della spina di 3,5 mm), una rete e un riscaldatore.

Sezione: [Dispositivi su microcontrollori]
Salva l'articolo in:
Lascia il tuo commento o domanda:

I migliori articoli sull'argomento