Se afișează postările cu eticheta PWM. Afișați toate postările
Se afișează postările cu eticheta PWM. Afișați toate postările

duminică, 9 ianuarie 2022

Control variatie intensitate luminoasa pentru 2 (benzi de) leduri cu encoder

   Fata de articolul precedent, in care am folosit 3 butoane, acum voi folosi un encoder KY-040, schema pentru controlul a 2 leduri cu PWM (sau ulterior a unui driver pentru control sens si turatie motor de curent continuu) este    
   Modul de functionare a fost inspirat din videoul Control a DC Motor using the L9110S driver and a Rotary Encoder with an Arduino - Tutorial
   Am facut 2 filmulete, pentru a vedea cum functioneaza sistemul, daca incarcam programul toy_2leds/blob/main/2leds_encoder_v1a.ino
   Conectarea la un modul driver cu L298 s-ar face astfel:

   Bineinteles, schema si programul pot fi imbunatatite, dar acum exista un punct de plecare 😃

Control variatie intensitate luminoasa pentru 2 (benzi de) leduri cu butoane

       Pornind de la un sistem de control al vitezei si directie unei machete (trenulet, de exemplu) am gandit un sistem de comanda in PWM (semnal cu factor de umplere variabil) a unei punti H (pentru motor), ulterior trealizand ca pot comanda 2 benzi de leduri, sa se aprinda lent si sa se stinga lent.

    Prima schema este una cu 3 butoane, unul pentru aprindere led 1, al doilea pentru aprindere led 2, iar al doilea pentru stingere. Aprinderea si stingerea se fac lent.

   Programul 2leds_3switches_v1_1.ino va realiza un control pentru cele 2 leduri, dupa cum se vede in filmuletele:
    Pentru a se intelege mai bine modul de functionare, am conectat un osciloscop cu 2 canale, observandu-se ca 
- amble led-uri stinse
- ledul 1 aprins partial
- ledul 2 aprins partial

  Daca se comanda un driver cu L298, de exemplu, iesirile montajului,  OUT1 se leaga la intrarea IN1 a modului driver, OUT2 la IN2, se pastreaza jumper-ul pentru EN(able), se conecteaza GND de la Arduino la GND al modului driver si se leaga la iesirile modulului driver OUT1 si OUT2 un motor de curent continuu.

   Schema modului de comanda motoare cu L298 are o schema asemenatoare cu care o gasim in articolul Circuit Schematic of Generic L298N Driver Board
iar pentru intelegerea functionarii integratului L298 puteti studia fisa de catalog (datasheet-ul).

marți, 13 septembrie 2016

Sursa de tensiune controlata de Arduino

   Dupa ce m-am "jucat" un pic cu un convertor de semnal dreptunghiular in tensiune continua si am fost multumit de rezultate, am zis sa continui testele si sa realizez o sursa de tensiune controlata de Arduino, dupa cum e prezentat in articolul A Powerful Little Arduino Programmable 10V Supply in care se foloseste un integrat specializat MCP4725 de conversie din digital in analogic (DAC) pe 12 biti:
   In articolul Convertisseur PWM / Tension 001 este prezentat o sursa controlata cu semnal dreptunghiular cu factor de umplere variabil (PWM):
  Schema mea de test, in care folosesc un integrat Beta M324 din 1988 iarna, este
iar consumator a fost un bec cu leduri de 12V si 3W, care se deschide doar la tensiune de peste 7V...
   Am facut 2 filmulete, in care se vede cresterea si scaderea lenta a tensiunii la iesire:
- sursa de tensiune controlata de Arduino in care folosit sketch-ul fade_pwm_control3a.ino cu variere factor ce umplere de la 0 la 255 din total 255 trepte cu pas de 5 trepte:
- sursa de tensiune controlata de Arduino (2) la care am folosit sketch-ul fade_pwm_control3b.ino care comanda tensiune pornind de la aprinderea "becului cu leduri", de la 120 la 255 trepte, cu pas de 5 trepte:
   Am schimbat "becul cu leduri" cu unul clasic auto de 5W si 12V, incarcand sketch-ul fade_pwm_control3a.ino cu variere factor ce umplere de la 0 la 255 din total 255 trepte cu pas de 5 trepte si am facut filmuletul sursa de tensiune controlata de Arduino (3)

