Sunteți pe pagina 1din 8

Limbaje de Programarea pentru Roboţi C9

4.3.3. Convertorul analog – digital (ADC)


Semnalele analogice, pentru a fi folosite într-un sistem de calcul digital, trebuiesc convertite în
valori numerice discrete.
Operaţia de conversie a semnalelor analogice în semnale digitale se poate prin două metode, şi
anume:
1. Metode hardware
 convertoare tensiune – frecvenţă sau tensiune – timp;
 convertoare cu eşantionare;
 convertoare sigma-delta (convertoare pe 1 bit);
2. Metode software
 aproximaţii succesive;
 măsurarea timpului de încărcare al unui condensator.
Pentru un convertor analog digital, o caracteristică importantă este rezoluţia acestuia.
Rezoluţia precizează numărul de valori discrete pe care convertorul poate să le furnizeze la ieşirea
sa în intervalul de măsură. Rezultatele conversie, de obicei sunt stocate în memoria internă sub
formă binară. Din acest motiv, rezoluţia unui convertor analog digital se exprimă în biţi.

Fig. 4.14 Rezoluţia unui convertor analog digital

Dacă rezoluţia unui convertor analog digital este de 10 biţi, de exemplu, atunci acest convertor
poate furniza la ieşirea sa 210 = 1024 de valori diferite. În cazul în care, gama de măsurare este de 0
– 5 V, rezoluţia de măsurare va fi:
5V-0V
 0,0048 V  4,8 mV
1024
Rata de eşantionare este o altă caracteristică importantă a unui convertor analog digital.
Această caracteristică depinde de timpul dintre două conversii succesive. Timpul respectiv
afectează modul în care forma de undă originală va fi redată după procesarea digitală.
1
Limbaje de Programarea pentru Roboţi C9
În cazul acestei caracteristici se pune următoarea întrebare: Care este rata minimă de
eşantionare pentru a reproduce fără pierderi un semnal de o frecvenţă dată? Teorema lui Nyquist
afirmă că o rată de eşantionare de minim două ori mai mare decât frecvenţa semnalului măsurat este
necesară pentru convertirea semnalului analogic. Teorema se aplică şi pentru semnal compus dintr-
un întreg spectru de frecvenţe, cum ar fi vocea umană.
Auzul uman are limitele maxime cuprinse în intervalul 20 Hz – 20 kHz, iar frecvenţele vocii
sunt în gama 80 – 4000 Hz. Din acest motiv, centralele telefonice folosesc o rată de eşantionare a
semnalului de 8000 Hz. Rezultatul este o reproducere inteligibilă a vocii umane, suficientă pentru
transmiterea de informaţii într-o convorbire obişnuită. Înregistrarea pe un CD audio are o rată de
eşantionare de 44100 Hz. Această rată este mai mult decât suficientă pentru reproducerea fidelă a
tuturor frecvenţelor audibile.
Convertorul analog digital inclus în microcontrolerul PIC 16F876A este un convertor care
foloseşte metoda aproximărilor succesive. Acest convertor are o rezoluţie de 10 biţi şi poate măsura
orice tensiune din gama 0 – 5 V de pe patru intrări analogice multiplexate ale portului A.
Relaţia dintre valoarea stocată în registrul ADC şi tensiunea măsurată este următoarea:
Vin  1024
ADC  ,
Vref

unde Vin este tensiunea măsurată, iar Vref este tensiunea aleasă ca referinţă.

Aplicaţie care foloseşte convertorul analog digital


1. Să se realizeze un program care comandă citirea unui semnal analogic şi afişarea valorii
acestuia pe 8 LED – uri. Pentru generarea semnalului analogic se va utiliza potenţiometrul
semireglabil de pe placa de dezvoltare.
Pentru a citi semnalele de pe convertorul analog digital se utilizează instrucţiunea:
Adc_Read(x)
unde x reprezintă numărul pinului al portului A (0, ...,3).
Valoarea citită de convertorul analog digital este un număr reprezentat pe 10 biţi (max. 1024).
Pentru a putea afişa acest număr pe 8 LED – uri (max. 255) se împarte valoarea citită pe ADC la 4:
a div 4 adică 1024 / 4 = 255.
În acest caz, programul are structura următoare:
/*
Nume Proiect: Aplicatie_ADC
Descriere: Programul converteşte un semnal analogic într-un semnal digital. Cursorul
potenţiometrului este conectat pinul RA0 al portului PORTA. LED - urile sunt conectate la portul
PORTB.
2
Limbaje de Programarea pentru Roboţi C9
Frecventa oscilatorului: 20.0 MHz.
*/
unsigned short a;
void main()
{
TRISB = 0x00; // PORTB este setat ca ieşire;
TRISA.F0 = 1; // Pinul RA0 este setat ca intrare
do {
a = Adc_Read(0);
a = a /4;
PORTB = a;
} while(1);
}

4.3.4. Motorul de curent continuu


Dezvoltarea industrială ulterioară a necesitat noi forme de control a mişcării în operaţii
complexe integrate. Automatizarea rigidă a fost un pas mare realizat nu numai în creşterea
productivităţii dar şi în ceea ce priveşte controlul mişcării.
Apariţia microprocesorului a definit debutul unei noi etape cel al automatizărilor flexibile. În
sistemele electronice o mare varietate a parametrilor pot fi modificaţi prin schimbarea soft-ului din
sistem. De exemplu a modifica o viteză înseamnă acum a introduce câteva linii de cod, sau a selecta
un nou profil de viteză din memoria sistemului.
Controlul programabil al mişcării este definit ca şi o aplicaţie hardware şi software – împreună
cu elemente senzoriale, de acţionare, dispozitive de reglare – pentru controlul uneia sau a mai
multor mişcări liniare sau de rotaţie.
În ultimii ani, partea de comandă a suportat modificări majore. Ele se referă în principal la
creşterea ponderii comenzilor în logică programată, caracterizată prin flexibilitate funcţională
ridicată, consumuri de energie reduse, volum şi greutate minime, fiabilitate mărită, posibilitatea
implementării unor strategii de comandă performante.

Motorul de curent continuu. Consideraţii teoretice


Motorul de c.c. (curent continuu), în principal este construit din două părţi componente: stator
şi rotor (Fig. 4.15).
Partea fixă a unui motor electric de c.c este statorul. În general, statorul este partea exterioară a
motorului şi include şi carcasa 1. În partea din interior a carcasei se află magneţii permanenţi 2.

3
Limbaje de Programarea pentru Roboţi C9
Rotorul este partea mobilă a motorului, care este plasat în interior, de obicei. Rotorul motorului
este format dintr-un ax şi o armătură care susţine înfăşurarea electrică a căilor de curent 3.

Fig. 4.15 Componentele motorului de curent continuu


Pe axul motorului se găseşte, de asemenea, şi un colector 4 ce schimbă sensul curentului prin
înfăşurarea căii de curent. Tensiunea de alimentare este aplicată înfăşurărilor electrice aflate pe
rotor prin intermediul unui sistem de perii fixate pe capacul 5. Distanţa care există între stator şi
rotor se numeşte întrefier.
Turaţia motorului este proporţională cu tensiunea aplicată înfăşurării electrice de pe rotor şi
invers proporţională cu câmpul magnetic de excitaţie. Câmpul magnetic de excitaţie există dacă
avem o bobină alimentată separat ce creează acest câmp. În cazul utilizării magneţilor permanenţi,
această comandă nu este posibilă. Turaţia se poate regla prin variaţia tensiunii aplicate motorului de
la o valoare minimă până la valoarea nominală. Cuplul dezvoltat de motor poate fi reglat prin
variaţia curentului ce trece prin înfăşurarea electrică aflată pe rotor. Schimbarea sensului de rotaţie
se face prin schimbarea polarităţii tensiunii de alimentare.
În general vorbind, circuitul electric al unui motor de curent continuu se compune din trei
componente: E – tensiunea electromotoare indusă, L – inductanţa indusului şi R – rezistenţa
indusului motorului (Fig. 4.16).
Tensiunea electromotoare indusă e este tensiunea de la bornele motorului determinată de
mişcarea de rotaţie a rotorului în câmpul magnetic al inductorului.

i
U

Fig. 4.16 Circuitul electric al motorului de curent continuu

4
Limbaje de Programarea pentru Roboţi C9
Tensiunea electromotoare indusă este strict proporţional cu viteza şi are o rezistenţă internă
nulă. Polaritatea aceste tensiuni reprezintă direcţia mişcării, independent de tensiunea aplicată
motorului.
Inductanţa indusului L este inductanţa înfăşurării rotorului. La trecerea curentului prin rotorul
unui motor, este generat un câmp magnetic care determină o forţă electromagnetică, şi ca rezultat
rotorul se roteşte. Rotaţia rotorului induce o tensiune în înfăşurarea rotorului. Această tensiune
indus are sens opus tensiunii exterior aplicată rotorului. În timp ce motorul se roteşte cu viteză mai
mare, tensiunea rezultată este aproape egală cu cea indusă. Curentul este mic, şi viteza motorului va
rămâne constantă atât timp cât asupra motorului nu acţionează nici o sarcină, sau motorul nu
efectuează alt lucru mecanic decât cel efectuat pentru învârtirea rotorului. Când asupra rotorului se
aplică o sarcină, tensiunea va fi redusă şi un curent mai mare va putea să treacă prin rotor. Astfel,
motorul este capabil să primească mai mult curent de la sursa care îl alimentează, şi astfel să
efectueze mai mult lucru mecanic.
Pentru comanda motorului de curent continuu sunt multe căi:
 comanda curentului în buclă deschisă, care acţionează asupra cuplului motorului, protejând
astfel circuitul de alimentare al motorului şi motorul;
 comanda tensiunii variabile în buclă deschisă, care acţionează asupra turaţiei motorului;
 comanda tensiunii variabile cu limitarea curentului în circuit este cea mai simplă cale de
variaţie a vitezei motorului.
Relaţii matematice principale pentru circuitul electric al motorului din figura de mai sus sunt
prezentate într-o formă simplificată.
Tensiunea electromotoare indusă este dată de relaţia
e  U iR ,
din care se obţine relaţia curentului care trece prin circuitul indusului
i  U  e  / R .
Cuplul conducător la arborele motorului este proporţional cu curentul i care trece prin circuitul
indusului.

Interfaţarea motoarelor de curent continuu la microcontroler


Microcontrolerele furnizează la ieşire lor tensiunii şi curenţi de valori foarte mici. Din acest
motiv, pentru acţionarea motoarelor de curent continuu este nevoie de circuite de amplificare. O
schemă simplă şi eficientă pentru comanda acestor motoare este reprezentată de „puntea H” (în
engleză H – bridge).

5
Limbaje de Programarea pentru Roboţi C9

Fig. 4.17 Punte H pentru alimentarea motorului

O punte H este construită din patru întrerupătoare. Când întrerupătoarele S1 şi S4 sunt închise
şi întrerupătoarele S2 şi S3 sunt deschise, atunci o tensiune pozitivă va fi aplicată motorului. Prin
deschiderea întrerupătoarelor S1 şi S4 şi închiderea întrerupătoarelor S2 şi S3, aceasta tensiune este
inversată, făcând posibilă rotirea motorului în sensul opus.

Fig. 4.18 Alimentarea motorului de curent continuu

Aranjarea de tip punte H este în general folosită pentru a inversa polaritatea motorului, însă
poate fi folosită şi pentru frânarea motorului (motorul se opreşte brusc datorită scurtcircuitării
terminalelor sale). Puntea H se mai poate folosi pentru a lăsa motorul să se rotească liber până la
oprire.
Întrerupătoare
Rezultate
S1 S2 S3 S4
1 0 0 1 Rotire în sens orar
0 1 1 0 Rotire în sens antiorar
0 0 0 0 Rotire liberă
0 1 0 1 Frânare
1 0 1 0 Frânare

