sâmbătă, 28 martie 2020

Termometru cu banda de leduri adresabile

   Un nou proiect l-am realizat astazi, impreuna cu Mihai Brindusoiu, dupa cum zice si titlul, este un termometru cu indicatie cu banda de leduri adresabile (WS2812).
   Mihai are o banda cu 31 leduri, asa ca am realizat un termometru de camera pentru temperaturi de la +10..+400C. Ulterior, vom face unu cu 60 leduri pentru temperaturi de -10..+500C sau -15..+450C.
   Senzorul de temperatura este un DS18B20 pus pe rezolutia de 9 biti pentru a reduce timpul de achizitie si a nu se observa intreruperea fluxului luminos.
   Am testat acum ceva timp partea cu Benzi de leduri multicolore cu control independent pentru fiecare led
    Deoarece sunt multe leduri, banda trebuie alimentata din sursa separata de 5V si minim 2A, nu din USB, cum prezentasem in articolul mentionat mai sus
   Schema de conectare este simpla, avem senzorul DS18B20 la pinul D4, iar banda la D5.
   In program (WS2812_thermometer0.ino), am ales ca banda sa se aprinda progresiv, cate un led pentru un grad Celsius, impunand culorile:
- albastru pana la +100C
- alb la +150C
- bleo la +200C
- verde la la +250C
- galben la +300C
- rosu la +350C
- mov de la +400C
intre aceste praguri, culoarea se calculeaza, fiind una intermediara intre cele 2 limite.
   Mihai mi-a trimis cateva poze la diferite temperaturi, din care am selectat cateva:
- la +230C
- la +260C
- la +280C
- la +390C
   Mihai a facut si un filmulet, cu o versiune ce avea un mic bug la culoarea ce depasea temperatura maxima, dar in mare se vede functionarea:

29.03.2020
   Mihai a dorit alte culori si fara trecere progresiva intre culori, asa ca am modificat programul, acesta devenind WS2812_thermometer1.ino avand culorile:
- alb pana la +200C
- albastru de la +200C pana la +250C
- verde de la +250C pana la +300C
- rosu peste +300C.
   Deoarece Mihai a testat mai mult timp, a constatat ca noaptea e deranjanta intensitatea luminoasa, asa ca am adaugat un divizor rezistiv format dintr-o fotorezistenta si o rezistenta de 10k.
    In mare, la program, am adaugat in parte de definire
si in programul principal
   
inante de comanda culorilor
   Programul pentru versiunea mea este WS2812_LDR_thermometer0.ino, iar pentru versiunea de culori aleasa de Mihai este WS2812_LDR_thermometer1.ino.

Tester automat pentru acumulatori LiPo 2S si 3S

    Am realizat ca diferenta de tensiune pentru acumulatorii LiPo 2s si 3S este suficient de mare pentru a realiza o selectie automata, asa ca am eliminat comutatorul mecanic din articolul precedent.
    Schema folosita este ca cea desenata pentru testerul LiPo 2S
    Cum am prezentat in articolele anterioare, se poate selecta led multicolor cu catod comun (ca in schema) sau cu anod acomun, doar trebuie sa faceti o mica schimbare in program (comentare 2 linii si decomentarea a altor 2).
   Partea de trecere automata se face prin alegerea unei valori putin peste maximul tensiunii unui acumulator LiPo 2S, dar mult mai jos decat un acumulator LiPo 3S descarcat:
si dupa citirea tensiunii sa facem alegerea ( e selectata doar partea de baza)
   Deoarece e mult mai usor de inteles modul de functionare din filmulete, am facut 2 in care am folosit noul program (RGB_LiPo2S3S_autochecker.ino):
- cu comentatii in limba romana
- cu descriere in engleza

vineri, 27 martie 2020

Tester pentru acumulatori LiPo 2S sau 3S

   Am combinat cele 2 testere prezentate anterior (pentru baterii LiPo 2S, respectiv LiPo 3S) rezultand unul, la care selectia se face dintr-un comutator (intrerupator cu retinere), avand schema:
    Se poate folosi led multicolor (RGB) cu catod comun sau anod comun, selectabil din program:
   Daca butonul este apasat, se masoara baterii LiPo 2s, iar daca este neapasat LiPo 3S
   Programul folosit este RGB_LiPo2S3S_checker.ino, care va face ca indicarea sa fie dupa tabelul
 
   Caz concret, pentru aceeasi tensiune, o baterie 2S este considerata supravoltata, iar una 3S una ok:
- selectie baterie LiPo 2S (contact facut)
- selectie baterie LiPo 3S (nu e contact la masa)
   Am realizat si 2 filmulete:
- cu descriere in romana
- cu prezentare in engleza
28.03.2020
   Am modificat programul pentru a avea indicatie mereu ce tip de acumulator LiPo testez (2S sau 3S), acesta devenind RGB_LiPo2S3S_checker1.ino. In mare clipeste ledul in alb (de fapt toate 3, formand alb) de doua ori pentru LiPo 2S apoi in culoare aferenta starii, iar daca elementul este LiPo 3S clipeste de 3 ori in alb, apoi se aprinde in culoarea starii (culorile sunt prezentate in cele 2 tabele).
   Am facut si 2 filmulete:
- cu descriere indicatii in limba romana:
- cu descriere in limba engleza:

Tester pentru acumulatori LiPo 2S

    Am adaptat testerul de acumulatori LiPo 3S pastrand schema, doar ca am facut teste doar pe Arduino, ca e mai a indemana (din program se poate modifica usor functionarea pe Arduino sau ATtiny85).
de asemeena se schimba usor tipul ledului multicolor (RGB), de la catod comun la anod comun.
   Modificarea consta in schimbarea pragurilor de aprindere leduri:
   Am facut poze cu starile:
- baterie supravoltata (daca e pusa la incarcator, altfel nu poate fi acest caz), >100%, led mov aprins
- baterie incarcata la maxim, intre 95 si 100% din tensiunea maxima (8,18V), led albastru aprins
- baterie incarcata foarte bine, intre 90 si 95% din tensiunea maxima, led bleo (albastru-verzui) aprins
- baterie incarcata suficient, intre 80 si 90% din tensiunea maxima, ved verde aprins
- baterie incarcata insuficient, intre 75 si 80% din tensiunea maxima, led galben aprins
- baterie descarcata, sub 75% din tensiunea maxima, led rosu aprins cu intermitenta
   Am realizat si 2 filmulete cu programul RGB_LiPo2S_checker.ino incarcat in Arduino:
- cu comentariu in romana
- cu descriere in engleza


vineri, 20 martie 2020

Radio AM / FM (RDS) cu TEF6686 si STM32F103

   In articolele Radio cu TEF6686 si Radio cu TEF6686 si STM32F103 am tetsat doar pardea de FM, de data asta am adaugat un buton (fara retinere), care selecteza banda, exact ca un radio auto, deoarece TEF6686, chiar asta este, un tuner radio folosit in navigatii si radio auto.
   Selectia de face in ordinea FM1/FM2/FM3/MW/LW/SW prin apasarea butonului BAND din schema de mai jos:
   Eu am tetat doar cu STM32F103, dar ar trebui sa ruleze fara probleme pe Arduino Mega sau Mega 2560 Pro (versiunea mai mica), doar se schimba pinii alocati butoanelor.
  Programul folosit este TEF6686_1602i2c_v6beta si modul de instalare a fost prezentat in articolul precedent, trebuie sa tineti cond si de schimbarea librariei Wire cum am prezentat in articolul Functionare corecta comunicatie pe i2c la placile de dezvoltare cu STM32F103.
   Prezentarea informatiei in diferite benzi:
- FM1
- FM2
- FM3
- MW
- LW
- SW
   Pe partea de AM am reusit sa prind doar pe banda de unde medii MW postul Radio Oltenia Craiova pe 1314kHz si asta dupa ce am schimbat sursa de alimentare (pana si lampa cu lupa foloseste sursa in comutatie). Ca si in cazul experimentelor anterioare, antena mea este un fir de jumata de metru.
   Nu am fost multumit de rezultatedele de pe AM, dar, pentru moment, pana nu il mut pe un cablaj/cutie nu pot face teste edificatoare in privint performantelor, dar am incredere ca e un produs de calitate.
   Au ramas implementate functiile de cautare automata post radio (inainte/inapoi), reglaj manual frecventa (crestere/scadere cu pas de 0,1MHz pe FM si 9kHz pe AM) si reglaj volum (crestere/scadere cu pas de 4dB).
   Am realizat 2 filmulete cu acest radio:
Radio AM/FM RDS cu TEF6686 si STM32F103
AM/FM RDS radio with TEF6686 and STM32F103


miercuri, 18 martie 2020

Radio FM (RDS) cu TEF6686 si STM32F103

   In articolul precedent (Radio cu TEF6686) am folosit ca placa de dezvoltare modelul Arduino Mega clasic si, ulterior, Mega 2560 Pro, o varianta redusa ca dimensiuni a celei originale, dar rara ca raspandire.
   Am considerat ca implementarea pe o placa de dezvoltare cu STM32F103 este binevenita, deoarece are pret redus, usor de montat pe cablaj de test sau breadboard, etc.
   Conectarea este simpla, modulul radio cu TEF6686, care are adresa 0x64, si afisajul LCD1602 cu interfata i2c, ce are adresa 0x3F, dupa cum se vede daca cautam ce perifierice avem legate, cu programul i2c_scanner.
   Am pastrat comenzile din 6 butoane, configuratia fiind ca in sketch, doar ca am pus rezistente de 4k7 la +3,3V (rezistente de pull up), deoarece la alte teste anterioare, comanda de folosire a rezistentelor interne de pull-up nu au parut ca lucreaza. Cele 5 butoane au urmatoarea functionalitate: volum(crestere/scadere), cautatare autmata post radio (inainte/inapoi) si schimbare frecvnta cu pas de 0,1MHz (crestere/scadere).
    Pentrua putea folosi placa STM32F103 cu TEF6686, trebuie sa schimbati libraria Wire din locul unde s-a instalat acest model de placa, la mine localizarea este la C:\Users\niq_ro\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries.
cu cea de la https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/Wire
   Detalii se gasesc in articolul Functionare corecta comunicatie pe i2c la placile de dezvoltare cu STM32F103.
   Programul, care poate functiona si pe STM32F103, dar si pe Arduino Mega este TEF6686_1602i2c_v5 si include mai multe fisiere, cel de baza cu terminatia ino si altele ajutatoare. trebuie sa descarcati tot continutul din subdirector, pastrandu-i numele.
- github:
- local:

- in programul Arduino IDE:
   Am realizat 2 filmulete, din care se intelege mai usor ce am facut si cum functioneaza:
radio cu TEF6686 controlat cu STM32F103
RDS radio with TEF6686 and STM32F103
   Consumul mediu indicat de sursa de alimentare este de cca 240mA (variaza, in functie de modul de functionare: redare, cautare automata, reglaj manual, etc):
  Cateva poze:
   Instalarea placii STM32F103 si programarea acesteia se face cum am prezentat in articolul Placa de dezvoltare cu microcontroler STM32F103C8T6
   Deoarece am gasit in articolul STM32F103C8T6 board, alias Blue Pill o librarie pentru placa de dezvoltare, 
am desenat si schema radioului, ca e mai usor de inteles.