luni, 12 septembrie 2016

Convertor semnal digital in tensiune continua

   Pentru a putea verifica anumite montaje controlate in tensiune (de exemplu corectorul de ton LM1036 sau surse de tensiune) cu ajutorul Arduino, am zis sa testez si partea de convertor din semnal dreptungiular de 5V cu factor de umplere variabil in 255 trepte sa-l convertesc in tensiune continua de la 0 la 10V, de exemplu.
   Pe net se gasesc destule informatii despre aceasta conversie, un articol bine prezentat este Arduino Pulse-Width Modulation Digital to Analog Conversion
   Eu am vrut sa folosesc o sursa de incredere, mai ales ca as putea sa folosesc acest convertor in domeniu audio asa ca am apelat la site-ul www.sonelec-musique.com si anume la articolul  Convertisseur PWM / Tension 001 in care se prezinta schema
si una cu 3 filtre RC la iesire in loc de una:
   Am facut un montaj de test in care am folosit un vechi operational cvadruplu Beta M324, care este echivalent cu LM324, doar ca e fabricat in Romania la sfarsitul anului 1988:
intai testand prima schema, in care amplificarea amplificatorulu neinversor este 2 deoarece  A=1+R3/R2=2 (asta daca rezistentele ar fi identice ca valoare):
apoi montandu-i inca un filtru RC, pentru a reduce nivelul componentei alternative
deoarece este conteaza inca un etaj de filtrare RC, dupa cum se vede in pozele urmatoare.
- sketch, in care se vede ca factorul de umplre al semnalului este de 63/255:
- semnalul de la intrare:
- componenta alternativa a semnalului dupa etaj RC
- componenta alternativa a semnalului dupa al doilea etaj RC
   Am facut niste filmulete in care am testat semnal dreptunghiular cu factor de umplere variabil de la 0 la 255 din 255 trepte folosind sketch-ul fade1.ino care deriva din cel din exemplele programului Arduino IDE, folosind pinul 9 ca iesire de semnal, ca si acolo, unde era folosit pentru comanda unui led:

   Dupa cum se vede, componenta alternativa a tensiunii de la iesire este foarte mare, asa ca trebuie sa folosim o frecventa mai mare. Arduino fiind un microntorler ATmega programat prietenos poate genera la o anumita iesire semnal dreptunghiular cu factor de umplere variabil (pwm) cu anumite frecvente, dupa cum se vede in articolul http://playground.arduino.cc/Code/PwmFrequency.
  In mare, pinii digitali genereaza semnal dreptunghiular pe o frecventa de baza, astfel: D3, D9. D10 si D11 pe 31250Hz (31,25kHz), iar D5 si D6 pe 62500Hz (62,5kHz). Divizoarele pe pinii D5, D6, D9 si D10 sunt cu 1, 8, 64, 256 si 1024, iar la pinii D3 si D11 cu 1, 8, 32, 64, 128, 256 si 1024.
   Eu am folosit pinul D9, deci frecventa de baza a semnalului dreptunghiular este 31,250Hz, iar divizat:
- cu 8, frecventa semnalului este 31250:8 ~ 3906Hz ~ 3,9kHz
- cu 64, frecventa semnalului este 31250:64 ~ 488Hz
- cu 256, frecventa semnalului este 31250:256 ~ 122Hz
- cu 1024, frecventa semnalului este 31250:1024 = 30,5Hz
  Deoarece anumite librarii pot "activa" divizorii, la pinul 9 am avut 488Hz.
   Am facut teste la cele 5 frecvente disponibile, pentru a vedea diferentele nivelului componentei alternative la iesirea montajului, dupa primul si al doilea filtru RC, cu factor de umplere 50%.
1) la 31,25kHz:
- semnal la intrare:
- semnal dupa primul filtru RC
- semnal dupa al doilea filtru RC:
2) la 3,9kHz:
- semnal la intrare:
- semnal dupa primul filtru RC
- semnal dupa al doilea filtru RC:
3) la 488Hz:
- semnal la intrare:
- semnal dupa primul filtru RC
 
