Sunteți pe pagina 1din 10

Circuite electrice elementare

Secţiunea circuite electrice elementare îşi propune să îţi pună la dispoziţie toate
modurile fundamentale în care componentele electronice pot fi interconectate pentru a obţine un
montaj care poate face ceva util pentru noi. Reprezentarea circuitelor electrice elementare este
făcută prin scheme electrice realizate cu simboluri standardizate. Lista acestor simboluri poate fi
consultată în secţiunea Simboluri electrice.
Schema electrică a oricărui echipament este compusă din circuite electrice elementare. Aceasta
înseamnă că după ce ajungi să cunoşti aceste circuite, înţelegerea sau dezvoltarea unor montaje
electronice mai complexe nu va fi mai dificilă decât un joc de LEGO. Lista articolelor din categoria
circuite electrice elementare este prezentată mai jos:
 Redresarea curentului electric alternativ.
 Conexiunile tranzistorului.
 Amplificator audio cu un tranzistor bipolar.
 Relee statice construite cu tranzistoare MOS-FET.
 Amplificatorul operaţional – noţiuni elementare.
 Parametrii amplificatorului operaţional.

Ce este un microcontroller ?
by Ciprian

Bine te-am găsit !


Sigur trebuie să fi observat că de foarte multe ori aparatele electronice au undeva pe modulul de
bază o “omidă” neagră cu multe picioare despre care cei mai pricepuţi spun că se numeşte
microcontroller. Rolul acestora într-un circuit electronic este identic cu rolul jucat de creier într-un
organism biologic: controlează cea mai mare parte a funcţiilor pe care acel sistem le poate realiza.
Există foarte multe tipuri de microcontroller-e, fiecare oferind un set diferit de funcţii şi de nivele
de perfomanţă. Cu toate acestea, absolut toate tipurile de microcontroller-e au o serie de
caracteristici comune care odată înţelese fac mult mai uşoară înţelegerea şi utilizarea oricărui
microcontroller.
• Ce este un microcontroller ?
• Structura simplificată a unui microcontroller
• Principalele tipuri de funcţii realizabile de către un microcontroller
• Programarea microcontroller-elor;
• Etapele dezvoltării unui proiect cu microcontroller-e;

Ce este un microcontroller ?
Componentele electronice obişnuite funcţionează conform parametrilor stabiliţi în momentul
fabricaţiei acestora. În contrast cu acestea, un microcontroller este o componentă electronică al cărei
mod de funcţionare poate fi modificat prin programarea acesteia cu un soft special creat în acest
scop. Pentru a-l deosebi de alte tipuri de soft-uri, programul instalat şi rulat într-un microcontroller
are o denumite particulară: firmware.
În altă ordine de idei, un microcontroller poate fi considerat a fi un microcalculator care pe lângă
procesor şi memorie este completat cu circuite şi funcţii speciale care îi permit să interacţioneze
uşor cu mediul exterior.
Microcontroler-ele sunt mici “creiere” electronice care, dacă au primit “educaţia necesară” (prin
firmware), pot înlocui cu succes foarte multe tipuri de circuite electrice şi electronice. În acest mod,
microcontroller-ele ne permit să obţinem aparate mai mici, mai ieftine şi mai performante.
Totuşi, oricât de deştept ar fi un creier, acesta nu va putea vorbi fără corzi vocale, nu se va putea
deplasa fără muşchi şi oase, nu va putea auzi fără urechi etc. pentru că un creier nu poate lucra decât
cu semnale electrice. În mod similar, nici un microcontroller nu va putea emite lumină sau sunet
fără un bec sau un difuzor, nu va putea să mişte ceva fără un motor, nu va putea auzi fără un
microfon etc. Asta înseamnă că pentru toate lucrurile pe care nu le poate realiza singur,
microcontroller-ul are nevoie de o serie de componente auxiliare. Ansamblul format dintre un
microcontroller, firmware-ul instalat în el şi toate componentele auxiliare (fie ele electrice,
electronice, mecanice, hidraulice, pneumatice, optice, acustice etc.) se mai numeşte sistem înglobat
(în limba română), embedded system (în limba engleză) sau sistem embedded (în romgleză

).

