luni, 15 iunie 2020

Reducere consum la placile de dezvoltare cu ESP8266

   Pentru a putea trimite date (de exemplu, temperatura si umiditatea relativa a aerului) dintr-o incinta sau zona fara posibilitate de alimentare de la retea, trebuie folosita facilitatea de consum redus in modul de "somn adanc" (deep sleep).
   Materialul ce l-am testat, a fost cel din articolul ESP8266 TEMPERATURE AND HUMIDITY LOGGER WITH DEEP SLEEP ENABLED
 
in care se foloseste schema
   Din testele mele si ce am mai aflat de pe internet, pinul de RST trebuie conectat la D0 printr-o rezistenta de 470Ω
   Am masurat ca in modul activ (conectare la reteaua wi-fi, masurare, conectare la server Thingspeak, trimitere date) consumul este intre 67-56mA, media ar fi de 70mA, iar in modul de somn este de 120μA.
   Diferenta este foarte mare, de aceea am masurat si timpul in care ESP-ul de trezeste, se conecteaza la reteaua wi-fi si, in cel mai fericit caz este de cca 7-8 secunde, iar in cel mai nefericit de cca. 14 secunde, raportul constatat este de 1:1, adica o data 7-8 secunde, o data 14 secunde.
   Cautand un mod de somn adanc si pentru ATtiny85, am gasit articolul Battery Life Calculator si am facut un calcul pentru cazul meu, in care am 10 minute timp de somn, o medie de 10,4 secunde de functionare la consum mare si 3 baterii AAA clasice, constatand ca ar tine cam 21 zile
dar daca ar functiona continuu, nici jumatate de zi:
De aceea, ori se foloseste un acumulator 18650 cu un sistem de protectie (BMS) ori un mic panou solar cu niste acumulatori mai slabi, sau chiar conectat la un acumulator 18650.
   Eu am fololosit un "Modul incarcare baterie 3.7V cu ridicator la 5V" primit ca bonus la o comanda de la www.sigmanortec.ro, care este si modul de incarcare si de protectie, avand codul T6845-C:
ce foloseste integratul dedicat HT4928S
dar se pot folosi si module separate, cum este prezentat in articolul DIY Power Bank Circuit
    Programul modificat si folosit de mine este ESP8266_DHT22_ThingSpeak_deepsleep.ino, iar pe canalul 72307 de test de pe Thingspeak valorile sunt asa:

24.06.2020
   Am conectat un mic panou solar la modulul T6845-C in acelasi timp cu consumatorul (placa WeMos D1 Mini) si acum nu mai trebuie sa deconectez consumatorul pentru a incarca acumulatorul.
   Vedeti 2 filmulete:
- cu prezentare in limba romana:
- cu prezentare in limba engleza:


26.06.2020
    Am schimbat sistemul de alimentare, deoarece modulul "combo" T6845-C mai decupla consumatorul (adica placa mea WerMos D1 Mini de trimite date pe canalul de Thingspeak).
    Am conectat 2 module: unul cu TP4056 la care este conectat minipanoul solar (permite tensiune de intrare de maxim 8V, tipic 5V, minim 4V) si ca iesire la acumulatorul 18650. La bornele acumulatorului este un modul ridicator la 5V cu iesire USB la care am conectat consumatorul.
  Schema de conectare este asa:
   Am facut 2 filmulete:
- cu descriere in romana

- cu descriere in engleza

10.07.2020
   A sosit un panou solar de capacitate mai mare (6V 4.5W 520mAh), care poate incarca acumulatorul si pentru intensitate luminoasa redusa (cer cu nori, dimineaza devreme, seara tarziu, etc):
    Panoul nou e mult mai mare decat cel initial

luni, 8 iunie 2020

Robotel cu automentinere pe verticala (Self Balancing Robot)

    Avand la dispozitie 2 motoreductoare cu roti, am zis sa testez si eu un asa-zis robotel cu automentinere pe verticala. Tentatia a fost sa fac unul ce se deplaseaza controlabil de pe un telefon cu ESP8266, dar am zis ca mai bine ma obisnuiesc cu controlul PID folosit si am testat un sistem cu Arduino, care doar isi mentine pozitia pe vericala (sau cel putin incearca).
    Dintre multele articole si materiale, m-am oprit la https://circuitdigest.com/microcontroller-projects/arduino-based-self-balancing-robot
si am testat programul, pentru a vedea macar ca se compileaza. Elementul de baza este senzorul MPU6050 care este un accelerometru cu giroscop.
   Trecand de pasul asta, am facut un montaj de test pe un breadboard dupa schema 
doar ca am pus doar leduri cu rezistente de 220Ω, pentru limitare curent.
incarcand programul, am constatat ca in functie de inclinare, s-ar comanda rotirea controlata a motoarelor, pentru compensarea pozitiei verticale:
    Am facut 2 filmulete:


    Am mai studiat diverse materiale si am realizat ca trebuie sa fac o "calibrare" a senzorului folosind programul MPU6050_calibration.ino si sa le introduc in programul robotelului:
   Deoarece echilibrul este cel mai important, am preferat sa aleg alt cadru, dupa proiectul de la https://www.thingiverse.com/thing:3369262
   Cadrul a fost printat de colegul meu, Catalin, deoarece imprimanta mea este indisponibila momentan, din cauza spatiului.
   Am facut mici modificari la suportii motoarelor, deoarece design-ul original nu e cel optim:
   Am dat gauri pentru a fixa modulul cu L298:
   Intre timp, am primit de la prietenul meu Tom, mai multe cablaje, dintre care si unul pentru robotel, pe care il proiectasem in Eagle PCB software:
   Am fixat si montajul cu Arduino si sistemul de alimentare cu 2 acumulatori 16850 cu BMS 2S:
   Am facut mici modificari ale programului original, pentru a schimba usor parametrii, de exemplu pozitia de echilibru si unghiurile maxime de mentinere:
   Initial, cei 3 parametrii PID (kp, kd, ki) trebuie sa fie pusi in zero, apoi se modifica pe rand pana robotul este stabil sau face miscari ce il fac sa stea pe verticala. Foarte util pentru alegerea acestor 3 parametrii este filmuletul How to Tune PID values for Self Balacing Bot din articolul original.
  De exemplu, in articol parametrii erau
iar eu am reusit sa il fac sa fie cat de cat ok cu parametrii:
   Am facut 3 filmulete in diverse stadii ale testelor:
- DIY Self Balancing Robot using Arduino
- DIY Self Balancing Robot using Arduino (2)
- DIY Self Balancing Robot using Arduino (3)

duminică, 7 iunie 2020

Sistem deschidere poarta culisanta

    In trecut am mai prezentat un sistem de deschidere porti, dar erau duble, vedeti https://nicuflorica.blogspot.com/search?q=poarta, acum o sa prezisnt un sistem de deschidere poarta culisanta cu motor de c.a.
   Un prieten a avut nevoie sa schimbe, cel putin pentru o perioada scurta, un sistem defect cu "ceva", asa ca am conceput impreuna schema si programul.
   In mare, sunt folosite:
- 2 butoane (de fapt iesirile de la un receptor)
- o placa Arduino Nano (originala sau clona)
- o placa cu 4 relee
dar si motorul original de c.a. si 2 limitatori mecanici.
    Modul de comanda al motorului este cum am prezentat in articolul Pornire motor monofazat in ambele sensuri (2)
doar ca mai e un limitator de cursa si pe circuitul din stanga.
    Pentru moment, s-a testat pe masa, montajul, pentru cele 3 stari:
- repaus:
- deschidere:
- inchidere:
   Programul folosit este opengate.ino, care permite ca la apasarea butonului de deschidere, timp de 20 secunde primul releu alimenteaza motorul, iar al doilea ramane necuplat si motorul este conectat prin contactul normal inchis (NI/NC). Daca se apasa oricare buton in timpul operatiunii, aceasta de intrerupe. La fel si pentru inchidere, timp de 20 secunde primul releu alimentarea motorul, iar al doilea este cuplat si motorul este conectat prin contactul normal deschis (ND/NO).
   Limitatorii opresc alimentarea la capete de cursa, timpul de 20 secunde fiind luat acoperitor.
   Am primit de la Catalin si un filmulet: