luni, 9 noiembrie 2020

Sistem de automatizare pentru umplere bazin cu apa

     Desi am mai publicat eu ceva acum mult timp, o solutie cu integrate CMOS, in articolele Automat pompa si Automat pompa, inclusiv simulare functionare

a venit randul si unei automatizari cu Arduino.
    Schema de test este:

  Dupa cum se vede in schema, in rezervor vor fi 4 tije (de inox), una fiind masa (GND), una pentru rezervor pe minim, una pentru mijloc si una pentru maxim.
  Daca bazinul va fi gol, nivelul apei sub minim, se va aprinde un led rosu si va porni pompa, 
daca nivelul creste peste jumatate, se aprinde ledul galben si pompa continua sa functioneze, 
pana se depaseste nivelul maxim indicat de un led verde.
Daca nivelul apei scade, dar nivelul apei este mai mare decat mijlocul, se aprinde ledul galben, iar pompa este oprita.
Daca nivelul apei scade sub jumatate reporneste pompa,
   Modul de functionare se vede si in filmuletul facut de George Dacin:
   Pe parcursul realizarii montajului am primit si niste poze:

   Programul pentru aceasta automatizare este watertank1.ino.

11.11.2020
   Am primit un nou filmulet de la George

miercuri, 14 octombrie 2020

Comanda motor de curent continuu in ambele sensuri, incluzand limitari de deplasare (ver.2)

    In completarea articolului anterior unde foloseam limitatori de cursa cu contact inchis si contact deschis, de data asta se folosesc in schema limitatori cu contact normal inchis (NI/NC). Schema a fost prezentata de Bogdan Argatu, ca fiind folosita usual in actuatoare.

   Schema desenata de Bogdan, cu mici adaptari, facute de mine, este:

   

Schema, redesenata de mine, este:

    Ca si in articolul precedent, voi prezenta cazurile de functionare, incpand cu o pozitie intemediara, cand nu sunt actionate limitatoarele si se apasa butonul fara retinere SW1 ce poate si o comanda temporizata (daca timpul necesar parcurgerii cursei intregi, in cele mai grele conditii, este de 20 secunde, sa zicem, comanda noastra va fi de minim 22-25 secunde).
    Cand se ajunge la capatul de cursa corespunzator, in cazul de fata, LIM1, motorul se opreste:

    Se poate da comanda doar in sens invers, deoarece dioda D4 permite circularea curentului
Dupa ce motorul incepe sa se miste, limitatorul de cap de cursa SW1 nu mai este actionat si se inchide contactul, strapand dioda D4, astfel ca motorul functioneaza in continuare:
pana este actional limitatorul LIM2 de cap de cursa:
   Motorul poate fi comandat doar in primul sens de deplasare, cand se apasa butonul SW1, deoarece curentul poate circula prin dioda D3
apoi, imediat cum mlotorul incepe sa se miste, se revine la functionarea normala, cand limitatoare nu sunt actionare si se poate comanda motorul, intr-un sens 
sau in altul
   Am facut si capturi video pentru a vedea simularea functionarii:
- cu prezentare in romana
- cu prezentare in engleza




luni, 12 octombrie 2020

Comanda motor de curent continuu in ambele sensuri, incluzand limitari de deplasare

     Deoarece un motor de curent continuu isi schimba sensul de rotatie in functie de cum este alimentat, ele sunt folosite, impreuna cu un sistem de reductoare mecanice, la actionarea geamurilor electrice ale autoturismelor, dar se pot folosi pentru a trage o jaluzeaza, sa deschida sau sa inchida o fereastra batanta sau chiar pentru o poarta culisanta. 

