Termometrs augstas temperatūras mērīšanai uz mikrokontrollera. Divu kanālu termometrs uz ATmega8 mikrokontrolleri un DS18B20 sensoru bāzes

Tūlīt gribu atzīmēt, ka iespiedshēmas plate un dizains tika izstrādāti ar cerībām izveidot kompaktu ierīci, ko var piestiprināt pie sienas.

Ierīci kontrolē ar vienu pogu. Programma mikrokontrolleram ir uzrakstīta C valodā, nodrošināta ar komentāriem, un lietotāji to var pārveidot, lai tā atbilstu saviem konkrētajiem uzdevumiem, vai paplašināt funkcionalitāti. LCD indikatora vadīšanai tiek izmantota gatava Pītera Flerī bibliotēka (lejupielādējamais arhīvs pieejams lejupielāžu sadaļā). Turklāt datus var attēlot pēc Celsija vai Fārenheita grādiem. Ir vairāki režīmi indikatora fona apgaismojuma vadīšanai.

Ir arī vērts atzīmēt vēl vienu svarīgu punktu: ierīce var veikt bezvadu datu pārraidi, izmantojot Bluetooth protokolu, izmantojot īpašu moduli (pēc izvēles).

Shematiska diagramma

No ķēdes konstrukcijas viedokļa ierīce ir vienkārša, un mēs apsvērsim komponentu elementus atsevišķi.

Termometra barošana tiek veikta uz integrēta sprieguma regulatora bāzes standarta pieslēgumā (ar atbilstošiem filtra kondensatoriem). 3,3 V AMS1117 sprieguma regulators ir iekļauts ķēdē, taču to var izmantot, ja tiek izmantots Bluetooth modulis, jo Bieži vien šādu moduļu strāvas padeve ir 3,3 V.

Ierīcē izmantotais indikators ir standarta divu līniju indikators uz HD44780 kontrollera. Tranzistors ir paredzēts, lai kontrolētu indikatora fona apgaismojumu ar loģiskiem signāliem no mikrokontrollera vai PWM signālu no mikrokontrollera. Rezistors R3 ierobežo strāvu caur tranzistora pamatni, rezistors R1 velk bāzi līdz nulles potenciālam.

Termometra pamatā ir mikrokontrolleris, kas darbojas ar frekvenci 8 MHz un kontrolē visas apkārtējās perifērijas ierīces.

DHT-11 sensors ir zemu izmaksu temperatūras un relatīvā mitruma sensors, ko projektā izmanto kā āra sensoru. Tam nav raksturīgs liels ātrums un precizitāte, bet to zemo izmaksu dēļ izmanto radioamatieru projektos. DHT-11 sastāv no kapacitatīvā mitruma sensora un termistora. Sensorā ir arī vienkāršs ADC, lai pārveidotu mitruma un temperatūras analogās vērtības.

Galvenās īpašības:

  • lēts;
  • barošanas spriegums 3 V - 5 V;
  • datu pārraide caur 1-vadu kopni attālumos līdz 20 m;
  • mitruma noteikšana 20-80% ar 5% precizitāti;
  • maksimālais strāvas patēriņš 2,5 mA;
  • temperatūras noteikšana 0...50° ar precizitāti 2%;
  • aptaujas frekvence ne vairāk kā 1 Hz (ne biežāk kā reizi 1 sekundē);
  • izmēri 15,5 × 12 × 5,5 mm;

Jāatzīmē, ka pārdošanā var atrast DHT-22 sensoru, kuram ir tāds pats interfeiss, bet labākas īpašības.

Sensors ir savienots ar mikrokontrolleru, izmantojot 1 vadu kopni (savienojums JP3 diagrammā), izmantojot uzvilkšanas rezistoru datu līnijā un bloķējošo kondensatoru barošanas avotā.

Iekšējais sensors ir plaši izmantotais analogais temperatūras sensors LM35 IC5, kas ir savienots ar mikrokontrollera ADC 1. kanālu.

Mikrokontrollera in-ķēdes programmēšanas interfeisa savienotājs J1 ļauj ātri mainīt programmas kodu vai atjaunināt programmatūru. Lai pievienotu termometru, izmantojot UART interfeisu, tiek izmantots savienotājs JP1. SW1 vadības poga ir savienota ar mikrokontrollera ārējo pārtraukuma ieeju; šī ieeja ir savienota ar barošanas avotu, izmantojot porta iekšējo rezistoru.

Bluetooth modulis bezvadu datu pārsūtīšanai, kas diagrammā norādīts kā IC3, GP-GC021 savienojas arī ar mikrokontrollera UART interfeisu un ļauj pārsūtīt datus uz datoru, mobilo tālruni vai tīmekļa serveri. Iespiedshēmas plate nodrošina vietu moduļa uzstādīšanai. Lejupielādes sadaļā ir moduļa apraksts, mijiedarbības process un komandas.

LCD indikators ir uzstādīts uz iespiedshēmas plates priekšējās daļas savienotājā, tādējādi paslēpjot galvenās plates uzstādītās sastāvdaļas, un mēs iegūstam kompaktu ierīci. Bluetooth moduļa uzstādīšanas vieta atrodas iespiedshēmas plates aizmugurē (skatiet plates fotoattēlu).

Gatavās iespiedshēmas plates izskats termometram


PCB rasējums Eagle CAD

Plāksne ar uzstādītu Bluetooth moduli

Lejupielādes

Shēmas shēma un iespiedshēmas plate (Eagle), programmatūra (avota kods, programmaparatūra) -
Bibliotēka darbam ar LCD indikatoru uz HD44780 kontrollera -
Bluetooth moduļa GP-GC021 tehniskais apraksts -

Vai tā analogi. Ierīcēm ir laba precizitāte, trokšņu noturība un, salīdzinot ar analogajiem risinājumiem, tās ievērojami vienkāršo ķēdi. Šādu sensoru mērītās temperatūras robežas parasti ir ierobežotas diapazonā no -55 līdz 125 ºС. Ko darīt, ja nepieciešams izmērīt temperatūru virs 125 °C? Acīmredzot jāizmanto analogie sensori, kuru temperatūras diapazons var sasniegt +300 °C. Jāatzīmē, ka šajā gadījumā mērījumu precizitāte samazināsies. Bet bieži vien, mērot augstu temperatūru, nav jāzina precīza vērtība, un vairāku grādu kļūda būs pieļaujama, un, parādot analogā skalā, piemēram, uz gaismas diožu līnijas, tā būs pilnīgi nepamanāma. .

Ierīces normālai darbībai 0 ... 250 ° C temperatūrā tika izvēlēts analogais sensors, kura darbības diapazons ir -40 + 300 ° C. Tās parametri ir ideāli piemēroti izvēlētajam temperatūras diapazonam. Mikrokontrolleris (MK) ir atbildīgs par datu apstrādi. Protams, derēs jebkurš cits, taču autoram šķiet, ka šis MK ir viens no pieejamākajiem un populārākajiem. Drošinātāju uzgaļi ir atstāti rūpnīcā. Atrisinot problēmu, precīza mērījuma kritēriji tika likti uz aizmugurējā degļa. Kļūda dažu grādu robežās bija diezgan apmierinoša.

Mērījumu rezultātu digitālais displejs

LCD displejs tiek izmantots datu digitālai attēlošanai. Ja vēlaties, ierīci var uzlabot, mainot programmas kodu. Šim nolūkam ir pietiekami daudz brīvu I/O portu. LCD displejs ir pievienots, izmantojot 4 bitu kopni (1. attēls). Indikatora D4 - D7 augstākās kārtas cipari ir savienoti ar mikrokontrollera zemākās kārtas cipariem D0 - D4. Tā kā šai ierīcei nav precīzu hronometrāžu, nav nepieciešams ārējs galvenais kvarca rezonators. Displeja vadības tapas ir savienotas ar portiem PB6 un PB7. Kā redzat, visas displeja vadības līnijas iziet no vienas MK korpusa puses, kas vienkāršo iespiedshēmas plates izsekošanu.

Temperatūras vērtības aprēķins

No 1. attēla redzams, ka analogais temperatūras sensors ir tieši savienots ar mikrokontrollera ADC ieeju. Ja tiktu izmantots darbības pastiprinātājs, mērījumu kļūda būtu mazāka. Spriegums tiek piegādāts ADC caur dalītāju, ko veido termistors un mainīgs rezistors. Lai nodrošinātu labāku regulēšanas precizitāti, mainīgais rezistors ir izvēlēts kā daudzpagriezienu.

