Tot mai des în jurul nostru observăm cum se transformă lumea care ne înconjoară. Dacă [620133]
CAPITOLUL I
INTRODUCERE
Tot mai des în jurul nostru observăm cum se transformă lumea care ne înconjoară. Dacă
intrăm într -un magazin observăm cum ni se deschid ușile. Dacă în bucătărie apare un fum mai dens,
atunci centrală termică se opreșt e și scoate un sunet asc uțit. Aparatele și dispozitivele electrocasnice
pot luă decizii singure, fără intervenția omului. Astfel, automatizarea proceselor industriale se
extinde și asupra vieții oamenilor din ce în ce mai mult.
Un sistem complet automatizat presupun e luarea unor decizii la un moment dat. Aceste
decizii sunt luate în funcție de un program înscris în memoria unui calculator personal, un automat
programabil sau un microcontroller.
Un sistem cu microprocesor va primi la intrare informații prin intermediul senzorilor și al
butoanelor, urmând ca să ia decizii acționând asupra ieșirilor. Pe ieșiri există diverse sisteme de
acționare asupra unei instalații specifice.
Istoria autovehiculului
Un vehicul capabil s ă se deplaseze prin for ță proprie a fost mereu un vis al omenirii, astfel
istoria automobilului reflect ă o evolu ție care a avut loc la nivel mondial. Se estimează că aproape
100.000 de oameni prin invențiile lor au contribuit la crearea automobilului modern.
Totul a început cu planurile teoretice pentru crearea unui motor pentru automobile. Schițele
inițiale au fost desenate și concepute de Leonardo da Vinci și Isaac Newton. Primul vehicul care se
deplaseze prin mijloace proprii, a fost proiectat de Nicholas Joseph Cugnot și construit de M. Brezin
în 1769.
Primul vehicul (Nicholas Joseph Cugnot) Automobilul Ford T (1908)
Sunt foarte mulți inventatori care și -au atribuit titlul de "creator al primului autovehicul",
însă adevărat ul strămoș al automobilului este reprezentat de motorul și autovehiculul inventate de
Jean Joseph Etienne Lenoir: motorul cu gaz brevetat în 1860.
În 1867 la expoziția de la Paris, germanul Nikolaus Otto prezintă un motor mai performant decât cel
al lui Lenoir, ulterior după mai multe îmbunătățiri în 1877, Otto și -a patentat motorul în patru timpi(
motorul "Otto – Dentz").
O altă invenție importantă este reprezentată de motorul cu autoaprindere, brevetat de Rudolf
Diesel în 1892. Adevărații pionieri în con strucția automobilului sunt considerați J.J.E.Lenoir,
Delamare – Deboutterville, Gottlieb Daimler, Carl Benz și Henry Ford.
În anul 1908, apare automobilul Ford T, primul automobil produs în milioane de exemplare.
După cel de -al doilea război mondial, a sistăm la o adevărată explozie a industriei
automobilistice; de asemenea asistăm și la transformarea automobilului în prima mașină a activității
3
social -economice moderne. Au apărut automobilele cunoscute de noi, precum: Volkswagen (1946),
Cadillac și Oldsmobile (1949). Motorul în V, rezervat inițial mașinilor puternice sau de curse, cu cel
puțin 8 cilindrii, a început să fie construit în 6 cilindri i (Buick 1960) și 4 cilindrii în 1962 (Ford Taunus
12 M). Motorul cu 12 cilindrii în V a rămas apanajul automobilelor de cursă, precum Maseratti, Aston
Martin, Ferrari.
Plecând de la mașini vechi, că mașina din imaginea de mai sus, am ajuns în epoca modern ă,
în epoca în care mașinile dispun de tot felul de gadgeturi, navigație, ESP, ABS. Făcând o comparație
între cele 2 modele, parcă singurele asemănări ar fii caroseria și roțile.
Automobil de curse -Aston Martin Automobil VW Golf
Mașina hibrid. Datorită poluării și a epuizării zăcămintelor de petrol, se caută noi soluții,
adică noi combustibili, noi motoare adaptate la combustibilii de regulă nepoluanț i.
"Și vezi să nu uiți să bagi mașină și telefonul la încărcat!" De fapt preocupările noastre legate de
timpul de viață al telefonului mobil ar putea să se extindă și asupra autoturismului în câțiva ani, dacă
vom înțelege ceea ce americanii au priceput d eja: mașinile hibride sunt primul pas către dispariția
benzinei și motorinei din lista de cheltuieli, dacă nu din rațiuni ecologice, măcar din motive
economice.
Mașina hibrid (Honda Civic H ibrid)
4
Mașina de jucarie . Mașina cu telecomanda este un sistem compus din mai multe elemente:
mecanică, senzori precum și un mecanism de direcționare. Mecanica stabilește înfățișarea mașinii și
mișcările posibile pe timp de funcționare. Senzorii sunt întrebuințați la interacția cu mediul
sistemului. Me canismul de direcționare are grijă ca mașina să -și îndeplinească obiectivul cu succes,
evaluând de exemplu informațiile senzorilor. Acest mecanism reglează motoarele și planifică
mișcările care trebuiesc efectuate.
Jucăriile sunt obiecte create în general pentru a reda la scară redusă realitatea și a oferi copiilor
miniaturi reprezentative ale lumii adulților. Jucăriile pot constitui un liant al relațiilor dintre copii și
chiar un suport moral oferit copiilor ca indivizi. Cu toate acestea și unii adulți se mai joacă cu jucăriile.
În comerțul cu jucării una din dilemele întâlnite este cine alege jucăria: copilul sau adultul? Pentru
copil jucăria preferată este aceea care reflectă cel mai bine visurile și aspirațiile lui, dorințele sale de
a fi mare, de a imit a sau reproduce lumea înconjuratoare, astfel mașina cu telecomanda îi ofera
posibilitatea de “a fi mare”.
Aplicația care dore ște a se realiza – autovehicul orientat in trafic folosind senzorul de
proximitate cu ajutorul microcontrollerului PIC16F 877 – este formata din: o parte mecanică
(sașiu, roți, reductoare de turație – gear box), o parte electronică (senzori , motoare, afișaj, difuzor,
controller ) și o parte de logică (programul care decide felul în care autovehiculul acționează
motoarele în funcție d e datele returnate de senzori).
Mașina de jucarie ac ționată cu ajutorul microcontrolerului PIC16F 877
5
CAPITOLUL I
MICROCONTROLERUL PIC 16F877
Capitolul II.1. Generalități microcontrolere
Circumstanțele în care ne găsim astăzi în domeniul microcontrolerelor și -au avut începuturile
în dezvoltarea tehnologiei circuitelor integrate. Această dezvoltare a făcut posibilă înmagazinarea a
sute de mii de tranzistoare într -un singur cip. Aceasta a fo st o premiză pentru producția de
microprocesoare, și primele calculatoare au fost făcute prin adăugarea perifericelor ca memorie, linii
intrare -ieșire, timer -i și altele. Următoarea creștere a volumului capsulei a dus la crearea circuitelor
integrate. Aces te circuite integrate conțin atât procesorul cât și perifericele. Așa s -a întâmplat cum
primul cip conținând un microcalculator, sau ce va deveni cunoscut mai târziu ca microcontroler a
luat ființă.
Microcontrolerul diferă de un microprocesor în multe fel uri. În primul rând și cel mai
important este funcționalitatea sa. Pentru a fi folosit, unui microprocesor trebuie să i se adauge alte
componente ca memorie, sau componente pentru primirea și trimiterea de date. Pe scurt, aceasta
înseamnă că microprocesoru l este inima calculatorului. Pe de altă parte, microcontrolerul este
proiectat să fie toate acestea într -unul singur. Nu sunt necesare alte componente externe pentru
aplicarea sa pentru că toate perifericele necesare sunt deja incluse în el. Astfel, econom isim timpul și
spațiul necesare pentru construirea de aparate.
II. 1.1 . Memoria
Fig. II.1.1 .1.– Reprezentare a organizării interne a unei memorii
6
Memoria este o parte a microcontrolerului a cărei funcție este de a înmagazina date.
Cel mai ușor mod de a explica este de a -l descrie ca un dulap mare cu multe sertare. Dacă presupunem
că am marcat sertarele într -un asemenea fel încât să nu fie confundat e, oricare din conținutul lor va fi
atunci ușor accesibil. Este suficient să se știe desemnarea sertarului și astfel conținutul lui ne va fi
cunoscut în mod sigur.
Componentele de memorie sunt exact așa. Pentru o anumită intrare obținem conținutul unei
anumite locații de memorie adresate și aceasta este totul. Două noi concepte ne sunt aduse: adresarea
și locația de memorie. Memoria constă din toate locațiile de memo rie, și adresarea nu este altceva
decât selectarea uneia din ele. Aceasta înseamnă că noi trebuie să selectăm locația de memorie la un
capăt, și la celălalt capăt trebuie să așteptăm conținutul acelei locații. În afară de citirea dintr -o locație
de memorie , memoria trebuie de asemenea să permită scrierea în ea. Aceasta se face prin asigurarea
unei linii adiționale numită linie de control. Vom desemna această linie ca R/W (citește /scrie). Linia
de control este folosită în următorul fel: dacă r/w=1, se face citirea, și dacă opusul este adevărat atunci
se face scrierea în locația de memorie. Memoria este primul element, dar avem nevoie și de altele
pentru ca microcontrolerul nostru să funcționeze.
II.1. 2. Unitatea de procesare centrală
Să adăugăm alte 3 lo cații de memorie pentru un bloc specific ce va avea o capabilitate
incorporată de înmulțire, împărțire, scădere și să -i mutăm conținutul dintr -o locație de memorie în
alta. Pa rtea pe care tocmai a fost este numită "unitatea de procesare centrală" (UCP, eng . CPU –
Central Processing Unit). Locațiile ei de memorie sunt numite regiștri, deoarece au la bază piese
electro nice numite tot regiș trii, descriși î n partea practică a acestei lucrări.
Fig. II.1 .2.1. – Model simplificat de unitate centrală de procesare
Regiștrii sunt deci locații de memorie al căror rol este de a ajuta prin executarea a variate
operații matematice sau a altor operații cu date oriunde se vor fi găsit datele. Să privim la situația
curentă. Avem două entități indepen dente (memoria și UCP) ce sunt interconectate, și astfel orice
schimb de informații este ascuns, ca și funcționalitatea sa. Dacă, de exemplu, dorim să adăugăm
conținutul a două locații de memorie și întoarcem rezultatul înapoi în memorie, vom avea nevoie d e
o conexiune între memorie și UCP. Mai simplu formulat, trebuie să avem o anumită "cale" prin care
datele circulă de la un bloc la altul.
7
II.1.3. Magistrala
Calea de interconectare între memorie și UCP este numită magistrală (eng. bus). Fizic, el
repre zintă un grup de 8, 16, sau mai multe trasee. Sunt două tipuri de magistrale -uri: magistrală de
adresă și magistrală de date .
Prima constă din atâtea linii cât este cantitatea de memorie pe care dorim să o adresăm, iar
cealaltă este atât de lată pe cât sunt datele (în cazul nostru 8 biți) sau linia de conectare. Primul
servește la transmiterea adreselor de la UCP la memorie, iar cea de -a doua la conectarea tuturor
blocurilor din interiorul microcontrolerului.
Fig II.1 .3.1. – Schema bloc de conectarea unității centrale de procesare la memorie
În ceea ce privește funcționalitatea, situația s -a îmbunătățit, dar o nouă problemă a apărut de
asemenea: avem o unitate ce este capabilă să lucreze singură, dar ce nu are nici un contact cu lume a
de afară, sau cu utilizatorul ! Pentru a înlătura această deficiență, să adăugăm un bloc ce conține câteva
locații de memorie al căror singur capăt este conectat la magistrala de date, iar celălalt are conexiune
cu liniile de ieșire la microcontroler ce pot fi văzute cu ochiul liber ca pini la componenta electronică.
II.1.4. Unitatea de intrare -ieșire
Aceste locații ce tocmai le -am adăugat sunt numite "porturi". Sunt diferite tipuri de porturi:
intrare, ieșire sau porturi pe două -căi. Când se lucrează cu porturi, mai întâi de toate este necesar să
se aleagă cu ce port urmează să se lucreze, și apoi să s e trimită date la, sau să se ia date de la port.
8
Fig. II.1 .4.1. – Schemă de principiu a unei unități de intrare -ieșire
Când se lucrează cu el portul se comportă ca o locație de memorie. Ceva este pur și simplu
scris în sau citit din el, și este posibil de a remarca ușor aceasta la pinii microcontrolerului.
II.1.5. Comunicația serială
Cu aceasta am adăugat la unitatea deja existentă posibilitatea comunicării cu lumea de afară.
Totuși, acest mod de comunicare are neajunsurile lui. Unul din neajunsurile de bază este numărul de
linii ce trebuie să fie folosite pentru a transfera datele. Ce s-ar întâmpla dacă acestea ar trebui
transferate la distanță de câțiva kilometri ? Numărul de linii înmulțit cu numărul de kilometri nu
promite costuri eficiente pentru proiect. Nu ne rămâne decât să reducem numărul de linii într-un așa
fel încât să nu sc ădem funcționalitatea.
Să presupunem că lucrăm doar cu 3 linii, și că o linie este folosită pentru trimiterea de date,
alta pentru recepție și a treia este folosită ca o linie de referință atât pentru partea de intrare cât și
pentru partea de ieșire. Pent ru ca aceasta să funcționeze, trebuie să stabilim regulile de schimb ale
datelor. Aceste reguli sunt numite protocol. Protocolul este de aceea definit în avans ca să nu fie nici
o neînțelegere între părțile ce comunică una cu alta.
De exemplu, dacă un om vorbește în franceză, și altul vorbește în engleză, este puțin probabil
că ei se vor înțelege repede și eficient unul cu altul.
Să presupunem că avem următorul protocol. Unitatea logică "1" este setată pe linia de
transmisie până ce începe transferul . Odată ce începe transferul, coborâm linia de transmisie la "0"
logic pentru o perioadă de timp (pe care o vom desemna ca T), așa că partea receptoare va ști că sunt
date de primit, așa că va activa mecanismul ei de recepție. Să ne întoarcem acum la parte a de
transmisie și să începem să punem zero -uri și unu -uri pe linia de transmisie în ordinea de la un bit a
celei mai de jos valori la un bit a celei mai de sus valori. Să lăsăm ca fiecare bit să rămână pe linie
pentru o perioadă de timp egală cu T, și la sfârșit, sau după al 8 -lea bit, să aducem unitatea logică "1"
înapoi pe linie ce va marca sfârșitul transmisiei unei date. Protocolul ce tocmai l -am descris este
numit în literatura profesională NRZ (Non -Return to Zero).
9
Fig. II.1 .5.1. – Schemă de principiu a unei unități de comunicare serială
Pentru că avem linii separate de recepție și de transmitere, este posibil să recepționăm și să
transmitem date (informații) în același timp. Blocul așa numit „full -duplex ” ce permite acest mod de
comunicare este numit blocul de comunicare serială. Spre deosebire de transmisia paralelă, datele
sunt mutate aici bit cu bit, sau într -o serie de biți, de unde vine și numele de comunicație serială.
După recepția de date trebuie să le citim din locația de transmisie și să le înmagazinăm în
memorie în mod opus transmiterii unde procesul este invers. Datele circulă din memorie prin
magistrală către locația de trimitere, și de acolo către unitatea de recepție conform protocolului.
II.1.6. Unitatea de temporizare
Acum că avem comunicația serială, putem recepționa, trimite și procesa date. Totuși, pentru
noi ca să putem să îl folosim în industrie mai avem nevoie de câteva blocuri. Unul din acestea este
blocul timer care este important pentru noi pentru că ne dă info rmația de timp, durată, protocol etc.
Fig. II.1 .6.1. – Schema bloc a unei unități de temporizare
Unitatea de bază a timer -ului este un contor liber (free -run) care este de fapt un registru a cărui
valoare numerică crește cu unu la intervale egale, așa încât luându -i valoarea după intervalele T1 și
T2 și pe baza diferenței lor să putem determina cât ti mp a trecut. Acesta este o parte foarte importantă
a microcontrolerului al cărui control cere cea mai mare parte a timpului nostru.
10
II.1.7. Watchdog -ul
Încă un lucru ce necesită atenția noastră este funcționarea fără defecte a microcontrolerului în
timpul exploatării. Să presupunem că urmare a unei anumite interferențe (ce adesea se întâmplă în
industrie) microcontrolerul nostru se oprește din executarea programului, sau și mai rău, începe să
funcționeze incorect.
Fig. II.1 .7.1. – Schema bloc a unei unități watchdog
Bineînțeles, când aceasta se întâmplă cu un calculator, îl resetăm pur și simplu și va continua
să lucreze. Totuși, nu există buton de resetare pe care să -l apăsăm în cazul microcontrolerului care să
rezolve astfel p roblema noastră. Pentru a depăși acest obstacol, avem nevoie de a introduce încă un
bloc numit watchdog -câinele de pază. Acest bloc este de fapt un alt contor liber (free -run) unde
programul nostru trebuie să scrie un zero ori de câte ori se execută corect . În caz că programul se
"înțepenește", nu se va mai scrie zero, iar contorul se va reseta singur la atingerea valorii sale maxime.
Aceasta va duce la rularea programului din nou, și corect de această dată pe toată durata. Acesta este
un element important al fiecărui program ce trebuie să fie fiabil fără supravegherea omului.
II.1.8. Module PWM
Un semnal PWM (Puls Width Modulation) este folosit în multe aplicații; comanda motoarelor
de curent continuu sau comanda surselor de alimentare pot fi amintite ca principale aplicații. În figura
11 este reprezentat un semnal PWM.
Fig. II.1 .8.1. -Semnal PWM
11
Semnalul PWM este un semnal periodic la care se poate modifica în mod controlat factorul
de umplere. Modulele timer au resursele necesare generării unui semnal cu factor de umplere variabil.
Deoarece, după cum am mai amintit, semnalul PWM este utilizat în aplicații există module timer
dedicate acestei funcții; modulele PWM. Un modul PWM poate genera mai multe semnale modulate.
Structura unui canal PWM este reprezentată în figura 12.
Fig. II.1 .8.2.- Schema bloc a canalului PWM
Registrul de prescalare generează clock -ul pentru un numărător. Clock -ul de numărare este
programabil. Conținutul numărătorul ui este comparat cu cel al registrului PWM. Cât timp rezultatul
comparației este mai mic sau egal, se va genera un unu logic la i eșirea PWM. Dacă rezultatul
comparației este mai mare, se va genera la ieșirea PWM un zero logic. Dacă registrele comparate sunt
de opt biți factorul de umplere poate fi între 1/256 și 1. Un canal PWM odată programat va genera la
ieșire semnalul periodic c ontinuu, fără intervenția unității centrale.
Ca și la celelalte componente funcționale, în ceea ce privește global modulele timer (includem
și modulele watchdog și PWM) vor fi prezentate în încheiere câteva criterii de apreciere:
– numărul de canale timer și dimensiunea registrului de numărare;
– flexibilitaea timere -lor, mecanisme implementate;
– existența unui ceas de gardă (watchdog);
– numărul de canale PWM și dimensiunea registrului PWM.
II.1.9. Convertorul analog -numeric (digital)
Pentru că semnalele de la periferice sunt substanțial diferite de cele pe care le poate înțelege
microcontrolerul (zero și unu), ele trebuie convertite într -un mod care să fie înțeles de microcontroler.
Această sarcină este îndeplinită de un bloc pentru co nversia analog -digitală sau de un convertor AD.
Acest bloc este responsabil pentru convertirea unei informații despre o anumită valoare analogică
într-un număr binar și pentru a o urmări pe tot parcursul la un bloc CPU așa ca blocul CPU să o poată
procesa.
12
Fig. II.1.9.1 . – Schema bloc a unui convertor analog – numeric
Astfel microcontrolerul este acum terminat, și tot ce mai rămâne de făcut este de a -l pune într –
o componentă electronică unde va accesa blocurile interioare prin pinii exteriori. Imaginea de mai jos
arată cum arată un microcontroler în interior.
Fig. II.1 .9.2. – Configurația fizică a interiorului unui microcontroler
Liniile subțiri ce merg din interior către părțile laterale ale microcontrolerului reprezintă fire
conectând blocurile interioare cu pinii capsulei microcontrolerului.
Figura următoare reprezintă schema logică a microcontrolerului.
13
Fig. II.1 .9.3. – Schema logică a unui microcontroler
Desigur, un microcontro ler poate să cuprindă și alte blocuri decât cele prezentate. Defapt, în
majoritatea cazurilor așa se și întâmplă, varietatea de microcontrollere fiind imensă.
Uneori diferențele di ntre două modele de microcontro ler sunt mici dar pentru o producție în
serie bazată pe acestea, diferențele se pot însum a, mai ales cele legate de costuri, ducând la cu totul
alte rezultate posibile.
14
Capitolul II.2. Microcontro lerul PIC16F877
Microcontr olerele PIC au fost dezvoltate de firma americană Microchip, la începutul anilor
`90. Faptul remarcabil pentru care a putut cuceri un important s egment din piață de microcontro lere
a fost modalitatea simplă de înscriere a programului (serială, necesită doar trei fire), memoria program
conținută în aceeași capsulă, noua tehnologie CMOS de realizare (deci consum redu s) și prețul relativ
scăzut.
Aproape toate microcontro lerele PIC există în două versiuni, și anume:
1. "Windowed", marcate cu sufixul "JW" pe capsulă (Ex. 12C509 -04/JW). Aceste chip -uri se
folosesc la dezvoltarea de aplicații deoarece permit șterge rea programului și reînscrierea lui, de mai
multe ori. Ștergerea programului se face prin expunerea chip -ului la raze ultraviolete. Capsulă are
prevăzută pe partea de sus o fereastră din sticlă de cuarț prin care pot pătrunde razele ultraviolete.
2. "OTP " (One Time Programable), cele programabile o singură data. Funcțional și
tehnologic sunt identice cu cele "windowed", doar că nu au prevăzută fereastră de cuarț, deci
programul odată înscris nu mai poate fi șters. Deci o aplicație gata dezvoltată și încer cată cu o versiune
"windowed" poate fi multiplicată pentru producție de serie în capsule "OTP" care sunt de câteva ori
mai ieftine. Aceste două versiuni, Windowed și OTP sunt realizate în tehnologie CMOS EPROM.
Mai nou, ca o mediere între versiunile "w indowed" și "OTP" a apărut o noua versiune numită:
"Flash", bazată pe tehnologie CMOS EEPROM. Aceste chip -uri nu au fereastră dar pot fi totuși șterse
și reprogramate de mai multe ori. Sunt folosite atât la dezvoltare de aplicații cât și la produse de ser ie.
Ele sunt marcate cu un "F " pe capsulă (ex. 16F84 -10/P). Sunt foarte răspândite în cercul hobby -stilor
și a amatorilor de electronică, deoarece inscriptoarele necesare pentru tipurile Flash pot fi construite
și acasă, fiind foarte simple.
Aceste microc ontrol ere sunt de construcție RISC, adică au un set redus de instrucțiuni (cca
35), care diferă foarte puțin de la tip la tip, în funcție de specificitățile hardware (dacă conțin convertor
analog -digital, EEPROM de date, magistrale SPI sau I2C, etc.) ale f iecărui tip în parte.
Fig.II.2.1 . Microcontrole re și modelul PIC16F 877
15
Dispozitivul este fabricat folosind tehnologia de memorie non -volatilă de mare densitate.
Combinând un processor RISC pe 8 biți cu un Flash pe un CIP monolithic, PIC16F 877 este un
microcontrol er care asigură o soluție foarte flexibilă și eficientă ca preț pentru multe aplicații de
control încorporate.
II.2.1. Caracteristici principale ale microcontrolerului PIC 16F877
În continuare vom prezenta doar succint c âteva caracteristici principale ale acestui
microcontroller, documentația tehnică a acestuia întinzându -se pe mai bine de două sute de pagini.
a. Unitatea centrala de procesare :
– doar 35 de instrucțiuni ;
– toate instrucțiunile se execută într -un singur ciclu, cu excepția celor de
ramificare a programelor, care se execută în două cicluri ;
– viteza de lucru : 20 Mhz / 200 ns per instrucțiune ;
– până la 8K x 14 cuvinte de memorie flash de program ;
– până la 368 x 8 octeți de memorie de date RAM ;
– până la 256 x 8 octeți de memorie de date EEPROM ;
– compatibil pin la pin cu alte microcontrollere de 28, 40 sau 44 de pini .
b. Periferice :
– timer 0 : contor pe 8 biți cu preîncărcare ;
– timer1 : contor pe 16 biți, cu preîncărcare, poate fi incrementat din exterior
chiar și în modul Sleep ;
– timer2: contor pe 8 biți cu preîncărcare ;
– două module PWM ;
– port serial si ncron cu SPI și I2C;
– USART cu adresare pe 9 biți ;
– port paralel pe 8 biți cu linii externe RD, WR și CS ;
– circuit de resetare la brown -out.
c. Caracteristici analogice :
– convertor analog numeric, până la 8 canale, precizie de 10 biți ;
– modul comparator analog cu :
•două comparatoare analogice ;
•modul programabil de tensiune de referință ;
•ieșirile comparatoarelor su nt accesibile din exterior .
d. Caracteristici speciale ale microcontrollerului :
– 100.000 de cicluri de ștergere / scriere a memoriei Flash ;
– 1.000.000 de cicluri de ștergere / scriere a memoriei EEPROM ;
– perioadă de reținere a informațiilor in EEPROM mai ma re de 40 de ani ;
– autoprogramabil prin soft ;
– programare serială în circuit prin doi pini ;
– circuit basculant RC propriu pentru watchdog ;
– protecție programabilă a programului ;
– mod de economisire a energiei ;
– depanare în circuit prin doi pini .
16
e. Tehnologie CMOS:
– Flash / EEPROM de viteză mare, consum mic ;
– domeniu de alimentare 2.0 – 5.5 V ;
– domenii de temperaturi comerciale sau industriale ;
– consum redus de energie .
II.2.2 . Memoria de date
Fig.II.2.2 .1.-Harta memoriei de program:
Fig.II.2.2 .2.-Harta memoriei de date:
Vector Reset
Vector de intrer.
Pagina 0
Pagina 1
Pagina 2
Pagina 3
Memoria
de program
în circuit
0000h
0004h
0005h
0800h
1000h
1800h
1FFFh
17
Memoria de date este organiz ată pe 4 bancuri. În fiecare din cele 4 bancuri există zonă
rezervată pentru registrele speciale ale microcontrolorului și o zonă utilizabilă pentru variabilele
programului (registrele generale). Selectarea bancului curent se face cu ajutorul a 2 biți din registrul
de stare (RP0 și RP1). Prin intermediul registrelor speciale programatorul poate să controleze
funcționarea circuitului și poate să acceseze (să citească și să scrie) diversele componente interne, în
speță interfețe. De exemplu registrele PORTA (adr. 05H), PORTB (a dr. 06h), PORTC (adr. 07h) și
PORTD (adr. 08H) permit citirea și scrierea celor 4 porturi paralele ale circuitului, iar registrele
TMR0, TMR1L, TMR1H și TMR2 controlează contoarele 0, 1 și 2. În mod similar fiecare resursă a
circuitului are registre spec iale asociate, unele pentru citirea/scrierea datelor propriu -zise, altele
pentru progr amarea și configurarea acestora.
Setul de instrucțiuni
Microcontroloarele din familia PIC16 folosesc un format de instrucțiune de 14 biți.
Instrucțiunile sunt de 3 tipu ri:
• instructiuni pe octet
• instrucțiuni pe bit
• operații cu literal si de control
Pentru instrucțiunile pe octet parametrul “f” reprezintă indicatorul de registrul (file
register) care se folosește în instrucțiune, iar parametrul “d” indicatorul de destinație. Dacă d=0
rezultatul se pune în registrul “W”, iar dacă d=1 rezultatul se pune în registrul indicat de “f”.
SFR (Special
Register File)
96 octeți
Registre
generale
Bancul 0
00H
20H
7FH
80H
A0H
FFH
Accese 70h -7F
SFR (Special
Register File)
80 octeți
Registre
generale
Bancul 1
100H
120H
17FH
Accese 70h -7F
SFR (Special
Register File)
80 octeți
Registre
generale
180H
1A0H
1FFH
Accese 70h -7F
SFR (Special
Register File)
80 octeți
Registre
generale
Bancul 3
16 octeți
Reg. generale
16 octeți
Reg. generale
18
Pentru instrucțiuni pe bit “b” reprezintă un indicator al bitului care va fi afectat de
instrucțiune, iar “f” este adresa registrului unde se află bitul. La instrucțiunile cu literal sau de
control “k” reprezintă o constantă sau un literal reprezentat pe 8 sau 11 biți.
O instrucțiune se execută în unu sau cel mult 2 cicluri; un ciclu de instrucțiune durează 4
cicluri de ceas, ceea ce înseamnă că la o frecvență a ceasului de 4MHz o instrucțiune uzuală se
execută în 1 μs. Orice instrucțiune care operează cu u n registru efectuează o operație de tip “citește –
modifică -scrie”. Astfel se efectuează o citire chiar și în cazul în care instrucțiunea precizează o
operație de scriere. Tabelul de mai jos prezintă succint setul de instrucțiuni pentru familia PIC16.
Tabelul.II.2.2.3 .- Setul de instrucțiuni pentru familia PIC16.
Instrucțiune Descriere Instrucțiune Descriere
Instrucțiuni pe octet Instrucțiuni pe bit
ADDWF f,d Adună W și f BCF f, b Sterge bit din f
ANDWF f,d SI logic W și f BSF f, b Setează bit în f
CLRF f Sterge f BTFSC f, b Test bit și salt dacă este 0
CLRW Sterge W BTFSS f, b Test bit și salt dacă este 1
COMF f,d Complementează f Instrucțiuni cu literale sau de control
DECF f,d Decrementează f ADDLW k Adună literal cu W
DECFSZ f,d Decrementează f și salt dacă este
0 ANDLW k SI literal cu W
INCF f,d Incrementează f CALL k Apel rutină
INCFSZ f,d Incrementează f și salt dacă este
0 CLRWDT Sterge watchdog timer
IORWF f,d SAU inclusiv W și f GOTO k Salt la adresă
MOVF f,d Transfer f IORLW k SAU inclusiv cu literal și W
MOVWF f Transfer W în f MOVLW k Transferă literal în W
NOP Nicio operație RETFIE Revenire din întrerupere
RLF f,d Rotație stânga prin Carry RETLW k Revenire cu literal în W
RRF f,d Rotație dreapta prin Carry RETURN Revenire din rutină
SUBWF f,d Scadere W din f SLEEP Trecere în mod Standby
SWAPF f,d Schimbă 4 biți (nibbles) în f SUBLW k Scade W din literal
XORWF f,d SAU exclusiv W și f XORLW k SAU exclusiv literal cu W
Următoarele două figuri prezintă semnificațiile pinilor și schema internă a microcontro lerului
:
19
Fig. II.2.2 .3. – Schema logică a mi crocontro lerului PIC 16F877
20
Unite cu cererea ca unele circuite integrate pentru calculatoare să fie făcute folosind
Fig. II .2.2.4. – Semnificația pinilor microcontro lerului PIC 16F877
Capitolul II.3. Placa de dezvoltare
Pentru o aplicație reală, un microcontroler singur nu este de ajuns. În afară de microcontroler,
avem nevoie de un program pe care să -l execute, și alte câteva elemente ce constituie o interfață spre
mediul înconjurător.
Similar cum un microcontroller este o colecție de piese care se ateasează în mod obișnuit unui
microprocesor, similar o placă de dezvoltare este o colecție de componente externe
microprocesorului, care se folosesc în mod uzual împreună cu acesta pentru un anumit scop.
21
Fig. II. 3.1. – Placa de dezvoltare PICPLC16
Această placă de dezvoltare ne oferă o modalitate foarte simplă de a comanda 16 consumatori de
putere relativ mare, prin rele e, în concordanță cu anumite semnale de putere relativ mică. Pentru
aceasta, placa dispune de 16 căi de ie șire, prin relee și de 16 căi de intrare, prin optocuploare.
Pe scurt, celelalte caracteristici sunt :
– dispune de programator pe USB integrat
– depanare în circuit
– port RS -232
– port RS -485
– jumperi pentru legarea rezistențelor fie la masă, fie la alimentare
– configurare ușoară folosind micro -întrerupătoarele integrate
– convertor analog numeric
– portruri IDC10 care permit extinderea capacităților plăcii .
Capitolul II.4. Criterii de alegere a unui microcontroler
22
În momentul în care se dorește alegerea unui microcontroler (sau mai bine zis a unei familii
de microcontrolere) pentru dezvoltarea unei aplicații de tip "embedded system" există mai multe
criterii care trebuie luate în considerare, ținând cont de implicațiile multiple ale acestei alegeri. Vom
încerca să grupăm aceste c riterii după cerințele impuse aplicației și să prezentăm câteva din întrebările
rezultate, la care trebuie dat un răspuns.
a. Costurile aplicației
Care va fi scara de producție: prototip, producție mică/medie sau de masă?
Care sunt costurile permise pentru microcontroler?
Care sunt costurile permise pentru mediul de programare și dezvoltare?
b. Timpul de dezvoltare al aplicației
Ce limbaj de programare să aleg?
Ce limbaje de programare cunosc bine și ce medii de dezvoltare am utilizat? Ce modalitate de
testare și depanare folosesc: simulator, sistem de dezvoltare, emulator?
c. Caracteristicile fizice
Care este viteza de prelucrare (de calcul) necesară?
De câtă memorie am nevoie pentru program și respectiv date?
Ce fel de alimentare este disponibi lă și care sunt limitările acesteia? De câte intrări și/sau ieșiri
am nevoie?
Ce fel de intrări și/sau ieșiri sunt necesare: intrări/ieșiri analogice, ieșiri numerice de curent
mai mare?
Aplicația va funcționa într -un mediu cu caracteristici speciale, de e xemplu în care există
perturbații electromagnetice puternice?
d. Conectivitatea
Care sunt resursele de comunicație necesare: câte porturi seriale asincrone și cu ce
caracteristici, ce tipuri de magistrale seriale sincrone sunt disponibile? Este necesară o conectivitate
Ethernet (o stivă TCP/IP), USB sau wireless (stive Bluetooth, Zigbee, etc.)?
e. Compatibilitate, scalabilitate și dezvoltarea ulterioară
Cu ce tipuri de circuite se poate interfața cât mai simplu: sisteme de afișare, senzori, elemente
de coma ndă și execuție (relee, motoare de cc, motoare pas cu pas, etc.)?
Cum se poate realiza extinderea ulterioară, atunci când este necesară?
Există mai multe variante în familia respectivă de microcontrolere, care să acopere eventualele
cerințe suplimentare în materie de viteză de lucru, resurse periferice sau de memorie?
f. Alte aspecte
Ce distribuitori există și cât sunt de accesibili pentru mine?
Care este suportul oferit de fabricant sau distribuitor șicare este baza de cunostințe existentă:
site-uri w eb, documentație on -line sau pe CD -uri, note de aplicații, exemple de proiectare (reference
designs), software di n categoria freeware/shareware ș i, nu în ultimul rând, forumuri de discuții pentru
utilizatori?
23
Din păcate răspunsurile la multe din aceste întrebări sunt corelate între ele. Un exemplu este
legătura care există între criteriile de cost și cele de timp de dezvoltare. Principial, utilizarea unui
limbaj de nivel înalt împreună cu un emulator pentru testare și depanare poate duce la scurtarea
consistentă a timpului de dezvoltare. Dar prețul unui compilator este întotdeauna mai mare decât cel
al unui asamblor (nimic nu e mai ieftin decât ceva ce poate fi gratis!), iar prețul unui emulator este și
el mai mare decât cel al unor mijloace mai simple de testare și depanare.
CAPITOLUL III
SENZORII DE PROXIMITATE
24
Capitolul III.1. – Generalit ăți senzori
Automatizările industriale nu pot fi realizate fără senzori și traductoare, de aceea au fost
elaborate o varietate mare de astfel de dispozitive de control și măsurare, precum și o gamă variată
de modificații în fiecare tip. În continuare vor fi descrise acele traductoare, care și -au găsit o mai largă
răspândire în practică. Dintre ele cei mai simpli sunt senzorii de proximitate, (apropiere) și poziție cu
semnale discrete sau continue la ieșire.
Senzorii reprezintă partea principală (primară) a traductoarelor – cea sensibilă, de control sau
de măsurare, la baza cărora se află anumite legi sau principii fizice. Semnale le senzorilor sunt apoi
amplificate și convertite într -o formă de semnale electrice standardizate discrete sau continue cu
ajutorul unor dispozitive electronice secundare. Dintre semnalele discrete standardizate fac parte
contactele unui releu obișnuit de co mutație sau semnalul logic de ieșire al unui tranzistor, iar dintre
semnalele continue standardizate – semnale în curent 4 -20 mA sau în tensiune 0 -10 V în tot diapazonul
de reglare.
Senzorii de proximitate sunt cei mai simpli senzori, care au o utilizare u niversală, deoarece
pot realiza o mulțime de funcții :
– sesizează apropierea obiectelor în zona de lucru a mașinilor la o deplasare pe conveiere, sau
depistează apariția oamenilor în zona de control sau de pază;
– asigură poziționarea liniară sau unghiul ară a obiectelor;
– asigură numărarea sticlelor sau a obiectelor la deplasarea lor pe conveiere;
– controlul umplerii și al defecțiunilor sticlelor;
– controlul ruperii benzilor sau conductoarelor;
– controlul și măsurarea nivelului unui lichid sau mater ial solid;
– controlul și măsurarea distanței până la obiect;
– asigură controlul numărului de foi într -un strat sau numărarea banilor.
În plus la toate aceste funcții, realizate fără contact dir ect, senzorii de proximitate mai au o
construcție compactă cu gabarite și mase minime, deoarece sunt realizate cu elemente
microelectronice. Ei au, de regulă, 2 -4 pini (piciorușe de conexiuni exterioare) și o alimentare de 24
V DC, iar în unele cazuri – 230 V AC.
După principiul fizic de funcționare acești senzori s e împ art în urmatoarele grupe principale :
• inductivi;
• capacitivi;
• cu ultrasunete.
25
Fig.III.1.1 .- Tipuri de s enzori de proximitate
În continuare se propune o analiză a principiilor de funcționare, variantelor constructive și
particularităților principale ale acestor senzori.
Capitolul III.2. Senzorii de proximitate inductivi
Principiul de funcționare al unui senzor inductiv de proximitate constă dintr -un circuit oscilant
LC, un evaluator de semnal și un amplificator de comută 131k105 btie. Bobina acestui circuit oscilant
generează un câmp electromagnetic alternativ de înaltă frecvență. Acest câmp este emis la față
senzorială a dispozitivului. La apariția unui obiect metalic (declanșator) în apropierea feței sensibile,
sunt gen erați curenți turbionari. Pierderile rezultate consuma energie din circuitul oscilant și reduc
oscilațiile. Circuitul evaluator de semnal convertește această informație în semnal clar.
Fig.III.2 .1. -Schema -bloc și schema de principiu a oscilatorului senzorului inductiv
Când î n zona de control nimerește vre un obiect metalic, câmpul electromagnetic alternativ
induce în el, ca într -un circuit magnetic, niște curenți turbionari, care produc, la rândul lor, câmp ul de
reacție magnetică (fig.III.1.2.a. ). Acesta din urmă acționează asupra câmpului înfășurării primare,
micșorându -l substanțial și blocând astfel oscilatorul. Ca urmare, bistabilul Schmidt basculează ș i
activează tranzistorul amplificatorului de ieșire (fig.III.1.2. b).
26
Fig. III.2.2 .- Principiul de depistare a obiectului metalic (a) și diagrama simplificată de
funcționare a senzorului inductiv (b )
O funcționare asemănătoare o au și senzorii inductivi analogici, care se deosebesc de cei
discreți doar prin excluderea bistab ilului din schemă. În ceea ce privește amplificatorul etajului de
ieșire, senzorii inductivi se produc în următoarele variante diferite:
– cu alimentare în curent continuu și cu tranzistor de ieșire p -n-p, care în stare neactivată
formează un semnal 0, echivalent cu un contact normal deschis (ND) (fig. 3, a),
– cu alimentare în curent continuu și cu tranzistor de ieșire n -p-n, care în stare neactivată
formează un semnal 1. echivalent cu un contact normal închis (NÎ) (fig. 3,b) ;
– cu ambele tip uri de tranzistoare și cu 2 semnale (2 contacte) opuse la ieșire ;
– cu alimentare în curent alternativ și cu un redresor adăugător (fig. 3, c);
– cu alimentare în curent alternativ și cu 2 contacte opuse de ieșire (fig. 3,d).
Fig.III .2.3.- Scheme de conectare a etajelor de ieșire ale senzorilor inductivi
Parametrul principal al senzorilor inductivi de proximitate îl constituie distanța de control sau
activă a obiectelor metalice, care pot fi depistate. Această distanță depinde de mai mulți factori, de
exemplu de proprietățile magnetice ale obiectelor controlate și de puterea elementelor componente.
Evident, că cu cât distanța activă este mai mică, cu atât gabaritele senzorilor sunt mai mici. Această
distanță însă nu este uniformă față de suprafața capului sen zorului, ci are o formă conică.
Senzorii inductivi, produși de diferite companii, pot avea diferite valori ale distanței n ominale
de acționare și diferite variante constructive. Pentru distanțe mai mici cea mai răspândită însă este
varianta cilindrică cu diametru filetat M8, M12, M18, M30, confecționat din oțel inoxidabil sau din
mase plastice. Pentru distanțe mai mari se uti lizează form a cubică cu dimensiuni mai mari.
27
În figura urmatoare sunt reprezentate 3 variante constructiv e diferite de senzori inductivi :
inelară, cu crăpătură și cu instala re în podea. Ultima variantă se utilizează pentru controlul obiectelor
de pe conveiere la o distanță până la 50 mm .
Fig. III.2.4 .-Tipuri de senzori inductiv
Senzori i inductivi pot funcționa în condiții grele – temperatură sau presiune înaltă, umiditate
mare, pericol de explozii, sau pentru funcție de selecție – selectarea obiectelor metalice de cele
nemetalice. O grupă aparte o constituie senzorii cu funcționare continuă și cu semnale analog ice de
ieșire. O alt ă firmă oferă soluțiile senzoriale SICK care ajută la simplificarea procesului de producție
a mii de companii de pe glob.
Majoritatea senzorilor inductivi SICK sunt caracterizați de frecvențe mari de comutație și
curenți mari. Ei sunt d isponibili ca DC cu 3/4 -fire, DC cu 2 -fire, AC/DC cu 2 -fire și senzori NAMUR
conform cu EN 50 227. Sunt puse la dispoziție mai multe variante de s enzori de proximitate inductivi
și anume: seria miniaturală, seria standard, seria scurtă, seriile avansate, s eriile Triplex, seriile INOX
și seriile pentru medii dure.
28
Seria miniaturala
Senzor inductiv, DC 3 -fire
Nume model IM05 -0B8NS -ZT1
Numar produs 6020158
Caracteristici tehnice (selectiv)
Domeniul max. de sensibilitate: 0,8 mm
Instalare în metal: Îngr opat
Funcție de ieșire: Normal deschis
Frecvența de comutație: 5000 Hz
Tip de conexiune: Conector, M8, 3 -pini
Dimensiune filet: M5 x 0,5
Lungime: 38 mm
Tensiune de alimentare: DC 10 … 30 V
Clasa de protecție: IP 67
Întârziere pâna la disponibilitate: <= 10 ms
Material carcasa: Oțel inoxidabil, plastic
Seria standard
Senzor inductiv, DC 3 -fire
Nume model IM08 -1B5NO -ZW1
Numar produs 6020218
Caracteristici tehnice (selectiv)
Domeniul max. de sensibilitate: 1.5 mm
Instalare în metal: Îngropat
Funcție de ieșire: Normal închis
Frecvența de comutație: 3000 Hz
Tip de conexiune: Cablu, PVC, 2 m
Ieșire de comutație: NPN
Dimensiune filet: M8 x 1
Lungime: 40,2 mm
Tensiune de alimentare: DC 10 … 30 V
Clasa de protecție: IP 67
Întârziere pâna la disponibilitate: <= 100 ms
Material carcasa: Alama nichelata, plastic
Seria scurta
Senzor inductiv, DC 3 -fire
Nume model IM08 -1B5NS -ZTK
Numar produs 6020176
Caracteristici tehnice (selectiv)
Domeniul max. de sensibilitate: 1.5 mm
Instalare în metal: Îngropat
Funcție de ieșire: Normal deschis
Frecvența de comutație: 5000 Hz
Tip de conexiune: Conector, M8, 3 -pini
Ieșire de comutație: NPN
Dimensiune filet: M8 x 1
Lungime: 29 mm
Tensiune de alimentare: DC 10 … 30 V
Clasa de protecție: IP 67
Întârziere pâna la disponibilita te: <= 10 ms
Material carcasa: Alama nichelata, plastic
Seria din Inox
Senzor inductiv, DC 3 -fire
Nume model IM12 -06BNS -NC1
Numar produs 6027573
Caracteristici tehnice (selectiv)
Domeniul max. de sensibilitate: 6 mm
Instalare în metal: Îngropat
Funcție d e ieșire: Normal deschis
Frecvența de comutație: 400 Hz
Tip de conexiune: Conector, M12, 4 -pini
Ieșire de comutație: NPN
Dimensiune filet: M12 x 1
Lungime: 60 mm
Tensiune de alimentare: DC 10 … 30 V
Clasa de protecție: IP68, IP 69K
Întârziere pâna la dis ponibilitate: <= 300 ms
Material carcasa: Oțel inoxidabil V4A 1.4404,
316L
29
Fig. III.2 .5.-Tipuri de senzori inductiv cilindrici
ECONOMIC UZUAL AVANSAT
Fig. III.2 .6.-Tipuri de senzori: IME/IM/IMF
Senzorul de proximitate inductiv IME08 -02BPSZTOS 1040870
Senzorii inductive IME detectează prezența obiectelor metalice la distanțe reduse de detecție,
de ordinul milimetrilor. Diametrul senzorului reprezintă caracteristică asociată distanței de detecție,
de la milimetri la centimetri. Astfel, senzorii inductivi sunt foarte rapizi, preciși și extrem de robuști.
30
Avantaje:
• versiunile speciale cu carcase din i nox, cu clase de protecție IP67 recomandă senzorii inductivi
pentru aplicațiile specifice industriei alimentare;
• rezistenți la acțiunea tuturor detergenților uzuali: certificare de către un institut independent,
• funcționează corespunzător timp îndelungat, fiind rezis tenți la umiditate, la procesul de
curățare, la temperaturi ridicate, la diverși agenți decuratare, chiar la presiuni de peste
100 bar.
Fig. III. 2.7. -Senzori inductiv din seria IME
Senzorii de proximitate inductivi cilindrici din seria IME08 − sunt cei din seria standard
cu montare îngropat la nivel , având urmatoarele caracteristici:
• domeniul de sensibilitate 12 mm;
• protec ție de scurtcircuit;
• carcas ă robust ă din alam ă nichelat ă cu filet M 18x1mm ;
• clasa de protec ție IP67 ;
• înalt flexiilitate;
• produc ție și posibili ți de transport flexibile ;
• disponibilitate și timp redus de livrare ;
• gamă largă de senzori IME disponibil ă pe stoc ;
• avantajele performan ței;
• noua platform ă SICK și tehnologie ASIC în interior ;
• creșterea siguran ței echipamentelor ce utilizeaz ă acești senzori ;
• limite precise de comuta ție;
• înalt nivel al EMC și cuplu de strângere ridicat .
31
Exemple de aplicații ce utilizează senzori de proximitate inductive
Detectarea pieselor ștanțate pe linia de transport magnetic pentru o mașină de debavurat .
Scurtă descriere: senzorii de proximitate inductivi IM 12 detectează piesele ștanțate de
grosime 0,5 mm pe linia de transport magnetic pentru o mașină de debavurat.
Descrierea problemei: În cazul mașinii de debavurat a unui producă tor elvețian, numărul
pieselor ștanțate furnizate mașinii trebuie achiziționat pentru controlul reglării motorizate a periilor
de debavurare cu scopul minimizarii uzurii lor.
Implementare: deasupra liniei de transport magnetic sunt instalați 24 de senzori de proximitate
inductivi. Dacă o piesă ștanțată este în față zonei active a senzorului, acesta generează un semnal.
Combinarea tuturor semnalelor generează volumul curent necesar pentru controlerul mașinii de
debavurare; acest volum este utilizat pentru r eglarea automată a capetelor de periere și pentru
informații asupra uzurii periilor în timpul debavurării.
Avantaje client: Prin determinarea numărului de piese ștanțate este minimizată uzură periilor
de debavurare. Acest lucru reduce eforturile de întreț inere și crește disponibilitatea mașinii.
Capitolul III.3 . Senzorii de proximitate capacitivi
Acești senzori reprezintă o variantă alternativă și adăugătoare a senzorilor inductivi, deoarece
pot să detecteze atât obiecte metalice, cât și cele dielectrice în diferite stări și forme – lichide , solide,
inclusiv în formă de praf, adică sunt în principiu universali. Ei pot să înregistreze prezența și nivelul
multor materiale și substanțe conducătoare de curent electric sau izolatoare, de exemplu a apei,
uleiu lui, spirtului, hârtiei, cartonului, sticlei, maselor plastice, cimentului, nisipului, făinii, zahărului,
grăunțoaselor și multor altor substanțe.
Componența elementelor senzorilor ca pacitivi de proximitate ( fig.III.3.1 ) este practic aceleași
ca și la senzorii inductivi , însă principiul de detectare a obiectelor sau materialelor este diferit. Într-
adevăr, se utilizează un oscilator rezonant LC de frecvență înaltă identic, însă în acest caz variază nu
inductivitatea , ci capacitatea condensatorului circu itului, iar câmpul electromagnetic se reprezintă
deja ca un câmp electrostatic dintre armăturile unui condensator. În realitate evidentă este o singură
armătură a acestui condensator – flouting base electrode, cea dea doua fiind c orpul sau masa Ground
.
Fig.III.3.1 .- Componența și principiul de funcționare al senzorilor capacitivi
32
Schemele etajelor de ieșire și conexiunilor exterioare ale senzorilor capacit ivi PXC400 ai
companiei Siemens cu alimentare în curent continuu și alternativ (fig. ), precum și var iantele
constructive, sunt aceleași, ca la senzorii inductivi. Distanța de acționare ai acestor senzori pentru
obiecte metalice constituie 5, 10 sau 20 mm.
Fig.III.3.2 .-Tipuri senzori capacitivi
33
Capitolul III.4 . Senzorii de proximitate cu ultrasunete
La baza funcționării acestor senzori se află emiterea periodică a unor unde ultrasonore de
frecvență înaltă (60 -400 kHz) și receptarea timpului ecourilor (întoarcerii) acestor unde, reflectate de
un obiect, distanța până la care trebuie controlată. Acest timp depinde de frecvența undelor
ultrasonore și de distanța până la obiect. Cunoscând viteza ultrasunetelor și măsurând timpul dus –
întors al lor, se poate de calculat distanța sau înălțimea până la obiect. Un avantaj important al
traductoarelor ultrasonore îl constituie posibilitatea de măsura și controla distanțe într -un diapazon
mare – de la 6 cm și până la 10 m.
Emiterea undelor de către emițător se efectuează, de obicei, în forma unu i con de un unghi
relativ mic de 5-8ș însă acest con are în apropierea nemijlocită de emițător o zonă moartă, care nu
poate fi controla tă și care trebuie excl usă din zona de lucru (fig.III. 4.1). Această zonă, care constituie
15-20 % din toată zona controlată, este condiționată de intervalul minim necesar de timp de trecere
din regimul de emisie în cel de recepție. Ea se exclude, de obicei , prin alegerea corectă a locului de
montare a senzorului.
În traductoarele analogice ultrasonore distanța măsurată este convertită într -un semnal electric
standardizat în curent 4 -20 mA s au în tensiune 0 -10 V .
Fig.III. 4.1.-Zona de lucru si caracteristici de iesire ale senzorului ultrasonor
Traductoarele ultrasonore discrete conțin adăugător 1 -2 comparatoare, care compară valoarea
reală a distanței măsurate cu cea prescrisă și care generează un semnal logic la ieșire în momentul
coinciderii l or. Pentru acordarea acționării senzorului la o distanță (înălțime) maximă și minimă
necesare, sunt prevăzute 2 potențiometre de reglare corespunzătoare.
Acest lucru poate fi făcut și cu ajutorul calculatorului în regim de instruire.
Traductoarele discret e și-au găsit o largă răspândire în calitate de detectoare de mișcare, care pot
realizate în 2 variante principale :
• detectarea unui obiect, care nimerește în zona de control dintre emițător și o placă metalică
de reflec tare a undelor sonore (fig.III. 4.2.);
• detectarea unui obiect, care nimerește în zona dintre emițător și receptor, fără reflectarea
undelor emise, ceea ce mărește precizia de măsurare .
34
Fig.III.4.2. -Reflectia undelor si senzorul ultarsonor
Construcția traductoarelor ultrasonore Sonar -BERO 3RG6 (PXS 100 -PXS 500) ale companiei
Siemens este la fel de compactă, ca și la senzorii precedenți – fie în var iantă dreptunghiulară
(fig.III. 4.3, a), fie î n variantă cilindrică (fig.III. 4.3, b). Ultima variantă prevăd niște modele cu cap
rotitor, pentru a putea fi ușor orientate în direcția d orită, sau cu cap separat. Dezavantajul principal al
acestor senzori – precizia de măsurare depinde de temperatura aerului.
35
Fig.III. 4.3.-Modele de senzori ultrasonori
Notarea convențională a senzorilor cu ultrasunete este specificată doar prin litera U deasupra
rombului, iar conectoarele l or pot avea 4 -5 pini . Intrarea X1 este destinată pentru sincronizarea a 2
senzori, care sunt amplasați aproape unul de altul, sau pentru comandă cu ajutoru l controlerului
programabil.
Fig.III. 4.4.- Exemple de utilizare practică a senzorilor cu ultrasunete pentru numărarea
obiectelor, măsurarea diametrului rulourilor de hârtie ș i măsurarea nivelului
36
Capitolul IV.5 Senzorii auto -modele și caracteristici
Fig.IV.5.1 -Senzori de parcare cu
avertizare sonora
• Avertizare sonora si patru senzori de
parcare.
• Avertizare sonora pentru determinarea
distantei pana la obstacol.
• Indicatorul avertizeaza asupra obstacolelor
din partea stanga spate, centru spate si dreapta
spate.
• Alarma ascendenta pentru evitarea
coliziunii.
• In marsarier senzorii detectea za automat
obstacolele.
• Distanta de detectare 0.35 -2.5m.
Fig.IV.5.2 – Senzori de parcare cu Fig.IV.5.3 – Senzori de parcare cu
display cu leduri display cu LCD
37
Fig.IV.5.4 Senzor de parcare Fig.IV.5.5 -Senzor de parcare vdf
cu camera video si monitor cu display si monitor
CAPITOLUL IV
REALIZAREA CITIRII INFORMAȚIILOR DE PE SENZORUL DE
PROXIMITATE A AUTOVEHICULUI
Capitolul IV.1 – Descriere autovehicul folosit pentru aplica ția practică
În acest capitol se dorește să se realizeze comanda adaptivă a unei mașini pentru realizarea
unei manevre de parcare laterală.
În acest sens am luat o mașinuță (jucărie) dotată cu două motoare de curent continuu :
unul pentru avans și unul pentru direcție, ambele motoare sunt dotate cu partea mecanică având un
reductor pentru motorul de direcție, fiind astfel crescută forța motorului dar și pentru a mări numărul
de impulsuri PWM p rin care se realizează controlul direcției. Și motorul 2, motorul pentru avans are
o roată dințată pentru o putere mai mare a motorului.
În executarea manevrei de parcare laterală este nevoie de perceperea mediului astfel
încât să nu existe obstacole în etapa de parcare. Pentru percepția mediului au fost instalați 4
senzori în dreptul farurilor mașinuței . Acești senzori vor trimite informații la porturile
microcontrolerului pentru a coordona manevra de parecare laterală în siguranță.
În figură următoare este prezentată amplasarea motoarelor, senzorii pe st ructura
vehicu lului.
38
Fig.IV .4.1-Schem ă amplasare senzori și motoare
39
a)
b)
Fig.IV.1. 2 – Amplasarea senzorilor pe caroseria mașinii (a – privire de ansamblu în interiorul
caroseriei; b – privire asupra detaliului de fixare al senzorului )
40
Pentru realizarea aplicației au fost declarate variabile pentru sensul motoarelor, variabile
pentru a defini starea motoarelor (pornit/oprit), variabile pentru starea senzorilor, variabile pentru
definirea numărului de încercări, variabile pentru o stare imposibilă de parcat.
Aceste variabile sunt descrise în cele ce urmează :
M1 SENS = 0 M1 SENS = 1
STÂNGA
DREAPTA
M2 SENS = 0 M2 SENS = 1
FAȚĂ SPATE
1. VARIABILA M1 SENS
Variabila M1 SENS – definește sensul direcției mașinii(stânga sau dreaptă), această fiind
variabilă pentru motorul de direcție(notat cu M1), astfel în acest caz întâlnim următoarele situații:
• Pentru M1 SENS= 0 – roțile mașinii se vor deplasa în direcția stânga;
• Pentru M1 SENS= 1 – roțile mașinii se vor deplasa în direcția dreapta;
2. VARIABILA M2 SENS
Variabil a M2 SENS – definește sensul de deplasare al mașinii(față sau spate), această fiind
variabilă pentru motorul de deplasarea(notat cu M2), astfel în acest caz întâlnim următoarele situații:
• Pentru M2 SENS= 0 – roțile mașinii se vor deplasa în
direcția față;
• Pentru M2 SENS= 1 – roțile mașinii se vor deplasa în
direcția spate;
3. VARIABILA IMPOSIBIL Ă
Variabila IMPOSIBIL Ă- definește starea mașinii în momentul parcării, astfel în acest caz
întâlnim următoarele situații:
• Pentru IMPOSIBIL= 0 -mașina este în curs de parcare;
• Pentru IMPOSIBIL= 1 -mașina este parcat ă;
• Pentru IMPOSIBIL= 2 -eșec;
4. VARIABILA ÎNCERCĂRI
41
Variabila ÎNCERCĂRI – contorizează numărul de încercări de parcare într -o anumită
situație, se încearcă parcarea mașinii de 3 ori( dacă nu reușim în cele trei încercări se consideră
eșec).
5. VARIABILELE M1, M2
Variabilele M1, M2 – sunt variabile care definesc starea motoarelor( pornite sau oprite), astfel
în acest caz întâlnim următoarele situații:
• M1= 0
motoare oprite;
M2= 0
• M1= 1
motoare pornite;
M2= 1
6. VARIABILELE S1, S2, S3, S4
Variabilele S1, S2, S3, S4 – sunt variabilele care definesc starea celor 4 senzori ai mașinii,
astfel în acest caz întâlnim următoarele situații:
• Pentru S1=0
S2=0
S3=0 senzorii nu detecteaza obstacol
S4= 0
• Pentru S1=1
S2=1
S3= 1 senzorii detecteaza obstacol
S4= 1
7. VARIABILA DISTAN ȚĂ
Variabila DISTAN ȚĂ- reprezinta distanța max ima pe care se poate deplasa maș ina.
42
Fig.IV.1. 3 – Amplasarea senzorilor în partea din față a mașinii
Fig.IV.1. 4 – Amplasarea senzorilor în partea din spate a mașinii
43
Capitol ul 4.2. – Descrierea aplicație
Aplicația este realizată în limbajul de programare C , MicroC – pentru realizarea fi șierelor
*.hex, ce ulterior au fost încărcate în memoria microcontrolerului. Pentru partea experimentală a fost
folosită o placă de dezvoltare BIGPIC3 dotată cu microcontrolerul PI18F8520. De și sunt mari
diferențe între microcontrolerul destinat aplicației și cel de pe placa de dezvoltare, totu și nu apar
diferen țe la programarea microcontrolerului datorită faptulu i că vom folosi semnalele PWM1 și
PWM2 ale microcontrolerului, semnale valabile pe ambele microcontrolere iar pentru intrari va fi
folosit portul B , port configurat pentru intrare. Portul B este identic pe ambele microcontrolere.
Pentru r ealizare comenzii au fost folosite trei func ții :
Funcția M1 – realizeaza comanda impulsurilor de la portul microcontrolerului în vederea
orientarii roților într-o direcție sau alta.
Comanda se realizeaza printr -un tren de impulsuri PWM, iar numarul de impulsuri este stabilit
de catre noi, astfel încât sa se poata realiza orientarea roților maxim în stânga sau maxim în dreapta.
Funcția M2 – realizează comandă impulsurilor de la portul microcontrolerului în vederea
deplasării roților într -o direcție sau alta.
Comandă se realizează printr -un tren de impulsuri PWM, care este mult mai mic, astfel încât
să deplaseze mașina câțiva milimetrii doar.
Funcți a M1 2 – această funcție trimite de la portul microcontrolerului trenuri de impulsuri,
concomitent pentru reglarea direcției și deplasarea într -un sens sau altul.
Secvență de cod prezentată spre exemplificare pentru folosirea citirii stărilor celor 4
senzori, iar în funcție de stare acestora mașina se retrage din poziția actuală. Dacă este obstacol
în față, mașina va pleca în spa te. Daca senzorii din spate sim t obstacol în față, mașina va pleca în
față. Aplicația următoare a fost folosite în etapa expe rimentală înaintea realizării aplicației finale.
unsigned short perioada_avans, perioada_directie;
unsigned timp_avans=200, timp_directie=200;
void InitMain() {
// ANSEL = 0; // Configure AN pins as digital I/O
// ANSELH = 0;
PORTB = 255;
TRISB = 255; // configure PORTA pins as input
PORTB = 0; // set PORTB to 0
PORTC = 0; // set PORTC to 0
TRISC = 0; // designate POR TC pins as output
44
PWM1_Init(5000); // Initialize PWM1 module at 5000Hz
PWM2_Init(5000); // Initialize PWM2 module at 5000Hz
}
void main() {
InitMain();
perioada_avans = 250; // initial value for current_duty
perioada_directie = 250; // initial value for current_duty1
PWM1_Set_Duty(1);
PWM2_Set_Duty(1);
PWM1_Start(); // start PWM1
PWM2_Start(); // start PWM2
RC3_bit=0;rc4_bit=0;
while (1) { // endless loop
if (RB0_bit==1) { // sezorul 1
Delay_ms(40); //actionam motorul de avans o perioada si
rc3_bit=1; / / sensul va if 1 -spate
PWM1_Set_Duty(perioada_avans);
VDelay_ms(timp_avans);
PWM1_Set_Duty(0);
}
if (RB1_bit==1) { // Senzorul 2
Delay_ms(40); //actionam motorul de avans o perioada s i
rc3_bit=1; // sensul va if 1 -spate
PWM1_Set_Duty(perioada_avans);
VDelay_ms(timp_avans);
PWM1_Set_Duty(0);
}
if (RB2_bit==1) { // sezorul 3
Delay_ms(40); //actionam motorul de avans o perioada si
rc3_bit=0; // sensul va if 0 -fata
45
PWM1_Set_Duty(perioada_avans);
VDelay_ms(timp_avans);
PWM1_Set_Duty(0);
}
if (RB3_bit==1) { // Senzorul 4
Delay_ms(40); //actionam motorul de avans o perioada si
rc3_bit=0; // sensul va if 0 -fata
PWM1_Set_Duty(perioada_avans);
VDelay_ms(t imp_avans);
PWM1_Set_Duty(0);
}
Delay_ms(50); // slow down change pace a little
}
}
46
Codul aplica ției a fost realizat după următoarea structură logică :
START PROGRAM
A. Inițializam partea de variabile
• M1= 0;
• M1 SENS= 0;
• M2= 0;
• M2 SENS= 0;
• ÎNCERCĂRI = 0;
• IMPOSIBIL= 0;
B. Începem procedura de parcare:
Cât timp
• ÎNCERCĂRI < 3 ; ȘI
• IMPOSIBIL= 0;
Execut ă: {
• ÎNCERCĂRI = ÎNCERCĂRI + 1 ;
• SITUAȚ IE= 0; (adic ă dacă intram în buclele în care nu ne convine ,
cum procedam).
Verific senzorii S3 , S4
Dacă:
• S3= 0;
și
• S4= 0;
Atunci:
• M1 SENS=1;
• M1=1; (pornesc motorul -apelez func ția M1)
Inițializez distanța
• DISTAN ȚA=0;
• M2 SENS=1(dau cu spatele);
• M2-pornesc motorul;
Cât timp
• DISTAN ȚA <10
• S4= 0, S3= 0
Execută:
• DISTAN ȚA= DISTAN ȚA+1(măresc distan ța);
• Apelez func ția M2
47
Verific senzorii S4 , S3
Dacă :
• S3= 0;
și
• S4=0;
Atunci:
• Inițializăm din nou DISTAN ȚA;
Cât timp
• DISTAN ȚA <7
• S3= 0; S4= 0;
Execută:
• M1 SENS=0 (spre stânga);
• M1 =1 (pornesc);
• M2 SENS=1 (spre fa ță);
• M2=1 (se deplasează);
• DISTAN ȚA= DISTAN ȚA+1
• Apelez func ția M1 M2
Ieșim din buclă și dacă în continuare nu avem pe S3 și S4 nimic, atunci avem: parcare reușită
(IMPOSIBIL=1) sau eșec(IMPOSIBIL=2).
Dacă:
• S3=0
și
• S4= 0
Atunci:
• IMPOSIBIL= 1(am parcat);
• IMPOSIBIL= 2(e șec);
Astfel dacă de la început nu reușim, putem avea următoarele variante:
• Variantă 1: să deplasăm mașină în față iarăși și să reluăm procedurile, situație
în care depășim numărul de încercări propus inițial (3).
• Varianta 2: considerăm ca fiind eșec.
48
CAPITOLUL V
CON CLUZII
Utilizarea unui microcontroler constituie o soluție prin care se poate reduce foarte mult
numărul componentelor electronice precum și costul proiectării și al dezvoltării unui produs.
Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor
sisteme încapsulate -integrate (“embedded systems”), la care existența unui sistem de calcul încorporat
este (aproape) transparentă pentru utilizator.
Pentru că utilizarea lor este de foarte ori sinonimă cu ideea de control, microcontrolerele sunt
utilizate masiv în robotică și mecatronică.
Astfel am decis utilizarea unui microcontoler pentru a putea programa parcarea unei
mașini, venind în ajutorul acestuia cu patru senzori de proximitate pentru detectarea
anumitor obstacole. Așadar am folosit m icrocontroler -ul PIC16F877 , care face față cu brio
acestei aplicații.
Se găsește în magazine, asigurând o soluție foarte flexibilă și eficientă ca pre ț pentru multe
aplicații de control încorporate.
Acest microcontroler reprezintă de fapt “creierul” aplicației, limbajul de programare folosit
este limbajul C, astfel : citește senzorii, deci decide cum trebuie efectuată deplasarea până la
finalizarea pa rcării .
Am reușit să lucrăm cu acest microcontroler, acesta și -a îndeplinit toate funcțiile pe care ni
le-am dorit.
Tehnologia folosită în cazul acestei mașini a fost adaptată și folosită de producătorii de
mașini, totodată ei lucrează de ceva tim p la o altă tehnologie în care folosind senzorii radar, laser,
poziționare GPS, senzorii de proximitate și multe alte componente, doar pentru a realiza o mașină
care să poată fi condusă singură fără a mai fi nevoie de șofer .
Recent producătorii Ford, au lansat noul produs Ford Fusion, care deține tehnologia necesară
pentru ați permite să parchezi eficient și în siguranță. Astfel, dispunând de un dispozitiv interesant
de asistență la parcare, care datorită senzorilor din față și din spate avertizează apropiera, apreciind
distanță dintre mașină și un potențial obstacol, făcând astfel ca parcare să se realizeze foarte rapid și
ușor.
Ideea acestui proiect a fost inițial un exemplu teoretic pe care l -am pus în practică, mai exact
ca un modul educativ, ur mând a fi folosit în laboratorul Universității Slavici de către viitorii studenți.
49
ANEXE
ANEXA 5 – Software -ul aplica ției practice
unsigned short perioada_avans, perioada_directie, incercari, imposibil ,situatie;
unsigned timp_avans=200, timp_directie=200,distanta;
50
void InitMain() {
// ANSEL = 0; // Configure AN pins as digital I/O
// ANSELH = 0;
PORTB = 255;
TRISB = 255; // configure POR TA pins as input
PORTB = 0; // set PORTB to 0
PORTC = 0; // set PORTC to 0
TRISC = 0; // designate PORTC pins as output
PWM1_Init(5000); // Initialize PWM 1 module at 5000Hz
PWM2_Init(5000); // Initialize PWM2 module at 5000Hz
}
void motor1() {
PWM1_Set_Duty(perioada_directie);
VDelay_ms(timp_directie);
PWM1_Set_Duty(0);
}
void motor2() {
PWM2_Set_Duty(perioada_avans);
VDelay_ms(timp_avans);
PWM2_Set_Duty(0);
}
void motor12() {
PWM1_Set_Duty(perioada_directie);
PWM2_Set_Duty(perioada_avans);
if (timp_directie>timp_avans)
{
51
VDelay_ms(timp_directie);
} else
{
VDelay_ms(timp_avans);
}
PWM1_Set_Duty(0);
PWM2_Set_Duty(0);
}
void main() {
InitMain();
perioada_avans = 250; // initial value for current_duty
perioada_directie = 250; // initial value for current_duty1
PWM1_Set_Duty(1);
PWM2_Set_Duty(1);
PWM1_Start(); // start PWM1
PWM2_Sta rt(); // start PWM2
RC3_bit=0;rc4_bit=0; // sensul motoarelor rc3 -directie, rc4 -avans
while (1) { // endless loop
if (rb4_bit=1) // a fost actionat butonul de start par care
{
incercari=0;
imposibil=0;
while ((incercari<3)&(imposibil=0)) {
incercari=incercari+1;
situatie=0;
if ((rb2_bit=0)&(rb3_bit=0))
{
rc3_bit=1;
motor1();
52
distanta=0;
while ((distanta<10)&(rb2_bit=0)&(rb3_bit=0))
{
rc4_bit=1;
distanta=distanta+1;
motor2();
}
if ((rb2_bit=0)&(rb3_bit=0))
{
distanta=0;
rc3_bit=0;
rc4_bit=1;
while ((distanta<7)&(rb2_bit=0)&(rb3_bit=0))
{
distanta=di stanta+1;
motor12();
}
if ((rb2_bit=0)&(rb3_bit=0))
{
imposibil=1;
} else
{
imposibil=2;
}
}
}
}
}
}
}
BIBLIOGRAFIE
53
[1] Titus Slavici, Șerban Popa -Limbajul C elemente fundamentale aplicații tehnice, Editura
Fundația „ Ioan Slavic i”, 2005
[2] Horia Ciocârlie – Universul limbajelor de programare, Orizonturi Universitare, 2006
[3] Marius Marcu, Mircea Vlăduțiu – A Genetic Algorithm for Thermal Image Deconvultion, Iranial
Journal of Electrical and Computer Engineering , Vol. 3, No. 2, Summer -Fall 2004
[4] Horia Ciocârlie, Rodica Ciocârlie – Utilizarea și programarea calculatoarelor, Orizonturi
Universitare, 2004
[5] Horia Ciocârlie – Tehnici fundamentale de programare, Orizonturi Universitare, 2002
[6] Mircea Popa, Marius Marcu – Porturile parallel și serie ale calculator ului PC, Editura Orizonturi
Universitare, 2001
[7] http://forum.inteligenta -artificiala.ro/viewtopic.php?t=120 -vizual izat în data de 14.04.2011
[8] http://www.cartidownload.ro/Diverse/499790/Microcontrolere -vizual izat în data de 15.04.2011
[9] http://ww1.microchip.com/downloads/en/DeviceDoc/30487c.pdf – vizual izat în data de
20.04.2011
[10] http://ep.etti.tuiasi.ro/site/Senzori_si_Traductoare/Cursuri/sen zori_8.pdf – vizual izat în data de
26.04.2011
[11] http://www.compec.ro/pdfs/Senzori_pentru_industrie.pdf – vizualtizat în data de 10.05.2011
[12] http://www.datasheetcatalog.com/ – vizualtizat în data de 15.05.2011
[13] http://www.electronica.ro/linkscheme.shtml – vizualtizat în data de 20.05.2011
[14] „Tehnologia informației” de Mariana Miloșescu , Editura: Teora
[15] John Morton -The PIC Microcontroller: Your Personal Introductory, Editura: Elsevier Science
54
[16] Horia Ciocarlie -Tehnici de compilare. Note de curs, Editura Orizonturi Universitare, 2010
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tot mai des în jurul nostru observăm cum se transformă lumea care ne înconjoară. Dacă [620133] (ID: 620133)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