Structura simplificată a unui microcontroller


Structura internă a unui microcontroller este de obicei prezentată cu un lux de amănunte tehnice
care, deşi sunt foarte utile pentru experţi, nu ajută prea mult un novice. Pe lângă asta, în marea
majoritate a cazurilor nu este nevoie să ştii în detaliu ce se petrece într-un microcontroller pentru a-
ţi putea face treaba cu el. Ţinând cont de aceste lucruri, structura unui microcontroller se poate
reprezenta foarte simplificat, aşa ca în figura 1.
Figura 1. Structura
simplificată a unui microcontroller
Dacă totuşi doreşti să afli mai multe detalii despre structura internă a unui microcontroller, dă un
click aici.
Revenind la conţinutul figurii 1, menţionez că în chenarul gri am figurat toate elementele din
interiorul capsulei unui microcontroller, iar în chenarele colorate cu albastru deschis am figurat
principalele categorii de pini prin care microcontroller-ul comunică cu exteriorul. Acestea fiind zise,
hai să vorbim puţin despre fiecare dintre aceste elemente.
1. Procesor
Este componenta care execută instrucţiunile cuprinse în firmware. În altă ordine de idei, procesorul:
• preia date de la pinii configuraţi ca pini de intrare, apoi;
• prelucrează aceste date conform instrucţiunilor scrise în firmware şi în cele din urmă;
• oferă semnale de ieşire corespunzătoare, cu ajutorul pinilor configuraţi ca pini de ieşire.
Spre deosebire de PC-uri şi laptopuri care sunt destinate lucrului cu mai multe programe în acelaşi
timp, microcontroller-ele sunt destinate unor aplicaţii individuale, adică rulează mereu un singur
program (firmware-ul). Asta înseamnă că procesoarele din microcontroller-e nu au de muncit la fel
de mult ca cele de pe PC-uri şi din acest motiv producătorii de microcontroller-e le-au dotat cu
procesoare a căror frecvenţă de lucru rar depăşeşte 100-200MHz (faţă de 2-3 Ghz cât are un
PC/laptop obişnuit). Reducerea de performanţă la strictul necesar a permis microcontroller-elor să
aibă un preţ mic, ceea ce argumentează gradul de răspândire pe care îl putem observa astăzi.
2. Memorie RAM
Atunci când realizăm niste calcule ceva mai complexe, nu putem face totul “în cap” ci avem nevoie
să notăm temporar anumite rezultate pe o bucată de hârtie. În mod similar şi procesoarele au nevoie
să-şi noteze temporar nişte rezultate, numai că ele nu o fac pe o bucată de hârtie ci în ceea ce se
numeşte memorie RAM. Iniţialele RAM provin de la Random Access Memory, care în traducere
liberă înseamnă memorie cu acces aleator, adică o memorie din care datele pot fi accesare (citite sau
scrise) individual (asta spre deosebire de alte tipuri de memorie în care procesorul este nevoit să
citească sau să scrie şi alte locaţii de memorie, în afară de cele care îl interesează în acel moment).
Recapitulând, memoria RAM este o “ciornă” pe care procesorul o foloseşte pentru a-şi face
calculele. Memoria RAM este o memorie volatilă, adică datele memorate în ea se şterg atunci când
alimentarea microcontroller-ului este întreruptă. Asta înseamnă că această memorie nu poate fi
folosită pentru salvarea permanentă a datelor. Cel puţin teoretic, în cazul memoriei RAM nu există
un număr maxim de rescrieri şi deci practic, dacă este folosită corespunzător, memoria RAM nu are
moarte.
Reducerea de performanţă strict la necesităţi face ca resursele de RAM ale unui microcontroller să
fie cu mult inferioare celor din componenţa unui PC/laptop. De regulă, microcontroller-ele nu
dispun de memorii RAM mai mari de câteva zeci de kilobiţi (kb).
3. Memorie Program (FLASH)
Memoria Program este memoria în care este scris firmware-ul. În ultimii ani, memoria program
folosită este de tip FLASH (adică exact ca cea din stick-urile flash USB). Conţinutul memoriei
program este modificat doar în momentul instalării firmware-ului. Am putea spune că memoria
program este “manualul de instrucţiuni al microcontroller-ului”: acesta este scris doar în momentul
instalării firmwareului, iar ulterior microcontroller-ul nu face decât să urmărească întocmai
instrucţiune din acest manual, fără a-i modifica în nici un fel conţinutul. Memoria program este
una nevolatilă, continutul ei (firmware-ul) fiind disponibil şi după resetarea/repornirea
microcontroller-ului.
Spre deosebire de memoria RAM, memoria program de tip FLASH este garantată doar pentru un
număr de maxim 10000 de scrieri.
Firmware-urile sunt programe mult mai mici decât programele pentru PC/laptor. Din acest motiv,
memoriile program rareori depăşesc 1-2 Mb.
4. Memorie Salvare Date (EEPROM)
În aplicaţiile practice microcontroller-ele trebuie uneori să memoreze nişte date undeva unde le
poate regăsi intacte oricând, chiar şi după restartarea/repornirea echipamentului pe care îl
controlează. Eu unul am denumit acel loc memorie salvare date şi din punct de vedere fizic este
reprezentat de o memorie de tip EEPROM, adică Electrically Erasable Programmable Read-Only
Memory. Din partea cu Read-Only Memory s-ar înţelege că este vorba de o memorie care nu poate
fi decât citită, nu şi scrisă. Adevărul este că această memorie poate fi şi scrisă (pentru că altfel nu

am avea ce citi din ea ) iar menţiunea Read-Only Memory se referă la destinaţia ei:
stocarea de date care în timpul funcţionării microcontroller-ului, sunt de obicei doar citite (nu şi
scrise). În această categorie de date intră valorile de calibrare, setări personalizate, mesaje de eroare
etc. Optimizarea resurselor microcontroller-elor a determinat ca memoria EEPROM să aibă în
general valori de cel mult 500-1000 kb. Principiul de funcţionare face ca memoriile EEPROM să fie
garantate pentru un număr de scrieri de cel mult 100.000.
5. Pini pentru Intrări şi Ieşiri programabile
Cei mai mulţi pini de care dispune un microcontroller sunt pini prin care acesta comunică cu restul
lumii. Aceşti pini sunt numiţi intrări şi ieşiri programabile pentru că destinaţia lor nu este definitiv
fixată prin construcţie (aşa cum este cazul componentelor electronice obişnuite) ci este stabilită de
instrucţiunile scrise în firmware. Astfel, printr-o programare corespunzătoare intrările şi ieşirile
programabile pot fi configurate să aibă funcţii de:
• intrare digitală. În această configuraţie pinul respectiv poate primi şi interpreta doar
semnale digitale: 0 logic (dacă tensiunea aplicată la intrare este mai mică decât 0,5 x Va,
unde Va este tensiunea de alimentare a microcontroller-ului) sau 1 logic (dacă tensiunea de
la intrare este mai mare decât 0,5 x Va);
• ieşire digitală. În acest caz, pe pinul respectiv microcontroller-ul poate dicta doar semnale
digitale: 0 logic (adică o tensiunea practic egală cu 0V) sau 1 logic (o tensiune practic egală
cu tensiunea de alimentare a microcontroller-ului);
• intrare analogică. În această configuraţie tensiunea aplicată pe pinul respectiv este dirijată
către un convertor analog digital (prescurtat convertor A/D). În acest mod, microcontroller-
ul poate “înţelege” şi alte semnale de intrare, nu doar pe cele de 0 şi 1 logic. Sau altfel spus,
un pin configurat ca intrare digitală nu înţelege decât între alb şi negru, pe când un pin
configurat ca intrare analogică poate înţelege şi diferite nuanţe de gri. Numărul acestor
nuanţe de gri depinde de rezoluţia convertorului A/D cu care este dotat microcontroller-ul.
De regulă, rezoluţia acestuia este de 10 biţi care transformaţi în sistem zecimal ne arată ca
acel pin va putea “deosebi” 1024 de “nuanţe de gri”;
• ieşire PWM. Semnalul PWM (Pulse Width Modulation) este un semnal format din
impulsuri cu frecvenţă constantă dar cu durată variabilă. Dacă la ieşirea unui pin configurat
ca ieşire PWM aplicăm un filtru RC care să integreze aceste impulsuri (adică să le
transforme într-un semnal continuu, “lin”), vom obţine o tensiune a cărei valoare este direct
proporţională cu durata impulsurilor. În acest mod, din microcontroller putem obţine şi
semnale de ieşire analogice, adică şi “nuanţe de gri”, nu doar “alb” sau “negru”. Spre
deosebire rezoluţia de transformare din analogic în digital, rezoluţia unei ieşiri configurate
ca ieşire PWM este de obicei doar de 8 biţi (adică doar 256 de “nuanţe de gri”).
6. Pini oscilator cuarţ
La baza funcţionării oricărui procesor stă un oscilator. Acesta, în principiu, are două funcţii:
• dictează viteza de lucru a procesorului;
• asigură sincronizarea tuturor proceselor realizate de procesor.
Semnalul creat de acest oscilator este cunoscut preponderent sub numele de semnal de ceas,
semnal de tact sau clock signal (echivalentul din limba engleză a expresiei “semnal de ceas”).
Nu vom aborda acum detalii privind funcţionarea oscilatorului, pentru că ne-am îndepărta prea mult
de tema acestui articol. Vreau însă să menţionez o metaforă care personal îmi place foarte mult:
procesorul unui microcontroller poate fi privit ca un solist care interpretează o partitură
(reprezentată de firmware) în ritmul dictat de semnalul de ceas. Necesitatea sincronizării proceselor
executate de un procesor devine mai evidentă atunci când avem un modul electronic în care mai
multe procesoare trebuie să comunice între ele: fără a avea o sicronizare precisă între procesele
fiecărui procesor, ar fi ca şi cum am avea o orchestră în care fiecare interpret îşi cântă partitura cu
altă viteză. Nu cred că este nevoie să-ţi explic ce harmalăie ar ieşi :).
Pentru a îndeplini funcţiile menţionate mai sus, oscilatorul unui procesor trebuie să menţină o
frecvenţă de oscilaţie foarte constantă, indiferent ce cum variază condiţiile de mediu (temperatură,
tensiune de alimentare, umiditate, presiune, vârstă etc.). Din acest motiv, în marea majoritate a
cazurilor, procesoarele (inclusiv cele din microcontroller-e) sunt “dirijate” de oscilatoare cu cuarţ.
Acestea fiind zise, pinii oscilator cuarţ sunt pinii prin care microcontroller-ului i se poate ataşa un
oscilator cu cuarţ.
7. Pini setare tensiune referinţă convertor analogic – digital.
Ştim deja că un convertor A/D transformă unui semnal analogic (de exemplu tensiunea de 3,25 V)
într-un semnal digital (de exemplu numărul 658). Ceea ce e posibil să nu ştii este faptul că fiecare
convertor A/D poate converti doar o anumită gamă de semnale de intrare (tensiuni) într-o
anumită gamă de semnale digitale de ieşire (numere) cu o anumită eroare maximă de
conversie.
Hai să încercăm să lămurim pe scurt ce este eroarea de conversie. Pentru asta hai să presupunem
un caz foarte simplu: un convertor A/D care poate transforma gama 0-5V în gama numerelor de la 0
la 5. Pentru 0 V la intrare vom obţine numărul 0 la ieşire, pentru 1V la intrare vom obţine numărul 1
la ieşire şi aşa mai departe. Însă ce număr vom obţine la ieşire când la intrare aplicăm un semnal de
0,7 V ? Convertorul nu ne poate da la ieşire numărul 0,7 (pentru că el nu poate oferi la ieşire decât
numere întregi) aşa că va aproxima rezultatul conversiei la cel mai apropiat număr întreg. 0,7 este
mai aproape de 1 decât de 0 şi deci rezultatul conversiei va fi 1. Rezultatul unei conversii 100%
precise ar fi numărul 0,7, ceea ce înseamnă că în exemplul nostru avem o eroare de conversie de 1 –
0,7 = 0,3 V. Ei bine, eroarea maximă de conversie arată valoarea maximă a aproximării pe care
respectivul convertor A/D o poate face. Aceasta se calculează împărţind gama semnalelor de intrare
la gama valorilor posibile la ieşire, ceea ce înseamnă ca în exemplu nostru vom avea o eroare de
conversie de maxim 5V/5 = 1V.
Parametrii unui convertor A/D pot fi ajustaţi după necesităţi. Pentru un convertor A/D de 10 biţi,
adică unul care poate oferi la ieşire numere între 0 şi 1023 (cum este cazul majorităţii
convertoarelor A/D din microcontroller-e) putem avea de exemplu următoarele moduri de
funcţionare:
• pentru semnale analogice de intrare între 0 şi 5V, convertorul A/D oferă la ieşire numere
între 0 şi 1023. În acest caz, eroarea maximă de conversie este de maxim 5V/1024 =
4,88mV. De ce am împărţit la 1024 şi nu la 1023 cât am spus că poate fi numărul maxim dat
la ieşirea convertorului A/D ? Pentru că am ţinut cont şi de numărul “0” care este şi el una
din valorile pe care convertorului A/D îl poate oferi ca rezultat;
• pentru semnale analogice de intrare între 0 şi 1V, convertorul A/D oferă la ieşire numere
între 0 şi 1023. În acest caz, eroarea maximă de conversie este de 1V/1024 = 0,9765 mV.
Observăm că în primul mod de funcţionare convertorul A/D poate lucra cu o gamă mai mare de
tensiuni de intrare (0-5 V) însă cu o eroare maximă de conversie mai mare. În cel de-al doilea caz
situaţia este exact invers: convertorul suportă o gamă mai mică de tensiuni de intrare (0-1V), însă
eroarea maximă de conversie este mult mai mică. Nu putem avea concomitent şi gama mare de
semnale de intrare şi eroare de conversie mică, motiv pentru care trebuie să ne decidem asupra unui
compromis între cele două. După luarea acestei decizii apare întrebarea: cum impun convertorului
A/D din microcontroller să adopte gama de semnale de intrare (şi implicit eroarea maximă de
conversie) pe care o vreau eu ? Răspunsul este: prin aplicarea unei tensiuni de referinţă pe pinii care
în figura 1 sunt numiţi pini setare tensiune referinţă convertor analogic – digital. Ce valoare
trebuie să aibă această tensiune de referinţă ? Păi exact valorea tensiunii maxime din gama de
semnale de intrare dorită. Mai precis, dacă vrei ca gama semnalelor acceptate la intrare să fie între 0
si 2,5896542 V, tensiunea de referinta trebuie să aibă şi ea tot 2,5896542 V. Sper că încă nu te-am
zăpăcit :).
Menţionez că pentru cei care nu vor să-şi bată prea mult capul cu aplicarea acestei tensiuni de
referinţă, multe microcontroller-e au incluse în capsule câteva surse de tensiuni de referinţă care pot
fi activate prin instrucţiunile scrise în firmware. Valorile acestor tensiuni de referinţă “interne” sunt
fixe şi au de obicei 1,1V, 2,5V şi 5V, adică poţi seta convertorul A/D să lucreze cu game de semnale
de intrare de 0-1,1V, 0-2,5V şi 0-5V.
8. Pini alimentare
Acesti pini fac ceea ce le sugerează şi numele: alimentează microcontroller-ul şi tot ce este conţinut
în el. Din punct de vedere al tensiunii de alimentare există practic doar două tipuri de
microcontroller-e: cele alimentate la 3,3V şi cele alimentate la 5V.

Principalele tipuri de funcţii realizabile de către un microcontroller


Am sugerat mai sus că un microcontroller programat corespunzător poate realiza funcţiile multor
alte tipuri de circuite electrice “clasice”. Pe lângă acestea, microcontroller-e pot realiza funcţii care
altfel ar fi deosebit de greu de realizat (comunicaţii de date fără erori, afişare de date pe diferite
tipuri de display etc.). Nu în ultimul rând versatilitatea microcontroller-elor le permite cercetătorilor
(profesionişti sau amatori) să-şi imagineze şi să dezvolte sisteme embedded cu noi şi noi
functionalităţi. În continuare voi enumera cele mai întâlnite funcţii posibile prin utilizarea unui
microcontroller.
1. Preluarea de date de la practic orice tip de senzor. Senzorii sunt dispozitive care transformă
un semnal de natură neelectrică (presiune, forţă, viteză, temperatură etc.) într-un semnal de natură
electrică. Cu ajutorul unui senzor potrivit, un microcontroller poate “citi” practic orice fel de
mărime fizică.
2. Introducerea de comenzi prin intermediul tastelor şi encoderelor (de ex. rotiţa de la mouse).
Controlul unui sistem analogic poate presupune utilizarea de butoane complicate şi de
potenţiometre. În contrast, comanda unui microcontroller se poate face cu ajutorul unor taste
microswitch, care sunt simple, ieftine, durabile şi nu în ultimul rând, elegante :).
3. Afişarea de date pe diferite tipuri de display-uri. Într-un sistem analogic trebuie ca pentru
fiecare informaţie de afişat să ai un dispozitiv de afişare (un bec, un led etc). Într-un sistem cu
microcontroller + display poţi folosi acelaşi display pentru a afişa informaţii diferite.
4. Implementarea de structuri de meniuri. Într-un sistem analogic, practic pentru orice comandă
trebuie să ai un buton dedicat. Într-un sistem cu microcontroller în care s-a creat o structură de
meniuri, poţi da un număr uriaş de comenzi folosind doar câteva taste.
5. Prelucrarea facilă şi rapidă a datelor de intrare. Aici nu pot să-ţi spun decât că practic nu
există funcţie de prelucrare a semnalelor care să nu poate fi implementată cu succes cu ajutorul unui
microcontroller.
6. Memorarea de date. În contrast cu sistemele analogice, sistemele cu microcontroller pot
memora practic orice tip de date.
7. Creează semnale de ieşire de tip On/Off şi PWM. Primul tip de semnale poate fi folosit pentru
funcţii de activare/dezactivare (de exemplu a unor becuri, sonerii, electromagneţi etc.) iar al doilea
poate fi folosit pentru funcţii de control precis (a turaţiei unui motor, a intensităţii luminoase a unui
bec/led, a tensiunii de ieşire a unui regulator de tensiune etc).
Acestea ar fi doar cele mai generale exemple de funcţii care îmi vin acum în minte. Mai multe
exemple atât de funcţii cât şi de aplicaţii concrete poţi găsi uşor printr-o simplă căutare pe net. Până
când îţi voi putea prezenta o listă consistentă cu aplicaţii cu microcontroller-e îţi recomand să arunci
o privire aici.