1. tabula. Pretestības atkarība no temperatūras.

Temperatūra ºС

Pretestība Ω

Izveidojot grafiku programmā Mathcad, pamatojoties uz 1. tabulu (2. attēls), varat redzēt analogā sensora pretestības atkarību no pielietotās temperatūras. Tabulas avota dati ņemti no KTY84_130 tehniskā apraksta. Funkcija ir gandrīz lineāra, tikai ar nelielu novirzi augstā temperatūrā.

Pie izmērītās temperatūras 0 ºС termistora pretestība ir 498 omi. Spriegums pie dalītāja izejas ir

  • U D - temperatūras sensora spriegums attiecībā pret zemi,
  • U PIT - barošanas spriegums,
  • RD - temperatūras sensora pretestība,
  • R 1 - iestatītā mainīgā rezistora pretestība.

0 ºС temperatūrā spriegumam ADC ieejā jābūt 0,6 V. Lai aprēķinātu temperatūras vērtību, autors izmantoja šādu formulu:


  • ADC — 10 bitu digitālais ADC kods, kas ņemts no sensora,
  • U OTC - robežvērtība (60), vienāda ar 0,6 V pie 0 ºС.

Mērīto temperatūru diapazons no 0 ºС līdz 250 ºС atbilst ADC ieejas spriegumiem, kas nāk no dalītāja no 0,6 līdz 1,8 V. ADC atsauces spriegums ir 5 V, tāpēc ar norādītajām vērtībām digitālais kods būs diapazons no 123 līdz 368. Šis skaitlis tiek ievietots reģistrā un pārveidots par trīsciparu ASCII kodu. Tā kā sensors KTY84_130 ir paredzēts maksimālajai temperatūrai 300 ºС, labāk ir atstāt nelielu rezervi un ierobežot to līdz 250 ºС.

5. attēlā parādīta ierīce, kas samontēta uz maizes dēļa. Programmas kods ir atvērts, un ikviens to var viegli pārveidot, lai tas atbilstu savām vajadzībām.

MK programmatūra un virtuālais modelis Proteus LCD 16×2 -

MK programmatūra un virtuālais modelis Proteus LCD 8×2 -

Termometra darbības apraksts

Šī termometra mērķis ir vienkārši parādīt temperatūru. Nelielas atšķirības no citām līdzīgām shēmām ir tikai temperatūras izvades formātā uz LED indikatora, kas ir 4 ciparu īpaši spilgts CA04-41SRWA. DS18B20 tiek izmantots kā temperatūras sensors parastajā savienojumā ar atsevišķu strāvas vadu.

Ķēde ir paredzēta darbināšanai ar baterijām, tāpēc, ieslēdzot strāvu, indikators neko nerāda. Termometra programma tiek inicializēta un nekavējoties pāriet miega režīmā. Mikrokontrollera miega režīms ļauj ietaupīt enerģiju no barošanas avota. Nospiežot pogu, kas savienota ar PORTB0, indikators ieslēdzas.
Indikators parāda padomu:



Pēc tam indikatorā tiek parādīti paši temperatūras rādījumi.



Lasīšanas izvades veids ir šāds:






Izvades forma atšķiras tikai zemām pozitīvām temperatūrām. Norādot šādu temperatūru, simbolam “grādi” tiek pievienota zīme “C”. Tas ir, grādi pēc Celsija. “Grādu” simbols atrodas uz indikatora jebkurā izmērītā temperatūrā.

Temperatūras sensors DS18B20 mēra temperatūru ar izšķirtspēju 0,0625 grādi pēc Celsija. Termometrs nolasa sensora rādījumus un noapaļo tos līdz tuvākajai grāda desmitdaļai. Grāda desmitdaļas tiek rādītas visos displeja režīmos, izņemot temperatūru, kas ir zemāka par -10 grādiem pēc Celsija. Tas tiek darīts, lai negatīvo temperatūru rādījumiem vienmēr būtu mīnusa zīme.

Rādījumi indikatorā ir redzami 30 sekundes. Pēc tam ierīce atkal pāriet miega režīmā un indikators izslēdzas.


Termometra modelēšana programmā Proteus


Proteus modelis ļāva izstrādāt termometra programmatūras daļu, nemontējot pašu ierīci aparatūrā. Visi režīmi ir pārbaudīti. Programmā nav simulācijas kļūmju.



Pašu modeli var lejupielādēt no saites: termo_i_v2.DSN

Termometra shematiska diagramma


Shēma tiek zīmēta, pamatojoties uz iespiedshēmas plates dizainu. Pirmkārt, iespiedshēmas plates elektroinstalācija tika veikta tā, lai vadītāju garums un detaļu izvietojums būtu optimāls, un tikai pēc tam, kad PIC16F628A mikrokontrollera porti uz iespiedshēmas plates atbilda indikatora CA04-41SRWA tapām, tika sastādīta precīza shēmas shēma.


Termometra shēmas plate


Laba diena, dārgie lasītāji. Kā liecina raksta nosaukums, mēs runāsim par termometru, kas samontēts uz PIC. Tātad. Kāpēc un kā tas viss sākās?!
Man vajadzēja diagrammu ar vienkāršu termometru garāžas pagrabā. Sāku meklēt piemērotu shēmu internetā. Svarīgs kritērijs bija minimālā elementu skaita izmantošana ķēdē. Es uzreiz teikšu, ka tiešsaistē ir ļoti daudz šādu termometru shēmu. Bet! Visbiežāk tie tiek veidoti uz AVR, ar kuriem, man par visdziļāko nožēlu, es nedraugos. Tāpēc es sāku meklēt PIC ķēdi. Bet pat šeit es biju vīlusies. Ir shēmas PIC termometriem. Bet indikatoriem viņi izmanto vai nu tranzistorus, vai ārējo kvarcu, vai kaut ko citu, kas sarežģīja ķēdi un manā gadījumā bija nepieņemams. Beidzot pēc ilgiem meklējumiem šeit tika atrasta man piemērota shēma:

http://www.labkit.ru/html/show_meter?id=38
Un tas tika veiksmīgi atkārtots vairākas reizes. Viss strādā lieliski. (šīs shēmas autora vietnē ir gan programmaparatūra, gan iespiedshēmas plate šī termometra atkārtošanai). Laikam ejot. Un vienā jaukā reizē šīs shēmas trūkumi vispirms kļuva skaidri, un man arī vajadzēja izmantot indikatoru ar kopējo katodu (autora vietnē programmaparatūra bija paredzēta tikai kopējam anodam). Tagad par shēmas trūkumu sākotnējā avotā. Sākotnēji autora ķēdē nav temperatūras sensora pievilkšanas rezistora. Tas nozīmē, ka ķēdē nav 4,7K rezistora. Jā, patiešām, ar šo ķēdes dizainu termometrs var darboties, bet tikai tad, ja temperatūras sensors ir pielodēts tieši dēlī vai arī stieples garums, uz kura atrodas sensors, nedrīkst pārsniegt metra stieples garumu. , pusotru metru. Vairāk ne. Pretējā gadījumā indikators sāk rādīt kaut kādas muļķības, nevis temperatūru.
Šāds notikumu pavērsiens mani nemaz neiepriecināja. Jo man vajadzēja, lai vada garums ar sensoru būtu vismaz 10 metri.
Šī problēma tika atrisināta ļoti vienkārši un ātri, proti, sensoram uzstādot 4,7K uzvilkšanas rezistoru. Pēc tam sensors sāka stabili darboties jebkuram stieples garumam. Bet ja man ir tikai indikatori ar kopējo katodu! Un anodam tika izveidota programmaparatūra... Šeit man palīdzēja Staņislavs Dmitrijevs. Par ko es viņam ļoti pateicos. Viņš ne tikai uzrakstīja programmaparatūru kopējam anodam. Bet arī kopējam katodam un dažāda veida temperatūras sensoriem (DS18S20 vai DS18B20). Tas ļāva vēl vairāk unificēt šo shēmu. Un ieteiktu to atkārtot. Tāpat shēmā iespējams izmantot gan četru bitu septiņu segmentu, gan trīs bitu septiņu segmentu ierīces. Kas nav nekas liels, bet tomēr pluss.
Tagad pati ķēde

Kā redzat, diagramma neatšķiras no tās, kas parādīta vietnē http://www.labkit.ru
Tā tas sākotnēji bija paredzēts. Vienīgās izmaiņas ķēdē ir papildu rezistora uzstādīšana. Es diagrammu nepārzīmēju no nulles. Es tikko pievienoju trūkstošo ķēdes elementu. Būtībā, ja vēlaties vēl vairāk vienkāršot ķēdi un jums ir stabils 5 V barošanas avots, varat izslēgt lineāro stabilizatoru no ķēdes. Un barojiet MK tieši no 5 V.
Tagad parunāsim nedaudz par to, kā pats pielāgot programmaparatūru vajadzīgajam indikatoram vai sensoram. Šeit viss ir vienkārši.

Ielādējot programmaparatūras failu programmētājā, jūs pats: pamatojoties uz to, kas jums nepieciešams, un skatoties uz šo ekrānuzņēmumu, ierakstiet nepieciešamos parametrus programmaparatūras failā sadaļā EPROM. Pēc tam jūs varat mirgot kontrolieri.

Manā drukātās shēmas plates versijā plate nodrošina vietu ne tikai lineārajam stabilizatoram, bet arī diodes tiltam (kas ļaus ķēdi darbināt ar spriegumu no 7,5V līdz 12V. Plate nodrošina arī vietu uzstādīšanai spaiļu bloks,kas ļauj neielodēt plāksnē temperatūras sensoru un saspraust ar skavām.Tas ir ērti mainot sensoru,vai uzstādot sensoru uz gara vada.Ļauj ātri nomainīt vadu.

Dēļa zīmējums

Kā redzat, termometrs ir salikts uz diviem dēļiem. Viens ir aprīkots ar septiņu segmentu indikatoru (trīs vai četri cipari). Visi pārējie ķēdes elementi ir uzstādīti uz otrās plates. Dēļi ir savienoti viens ar otru, izmantojot ķemmi vai, manā gadījumā, ar vadiem.
Beigās ir mana gatavā termometra fotoattēls.

Digitālais termometrs, kas salikts pats no nulles, ne tikai kalpos paredzētajam mērķim, bet, tāpat kā viss, kas ir izgatavots ar savām rokām, paaugstinās jūsu pašapziņu (un varbūt pēc dažiem gadiem tas kļūs vērtīgs kā atmiņa).

Bez šaubām, digitālais termometrs mājsaimniecībā ir noderīga lieta, taču ne pārāk funkcionāla: izņemot temperatūras mērīšanu, tas nav orientēts uz neko citu. Šajā sakarā noderīgāks būs mikrokontrollera termometrs, jo tam ir iespēja ieslēgt un izslēgt jebkuru slodzi atkarībā no temperatūras izmaiņām.

Tomēr, ja vēlaties kaut ko vērtīgu paveikt savām rokām, tad, pirmkārt, šāds dizains ir pilnībā pamatots - iegūtā pieredze ir nenovērtējama.

Tātad, lai sāktu, izvēlēsimies visvienkāršāko termometra ķēdi, kas veidota uz PIC16F84A mikrokontrolleri, DS18B20 digitālo temperatūras sensoru ar mērījumu precizitāti līdz 0,5 grādiem un četrciparu LED indikatoru ar kopēju anodu. Manā gadījumā tika izmantots displejs FYQ-3641BG-21E.

Ķēdes priekšrocība ir tās vienkāršība - no diskrētiem elementiem mums būs nepieciešams ducis rezistoru, vairāki kondensatori un 4 MHz kvarca rezonators. Galvenais trūkums ir tāds, ka, tāpat kā visām elektroniskajām ierīcēm, termostatam ir nepieciešams strāvas avots.

Bateriju izmantošana padara ierīci mobilu, bet viena bateriju komplekta darbības laiks var būt tikai 1-2 nedēļas. Termometra barošana no tīkla barošanas avota “piesien” to pie jebkuras kontaktligzdas, kas ne vienmēr ir ērti.

Piebildīšu, ka diagrammā nav parādīts mikrokontrollera strāvas pieslēgums - plus jauda tiek piegādāta 14. kontaktdakšai, bet mīnus jauda tiek piegādāta mikroshēmas 5. kontaktdakšai.