6
Limbaje de Programarea pentru Roboţi C9
Punţile H pot fi construite din componente electronice sau se găsesc într-un singur circuit
integrat.

Fig. 4.19 Punte H cu componente electronice

Circuitul integrat L293D conţine 2 astfel de punţi care pot comanda motoare alimentate cu max
35 V şi 600 mA. Fiecare din cele două punţi H are două terminale de intrare (INput) şi un terminal
de activare (ENable). Când terminalul EN este legat la 5 V, puntea H este activă. Dacă intrarea IN1
este în 0 logic (+ 5 V), iar intrarea IN2 este 1 logic (0 V) motorul se roteşte. În cazul în care stările
celor două intrări sunt inversate, atunci motorul se va roti în sens contrar. Când ambele intrări sunt
în 1 logic motorul se opreşte, iar dacă ambele intrări sunt în 0 logic, atunci axul motorului este
frânat.
Un exemplu de conectare a circuitului L293 la microcontroler este prezentat în figura de mai
jos.

Fig. 4.20 Conectarea circuitului L293


7
Limbaje de Programarea pentru Roboţi C9
Comanda unui motor de curent continuu poate fi analizată din punct de vedere dinamic în
timpul diferitelor faze ale mişcării. Fundamental pentru condiţiile de lucru ale circuitului integrat
(IC – microcircuit, microchip) este tipul de încărcare care comandă motorul.
De fapt, dacă încărcarea este determinată de frecare, faza de decelerare nu afectează serios
circuitul integrat, deoarece încărcarea însăşi furnizează un cuplu de frânare. În cazul în care
încărcarea este inerţială, atunci pentru circuitul integrat va apărea ca un cuplu motor generator,
determinat de o circulaţie inversă a curentului prin motorul de curent continuu. Aceasta ar putea
determina condiţii critice de acţionare, care pot conduce la defectarea circuitului integrat.
Faza de acceleraţie: În această fază, curentul creşte, transmite un cuplu care permite motorului
să accelereze către viteza maximă sau până când curentul este stabilizat prin comanda buclei. Tipul
de încărcare principal determină curentul cerut.
Viteză constantă: În acest caz viteza cerută este mai mică decât cea maximă. Curentul este
limitat de circuitul integrat. Aceasta poate fi făcută prin deschiderea şi închiderea diagonalei unei
punţi cu diode care conduce.
Faza de deceleraţie: Când un motor de curent continuu trebuie să fie încetinit, tipul de
încărcare devine important. În cazul încărcării de frecare motorul este frânat la încărcarea
principală. Astfel, ar putea să fie suficient să anulez cuplu motor prin deschiderea punţii cu diode.
În cazul unei încărcări inerţiale, cuplul de frânare este furnizat de circuitul integrat. Situaţia aceasta
prezintă cel mai mare interes. Orice schimbare a direcţiei de funcţionare a motorului implică o fază
de frânare.

Aplicaţie cu motor de curent continuu


Scopul aplicaţiei este acţionarea unui motor de curent continuu în sens orar. Pentru alimentarea
motorului se foloseşte pinul RB6, iar pentru schimbarea sensului de rotaţie se foloseşte pinul RB7.
Portul B trebuie setat ca ieşire. Programul are următoarea formă scrisă:
/* Nume proiect: Aplicaţie_motor_cc
Program pentru acţionarea motorului de curent continuu în sens orar */
void main(void) {
TRISB=0b00111111;
while(1) {
PORTB.F7=0; //schimbare sens motor
PORTB.F6=0; //alimentare motor
Delay_ms(15);
PORTB.F6=1;
Delay_ms(20);
}
}

S-ar putea să vă placă și