- semnal dupa al doilea filtru RC:
4) la 122Hz:
- semnal la intrare:
- semnal dupa primul filtru RC
- semnal dupa al doilea filtru RC:
5) la 30,5Hz:
- semnal la intrare:
- semnal dupa primul filtru RC
- semnal dupa al doilea filtru RC:
   Pentru generarea semanului dreptunghiular cu factor de umplere variabil si frecventa cu divizoare diferite, am folsit scketch-ul fade_pwm_control2.ino si in filmuletul numit Convertor semnal digital in tensiune continua (4) am prezentat ce am scris mai sus:
   In concluzie, cu o frecventa mare se poate folosi acest tip de comanda pentru aplicatii audio, cum incepusem sa prezint in articolul Corector de ton cu LM1036 si Arduino.
sau alte aplicati care permit controlul in tensiune...

miercuri, 24 septembrie 2014

Combinare module DRL (Day Time Light) si CHLH (coming home/leaving home) folosind Arduino

   Deoarece am tot fost intrebat de detaliile de executie a unor module pentru masina m-am gandit sa combin 2 dintre ele folosindu-ma de o placa Arduino (ulterior transferat proiectul pe un cablaj).
   Separat le-am tratat, in articolele modul "Daytime Running Light" - (DRL) si Modul "coming home / leaving home" ("follow me home") si in mare, DRL-ul are functia de a aprinde automat, cu intensitare redusa, pe timp de zi, a luminilor autovehiculului, dupa ce tensiunea pe acumulator este mai mare de o anumita valoare, iar CHLH (numit la unele masini si "confort") functioneaza doar noaptea, dupa ce se incuie masina (inchidere centralizata, alarma, etc) si aprinde, pentru cateva zeci de secunde, becurile de pozitie (sau faza scurta) pentru ca soferul si insotitorii "sa vada drumul spre casa"; similar, se intampla la descuierea masinii. 
   DRL-ul cu componente obisnuite are o schema de genul:
iar CHLH-ul:
   Avand in vedere ca ambele depind de intensitatea luminoasa a mediului exterior, voi folosi doar o fotorezistenta, cum am prezentat in articolul O fotorezistenta si Arduino, iar schema de test este foarte simpla (doar partea stanga):
   Pentru DRL, trebuie sa masor tensiunea pe acumulator si daca creste peste 13,8V sa aprinda cu intensitate redusa "faza scurta", folosindu-ma de o iesire PWM a lui Arduino.
   Masurarea tensiunii acumulatorului o s-o fac, clasic, cu un divizor rezistiv de tensiune, cum se prezinta in articlul Measuring DC Voltage using Arduino:
   Modul de reglaj a intensitatii luminoase sau a turatiei unui motor de curent continuu l-am tratat in articolul Control turatie motor (prin varierea factorului de umplere - PWM).
   Modul de reglaj al intensitatii luminoase cu Arduino si un tranzistor MOS-FET este foarte simplu, cum este prezentat in articolul High-Power Control: Arduino + N-Channel MOSFET:
   Momentan, este doar o idee de proiect, trebuie sa imi fac "calculele" si sa ma apuc de munca :)))) astept pareri si idei, variante, etc...

   Pentru inceput, am ales divizorul de tensiune, compus din 2 rezistente:
   Deoarece la intrarile analogice (dar si al cele digitale) nu trebuie sa depasim tensiunea de alimentare a placii de dezvoltare Arduino, adica 5V, aceasta fiind atinsa doar cand tensiunea pe acumulator ar fi (teoretic) de 16V, ceea ce nu este posbil, in mod normal:
  Daca vrem sa fim prevazatori si modificam divizorul astfel:
   Pentru pragul de 13,8V vom avea la intrarea analogica a placii Arduino o tensiune de 2,42V:
 
   Pentru a controla intensitatea luminoasa, cred ca o sa aleg varianta propusa la Help using MOSFET to switch on/off IC
care-i identica cu cea din articolul Microcontroller Interfacing (unde se gasesc si alte "chestii" utile):
   Schema de testare, va fi asta sau foarte asemanatoare cu asta: