Sunteți pe pagina 1din 24

2.2.

Subsistem de conducere cu microcontroler

2.2.1. Descrierea subsistemului

Nu de puține ori pentru comanda unui sistem tehnic se poate apela la


un controler. În acest fel se obține o comandă eficientă și ieftină.
Controlerul reprezintă o structură electronică destinată controlului
unui sistem fără să fie necesară intervenţia operatorului uman.

După apariţia microprocesoarelor dimensiunile controller-elor s-au


redus semnificativ. Procesul de miniaturizare și-a pus amprenta și
asupra componentele necesare unui controller, care au fost
integrate pe acelaşi chip. A apărut astfel microcontrolerul, care
reprezintă un microcircuit care incorporează o unitate centrală şi o
memorie împreună cu resurse care-i permit interacţiunea cu
sistemul deservit.

1
Resursele integrate la nivelul microcircuitului includ, uzual, următoarele
componente:
o unitate centrală, cu un oscilator intern pentru ceasul de sistem;
o memorie nevolatilă (ROM/PROM/EPROM/FLASH) şi una volatilă
(RAM);
un sistem de întreruperi;
intrări/ieşiri numerice;
un port serial de tip asincron şi/sau sincron, programabil;
un sistem de temporizatoare / numărătoare programabile.

Este posibil ca la acestea să fie adăugate componente suplimentare, cum


sunt:
•un sistem de conversie analog numerică (una sau mai multe intrări
analogice);
•un sistem de conversie numeric analogic şi/sau ieşiri PWM;
•un comparator analogic;
•facilităţi suplimentare pentru sistemul de temporizare / numărare;
•facilităţi pentru optimizarea consumului propriu.
Structura
simplificată a unui Memorie Memorie
de date CPU program
microcontroler

I/O

• unitatea de control CPU - are rolul unui element de conectivitate între


celelalte blocuri ale microcontrolerului; coordonează lucrul celorlalte
blocuri şi execută programul utilizatorului;
• memoria program – realizează stocarea unui program de lucru;
aceasta poate fi programată şi ştearsă mai mult decât odată, ceea ce
face ca microcontrolerul să fie potrivit pentru conducerea de aplicatii
diverse;
• memoria de date – este folosită de program în timpul executării sale;
aici sunt memorate toate rezultatele intermediare sau datele temporare
ce nu sunt cruciale la întreruperea sursei de alimentare;
• I/O reprezinta conexiuni fizice între microcontroller şi exterior.
O structură mai detaliată a microcontrolerului

CLOCK SPI SPI SPI INTRERUPERI INTRARI


RX TX CLK OUT IN EXTERNE PORTURI I/O
EXTERN ANALOGICE

CLOCK
INTERN
MULTIPLEXOR

INTERFATA INTERFATA CONTROLER INTRARI/IESIRI


TIMERE ADC
SERIALA SPI INTRERUPERI DIGITALE

BUS ADRESE, DATE, CONTROL

EPROM/
CPU RAM EEPROM
ROM
Realizarea subsitemului de comandă al unui sistem presune:
verificarea funcţionalității subsitemului folosind o placă de dezvoltare
furnizată, de regulă, de firma ce produce microcontrolerul;
realizarea prototipului.

În figura este prezentată un exemplu ce reprezintă subsistemul de


comandă al unui servomotor. Pentru aceasta se utilizează un
microcontroler ATMega16 şi o placă de dezvoltare.
1 2 3 4 5
1 - microcontroler ATMega16;
2 - conector USB pentru
comunicaţie şi/sau programare;
6
3 - conector servomotoare;
4 - mufă alimentare;
5 - circuit integrat L293;
10
7
6 - conector motoare;
7 - afişaj 7 segmente;
8 8 - LED-uri;
9
9 - jumper activare afişaj 7
13
segmente;
10 - conectori module de
12 11 10 expansiune;
11 - potenţiometru semireglabil;
12 - encoder;
13 - push button.
Firmele producătoare furnizează şi structuri compacte ce conţin, în
aceiaşi carcasă, microcontrolerul cu circuitele aferente, o tastatură şi un
afişaj LCD/VFD, eventual cu “touchscreen”.

Există şi variante la care pot fi conectate prin portul PLCBus module de


tastatură si afişaj independente. O gama largă de module de expansiune
facilitează adăugarea de linii analogice/digitale sau mărirea numărului de
porturi seriale. Acestea se conectează uşor la microcontrolere prin portul
PLCBus.
Pentru a alege un microcontroler trebuie ţinut cont de:
numărul de biţi pe care îl poate procesa simultan, un numărul mai
mare de biţi indicând un chip mai rapid si mai puternic; circuitele de 8
biţi sunt foarte răspândite dar există şi circuite de 4, 16 şi 32 biţi;
consumul de putere este important mai ales în cazul sistemelor
alimentate de la baterie; circuitele realizate în tehnologia CMOS au un
consum redus de putere; cele mai multe dintre acestea au un mod
special de "aşteptare" (stand-by sau sleep) care limitează consumul de
curent la câţiva miliamperi când un circuit este inactiv;
modul de memorare a programului – se pot folosi memorii EPROM,
EEPROM, ROM, NVRAM (nonvolatile RAM) si FLASH EPROM;
memoria de program poate fi in chipul microcontrolerului sau separat;
opţiuni de intrare-ieşire - majoritatea sistemelor necesita interfeţe cu
senzori, tastatură, comutatoare, relee, monitoare etc; în general
microcontrolerele au porturi pentru interfaţarea cu sistemul deservit.
Scrierea programului al aplicaţiei se realizează de obicei într-un editor ce
permite salvarea liniilor de comandă introduse. Pentru scrierea
programului de lucru există următoarele variante: cod maşină (cod
hexadecimal), limbaj de asamblare, sau limbaj de nivel înalt (C, C++,
Pascal, Turbo Pascal, Basic etc.).

