Proiectul prezentat este intenționat pentru citirea digitala a temperaturii din echipamentele de radioamatori si eventual acționarea unei alarme si/ sau a unui ventilator de răcire. Este folosit un senzor dedicat DS18B20, o placa Arduino Nano sau TTGO Xi si un afișaj de 0.96 inch SSD1306 in configurație I2C. Articolul conține linkuri către cod, schema in definiție mai mare, si youtube.com video-uri care arata dispozitivul in stare de funcționare, atât cu Arduino Nano cat si cu TTGO Xi.
Multe din aparatele mai vechi cu tuburi nu au fost prevăzute cu dispozitive de răcire. Acestea încă mai pot fi folosite ani buni si ar putea beneficia de o răcire comandata electronic. Amplificatoarele de putere tranzistorizate de asemenea necesita răcire. Pentru ca a devenit foarte simplu cu puține componente si ieftin am realizat un asemenea dispozitiv. Sunt multe scheme pe Internet. Ceea ce prezint este construit de mine si poate fi văzut in funcțiune:
- Cu placa Arduino Nano la: https://www.youtube.com/watch?v=mvwVGTREXRE
- Cu placa TTGo Xi la: https://www.youtube.com/watch?v=kvIxbUQXhMs
- Cod, poze de breadboard, schema la: https://github.com/danielromila/Arduino-monitoring-themperature-and-alarm-with-DS18B20-and-SSD1306
Totul este dat in un singur loc (cod, schema, poze de breadboard cu Arduino Nano si cu TTGO Xi), așa ca este simplu de reprodus. Întotdeauna când prezint un proiect încerc sa pun la dispoziție toate materialele la un loc pentru ca am văzut mulți constructori, mai experimentați si mai cunoscători decât mine care neglijează unele mici detalii, suficient cat sa facă reproducerea proiectului lor dificila.
Schema electronica, folosind o placa de tip Arduino Nano:
Schema este desenata intr-un program de calculator. După aceea am executat un screenshot al ecranului, si suprapun poze ale componentelor reale. Așa a rezultat schema de mai sus, cu Arduino Nano real si SSD1306 real. Consider ca este mai ușor de urmărit si eventual de replicat pe breadboard.
Alimentarea se face de la 5 V, in conectorul USB al plăcii Arduino Nano. Folosesc placi noi, din China, care au microcontrollerul SMD, indiferent daca este vorba de Arduino Nano, UNO, etc. Acestea sunt atât de ieftine încât nu se merita sa cumpăr separat un microcontroller, sa îl programez si sa îl folosesc separat. Iese mai scump sa cumpăr microcontrolerul si stabilizatorul de tensiune decât sa cumpăr placa cu totul. Diferența de dimensiuni este minora. In plus, având o placa întreaga Arduino Nano, pot si sa o reprogramez si sa încerc diverse variante noi, foarte ușor. Realizarea pe breadboard:
Partea de acționare de releu (o dioda, un tranzistor de putere medie, un rezistor si un releu) nu sunt pe breadboard.
Cei care mi-au citit articolele anterioare din Radioamator.ro știu ca eu iubesc plăcile TTGO Xi. Acestea sunt mai puternice decât Arduino Nano, si mai ieftine. La sfârșitul lui 2019 au ajuns la 2.41 USD, shipping si taxe incluse. Codul nu trebuie modificat cu nimic. Placa TTGO Xi știe sa coboare la nivelul Arduino Nano. Breadboardul cu TTGO Xi:
Nici aici nu am pus pe breadboard partea de acționare de releu.
Afișajul SSD1306, in varianta de conectare I2C necesita numai patru fire de conectare. Doua sunt pentru alimentare cu 5V, iar SDA si SCL sunt conectate la pinii A4 si respectiv A5 ai plăcii Arduino Nano. Placa TTGO Xi are pini dedicați SDA si SCL.
Am ales sa afișez temperatura in grade Celsius si in grade Fahrenheit. Am încercat sa folosesc cei 128 x 64 pixeli intr-un mod vizual plăcut si sa fie cat mai vizibil. Afișajul SSD1306 are 4 găuri metalizate in colturi si este ușor de montat pe panoul unui echipament de radioamatori.
Am decis in program valoarea de prag de 65 de grade Celsius. LED-ul verde este aprins sub aceasta temperatura, iar LED-ul roșu peste 65 de grade. Se poate folosi alta valoare in loc de 65 de grade, prin modificarea in program a variabilei TRESHOLD. Nu am adăugat butoane exterioare care ar fi stricat simplitatea si robustețea montajului.
Senzorul DS18B20 arata exact ca un tranzistor de mica putere. Este produs de mai multe firme. O fisa de catalog poate fi găsită la: https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Măsurătorile pot fi pe intre 9 si 12 biți. Eu am ales in cod 12 biți, pentru ca oricum totul este foarte rapid. Eroarea totala, la temperaturi intre -30 C si 100 C este sub un grad C. Poate funcționa intr-o plaja mai mare, de la -55 C la +125 C, dar cu o eroare de plus/minus doua grade C. Alimentarea maxima este de 5.5V.
Am folosit pentru a afișa temperatura sub prag/ temperatura peste prag doua LED-uri de 5 mm. Le-am conectat intre pinii D6 si D7 respectiv ai plăcii cu microcontroller (Arduino Nano sau TTGO Xi) si GND, in serie cu rezistoare de cate 1 KOhm fiecare. Nu recomand folosirea de rezistoare mai mici. Luminozitatea este destul de puternica si la lumina zilei. Îmi aduc aminte de vremurile când LED-urile erau mai puțin eficiente si le puneam in serie cu 220 Ohmi la 5 V. LED-urile au evoluat mult de atunci.
Partea de citire si afișare este rezolvata de placa cu microcontroller, afișaj, LED-uri si, bineînțeles, senzor. Daca se dorește acționarea/ decuplarea unei alimentari de putere, a unui ventilator, atunci este mai bine sa folosim un releu, ca in schema. Bobina releului poate produce o tensiune inversa periculoasa, așa ca am pus in paralel cu releul a dioda de protecție. Am folosit 1N4007, pentru ca mai am câteva sute de bucăți, si pentru ca sunt la același preț cu altele având caracteristici mai reduse. Dar si 1N4001 face aceeași treaba in acest montaj. Tranzistorul de putere care acționează releul este 2SD882. Orice BD135-139 îl poate înlocui. 2SD882 este mai performant si mai ieftin (pe lângă faptul ca am si din acesta câteva sute de bucăți). Când alegeți tranzistorul trebuie sa va gândiți la ce va acționa, ce fel de releu. Eventual releul poate lipsi si tranzistorul sa acționeze direct un ventilator. 2SD882 poate acționa fără probleme ventilatoare de tip calculator, care nu necesita mult curent.
Proiectul realizat de mine este simplu si se dorește practic. Alți amatori au realizat termometre cu diverse afișări si cu postarea numelui lor la fiecare noua alimentare. Eu nu am introdus nici un logo sau menționare personala a mea, așa cum nu o fac niciodată in proiectele mele.
Daca doriți doar sa realizați un termometru, numai in grade Celsius, si cu logo personal, Sreekanth Mp a realizat un asemenea termometru care poate fi văzut la: https://www.youtube.com/watch?v=iaNiQ1sQbSA&lc=z23wentrykres1tz504t1aokghsi44vdfindpmf0pzmwbk0h00410.1573904852647521
Cumva linkul către cod pe care îl da nu merge, dar pot sa va dau eu codul, cu permisiunea lui daca o va acorda.
Tot ce va trebuie pentru a replica proiectul meu din acest articol am postat la:
https://github.com/danielromila/Arduino-monitoring-themperature-and-alarm-with-DS18B20-and-SSD1306
- Daniel Romila VE7LCG
-