Programarea microcontroller-elor
Dacă ai ajuns până aici sunt sigur că eşti curios despre cum obţinem faimosul firmware – soft-ul
care însufleţeşte un microcontroller şi tot ce este controlat de acesta.
După cum probabil ai înţeles de prin alte surse, un microcontroller este un dispozitiv digital şi prin
urmare nu ştie decât de 0 şi de 1 logic. Din acest motiv, firmware-ul este şi el o listă de instrucţiuni
de lucru care nu conţine altceva decât şiruri de 0 şi de 1. Apare astfel o problemă: tu ca om foloseşti
un limbaj (una care foloseşte litere, semne de punctuaţie şi cifre) iar firmware-ul şi implicit
microcontroller-ul foloseşte limbajul digital (care are doar 2 “litere” – 0 şi 1). Bineînţeles, ambele
limbaje sunt inventate de om şi cel puţin teoretic ar trebui să poţi învăţa să te exprimi prin ambele.
Ai putea, dar ţi-ar fi extraordinar de greu. Din acest motiv cercetătorii în informatica au dezvoltat
nişte unelte ajutătoare:
• limbaje de programare, care sunt colecţii de cuvinte speciale pe care le poţi folosi pentru a
scrie firmware-ul. Fişierul sau fişierele în care ai scris firmware-ul poartă denumirea de Cod
sursă;
• compilatoare, care sunt nişte programe care au funcţie de translator – traduc codul sursă
într-un limbaj pe care microcontroller-ul îl poate înţelege (limbaj denumit şi cod maşină).
Cele două unelte de mai sus se regăsesc în componenţa unor programe sau set-uri de programe care
au denumirea generică de medii de dezvoltare integrate sau Integrated Development
Environment (IDE).
Câteva din cele mai întâlnite medii de dezvoltare sunt:
• Arduino IDE. Este un mediu de dezvoltare destinat îndeosebi constructorilor amatori. Cu
ajutorul acestuia se pot realiza firmware-uri pentru microcontroller-ele produse de firma
ATMEL;
• AVR studio. Este un mediu de dezvoltare creat tot pentru microcontroller-ele produse de
ATMEL însă spre deosebire de Arduino IDE care este optimizat spre a fi utilizat cu uşurinţă
de amatori, AVR studio este un mediu de dezvoltare profesional (a se citi mult mai
complet/complex şi prin urmare, ceva mai dificil de utilizat);
• MPLABX IDE. Este mediu de dezvoltare destinat micrcontroller-elor produse de firma
MICROCHIP. La fel ca şi AVR Studio, MPLABX IDE este un mediu de dezvoltare
profesional.
Odată ce ai finalizat de scris codul sursă într-un mediu de dezvoltare, vine momentul să instalezi
acel cod în memoria program a microcontroller-ului. Pentru aceasta, în primul rând trebuie să
conectezi microcontroller-ul de programat la PC-ul/laptopul pe care ai codul sursă, problemă care se
rezolva fie cu un simplu cablu USB (ca în cazul modulelor de tip Arduino) fie prin intermediul unui
modul special numit programator (de exemplu REAL ICE). După realizarea conexiunii cu
microcontroller-ul nu-ţi mai rămâne decât să dai un click pe butonul de programare din ferestra de
lucru a mediului de dezvoltare, iar acesta face totul (transformă codul sursă în limbajul
microcontroller-ului şi apoi îl instalează în memoria program a acestuia).
Sunt sigur că te-ai aştepta la mai multe noţiuni despre scrierea efectivă a instrucţiunilor din
firmware, însă dacă aş face asta pe scurt ar fi ca şi cum aş încerca “pe scurt” să te învăţ să vorbeşti
într-o altă limbă. De aceea, prefer să abordez acest subiect pe larg într-un material viitor.

