ArduShop.ro

ArduShop.ro
cod Z4A413ZN reducere 5%, pentru vizitatorii paginilor mele !

joi, 16 noiembrie 2017

Termostat cu control umiditate (higrostat) - partea a 3-a

   Deoarece am intrat in posesia unui shield de afisaj LCD1602 cu butoane (taste) si am primit o solicitare pentru a transfera un proiect de termostat cu contorl de umiditate pe acesta, am considerat ca e un proiect interesant de creat.
   In prima faza am studiat modul de conectare a pinilor la afisaj si conectarea butoanelor la intrarea digitala (functie de butonul care se apasa, exista pe intrare analoica A0 o tensiune diferita).
    Pinii liberi sunt prezentati in imaginea de mai jos:
   Pe partea de jos exista grupul de alimentare, cel din dreapta, iar in stanga intrarile analogice A1..A5, din care se pot folosi A4 si A5 pentru comunicatia i2c (pentru a folosi un modul de ceas RTC cu DS1307 sau DS3231). In partea de sus, in stanga sunt pinii digitali nefolosti:
   Schema shiledului folosit de mine este 
  Partea de configurare a afisajului este 
tinand cont ca si pinul D10 este folosit pentru controlul luminii de fundal.
    Partea de butoane se poate configura asa:

    Puteti citi mai multe pe net, eu recomanda urmatoarele materiale:
https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
https://tutorial.cytron.io/2011/08/12/project-1-%E2%80%9Chello-world%E2%80%9D-on-lcd/
http://www.lucadentella.it/2013/02/12/lcd-keypad-shield/
http://domoticx.com/arduino-shield-lcd1602-display-met-keypad/
   Revenind la chestii practice, am facut 2 filmulete, in care am folosit sketch-ul LCD1602shield_test2.ino:
test afisaj 1602 cu shield
test with LC1602 shield
   Dupa ce m-am familiarizat cu aceasta placa (shield), am modificat programul termostatului cu controlul umiditatii, care a fost prezentat in articolele:
Termostat cu control umiditate (higrostat)
Termostat cu control umiditate (higrostat) - partea a 2-a
   Sketch-ul LCD1602shield_thermostat_humidity_ver1s0.ino e derivat din cel din primul articol (fara memorare date in EEPROM) si are modificari la partea de depistare a apasarii butoanelor (care sunt intr-un divizor rezistiv pe o intrare analogica, nu butoane la care se citesc starile digitale apasat/neapasat) si sunt modificari la partea de conectare a senzorului la intrarea D13, iar iesirea pentru comanda a rezistentei de incalzire (centralei) este la D11, iar sistemul de comanda a umiditatii este la D12.
   Am facut 2 filmulete in care prezeint functionarea acestui termostat, fiind similara cu a celor dinainte:
alt termostat cu control umiditate folosind Arduino
other thermostat with humidity control using Arduino
   Pe ecran apar, pe randul de sus, temperatura si umiditatea relativa a aerului, iar pe randul de jos, in dreptul fiecarui parametru, daca este sub valoarea dorita (BELLOW), peste (OVER) sau in domeniul dorit (OK).
   Pe ecran pot apare urmatoarele stari:
- temperatura reala sub pragul dorit si umiditatea peste pragul dorit (led rosu aprins pentru a comanda o rezistenta sau centrala, iar led galben aprins pentru a se deschida o fereastra sau comanda un ventilator pentru eliminare umiditate)
 
- temperatura mai mare decat cea dorita si umiditate mai mare decat cea dorita (led rosu stins pentru a fi depuplata rezistenta sau centrala, iar led galben aprins pentru ca sa se inchida o fereastra sau fi oprit un ventilator pentru eliminare umiditate)
- temperatura reala sub pragul dorit si umiditatea peste pragul dorit (led rosu aprins pentru a comanda o rezistenta sau centrala, iar led galben aprins pentru ca sa se inchida o fereastra sau fi oprit un ventilator pentru eliminare umiditate)
   Pentru reglaje sunt folosite doar 3 butoane: SELECT, UP, DOWN (selectie, crestere si descrestere valoare). Daca se apasa butonul SELECT se intra in meniul de reglare temperatura