Comenzile recunoscute de microcontroler sunt cele scrise în cod masină.


Limbajul de asamblare şi limbajele de nivel înalt sunt mai evoluate,
conţin instrucţiuni ce sunt uşor de reţinut, dar pentru transformarea
acestora în cod maşină este necesar un compilator. Compilatorul este
program software.
Pentru a transfera codul hexadecimal rezultat în urma compilării, în
memoria program a microcontrolerului este nevoie de un programator.
Acesta este compus dintr-un modul electronic care asigură interfaţarea
între aplicaţia ce conţine microcontrolerul şi calculator (PC), şi un
program software ce rulează pe PC.
Exemple de microcontrolere
Un prim exemplu de microcontroler este ATMegal16 (fig.2.11) ce face
parte din familia AVR de la Atmel. Această familie conţine microcontrolere
cu arhitectura pe 8 biţi şi set redus de instrucţiuni (RISC). La aceste
microcontrolere memoriile ROM, EEPROM şi SRAM sunt integrate în
acelaşi chip, nemaifiind necesară o memorie externă, iar majoritatea
instrucţiunilor se execută într-un singur ciclu de ceas.
Cifra din numele microcontrolerului indică mărimea memoriei de
program (ROM); în exemplul considerat - ATMega16 are 16kB de
memorie ROM.
Caracteristici acestui microcontroler sunt:
 CPU de tip RISC
 arhitectura Harvard
 tensiune alimentare 2,7...5 Vcc
 frecvenţa maximă 16Mhz
 512 bytes SRAM
 16 Kb ROM
 512 bytes EEPROM
 ADC 10 biţi cu 8 intrări
 4 porturi I/O pe 8 biţi
 3 numărătoare: două pe 8 biţi şi unul pe 16 biţi
 3 întreruperi externe
 1 interfaţă comunicare serială
 1 interfaţă SPI
 1 interfaţa I2 C
Un exemplu de subsistem de comandă realizat pe o singură placă este
SBC BL4S200 fabricat de firma Rabbit .
Caracteristicile principale:
•foloseşte microprocesor Rabbit 4000;
•poate fi prevăzut cu interfaţă de
comunicaţie Wi-Fi, ZigBee sau Ethernet;
•memorie program 512 Kb (Flash serial)
şi 512 Kb (SRAM);
•memorie de date 128 Mb până la 1 Gb
(miniSD card) şi 512 Kb (SRAM);

• 32 de intrări/ieşiri digitale independente, protejate, configurabile software;


• 8 ieşiri digitale de curent mare (maxim 2 A), configurabile software;
• până la 5 porturi seriale;
• 8 intrări analogice cu convertor A/D de 11 biţi şi 2 ieşiri analogice cu
convertor D/A de 12 biţi;
• numărare de evenimente şi de capturi, decodoare în quadratură;
• posibilitatea generării de comenzi PWM şi PPM.
Pentru programare - mediului de dezvoltare software Dynamic C, un
mediu asemănător mediului de dezvoltare C, ce are carcateristic:
•este un mediu complet conţinând: editor, debugger la nivel de sursă,
compilator în C, exemple de programare şi multe biblioteci software;
•permite programarea in timp real, multitasking si multiprocessing;
•comunicaţia cu microcontrolerele se realizează prin porturile seriale ale
computerului;
•toate bibliotecile Dynamic C sunt în cod sursă şi pot fi modificate conform
necesităţilor;
Dynamic C contine:
•biblioteca cu drivere şi programe exemplu;
•biblioteca matematica;
•baza de timp real care permite multitaskingul;
•compilator C rapid;
•program editor uşor de folosit;
•compilarea programelor realizate se poate face şi în lipsa
microcontrolerului ţintă.
2.2.2. Exemplu de sistem condus cu microcontroler

Schema bloc a unui sistem tehnic condus cu microcontroler

Conditionare
Senzori semnal

Sistem
pneutronic de µC
pozitionare
Echipamente
Conditionare
de reglare si semnal
control
BEC

Se poate observa absenta PC-ului, legătură cu acesta fiind necesară doar în


cazul programarii microcontrollerului.
Acest tip de sistem prezintă o multitudine de avantaje, printre care se număra:
• costul foarte scăzut;
• frecvenţă mare de lucru a acestor sisteme (in mod uzual 16Mhz);
• interfață prietenoasă cu utilizatorul prin care se pot seta parametrii de
lucru, acesta neavând acces la codul sursă al programului.
Sistemul este insa mai greu de programat.
Schema funcțională a sistemului
Tpoz
A,B,i
u y y0 y CP F
LCD ADC
Cd
Cs ML

µC
P1 . p Pa
m1
(2)
u
Tp
EMP
PC +5V DAC
Amplificator
VEA - 250
ic (3)
Bloc electronic de control (BEC) DPP (1)

Pa

BEC are ca element central un microcontroller de tip PIC16F1937, produs


de catre Microchip.
Caracteristicile BEC sunt:
•frecvență de lucru microcontroller 32MHz ;
•trei iesiri analogice în domeniul 0 - 5V cu rezolutie de 10 biti (rezolutia
modulului PWM);
•trei intrari analogice în domeniul 0 - 5V și o intrare 0 - 10V cu rezolutie 12
biti;
•interfata RS232/USB prin modul FTDI pentru comunicatia cu PC-ul;
•iesiri digitale amplificate prin driver de putere cu punti Darlington;
•afisaj LCD alfanumeric;
•semnalizare cu LED;
•modul de alimentare 24V/5A.
Programarea blocului electronic se face în limbajul C++, cu ajutorul unui
programator de tip ICSP.
Desenul 3D al sistemului
10 1

6 9
8
2
7
5

3
4
Model experimental

CP
Tp DPP

BEC Counter
Amp
TIRO
Programul de lucru

Programarea sistemului a presupus utilizarea a doua limbaje de


programare în doua medii diferite de programare, după cum urmeaza:
•programarea microcontrollerului în limbaj C++, prin intermediul mediului de
programare CCS PIC; programul realizat permite controlul pozitiei unitatii
pneutronice la nivelul blocului electronic;
•programarea aplicatiei de raportare în limbaj grafic, în mediul LabView.

Aplicatia permite initierea comunicarii cu microcontrollerul, controleaza


startul poziționării și aduna datele raportate de blocul electronic de
comanda.
Panoul frontal al aplicatiei realizat în LabView
Configurare comunicatie
Acordare regulator automat Pozitie tinta si eroare [mm]

Selectare algoritm

Se pot observa elemente de control necesare modificării valorilor pentru pozitia tinta,
eroarea de poziționare,factorii Kp, Ki, Kd, selectarea algoritmului cat și configurarea
conexiunii cu microcontrollerul. Interfata mai contine de asemenea și doua indicatoare
grafice pentru valorile curente ale presiunii și ale pozitiei. Poziția țintă programată a
fost:120, 30, 50 și respectiv 100 mm.
Panoul frontal al aplicatiei permite alegerea unuia din cele 8 moduri de
functionare ale sistemului:
• Clasic – tensiunea de comanda a distribuitorului proporțional creste
cu un increment prestabilit pana la atingerea pozitiei tinta. Daca
pozitia tinta este depasita, valorea tensiunii de comanda scade cu
acelasi increment;
• P – regulator de tip proporțional;
• PI – regulator de tip proporțional-integrativ. Pentru acest mod de
lucru au fost implementate în programul de lucru al
microcontrollerului functii necesare limitarii raspunsului și a
componentei integratoare dar și o componenta de tip anti-windup;
• PID - regulator de tip proporțional-integrativ-derivativ, ce include și
limitarea raspunsului dar și anti-windup;
• Fuzzy – regulator de tip Fuzzy cu multimi de apartenență
triunghiulare, a caror marime este setata prin intermediul codului
scris în memoria microcontrollerului;
• PI-Fuzzy – Regulator PI cu componenta Fuzzy. Functiile de apartenență
Fuzzy sunt utilizate pentru adaptarea automata a parametrilor Kp și Ki la
eroarea curenta a sistemului;
• Referinta - utilizat pentru a aduce unitatea în pozitia de referinta, daca
este necesar, După pornirea programului;
• Determinare minim – algoritm utilizat pentru determinarea valorii minime a
tensiunii de comanda pentru care se obtine deplasarea unitatii.
x[mm]
120
120

kp=2, ki=0.01, kd=5


100
100
kp=2, ki=0.01, kd=15
80
80 Kp=2, Ki
Kp=2, Ki

6060 Kp=2, Ki
kp=2, ki=0.01, kd=10 Kp=2, Ki

4040 Kp=5, Ki

kp=5, ki=0.1, kd=0 Tinta

2020
kp=2, ki=0.1, kd=0
0
00 5
50 10
100 15
150 20
200 25
250 30
300 35
350 400
t[s]
x [mm]

160

140
140

x tinta 1=120
120

x tinta 4=100
100

80
80
Serie1
60
60
x tinta 3= 50
40
40
x tinta 2= 30
20
20

0
5 10 20 30 40 50 t [s]
0 500 1000 1500 2000 2500 3000 3500 4000
-20

Eroarea de poziționareobținuta este de ±0,05mm, cu o viteza de


deplasare maxima de 0.1mm. Algoritmul utilizat este de tip PI-Fuzzy.

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