Etapele dezvoltării unui proiect cu microcontroller-e.


Acum ar trebui să ştii în mare ce este un microcontroller, ce poţi face cu el şi cum anume îi poţi
impune să facă ce vrei tu. În continuare, hai să vedem care ar fi cea mai practică ordonare a paşilor
de urmat atunci când dorim să realizăm o aplicaţie cu microcontroller-e.
1. Realizarea unei scheme bloc
Înainte de a te apuca să construieşti un dispozitiv/aparat/echipament este foarte recomandat să
desenezi o schemă bloc în care să adaugi toate blocurile funcţionare de care proiectul are nevoie
precum şi toate legăturile dintre aceste blocuri. Cu alte cuvinte, prin realizarea unui scheme bloc
obţii o imagine de ansamblu a proiectului, o imagine care conţine toate resursele de care proiectul
tău are nevoie pentru a funcţiona aşa cum îţi doreşti.
2. Alegerea microcontroller-ului potrivit. Ştiind ce blocuri funcţionale trebuie să includă proiectul
tău ar trebui să fie mai simplu să-ţi dai seama cam ce performanţe ar trebui să aibă microcontroller-
ul pe care trebuie să-l foloseşti. În acest sens este indicat să-ţi faci o listă cu estimări cât mai precise
în ceea ce priveşte următoarele necesităţi:
• numărul minim de pini din fiecare categorie (intrări analogice, intrări digitale, ieşiri PWM şi
ieşiri digitale);
• viteza de lucru. Pentru aplicaţii în care te aştepţi să ai de a face cu prelucrări masive de date
este bine să te orientezi spre un microcontroller care lucrează la cel puţin 70-100 Mhz. În
restul cazurilor, poţi ignora aspectul vitezei de lucru;
• dimensiunea memoriei program.
Cu toate acestea, de multe ori singurul criteriu important în alegerea microcontroller-ului este
numărul minim de pini, pentru că toate celelalte caracteristici sunt natural legate de acest parametru.
De exemplu, dacă ai o aplicaţie complexă, asta înseamnă că ai de a face automat cu multe semnale
(pentru care îţi trebuie mulţi pini), ai nevoie de o prelucrare rapidă de date (pentru care îţi trebuie o
viteză de lucru mare), ai nevoie de un firmware cu multe, multe instrucţiuni (pentru care îţi trebuie
o memorie program mare). La cealaltă extremă, este puţin probabil ca pentru o aplicaţie banală
(cum ar fi aprinderea şi stingerea unui bec) să ai neaparat nevoie de un microcontroller cu 400 de
pini :).
3. Proiectarea parţii hardware. Ştiind schema bloc şi tipul de microcontroller pe care-l putem
folosi, se trece la proiectarea parţii hardware (cablaj imprimat, componente electrice, electronice,
electromecanice, optice, acustice etc).
4. Crearea firmware-ului. Proiectarea părţii hardware se face înainte de crearea firmware-ului
deoarece de multe ori dezvoltarea firmware-ului se face prin testarea lui pe partea hardware. Mai
precis, se scrie o parte din firmware, se instalează pe microcontroller (care este conectat la partea
hardware) şi se verifică dacă sistemul se comportă cum trebuie. Dacă nu, se modifică firmware-ul,
apoi se instalează iar pe microcontroller, se retestează şi tot aşa până când totul merge cum trebuie.
5. Testarea produsului obţinut.După ce proiectul a ajuns în punctul în care poate realiza corect
toate funcţiile dorite, se poate realiza o testare finală care să aibă ca scop:
• depistarea de bug-uri (greşeli) în firmware, care în anumite circumstanţe pot afecta parţial
sau total funcţionarea sistemului;
• evaluarea comportării în timp a sistemului sau mai bine zis probabilitatea de defectare a
respectivului aparat prin supraîncălzirea componentelor electronice, sensibilitate excesivă la
câmpuri electromagnetice parazite, calitatea îndoielnică a unor componente, şocuri/vibraţii
mecanice etc.
În funcţiile de performanţele pe care trebuie să le prezinte respectivul produs, dacă testarea finală
arată probleme importante se pot impune sau nu modificări (de firmware sau hardware).

Lumea, aşa cum o vedem astăzi, este complet diferită de cea de acum 100 de ani. Acest lucru se
datorează în principal avansului tehnologic fără precedent. Unul din pilonii care susţine şi
stimulează continuu acest avans tehnologic sunt sistemele embedded controlate de microcontroller-
e. De ce ? Pentru că, în termeni simpli, oferă o modalitate simplă, versatilă şi ieftină de a ne
exprima creativitatea tehnică.
Aşa că dacă ai idei tehnice care mocnesc în tine, este foarte probabil ca microcontroller-ele să-ţi fie
cei mai potriviţi aliaţi.
Am încercat să desenez o hartă menită să te ajute să înţelegi ce este microcontroller, cum anume
lucrează el şi unde poţi ajunge cu ajutorul lui. Dacă nu ai înţeles ceva sau daca ai sugestii, lasă-mi
un comentariu mai jos şi ajută-mă astfel să fac articolele viitoare mai bune.
Cu bine,
Ciprian
Categories