din UP sau DOWN se creste sau scade valoarea
se apasa iar butonul SELECT pentru a trece la reglajul histerezisului de temperatura
   Daca se paasara iar butonul SELECT se trce la reglarea pragului de umiditate
si la o noua apasare aa cestui buton SELECT se trece la reglarea histerezisdului de umiditate
  O noua apasare a butonului SELECT va duce la intrare ain modul de termostat.
  Pentru a intelege reglarea temperaturii si histerezisului, vedeti desenul care a fost prezentat in primul articol:
   Temperatura dorita (temperature set) este pragul al acare rezistenta de incalzire este oprita, iar la scadearea temperaturii sub temperatura dorita minus histerezis, rezistenta de incalzire este reconectata.

PS: in curand voi modifica sketch-ul pentru memorare valorii in EEPROM este LCD1602shield_thermostat_humidity_ver2s0.ino !!!

   Pentru o prezentare deosebita, am folosit informatiile din articolul Iluminat de fundal progresiv pentru afisaje, astfel ca programul a devenit LCD1602shield_thermostat_humidity_ver3s0.ino.
   Am facut 2 filmulete cu aceasta ultima versiune>
alt termostat cu control umiditate folosind Arduino (2)
other thermostat with humidity control using Arduino (2)
   Deoarece se poate intra din greseala in meniul de reglaj prin apasarea butonului SELECT si se doreste revenirea rapida, se poate apasa butonul LEFT <-. Pentru intrarea in meniul de reglaj se poate folsosi si tasta RIGHT -> in loc de SELECT pentru a trece la reglajulaltui parametru.
   Toate acestea daca se incarca programul LCD1602shield_thermostat_humidity_ver3s1.ino.
   In filmuletele de mai jos se poate vedea noua facilitate:

luni, 23 octombrie 2017

Modul "Daytime Running Light" (DRL) cu ATtiny85

english version

    Dl. Liviu Hinoveanu, care a realizat si varianta de DRL cu 555 prezentata la http://www.arduinotehniq.com/old/DRL/DRL.htm a dorit sa realizeze acest montaj si cu un ATtiny85 programat ca Arduino (acest mod de folosire l-am prezentat in articolul Programarea unui microcontroler ATTiny85 cu sketch Arduino). Eu mai prezentasem o versiune cu Arduino de DRL combinat cu CHLH, la Combinare module DRL (Day Time Light) si CHLH (coming home/leaving home) folosind Arduino, dar nu am mai finalizat testele...
   Schema DRL-ului realizat este
iar cablajul si montajul proiectare sunt:
    Poze cu montajul realizat de dl. Liviu Hinoveanu:
   Sketch-ul DRL_ATtiny85.ino l-am scris dupa informatiile furnizate de dl. Liviu Hinoveanu si permiote aprinderea becurilor doar dupa pornirea motorului, la o anumita intensitate, care se poate regla in cateva trepte prin apasarea butonului de la minim la maxim si apoi iar la minim spre maxim. Daca se aprind manual luminile, sistemul se deconecteaza, masina functionand normal (faza scurt. faza lunga).... la oprirea motorului becurile se sting lent de la maxim la zero.
   Un filmulet cu functionarea dispozitivului, cu o descriere foarte buna a dlui Hinoveanu, este DRL cu ATtiny85:

Multimetru de panou - considerente teoretice si practice

   Pentru un alimentator este bine sa avem un indicator pentru tensiunea pe consumator, dar si curentul consumat.
   Daca avem nevoie doar de partea de voltmetru, acesta se coneteaza la bornele de iesire (si se alimenteaza separat).
  Pentru microcontrolere sau, cazul meu, Arduino, schema generalizata de masura este urmatoarea:
  Daca se foloseste un sunt (rezistenta) de 0,1 ohmi si avem un consum de 5A, caderea de tensiune este de 0,5V.
  Daca avem posibilitatea sa "umblam" la alimentator si mutam divizorul rezistiv sau referinta dupa sunt, nu mai se pune problema asta, deoare stabilizatorul de tensiune corecteaza aceasta diferenta.
   Cel mai bine reducem valoarea suntului de 10 ori, cum e in articolul "Multimetru", publicat in revista Tehnium nr. 11/1988
   Trebuie sa folosim aceasta metoda deoarece convertorul analog digital al microcontrolelor obisnuite e  pe 10 biti, adica 1024 trepte. In cazul normal, la alimentare de 5V, "treapta" de masura este de 5:1024 = 0.00488V = 4,88mV, daca se foloseste referinta interna de 1,1V, cum e la microcontrolerele ATmega328 de pe placile Arduino, "treapta" devine 1,1:1024 = 0.00107V = 1,07mV.
   Pentru un curent de 1A pe suntul de 0,01 ohmi avem o cadere de tensiune de 0,01V, aproape cat treapta, de asta se foloseste un amplificator neinversor pentru amplificarea tensiunii (despre el se poate citi in articolul https://en.wikipedia.org/wiki/Operational_amplifier si in orice carte de electronica).
   Am realizat cu ajutorul programului Live Wire o simulare a cazurilor prezentate mai sus:
   Se observa clar ca a doua varianta este cea optima...

   Ideea a pornit de la Vlad Gheorghe, care mi-a aratat un articol rusesc, unde apare un indicator de panou pentru 100V si 10A, foarte raspandit la noi
care are o schema de genul
   Ieri (22.10.2017), am testat impreuna cu Marian - GeoMar, functionarea unui asemenea indicator, care are, in plus, indicare de temperatura pe zona curentului cand acesta este zero, si cupleaza si decupleaza un ventilator la depasirea unei temperaturi. Este folosita metoda cu sunt direct de 0,1 ohmi. Sketch-ul adaptat de mine este VA_multiplexat_1b3.ino.
   Schema indicatorului de panou cu Arduino Uno este
  Foarte importanti sunt coeficientii de corectie si valoarea tensiunii de referinta.
  Intai se masoara tensiunea de referinta si se corecteaza valoarea.
  Reglajul se face cu o sursa reglabila si un consumator maricel, un bec auto, de exemplu.
  Se inseriaza un ampermetru si se compara indicatiile pentru mai multe valori ale curentului (se face prinvarierea tensiunii de alimentare de la 4 la 15V). Se modifica valoarea coeficientului de corectie 3 pana se obtine valori egale sau apropiate (+/-0,1V). Se muta aparatul de masurape tensiune si se compara tensiunile, modificand coeficientul de corectie 2. 
  Temperatura se regleaza cu un termometru, din coeficientul de corectie 1.

   F.f.f. important: folositi sarme groase, eventual lipite sau prinse in conectori, cand calibrati, deoarece pot apare surprize, de exemplu, caderi de tensiune de 0,5V inexplicabile 😋.

vineri, 20 octombrie 2017

Identificare radio (RFID) - partea 2-a

    Acum 3 ani testam un pachet de identificare RFID pe 13,56MHz (RFID-RC522), de data asta am (re)testat si RFID pe 125kHz (RDM6300) cu cartele cu protocol EM4100 (vezi articolul de AICI).
   Deoarece nu are rost sa reinventez roata, am apelat la un articol de pe tronixstuff.com.
   Schema de conectare e simpla, gasind-o frumos desenata la qqtrading.com.my:
   Am folosit primul sketch prezentat in articol sa depistez "codul" cardului meu si l-am introdus in al doilea sketch, exact ca in articol, doar ca eu am folosit un led multicolor (RGB), dupa cum se vede si in filmuletul Arduino acces RFID 125kHz
Nota: sketch-ul de aflarea "codului"cardului este rfid_tronixstuff_info.ino, iar cel ce confirma sau nu cardul meu este rfid_tronixstuff_test.ino !
   Cand este recunoscut un card, ledul RGB se aprinde in verde
iar cand nu recunoaste cardul in rosu
PS: Articolul de pe tronixstuff are o versiune imbunatatita la http://tronixstuff.com/tag/rdm6300/ !

marți, 26 septembrie 2017

Voltmetru pentru 1,1V (poate inlocui modulul cu C520D)

   Tot dand de scheme cu voltmetrul realizat cu integratul C520, care avea cap de scala 1V si era bun de folosit ca indicator de panou, am zis sa fac si eu unul cu Arduino, in cazul de fata o placa Arduino Nano cu ATmega168 si un afisaj cu catod comun din 4 cifre.
   Schema este extrem de simpla, constand doar in placa Arduino Nano si afisaj:
fata de schema lui C520 care mai necesita si 3 tranzistori si un decodificator BCD la 7 segmente, dupa cum se vede din articolul C520 d epe site-ul http://www.next.gr/:
   Si pe blog, am postat mai de mult articolul cu mutimetrul preluat din revista Tehnium 
   Voltmetru meu e simplu, indicand de la 0.000 la 1.100V cap de scala, daca se incarca sketch-ul volmeter_v1m0.ino
   Am facut 2 filmulete, in care se vede cum afiseaza:
voltmetru pentru 1,1V (poate inlocui modulul cu C520)
1.1V voltmeter can replace C520 chip
   Voltmetru, mai evoluat, este prezentat in articolul Voltmetru digital cu auto-scalare cu Atmega8
care are originile in cel prezentat in articolul A 10 Bit LED Digital Panel Meter With Auto Ranging Based On The ATMEGA8

   In limita posibilitatilor (lipsa timp), o sa incerc sa adaptez si eu pentru Arduino...

Termometru cu dioda 1N4148 ca senzor pe afisaj led multiplexat

english version of article

   Dupa ce am tot folosit un afisaj led cu 4 cifre din 7 segmente fiecare pentru a realiza ceasuri cu alarma si indicare de temperatura, etc, acum m-am decis sa simplific la maxim treaba si sa folosesc o dioda 1N4148 ca senzor de temperatura, placa Arduino Nano (cu microcontorler ATmega168, dar merge foarte bine si varianta cu ATmega328) si afisajul LFD080AAG103 cu catod comun (se poate folosi foarte bine is unul cu anod comun, schimbandu-se doar cateva linii in program.
   Masurarea temeperaturii se bazeaza pe faptul ca pe jonctiunea diodei caderea de tensiune scade cu 2,2mV cu cresterea unui grad (Celsius, Farenheit), dupa cum se observa din figura 1 din datasheet-ul (fisa de catalog) a diodei 1N4148:
   Am mai folosit dioda 1N4148 ca senzor in articoleul Ceas cu reglaj manual al orei si datei, alarma si termometru pe afisaj multiplexat cu 4 cifre led, care se bazeaza pe articolul Thermometer diode based de pe https://www.hackster.io/.
   Pentru ce-i ce vor sa aprofundeze acest mod de masurare, le recomand citirea articolelor DIODE-BASED TEMPERATURE MEASUREMENT de la Burr-Brown, resepctiv Accurate Temperature Sensing with an External P-N Junction de la Linear Technology.

   Schema folosita de mine este:
   Initial, am curatat programul ceasului cu termonetru, adica cu prezentare temperatura cu 2 cifre (numere intregi), devenind diode_thermometer_display_1.ino
   Dupa asta, am decis sa modific sketch-ul pentru a afisa si un numar dupa virgula, cu o zecimala, acesta devenind diode_thermometer_display_2.ino
   In acest sketch masurarea se face mai rar, pentru a nu aparea variatii bruste de temperatura, dupa cum se vede in filmuletele:
termometru cu dioda 1N4148 ca senzor pe afisaj led multiplexat
thermometer with 1N4148 diode as sensor on multiplexed led display