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

sâmbătă, august 29, 2015

Controlul unui motor folosind o punte H

Salut,

In acest articol voi prezenta modul in care un motor poate fi controlat cu ajutorul unei punti H.

O punte H este un circuit construit din 4 tranzistoare care actioneaza ca niste intrerupatoare, iar pozitia acestora determina sensul de rotire al motorului.

Punte H
Punte H
 
In stanga figurii de mai sus comutatoarele A1 si A2 sunt inchise si curentul va trece prin ele iar sensul va fi prin A1-motor-A2 si motorul se va roti in sensul acelor de ceasornic.

In dreapta figurii de mai sus celelalte doua comutatoare B1 si B2 sunt inchise si curentul va trece prin ele si prin motor iar motorul se va roti in sens invers acelor de ceasornic.

In total exista 2^4=16 pozitii posibile ale comutatoarelor. In general se folosesc doar 4:
  • toate deschise --> motorul este in standby
  • A1,A2 inchise, B1,B2 deschise --> motorul se invarte in sensul acelor de ceas
  • A1,A2 deschise, B1,B2 inchise --> motorul se invarte in sens invers acelor de ceas
  • cele de sus inchise, cele de jos deschise sau invers --> motorul este franat
ATENTIE: Niciodata comutatoarele de pe o latura a puntii (A1+B1 sau A2+B2) nu trebuie inchise simultan deoarece se face scurtcircuit (curentul trece direct de la Vdd prin tranzistoare spre Gnd si se vor arde tranzistoarele).
Pentru a impiedica acest lucru, in practica se comuta tranzistoarele de pe o latura simultan (unul off si celalalt on), legand intrarile celor doua tranzistoare intre ele, de regula tranzistoarele de sus (high side) fiind PNP iar cele de jos (low side) fiind NPN. In figura de mai jos este exact invers. :)


Punte H cu tranzistoare bipolare
Punte H cu tranzistoare bipolare

Legand intrarile de pe o parte si cealalta, lucrurile se simplifica, ramanand astfel 2 pini ce trebuie comutati on-off, avand doar cele 4 combinatii descrise mai sus.

Acest design explica cel mai bine principiul de functionare al puntii H. In practica design-ul folosind componente discrete este destul de costisitor, si consuma foarte mult spatiu pe o placa PCB. De aceea se pot folosi circuite integrate specializate, ce pot oferi un curent de iesire destul de ridicat (de ordinul amperilor). Ex: L293B/D.

Punte H L293
Puntea H L293

In figura se observa ca integratul are 4 intrari (input) logice (0V sau 5V) si 4 iesiri (output) de putere (0V sau 12V).
Fiecare iesire corespunde fiecarei intrari. Astfel, daca Input_1 = 0V --> Output_1 = 0V, iar daca Input_1 = 5V --> Output_1 = 12V.

Practic se obtine o translatare a nivelului logic 0-5V in nivelul logic 0-12V. Acesta din urma poate oferi atat o tensiune mai mare (12V), cat si un curent mai mare (0.6A---1A in functie de capsula).

De asemenea, exista si doi pini de Enable (EN1 pentru Output1 si 2, EN2 pentru Output3 si 4) folositi pentru a valida cele 4 iesiri. Acesti 2 pini, impreuna cu cei 4 pini de Input se conecteaza la un microcontroller care gestioneaza actionarea acestora.

Sunt doua modalitati de folosire:

1. Pinii de ENable conectati fizic la +5V --> Iesirile sunt validate permanent si controlate doar prin cei 4 pini de input conectati la microcontroller.

2. Pinii de ENable sunt conectati la microcontroller. Avantajul este ca prin acesti 2 pini se poate comanda turatia motoarelor prin PWM (Pulse Width Modulation).
De obicei un microcontroller are un numar limitat de iesiri PWM.

Astfel, variind factorul de umplere intre 0% si 100%, putem obtine orice tensiune intre 0 si 12V.
Factor de umplere PWM
Factor de umplere PWM
In graficul de mai sus, se observa 3 cazuri, primul in care obtinem 25% din tensiunea de alimentare, adica 0.25*12V=3V. Pentru 50% obtinem 6V, pentru 75% obtinem 9V etc.

Pe langa factorul de umplere, trebuie sa folosim o frecventa care sa influenteze cat mai putin modul de lucru al motorului. De obicei, o frecventa de 25KHz este suficienta pentru un motor.
In graficul de mai sus, f=1/(Ton+Toff)=ct=25KHz, unde Ton este timpul in care EN este pe 1Logic=5V, iar Toff este timpul in care pinul de EN este pe 0Logic=0V.

Spor la controlat motoare folosind o punte H, fie cu tranzistoare discrete, fie cu circuite integrate!

vineri, iunie 19, 2015

Controlul turatiei unui motor in functie de luminozitate folosind o fotodioda si un microcontroller

         Acesta este un proiect realizat in anul IV de facultate (2013) la cererea unor colegi mai neinitiati in ale electronicii.
         Desi pe piata au aparut de ceva timp module de senzori (shield), am preferat la acel moment sa  construiesc unul propriu: preiau tensiunea captata de o fotodioda expusa luminii ambientale si o amplific cu un AO cu amplificare foarte mare (100.000).
Senzor de lumina
Senzor de luminozitate + comanda motor
         Semnalul analogic furnizat de senzor este apoi citit cu un microcontroller (PIC de la Microchip, evident https://s.yimg.com/pu/emoticon/v2/4.gif), scara de masurare fiind 0-5V folosind un ADC pe 10biti (1024 de valori intermediare intre 0-5V).
         Pentru a controla turatia motorului am folosit un semnal PWM (Pulse Width Modulation) pe 10biti generat de microcontroller. Semnalul intra in baza unui tranzistor care are drept sarcina in emitor un motor de curent continuu cu perii (brushed DC motor).
Programare PIC16f887
PIC16F887 - conexiuni
          Iesirea senzorului se conecteaza la unul din pinii GPIO analogici (RA2 de ex) iar semnalul PWM se obtine din pinul RC1 (CCP2).
          Atat semnalul analogic captat de microcontroller, cat si semnalul PWM generat sunt pe 10biti, astfel ca factorul de umplere al semnalului PWM este chiar valoarea numerica pe 10biti a semnalului analogic.

          Programul a fost scris in mikroC for PIC si este extrem de simplu. Practic se foloseste o variabila pe 10 biti in care stocam tensiunea citita de la senzor si setam factorul de umplere al semnalului PWM cu acea valoare.
          Pentru scrierea programului in microcontroller am folosit un PICkit2 (Microchip).
          Rezultat:
         
            Este un proiect simplu dar din care am invatat cateva lucruri la vremea respectiva. Acesta era si motivul pentru care ma ofeream sa ajut colegii cu diverse proiecte, partea financiara fiind doar un detaliu minor https://s.yimg.com/pu/emoticon/v2/4.gif. Cel mai important pentru mine era sa capat experienta si dexteritate.

luni, septembrie 15, 2014

Conectarea unui microcontroler la o tastatura si un ecran LCD

Salut,

In acest articol voi prezenta cum putem citi o tasta apasata a unei tastaturi si afisarea acesteia pe un ecran.
Am scris programul in mikroC PRO for PIC pentru microcontrollerul PIC16F887 care foloseste oscilatorul intern de 8MHz.

1. Tastatura
Tastatura este practic o matrice compusa din M linii x N coloane. La intersectia unei linii cu o coloana se afla un intrerupator care odata apasat face contact intre linia si coloana respectiva.


joi, mai 09, 2013

Conectarea PICkit2 la un microcontroler PIC oarecare


In articolul precedent scriam despre programarea unui microcontroler PIC conectat la o placa de dezvoltare care are deja conexiunile realizate pentru conectarea PICkit2 printr-un soclu ICSP (In-Circuit Serial Programming).

Totusi, nu vom lucra mereu doar cu placi de dezvoltare in care microcontrolerele sunt de tip SMD si lipite pe placa, fara posibilitatea inlocuirii.

Asadar, avem un programator PICkit2 si un microcontroler oarecare. Se pune problema conexiunilor dintre cele doua dispozitive.

miercuri, mai 08, 2013

Cum programam un microcontroler PIC

microcontroler PIC
Microcontrolerele PIC de la Microchip® sunt poate cele mai utilizate microcontrolere de pe piata. Conform Wikipedia, din 2011 compania vinde anual 1 miliard de procesoare. Asadar, daca doriti sa programati un microcontroler, cele de la Microchip sunt o alegere foarte buna.

Pentru a programa un microcontroler aveti nevoie de minim 3 lucruri:
Recomandabil este sa achizitionati un programator impreuna cu o placa de dezvoltare. Eu am achizitionat acum 2 ani pachetul DV164121 care contine programatorul PICkit2 si o mini-placa de dezvoltare cu PIC16F887.

Este important ca sa va realizati propriile programe! Desi puteti lua cu usurinta programe de pe net gata compilate, eu va recomand sa invatati sa programati microcontrolerele folosind un mediu de dezvoltare precum MPLAB de la Microchip sau de la terte parti: mikroC/mikroPascal sau CCS PIC Compiler.