Pentru cam totate aplicatiile sunt necesari limitatori de cursa.






    O schema simpla, ce implica limitatori de cursa pe circuitul de forta este:

   In schema prezentata, SW1 este un buton fara retinere ce alimenteaza releul REL1, iar SW2 pentru REL2. Daca consideram ca SW1 este folosit pentru rotirea in sensul acelor de ceasornic (si consideram deschidere), atunci SW2 este pentru rotire in sens trigonometric (inchidere). LIM1 si LIM sunt limitatori de cursa, ce au fiecare cate un contact normal inchis (NI/NC) si un contact normal deschis (ND/NO).
   In repaus, cu usa/poarta/fereastra intredeschisa schema si pozitia limitatorilor este cea prezentata mai sus.
   Daca se apasa butonul fara retinere SW1 sa se deschida complet usa, motorul este alimentat:
 cand se ajunge la capat, limitatorul LIM1 este actionat si motorul nu mai este alimentat, deoarece are ambele borne la masa:
    In locul butoanele SW1 si SW2, cu releele respective se folosesc sisteme de actionare gen telecomanda auto sau chiar alte sisteme de comanda ce mentin contactul o durata mai mare decat cea necesara unei curse complete, in cel mai defavorabil caz. Daca usa se inchide in 11 secunde si se dechide in 12 secunde, vom alege, acoperitor, sa fie actionare releele 15 secunde.
   Usa este deschisa la maxim, si deci limitatorul LIM1 este actionat, asa ca e posibila doar comanda de inchidere, care se da prin actionarea butonului SW2
Functionarea continua chiar si dupa ce limitatorul LIM1 nu mai este actionat, deoarece se asigura contact la masa
Cand se ajunge la capatul de cursa pentru inchidere este actional limitatorul LIM2 si se intrerupe alimentarea motorului:
   Acum, usa se poate doar deschide, prin apasarea butonului SW1, deoarece motorul este alimentat de contactul limitatorului LIM2 catre masa:
imediat ce limitatorul LIM2 revine in repas, circuitul permite alimentarea in continuare a motorului in sensul deschiderii:
sau reinchiderii:
sau opri intr-o pozitie intredeschisa daca nu se comanda nici un releu:
    Am facut si o captura video pentru simularea in programul Circuit Wizard (in poze am scris gresit numele programului 😎):
si inca una cu descriere in engleza:



joi, 8 octombrie 2020

Termostat reglabil cu termocupla K

     Vazand o postare a lui Kosti Isac in care se solicita ajutorul pentru realizarea unui termostat cu termocupla K (cu amplificator MAX6675), la care sa se poata regla temperatura pana la 2500C dintr-un potentiometru, afisarea informatiilor sa se faca pe un afisaj, deja clasic, LCD1602, am zis ca pot da o mana de ajutor.

     Deoarece nu avea rost sa reinventez roata, am folosit informatiile din articolul How to Measure Extreme Temperatures Using the MAX6675 and an Arduino (and a thermocouple) in care se foloseste libraria https://github.com/adafruit/MAX6675-library.

   In librarie e un exemplu de termometru cu afisare a datelor pe un afisaj LCD1602, asa ca am pastrat conectarea de acolo, punand un potentiometru intre 5V si GND, ce are cursorul la A0 si mai conectat un modul cu un releu la D3.

    Programul modificat de mine este thermostat_lcdthermocouple.ino si incarcandu-l in placa de dezvoltare Arduino, vom vedea (pe un afisaj LCD2004, pe care a avut la indemana Kosty):
- daca temperatura reala e mai mica decat cea dorita minus 10C (asa am ales eu valoarea histerezisului, dar poate fi modificata), releul este cuplat pentru a alimenta sistemul de incalzire
- daca temperatura reala e mai mare decat cea dorita, releul este decuplat intrerupand alimentarea sistemului de incalzire
   Am primit si un filmulet, de la Kosti, in care sketch-ul are mici modificari de pozitionare informatii:
9.10.2020
   Schimbarea valorii histerezisului se face simplu, inlocuind cifra 1 pentru 10C cu alta, de exemplu dasa se pune valoarea 2.5 vom avea un histerezis de 2,50C.
 => 
iar daca se doreste schimbarea domeniului de reglaj de la 0...2500C la 200.4500C se modifica liniile
 cu 


   Programul cu modificarea domeniului de reglaj este thermostat_lcdthermocouple_1.ino !