Sunteți pe pagina 1din 110

Comanda inteligentă a ascensoarelor utilizând microcontroler

CAPITOLUL 1

Comanda ascensoarelor. Prezentare generală

1.1 Prezentare ascensor

Din ce în ce mai utilizate în lume, lifturile sunt un element important pentru aplicaţiile din
construcţii precum şi pentru modernizarea construcţiilor existente.
Piaţa românească a reuşit într-un interval relativ redus să promoveze serii ale acestor produse
din ce în ce mai performante.

Fig.1.1.Ascensor complet
Conceptul modular, flexibilitatea, noile metode de proiectare au permis realizarea unor
produse de înaltă performanţă. Realizând astfel de produse de o acurateţe deosebită, lifturile
realizate sunt atractive, durabile, elegante. Finisajele din materiale noi, uşoare şi cu colorit deosebit
permit realizarea unui interior plăcut.
Disponibile în variante constructive potrivite pentru destinaţii cum ar fi:
- imobile birou, imobile locuit
- hoteluri, centre de afaceri, complexe comerciale, aeroporturi, centre industriale, hale,
depozite, etc.
Flexibilitatea compoziţiei interioare precum şi a legăturilor acestora cu zonele de acces
conduc la arhitecturi deosebite, noi, inedite.
Iată câteva din caracteristicile componentelor lifturilor:
- uşile de acces sunt silenţioase, sigure şi realizate din materiale finisate cu grijă acordând
atenţie deosebită detaliilor, sunt echipate cu sisteme şi mecanisme deosebit de fiabile.
Rezistente în timp acestea funcţionează astfel încât deplasarea se face cu deschidere şi
închidere controlată de module alectronice ce permit acţionarea rapidă. Întotdeauna echipate
cu senzori electronici de prezenţă care protejează persoanele aflate în zona de închidere a
acestora.
Fig.1.2. Panoul de comandă al unui ascensor
- Sistemele de iluminat din interiorul cabinei se diferenţiază prin simplitate şi eleganţă.
Iluminatul este în armonie cu interiorul cabinelor şi asigurăo iluminare potrivită cu lumina
din zona de acces. Corpurile de iluminat moderne permit un consum economic.
- Seriile noi de panouri de semnalizare şi comandă sunt foarte plăcute şi elegante. Afişoarele
LCD grafice şi alfanumerice sau cele cu afişaj cu cristale lichide (LCD) de tip matricial şi cu
segmente sunt deasemenea foarte utilizate. Aceste panouri sunt uşor vizibile şi permit
informarea rapidă a utilizatorului indicând poziţia şi sensul de mers. Butoanele de comandă
sunt totodată şi foarte rezistente. Panourile de semnalizare de pe palierede tip afişaj cu
cristale lichide (LCD) grafice şi cele de tip matricial sunt programabile cu ajutorul
ordinatorului şi pot fi foarte uşor personalizate. Acestea pot fi comandate şi cu sistem de
control acces cu chei ce asigură restricţionarea accesului în lift prin blocarea electronică a
comenzilor.

Fig.1.3. Afişoare LED din panoul de comandă


Caracteristicile tehnice sunt prezentate în variante mai uzuale cum ar fi:
- lifturi electrice de persoane cu uşi automate
- lifturi hidraulice pentru persoane cu uşi automate cu un acces sau cu două accese
- lifturi hidraulice pentru materiale cu uşi manuale
- lifturi electrice pentru materiale cu uşi manuale
Există posibilitatea dotării liftului cu o serie de sisteme opţionale cum ar fi:
- sistem de acumulatori pentru alimentarea iluminatului de avarie şi a sistemului de alarmă
- ventilator în cabină
- sisteme de comunicare diverse (cu unul sau mai multe posturi)
- semnalizări acustice personalizate
- sistem de detecţie în zona uşilor de tip perdea de fascicule în infraroşu (facilitează intrarea în
lift, ideal pentru spitale)
- sistem indicator suprasarcină
- indicatoare sens şi semnalizare palier
- sistem de mentenanţă şi management (diagnosticare defecte)
- sisteme de protejare a pereţilor cabinei
- sistem de variaţie a frecvenţei şi control al vitezei sistemului de acţionare
- sistem de micşorare al uşii controlat dinamic cu encoder
Toate acestea permit performanţe specifice şi o utilizare la parametrii diferiţi în funcţie de
aplicaţiile dorite de utilizatorul liftului

1.2 Clasificarea şi caracterizarea principalelor tipuri de ascensoare

Ascensoare electrice

- Ascensoare electrice de interior


- Ascensoare electrice panoramice

Avantajele ascensoarelor electrice:


- Ascensoarele electrice au un consum redus de energie;
- Acţionarea lor este în general deasupra puţului;
- Deplasarea cabinei se poate realiza cu două trepte de
viteză sau cu convertizor de frecvenţă pentru obţinerea
unei viteze variabile;
- Pot fi echipate cu uşi semiautomate sau automate.

Caracteristici tehnice
Nr. persoane Viteza (m/s) Nr.staţii Dimensiuni puţ
2 - 18 0,6 - 1,6 4 - 18 la tema
Aceste tipuri de ascensoare pot avea comanda cu însoţitor permanent sau fără însoţitor;
În funcţie de sarcină, transmisia poate fi directă sau indirectă;
Sunt destinate pentru transportul de materiale, alimente, pentru tărgi în spitale precum şi
pentru persoane cu handicap;
Finisajele cabinei pot fi în funcţie de tipul încărcării.
Caracteristici tehnice
Sarcina (kg) Viteza (m/s) Nr.staţii Dimensiuni puţ
500 – 4000 0,3 - 0,8 2 - 12 la tema

Ascensoare hidraulice
Avantajele ascensoarelor hidraulice:
- Fiabilitatea funcţionarii instalaţiilor se poate face prin reglaje hidraulice;
- Silenţiozitate în deplasare;
- Camera maşinii poate fi amplasată la o distanţă de maxim 10 m de puţul
ascensorului;
- Prin costuri reduse se poate asigura coborârea cabinei la o staţie definită şi deschiderea
uşilor automate;
Caracteristici tehnice
Nr. Persoane Viteza (m/s) Nr.staţii Dimensiuni puţ
5 – 4000 0,3 - 0,8 2 - 12 la tema
Ascensoarele cargo hidraulice au aceeaşi destinaţie de transport ca şi ascensoarele electrice;
Acest tip de ascensoare au posibilitatea de a realiza nivelarea în staţie automat, chiar în
timpul încărcării sarcinii.
Caracteristici tehnice
Sarcina (kg) Viteza (m/s) Nr.staţii Dimensiuni puţ
500 – 4000 variabila 2-8 la tema

Ascensoare mici de materiale


Se livrează împreuna cu structura metalică a puţului;
Toate tipurile de ascensoare mici de materiale au motorul electric şi panoul de comanda în
interiorul puţului, nefiind necesare spaţii suplimentare pentru acestea;
Variantele de amplasare ale motorului de acţionare pot fi: deasupra, lateral sus şi lateral jos,
dedesubt, faţă de cabină.
Acest model este destinat transportului de mărfuri uşoare cu sarcini cuprinse
între 50-100 Kg. Uşile manuale sunt culisante vertical.

Sunt recomandate pentru mărfuri la nivelul podelei, cu sarcini cuprinse între


100-300 Kg. Prevăzute cu uşi batante orizontal într-un canal.

Ascensoare destinate mărfurilor transportate cu europaleţi. Finisajele


cabinelor şi uşilor pot fi din tablă zincată şi inox. Prezentate în două variante
cu uşă batantă şi uşi culisante vertical. Viteza de deplasare între 0,3-0,45 m/s.

Modelul prezentat are motorul de acţionare poziţionat sub cabină. În interiorul


cabinei se pot monta etajere despărţitoare. Sunt recomandate în spaţii reduse.

Platformele de ridicare sunt instalaţii de ridicat utilizate exclusiv


transportului de materiale.

 Acţionarea poate fi electrică sau hidraulică.


 Se pot livra la cerere şi cu structura metalică portantă.
 Sarcinile disponibile sunt cuprinse între 500 şi 10.000 de kg.

Trotuarul rulant este soluţia ideala pentru parcurgerea distanţelor lungi. Ca şi trotuar rulant
orizontal, în aeroporturi sau centre de expoziţii, elimină mersul pe jos şi de asemenea conduce
călătorii în direcţia corectă. Cu o înclinaţie de 12°, facilitează accesul clienţilor cu cărucioarele de
cumpărături către etajele superioare.
Destinaţii (în interior): Mall-uri, aeroporturi, centre de afaceri, expoziţii.
Detalii tehnice: Eficienţă maximă datorită întreţinerii uşoare, mod opţional de economisire a
energiei care reduce costurile cu până la 30%.
Siguranţă: Coordonarea dispozitivelor de siguranţă cu ajutorul sistemului de siguranţă al
mişcării ThyssenKrupp, circuit dual de franare cu doi saboţi independenţi de frânare, înălţime
continuă de 1000 mm a balustradelor şi opţional, iluminatul trotuarului pentru accesul în siguranţă.
Design: Culori diferite ale mâinii curente mobile, balustrade din sticlă în diferite forme, finisaj
perfect într-un design modern, sistem de iluminare opţional.
Ergonomie: Nivel redus de zgomot, dispozitiv direct al mâinii curente mobile pentru
sincronizarea mişcării dintre mâna curentă mobila şi trotuar, rulare silenţioasă.
Protecţia mediului: Echipare opţională cu "Echo-chain" pentru lubrifiere de lungă durată,
consum redus datorită sistemelor opţionale de economisire a energiei, fricţiunea minimă între
componentele originale conduce la standarde înalte de calitate.
Usurinţa în servisare: Echiparea opţională cu telecomanda pentru toate funcţiile de bază,
display multilingvistic, interfaţă infraroşu (IR) pentru transferul de date către laptop-ul de servisare.

Finisaje
Atât pentru ascensoarele electrice cât şi pentru cele hidraulice, cabinele pot fi oferite în
diverse forme de finisaj:
- tablă vopsită
- tablă grunduită
Pereţii cabinei
- plastic melaminat (culoare la algere)
- inox, diverse modele şi nuanţe
- suprafaţă cauciucată
- mochetă
Podeaua
- marmură
- linoleum

Protecţie mână - circulară


curentă - rectangulară

- 1/2 din perete


- 1/1 din perete
Oglindă
- 500 x 700 mm
- 600 x 900 mm

- iluminat fluorescent
Tavan
- iluminat indirect, diverse combinaţii
Cutii de comandă - suprafaţă inox, afişare digitală a poziţiei,
cabină sensului, sarcinii; interfon.

1.3 Microcontrolere
Introducere

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 fost un prerechizit pentru producţia de
microprocesoare, şi primele computere au fost făcute prin adăugarea perifericelor ca memorie, linii
intrare-ieşire, timeri şi altele. Următoarea creştere a volumului capsulei a dus la crearea circuitelor
integrate. Aceste circuite integrate conţin atât procesorul cât şi perifericele. Aşa s-a întâmplat cum
primul cip conţinând un microcomputer, sau ce va deveni cunoscut mai târziu ca microcontroler a
luat fiinţă.

Unitatea de memorie
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 confundate, oricare din
conţinuturile lor vor fi atunci uşor accesibile. Este suficient să se ştie desemnarea sertarului şi astfel
conţinuturile lui ne vor fi cunoscute în mod sigur.

Fig.1.4. Model simplificat de unitate de memorie


Componentele de memorie sunt exact aşa. Pentru o anumită intrare obţinem conţinuturile 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 memorie, ş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 trebiue să aşteptăm conţinuturile acelei locaţii. Înafară de
citirea dintr-o locaţie de memorie, memoria trebuie de asemenea să permită scrierea în ea. Aceasta
se face 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 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.

Unitatea centrală de procesare


Să adăugăm alte 3 locaţii de memorie pentru un bloc specific ce va avea o capabilitate
incorporată de înmulţire, împărţire, extragere şi să-i mutăm conţinuturile dintr-o locaţie de memorie
în alta. Partea pe care tocmai am adăugat-o este numită "unitatea de procesare centrală" (CPU).
Locaţiile ei de memorie sunt numite regiştri.

Fig.1.5. Unitate simplificată de procesare centrală cu 3 digiţi


Regiştrii sunt deci locaţii de memorie a 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 situţia
curentă. Avem două entităţi independente (memoria şi CPU) 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ţinuturile a două locaţii de memorie şi întoarcem rezultatul înapoi în memorie, vom avea
nevoie de o conexiune între memorie şi CPU.

Bus-ul
Calea este numită "bus"-magistrală. Fizic, el reprezintă un grup de 8, 16, sau mai multe fire.
Sunt două tipuri de bus-uri : bus de adresă şi bus de date. Primul constă din atâtea linii cât este
cantitatea de memorie ce dorim să o adresăm, iar celălalt este atât de lat cât sunt datele, în cazul
nostru 8 biţi sau linia de conectare. Primul serveşte la transmiterea adreselor de la CPU la memorie,
iar cel de al doilea la conectarea tuturor blocurilor din interiorul microcontrolerului.

Fig.1.6. Conectarea memoriei şi unităţii centrale


Î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 lumea
de afară, sau cu noi ! Pentru a înlătura această deficienţă, să adăugăm un bloc ce conţine câteva
locaţii de memorie a căror singur capăt este conectat la busul de date, iar celălat are conexiune cu
liniile de ieşire la microcontroler ce pot fi văzute cu ochiul liber ca pini la componenta electronică.

Unitatea intrare-ieşire
Aceste locaţii ce tocmai le-am adăugat sunt numite "porţi".Sunt diferite tipuri de porţi :intrare,
ieşire sau porţi pe două-căi. Când se lucrează cu porţi, mai întâi de toate este necesar să se aleagă cu
ce pot urmează să se lucreze, şi apoi să se trimită date la, sau să se ia date de la port.

Fig.1.7.Unitate simplificată 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.

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 şi 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 afectăm 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. Pentru 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îţ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 incepe 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 partea 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şt, 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).

Fig.1.8.Transmiterea informaţiilor microcontrolerului


Pentru că aven 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 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 bus către locaţia de trimitere,
şi de acolo către unitatea de recepţie conform protocolului.

Unitatea de timer
Acum că avem comunicaţia serială, putem recepţiona, trimite şi procesa date.

Fig.1.9.Schema de funcţionare a unităţii de timer


Totuşi, pentru noi ca să putem să îl folosim în industrie mai avem nevoie de câteve blocuri.
Unul din acestea este blocul de timer care este important pentru noi pentru că ne dă informaţia de
timp, durată, protocol etc. Unitatea de bază a timer-ului este un contor liber care este de fapt
unregistru a cărui valoare numerică creşte cu 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 timp a trecut. Acesta este o
parte foarte importantă a microcontrolerului a cărui control cere cea mai mare parte a timpului
nostru.
Watchdog-ul
Încă un lucru ce necesită atenţia noastră este funcţionarea fără defecte a microcontrolerului
în timpul funcţionă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.1.10.Funcţionarea Watchdog-ului
Bineînţeles, când aceasta se întâmplă cu un computer, îl resetăm pur şi simplu şi va continua
să lucreze. Totuşi, nu există buton de resetare pe care să apăsăm în cazul microcontrolerului care să
rezolve astfel problema 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 unde programul
nostru are nevoie 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 până la obţinerea 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.

Convertorul Analog-Digital
Pentru că semnalele de la periferice sunt substanţial diferite de cele pe care le poate înţelege
(zero şi unu), ele trebuie convertite într-un mod care să fie înţeles de microcontroler. Această
sarcină este îndeplinită de un bloc pentru conversia analog-digitală sau de un convertor AD. Acest
bloc este responsabil pentru convertirea unei informaţii despre o anumită valoare analogă î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.

Fig.1.11.Blocul pentru convertirea semnalului analogic în digital


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 acestei componente.
Imaginea de mai jos arată cum arată un microcontroler în interior.
Fig.1.12.Imaginea unui microcontroler în interior
Liniile subţiri ce merg din interior către părţile microcontrlerului reprezintă fire conectând
blocurile interioare cu pinii capsulei microcontrolerului. Schema următoare reprezintă secţiunea
centrală a microcontrolerului.

Fig.1.13.Secţiunea centrală a microcontrolerului


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ţă logică către elementele de stabilizare.

Programul
Scrierea programului este un domeniu special de lucru al microcontolerului şi este denumit
"programare". Să încercăm să scriem un mic program ce îl vom crea singuri şi pe care oricine va fi
în stare să-l înţeleagă.
START
REGISTER1=MEMORY LOCATION_A
REGISTER2=MEMORY LOCATION_B
PORTA=REGISTER1 + REGISTER2
END
Programul adaugă conţinuturile a două locaţii de memorie, şi vede totalul lor la portul A.
Prima linie a programului este pentru mutarea conţinuturilor locaţiei de memorie "A" într-unul din
regiştri unităţii centrale de procesare. Pentru că avem nevoie şi de celelalte date de asemenea, le
vom muta de asemenea în celălalt registru al unităţii centrale de procesare. Următoarea instrucţiune
instruieşte unitatea centrală de procesare să adauge conţinuturile celor doi regiştri şă să trimită un
rezultat obţinut la portul A, încât suma acestei adăugări să fie vizibilă pentru toată lumea de afară.
Programarea poate fi făcută în câtava limbaje ca Assembler, C şi Basic care sunt cele mai
folosite limbaje.

1.4 Surse de alimentare pentru ascensor

În momentul actual, sursele de alimentare liniare sunt mai rar utilizate. În locul acestora se
folosesc surse în comutaţie care au randamente mai bune şi preţ mai scăzut mai ales în cazul
puterilor mari. Totuşi, sursele liniare prezintă o serie de avantaje dintre care pot fi menţionate:
 fiabilitate sporită;
 zgomot redus pe tensiunile furnizate;
 perturbaţii de înaltă frecvenţă aproape inexistente;
 separare excelentă a consumatorului de reţea.
Din aceste motive, sursele liniare sunt recomandate pentru alimentarea circuitelor cu consum
redus (de pâna la 10..25W) sau a acelora care sunt sensibile la zgomote (amplificatoare audio,
receptoare radio, etc.).
Sursa simplă de tensiune
Sursele simple generează o singură tensiune de alimentare. Schema unei astfel de surse este
următoarea:

Fig.1.14. Schema unei surse simple de tensiune


Se utilizează un transformator pentru reducerea tensiunii reţelei de alimentare la o valoare
convenabilă. Redresorul utilizat pentru transformarea tensiunii alternative generată de transformator
într-o tensiune continuă este unul clasic de tip "punte". El poate fi realizat fie din 4 diode conectate
conform schemei, fie se poate utiliza o punte redresoare integrată. Condensatorul conectat la ieşirea
redresorului are rolul de a "netezi" tensiunea obţinută din redresor. El reduce variaţia tensiunii care
se aplică stabilizatorului la valori reduse de ordinul a 0.5...2 V. Acest condensator mai poartă
denumirea de condensator de filtrare sau mai simplu filtru.
Stabilizatorul de tensiune are rolul de a asigura o valoare constantă a tensiunii furnizate de
sursă indiferent de variaţiile tensiunii reţelei de alimentare sau ale consumului. Stabilizatorul se
poate realiza cu componente discrete sau se poate utiliza un stabilizator integrat.
Funcţionarea sursei
Tensiunea la ieşirea transformatorului (din secundarul transformatorului) este o tensiune
alternativă sinusoidala cu frecvenţa egală cu cea a reţelei de alimentare (50HZ). Valoarea acestei
tensiuni este specifică fiecărui transformator şi este influenţată de curentul consumat. În general,
pentru transformatoare, tensiunea secundarului corespunde unui curent consumat egal cu cel la care
se obţine puterea nominală a transformatorului.
Condensatorul de filtrare se încarcă din redresor în intervalele de timp cât tensiunea acestuia
este mai mare decât cea existentă pe condensator şi se descarcă pe sarcină în rest.
Sabilizatoarele de tensiune sunt disponibile în multe variante care diferă între ele prin
valoarea tensiunii furnizate la ieşire şi valoarea maximă a curentului pe care îl pot debita.
Deasemenea ele sunt disponibile în mai multe variante de capsule.
Cele mai cunoscute şi utilizate stabilizatoare de tensiune integrate sunt cele din familia 78XX.
În tabelul următor sunt prezentate caracteristicile câtorva circuite din această familie.

Tip circuit Tensiune ieşire Domeniu tensiuni intrare Curent maxim Capsulă
LM7805 5V 7..35 V 1A TO220
LM7806 6V 8..35 V 1A TO220
LM7808 8V 10.5..35 V 1A TO220
LM7810 10 V 12.5..35 V 1A TO220
LM7812 12 V 14.5..35 V 1A TO220
LM7815 15 V 17.5..35 V 1A TO220
LM7818 18 V 21..35 V 1A TO220
LM7824 24 V 27..40 V 1A TO220
LM78L05 5V 7..35 V 0.1 A TO92
LM78L06 6V 8.3..35 V 0.1 A TO92
LM78L08 8V 10.5..35 V 0.1 A TO92
LM78L10 10 V 12.5..35 V 0.1 A TO92
LM78L12 12 V 14.5..35 V 0.1 A TO92
LM78L15 15 V 18..35 V 0.1 A TO92
LM78L18 18 V 21.5..35 V 0.1 A TO92
LM78L24 24 V 28..40 V 0.1 A TO92

Stabilizatorul trebuie ales astfel încât să aibă tensiunea de ieşire egală cu cea dorită şi curentul
maxim mai mare decât cel la care va fi utilizat.
1.5 Acţionarea electrică a echipamentului mecatronic

1.5.1. Descrierea motoarelor pas cu pas. Principii de funcţionare

La modul cel mai general, un motor pas cu pas este alcătuit dintr-un rotor constituit de regulă
dintr-un magnet permanent şi dintr-o serie de înfăşurări fixe dispuse ordonat în jurul rotorului pe
ceea ce se cheamă în literatura de specialitate, stator. Aceste înfăşurări reprezintă, în final, o serie de
poli magnetici.
În mod curent, rezoluţia motoarelor pas cu pas este de 200 paşi/rotaţie, tensiunea la care
lucrează. este cuprinsă între 5 şi 24 V. Curentul absorbit de înfăşurări este de ordinul 100 mA sau
chiar mai mult, până la ordinul amperilor.
Acest tip de motoare se regăsesc în imprimante, faxuri, scanere şi fotocopiatoare, etc. Dacă nu
este depăşit momentul nominal prescris de către fabricant, motorul pas cu pas are o precizie foarte
bună, la un ciclu de lucru nepierzând paşi.
O dată cu dezvoltarea tehnicii numerice de calcul, a sistemelor numerice de reglare automată
a proceselor industriale, a roboticii şi a altor domenii noi, a apăut necesitatea introducerii unor
elemente de executie electromecanice capabile să realizeze conversia directă a informaţei în
deplasarea mecanică. Eforturile depuse în acest sens au rezultat în apariţia unei categorii noi de
maşini electrice şi anume motoarele pas cu pas (MPP).
Motoarele pas cu pas pot fi văzute ca motoare electrice fără comutare. Tipic, toate
înfăşurările motorului fac parte din stator, iar rotorul ori este un magnet permanent, ori, în cazul
motoarelor cu reluctanţă variabilă, un bloc cu dinţi realizat dintr-un fel de material magnetic. Toate
comutaţiile motorului trebuie să fie manipulate extern de către controller-ul motorului care este
special proiectat pentru ca motorul să-şi păstreze poziţia sau să se rotească într-un sens sau în altul.
În funcţie de aplicaţie se poate opta între un motor pas cu pas sau un servomotor. Ambele tipuri de
motoare oferă oportunităţi similare pentru o poziţionare precisă, dar circuitul de comandă diferă.
Servomotoarele necesită feedback, pentru pentru a putea fi controlate şi de aceea circuitul este mai
complex. Dacă ar trebui să alegem între un servomotor sau un motor pas cu pas, va trebui să luăm
în calcul şi căteva considerente, acestea depinzând de fiecare aplicaţie în practică. Spre exemplu
repetabilitatea în poziţionare realizată cu un motor pas cu pas depinde de geometria rotorului, în
timp ce repetabilitatea în poziţionare realizat cu un servomotor depinde de componentele analogice
din bucla feedback.
Motoarele pas cu pas pot fi utilizate în sisteme de control în buclă deschisă şi sunt potrivite
pentru acceleraţii mici şi sarcini statice, în timp ce controlul în buclă închisă, este adecvat pentru
acceleralii mai mari care implică sarcini variabile.
Un motor pas cu pas este un dispozitiv electromagnetic care converteşte impulsurile electrice
în mişcări mecanice discrete. Rotorul unui motor pas cu pas se roteşte în paşi discreţi incrementaţi
când pulsurile de comandă îi sunt aplicate în secvenţe regulate. Rotaţia motorului este în relaţie
directă cu aceste pulsuri aplicate. Secvenţele acestor pulsuri aplicate depind de sensul de rotire dorit
al rotorului. Viteza rotorului este şi ea direct proporţională cu frecvenţa pulsurilor de intrare iar
lungimea rotaţiei este proporţională cu numărul pulsurilor aplicate.

Avantaje şi dezavantaje
Avantaje:
 asigură univocitatea conversiei impuls-deplasare şi pot fi utilizate în circuit deschis;
 gamă largă de frecvenţe de comandă;
 precizie şi rezoluţie mare (număr de paşi pe rotaţie), ceea ce simplifică lanţul cinematic
motor-sarcină;
 permit porniri, opriri, reversibilităţi, fără pierderi de paşi;
 memorează poziţia;
 sunt compatibile cu tehnica numerică;
 motoarele pas cu pas au cuplul maxim când au o înfăşurare alimentată;
 precizia de poziţionare şi repetabilitate a mişcării sunt foarte bune (erorile sunt de
aproximativ 3 - 5% pe un pas, aceste erori neacumulându-se însă la trecerea de la un pas
efectuat la următorul);
 nu există contact de perii în interiorul motorului, de aceea viaţa motorului pas cu pas este
direct proporţională cu durata de viaţă a rulmentului;
 răspunsul motorului la impulsurile de intrare digitale dă naştere unui ciclu de control
deschis, ceea ce face ca acţionarea motoarelor pas cu pas să fie mai simplă şi mai puţin
costisitoare;
 are posibilitatea de a realiza viteze de rotaţie sincronă foarte reduse, având o sarcină cuplată
direct la arbore;
 pot realiza un domeniu larg de viteze de rotaţie, deoarece viteza este proporţională cu
frecvenţa impulsurilor de comandă.

Dezavantaje:
 unghi de pas, deci increment de rotaţie, de valoare fixă pentru un motor dat;
 randament scăzut;
 capacitate limitată în ceea ce priveşte acţionarea unor sarcini cu inerţie mare;
 viteza de rotaţie relativ scăzută;
 dacă nu sunt bine comandate, pot apărea rezonanţe în funcţionare;
 necesită o schemă de comandă adaptată la tipul constructiv respectiv şi relativ complexă,
pentru funcţionarea la viteze relativ mari.
Dezvoltarea motorului pas cu pas, precum şi interesul manifestat faţă de aceste motoare au
determinat dezvoltarea unei game largi de tipuri de motoare pas cu pas.

1.5.2. Clasificarea motoarelor pas cu pas

Din punct de vedere constructiv, există 6 tipuri de motoare pas cu pas:


 solenoid;
 cu reluctanţă variabilă;
 cu magnet permanent în stator;
 cu magnet permanent în rotor;
 cu magnet permanent şi reluctanţă variabilă (hibrid);
 motor pas cu pas electromecanic.

Motorul pas cu pas de tip solenoidal

Există două tipuri de astfel de motoare:


- Primul constă dintr-un electromagnet care pune în mişcare o armătură mobilă separate prin
intermediul unor bile.
- Al doilea tip de MPP solenoidal, denumit MPP cu clichet, constă dintr-un electromagnet cu
arc de rapel, conectat la un arbore prin intermediul unui mecanism cu clichet .
Avantajele acestui motor sunt:
 dezvoltă un cuplu relativ mare;
 la efectuarea pasului, nu apar oscilaţii;
 nu necesită alimentarea înfăşurării pentru crearea cuplului de fixare.
Dezavantaje:
 are o funcţionare zgomotoasă;
 frecvenţa de execuţie a paşilor este redusă;
 prezintă uzură a pieselor în mişcare;
 motorul este unidirecţional.
Motorul pas cu pas cu magnet permanent în stator

Este un motor relativ ieftin dar şi „slab" ca performanţe, fiind caracterizat de un unghi de pas
cuprins între 7,5° şi 15° (48 - 24 paşi pe o rotaţie completă).
Avantajul acestui motor constă în faptul că memorează poziţia fără ca fazele să fie alimentate.
Dezavantajul principal constă în aceea că este unidirecţional, frecvenţa limită de comandă este
scăzută, iar o modificare a proprietăţilor magnetului permanent îi modifică performanţele.

Motorul pas cu pas cu magnet permanent în rotor

Aceste motoare au în rotor un magnet permanent, care magnetizează rotorul radial. Fazele pot
fi dispuse pe rotor, ca în figura 1.15, sau pe stator.
Când se alimentează fazele de comandă, se creează un flux ce interacţionează cu fluxul
magnetului permanent, ceea ce face ca rotorul să ocupe o poziţie ce corespunde reluctanţei minime
a circuitului magnetic.

Fig.1.15. Motor pas cu pas cu magnet permanent în rotor


Avantajele acestui motor sunt:
 dezvoltă un cuplu de fixare a rotorului, chiar cu fazele nealimentate;
 energia introdusă din exterior prin dispozitivul de comandă este mai mică;
 din cauza prezenţei magnetului permanent, rotaţia arborelui de ieşire la fiecare pas are un
caracter amortizat.

Dezavantajele principale ale acestui tip de motor sunt:


 performanţele motorului sunt afectate de schimbările caracteristicilor magneţilor;
 tensiunea electromotoare indusă în fazele de comandă este mare.
Motorul pas cu pas hibrid, cu magnet permanent şi reluctanţă variabilă

MPP hibrid este mult mai scump decât MPP cu magnet permanent, dar are performanţe de
neegalat în ce priveşte rezoluţia, cuplul şi viteza. Astfel, unghiul de pas caracteristic variază între
3,6° şi 0,9° (100 - 400 paşi pe rotaţie). El combină cele mai bune caracteristici ale motoarelor
prezentate anterior (MPP cu reluctanţă variabilă şi MPP cu magnet permanent).
Acest motor prezintă următoarele avantaje:
 în absenţa alimentării fazelor prezintă un cuplu de fixare a rotorului;
 are un randament bun, datorită energiei înmagazinate în magnetul permanent din rotor sau
stator;
 poate funcţiona cu o frecvenţă mare de comandă.
Ca dezavantaje se pot aminti:
 inerţia mare a rotorului;
 performanţele motorului sunt afectate de schimbarea caracteristicilor magnetului
permanent.

Motorul pas cu pas cu reluctanţă variabilă

Acest tip de motor pas cu pas, dintr-un anumit punct de vedere, este cel mai simplu şi uşor de
înţeles ca principiu de funcţionare.
În această categorie există două tipuri de bază: MPP cu o singură unitate stator-rotor
(monostatoric) şi MPP cu mai multe unităţi stator-rotor (polistatoric). Ambele tipuri pot fi cu
întrefier axial sau radial. De asemenea aceste motoare pot fi cu mişcare liniară (MPP liniare).
Comutând alimentarea pe faza următoare, se realizează o rotaţie a rotorului, şi o deplasare a dinţilor
rotorici faţă de cei statorici, astfel încât nu vor mai fi aliniaţi. Apare astfel un cuplu electromagnetic
reactiv, care creşte cu unghiul de decalaj între poziţia dinţilor statorici şi rotorici. Prin creşterea
cuplului electromagnetic se atinge un maxim, după care cuplul scade din nou la zero. Aceasta
reprezintă poziţia instabilă, când dinţii rotorici sunt aliniaţi între cei statorici.

Fig. 1.16. Motorul pas cu pas cu reluctanţă variabilă.


MPP cu reluctanţă variabilă are o largă utilizare şi se caracterizează prin următoarele
avantaje:
 frecvenţa maximă de comandă atinge limite relativ mari şi deci se pot realiza viteze mari;
 construcţie mecanică simplă;
 poate fi realizat pentru o gamă largă de unghiuri de pas;
 este bidirecţional, dacă are un număr de faze  3.
Dezavantajele MPP cu reluctanţă variabilă:
 nu memorează poziţia şi nu dezvoltă cuplu electromagnetic în lipsa curentului de comandă
în fazele statorice;
 în cazul alimentării în secvenţă simplă1 şi în lipsa unui cuplu de frecare, rotorul efectuează
unghiul de pas cu oscilaţii importante.
MPP cu reluctanţă variabilă se realizează cu trei şi patru faze, mai rar cu 5 faze. MPP cu 4
faze, spre deosebire de cele cu trei faze, sunt mai rapide, prezintă oscilaţii mai reduse la efectuarea
paşilor, au o stabilitate mai bună în regim dinamic şi dezvoltă un cuplu mai mare la alimentarea în
secvenţă dublă.

Motorul pas cu pas unipolar

Acest motor este relativ simplu de controlat. Un simplu numărător (circuit de contorizare)
poate genera secvenţele de pas necesare, comanda fiind cu un tranzistor pe fiecare înfăşurare.
Motoarele pas cu pas unipolare sunt caracterizate prin înfăşurările lor aşezate central. O schemă de
conductori comună este aceea de a lua toate aceste ramificaţii centrale de înfăşurări şi de a le
alimenta, cu +UM (tensiunea motorului). Circuitul de comandă şi control va împământa apoi fiecare
înfăşurare pentru a o alimenta.

Fig. 1.17. Circuit tipic de comandă a unui motor pas cu pas unipolar.

1
o singură fază alimentată la un moment dat
Motoarele unipolare pas cu pas sunt recunoscute datorită ramificaţiilor centrale ale
înfăşurărilor. Numărul fazelor este de 2 ori numărul bobinelor, din moment ce fiecare bobină este
împărţită în două. Astfel, diagrama de mai jos, care are 2 bobine poziţionate central, reprezintă
conexiunile unui motor pas cu pas unipolar.

index 1a 1b 2a 2b
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
5 1 0 0 0
6 0 1 0 0
7 0 0 1 0
8 0 0 0 1

Fig. 1.18. Setarea bobinei motorului unipolar pas cu pas şi comanda unei faze.

În secvenţa de cupluri ridicate, 2 înfăşurări sunt active în acelaşi timp pentru fiecare motor pas
cu pas. Această combinaţie de 2 înfăşurări dă un cuplu de până la 1,5 ori mai mare decât secvenţa
standard, dar consumă de 2 ori mai mult curent.
Jumătăţile de pas sunt realizate prin combinarea celor două secvenţe. Mai întâi, una dintre
înfăşurări este activată, apoi două, apoi una, etc. Aceasta practic dublează numărul paşilor pe care
motorul îi va face când va avansa, pentru fiecare revoluţie (360°), şi reduce numărul gradelor pentru
fiecare pas la jumătate.

index 1a 1b 2a 2b index 1a 1b 2a 2b
1 1 0 0 1 1 1 0 0 0
2 1 1 0 0 2 1 1 0 0
3 0 1 1 0 3 0 1 0 0
4 0 0 1 1 4 0 1 1 0
5 1 0 0 1 5 0 0 1 0
6 1 1 0 0 6 0 0 1 1
7 0 1 1 0 7 0 0 0 1
8 0 0 1 1 8 1 0 0 1
9 1 0 0 0
Fig. 1.19. Secvenţa pas cu 10 1 1 0 0
pas în două faze. 11 0 1 0 0
12 0 1 1 0
13 0 0 1 0
14 0 0 1 1
15 0 0 0 1
16 1 0 0 1
Fig. 1.20. Secvenţa
în jumatăţi de paşi.
Motorul pas cu pas bipolar

Spre deosebire de motoarele pas cu pas unipolare, cele bipolare necesită un circuit de
comandă şi control mai complex, deoarece acestea nu au în înfăşurările lor ramificaţie centrală. De
aceea, pentru a schimba direcţia câmpului produs de către o înfăşurare a motorului, este necesar să
inversăm curentul prin înfăşurare.
Motoarele bipolare sunt cunoscute pentru raportul excelent mărime/cuplu, oferind cuplu mai
mare pentru mărimea lor decât motoarele unipolare. Motoarele bipolare sunt proiectate cu bobine
separate care trebuie să fie comandate în orice direcţie2 pentru o bună funcţionare. Motoarele
bipolare pas cu pas folosesc acelaşi control binar de bază ca şi un motor unipolar, numai că
semnalele „0" şi „1" corespund polarităţii voltajului folosit la bobine, nu numai simple semnale
„deschis/închis". Figura 1.21. ne prezintă setarea unei bobine de motor bipolar în 4 faze şi secvenţa
de comandă şi control sensul acelor de ceasornic.

Index 1a 1b 2a 2b
1 + - - -
2 - + - -
3 - - + -
4 - - - +
5 + - - -
6 - + - -
Fig. 1.21. Setarea bobinei motorului bipolar pas cu pas.
7 - - + -
8 - - - +

Fig.1.22. Comanda şi controlul


motorului bipolar pas cu pas.

Pentru inversarea curentului prin înfăşurare putem folosi un pol dublu conectat, efectuând
această schimbare electromecanic. Electronica echivalentă a unui astfel de „întrerupător" poartă
denumirea de punte H şi este prezentată în figura 1.23.
Este folosit pentru controlul motoarelor pas cu pas bipolare, dar şi al motoarelor de curent
continuu, solenoizilor3 şi la multe alte aplicaţii.
Fiecare bobină a motorului pas cu pas are nevoie de propriul circuit de comandă de tip punte
H. Motoarele tipice pas cu pas bipolare au 4 legături, conectate la 2 bobine izolate în motor. Astfel,
sunt disponibile circuite integrate proiectate special pentru comanda motoarelor bipolare pas cu pas

2
polaritatea trebuie să fie inversată în timpul operaţiei.
3
sondelor cu magnet permanent.
sau a celor de curent continuu. Un mic circuit logic XOR a fost adăugat în figura 2.9, pentru a
împiedica de a fi văzute amândouă intrările ca „l"-uri de către tranzistor.
O altă caracteristică, a circuitelor de tip punte H, este că ele au întreruperi electrice care pot fi
aplicate pentru a încetini sau chiar pentru a opri motorul de a se roti liber, când nu se mişcă sub
controlul circuitului de comandă şi control. Acest lucru este realizat în esenţă prin micşorarea
bobinelor motorului, făcând ca tensiunile produse în bobine pe durata rotaţiei să se repercuteze
asupra lor, făcând astfel dificilă modificarea sensului de rotaţie al rotorului. Cu cât se roteşte mai
repede rotorul, cu atât mai mult frânele electrice se strâng.

polaritate
A B
0 0 0 0
0 1 - +
1 0 + -
1 1 0 0

Fig. 1.24. Funcţionarea punţii H

Fig. 1.23. Circuit tipic de punte H.

1.5.3. Caracteristicile motoarelor pas cu pas

Motoarele pas cu pas nu sunt clasificate doar de tensiune. Următoarele elemente


caracterizează un motor pas cu pas:
Tensiunea - uzual, motoarele au anumite rate de tensiune, care sunt ori scrise direct pe
acestea, ori sunt exemplificate în manualele motorului. Este necesar să se mărească tensiunea de
alimentare pentru a obţine de la un motor dat un anumit cuplu, dar acest lucru duce la încălziri
excesive sau la micşorarea duratei de viaţă a motorului.
Rezistenţa - rezistenţa pe înfăşurări este o altă caracteristică a motoarelor pas cu pas. Această
rezistenţă determină scurgerea curentului prin motor, la fel cum afectează curba cuplului motorului
şi viteza maximă de lucru.
Unghiul de pas - caracteristica cea mai importantă pentru alegerea motorului necesar
efectuării unei aplicaţii. Acest factor specifică numărul de grade geometrice efectuate la un pas
întreg. Funcţionarea motorului cu micropăşire va duce la dublarea numărului de paşi pe
revoluţie(360°), ducând în acelaşi timp la micşorarea pe jumătate a gradelor caracteristice unui pas.
Pentru motoarele care nu au specificaţii, se pot număra cu atenţie paşii prin rotirea cu mâna.
Gradele pe un pas se calculează împărţind cele 360° la numărul de paşi obţinuţi.
1.5.4. Creşterea performanţelor motoarelor pas cu pas. Performanţa motoarelor pas cu pas şi
randamentul acestora

Obiectivul alegeri motoarelor pas cu pas, a acţionării este acela de a identifica ”pachetul”
economic, de acţionare ce va efectua eficient toate mişcările solicitate într-o aplicaţie dată. Aceasta
poate fi o sarcină provocatoare, întrucât utilizarea sistemelor cu motoare pas cu pas convenţionale
este totdeauna o procedură simplă. Motoarele pas cu pas pot pierde sincronizarea (calarea), ce
cauzează o pierdere a preciziei de poziţionare ceea ce duce la o mişcare nereuşită sistemele cu
motor pas cu pas se vor opri (cala) atunci când necesarul de moment al mişcării executate plus
momentul pierdut în vibraţiile „copleşitoare”, depăşeşte momentul disponibil al motorului. Una din
cauzele principale ale calării motoarelor pas cu pas o reprezintă un fenomen numit rezonanţă.
La sistemele cu motoare pas cu pas, convenţionale, necesarul de moment, datorat rezonanţei
scade performanţa motorului pe toată gama de viteze a motorului, din cauza unei reduceri a
momentului util ce accelerează sarcina. Această reducere a momentului util fie poate limita serios
performanţa sistemului, ducând la un randamentscăzut, fie poate face cu sistemul de mişcare pas cu
pas să nu mai funcţioneze deloc. La sistemele Microstepping, rezonanţa este deosebit de
supărătoare în gama de viteze a motorului de 10 – 15 rps, unde este numită în mod obişnuit
instabilitate pe interval mediu. Acţionările Microstepping ale IDC-urilor elimină problema
rezonanţei prin circuitele antirezonanţă şi prin acestea oferă utilizatorului valoarea maximă de
moment posibil pe toată gama de viteze a motorului. Pentru a ilustra impactul negativ al rezonanţei
asupra performanţelor motoarelor convenţionale pas cu pas şi pentru a arăta că acelaşi sistem va
lucra mai bine cu o acţionare Microstepping IDC, ar trebui aruncată o privire la cauzele şi la
efectele rezonanţei asupra sistemelor microstepping cu subatenuare (amortizare slabă).

1.6 Senzori pentru ascensor


Senzori incrementali
Senzorii optici de poziţie unghiulară dată care ne dă poziţia unghiulară a arborelui pe care
sunt montaţi.
Există 2 categorii de senzori optici:
- senzori incrementali;
- senzori absoluţi.
Senzorii incrementali. Mod de funcţionare.
Pe durata funcţionării aceştia variază de la un constructor la altul, ideea de bază rămânând
aceeaşi.
O celulă fotoelectrică sau un fototranzistor detectează variaţia de lumină dată de un filament
aşezat în faţa unei surse de lumină cu dungi negre de aceeaşi mărime cu spaţii între ele, desenate pe
un disc.

Fig.1.25.Celulă fotoelectrică sau fototranzistor.


Această alternanţă de fază luminoasă se citeşte printr-un tren de impulsuri. În general
captorii incrementali au 2 ieşiri principale, fiecare generând un anumit număr de impulsuri pe tur,
până la 2106 . Acest număr determină rezoluţia captorului. Cele 2 semnale de ieşire sunt defazate
cu ¼ paşi decalând de exemplu cele 2 piste de ieşire astfel că diferenţa de fază între cele 2 semnale
ne permit detrminarea sensului de rotaţie al arborelui motor. Mai mult , există şi o a treia ieşire,
numită „marcker” care produce un singur impuls pe tur şi serveşte drept semnal de sincronizare.

Fig.1.26. Schema semnalelor de ieşire ale senzorilor


Sensul de rotaţie este stabilit de o logică dată de obicei de către furnizor.
Utilizare. Captorii incrementali sunt cei mai des utilizaţi la determinarea poziţiei, unde zero
poate să varieze. Îi intâlnim de asemenea, frecvent în sistemele comandate ca generatorare de
impulsuri în determinarea vitezei. De fapt, frecvenţa electrică (Hz) a unui tren de impulsuri este
egală cu produsul numărului de impulsuri/tur viteza de rotaţie (tr/sec). Dacă ştim să măsurăm
această frecvenţă, putem calcula viteza arborelui motor.
Captorii absoluţi
Ei sunt prezentaţi sub forma unui disc pe care sunt dispuse acoperiri, negre şi albe, în
totalitate sau nu, astfel că, pe o rază oarecare, succesiunea de zone negre şi albe constituie
reprezentarea binară a unghiului pe care îl face arborele motor cu origine cunoscută. Acest cuvânt
binar este generat direct de un disc de decodare datorită unui sistem de citire optic folosind
dispozitivele analogice care sunt utilizate în captorii incrementali.
Fig.1.27. Disc de decodare
Desenul pistelor este ales astfel încât să producă un cod Gray sau cod binar reflectat în care
trecerea de la un număr la următorul număr se traduce prin schimbarea unui singur bit în combinaţia
care il reprezintă.
Utilizare. Captorii absoluţi permit cunoaşterea valorii instantanee a ungiului de rotaţie a
arborelui motor în comparaţie cu un decalaj iniţial al captorului pe acest arbore.
În domeniul roboţilor prezintă avantajul extrem de interesant după demaraj, printr-o singură
citire presupunând că aceştia sunt plasaţi la fiecare articulaţie, putem adăuga referinţele de
stabilizare şi evitarea mişcătilor bruşte ale mecanicii susceptibile la deteriorare.
Un robot echipat cu astfel de captori nu are nevoie de o poziţie de instalare specială.
Controlul acestor captor se realizază uşor cu un microprocesor.

Senzori de proximitate
Un captor de proximitate se prezintă decât un pixel, adică o singură zonă sensibilă
echivalentă funcţional cu un punct.
Dacă nu utilizăm posibilitatea acestui captor pentru a îmbunătăţi informaţia preluată din
mediu, el ne poate furniza decât două tipuri de informaţii:
- prezenţa sau absenţa unui obiect în raza sa de acţiune;
- o mărime a distanţei captor-obiect, dacă acesta este în raza sa de acţiune (de la câţiva mm
sau centimetrii până la câtiva metrii) cu o anumită precizie.
Mai mult sunt numiţi captori de vedere locală făcând aluzie la raza de acţiune mică şi la
suprafaţa pe care o examinează.
Cel mai frecvent întâlnim două tipuri de captori: ultrasunete şi infraroşu.
Captorii cu ultrasunete
Distanţa lor minină de detecţie nu scade sub 30 – 50 cm, distanţa maximă atingând mai
mulţi metrii. Sunt destul de obişnuiţi după dezvoltarea aparatelor foto în intregime automate care
prezintă acest tip de captor.
Unghiul lor de deschidere, mai degrabă mare asociat unei distanţe minime de detecţie destul
de mare conduc în principal la funcţionarea în siguranţă a roboţilor mobili pentru a evita
obstacolele.
Captorii cu infraroşu
Un emiţător (de obicei o diodă) trimite un fascicol infra-roşu de lumină pe obiect prin
intermediul unei lentile. Fascicolul reflectat este captat de un receptor (de obicei fototranzistor)
figura 4.4. Pentru a evita buruiajul posibil de la lumina mediului ambiant, fascicolul de emisie este
modulat sau mărit (câţiva kHz). La recepţie fiind filtrat.
Printre avantajele acestui tip de captor, atragem atenţia asupra mărimii foarte mici (câţiva
centimetri cubi) care permite intergrareasa în orice parte a robotului şi de asemenea distanţa minimă
de detecţie care scade sub câţiva centimetri.

Fig.1.28. Schema modului de detecţie al captorului cu infraroşu.


Ca şi detectorul cu ultra-sunete este este utilizat în special pentru detectarea prezenţei sau absenţei
unui obiect şi la măsuratea distanţei. De fapt, se observă curba de răspuns a captorului în funcţie de
distanţa captor – obiect. Această curbă, în mare, are forma unui clopot.
1) Totodată, se observă pe figură că pentru acelaşi semnal de ieşire putem să avem două
distanţe captor – obiect diferite: l1 şi l2 . Pentru a mări indeterminarea, a mai mult de o informaţie de
obicei, va trebui să dăm mai înainte sau să tragem înapoi captorul. De fapt pantele l1 şi l2 detectabile
prin această metodă sunt de semne contrare.
2) Forma curbei va fi dată de orientarea obiectului în funcţie de axa captorului. Trebuie deci
sa ne asigurăm de această orientare şi de posibilitatea de reproducere a sa.
3) În ultimul rând, amplitudinea curbei depinde puternic de coeficientul de reflexie la infra –
roşu a obiectului.
Fig.1.29. Forma şi amplitudinea curbei de oscilaţie.

CAPITOLUL 2

Tema tehnică detaliată

Să se proiecteze şi realizeze un stand experimental prin care să poată fi studiat un sistem


mecatronic destinat prin definiţie Monitorizării Gradului de Funcţionalitate Aferent unui
Ascensor de Persoane.

Date tehnice:
1. Grupul de acţionare trebuie să fie similar cu cel al unui sistem real de tip ascensor
(elementul de acţionare al ascensorului de tip troliu)
2. Macheta trebuie să aibă cel puţin două nivele plus parter pentru a avea nivelul de
combinaţii şi comanda asemănătoare unui sistem real.
3. Softul trebuie să includă modulele:
 modul de comandă ascensor
 modul de monitorizare pentru existenţa defectelor.
Conditii tehnice ce trebuie respectate la rezolvarea temei tehnice:
1. Utilizarea modului CAD SolidWorks pentru proiectarea mecanica a sistemului;
2. Utilizarea limbajului de asamblare MPLab pentru programarea blocului electronic;
3. Utilizarea logicii tranzistorizate pentru realizarea blocului electronic de comanda si
control;
4. Pentru aplicatia numerica a suitei de calcule mecanice se vor lua in considerare
urmatoarele date:
- masa utila vehiculata de lift mutila  350 kg
- cablu
viteza maxima Vmax  0,3 m / s
- ghidarea cabinei in casa liftului se va realiza pe un sistem de rulare cu rulmenti la
care va fi prevazută o schemă de compensare a nealiniamentelor şi şocurilor
accidentale apărute in timpul funcţionării.

CAPITOLUL 3
Breviar de calcule mecanice

3.1 Consideraţii generale

În foarte multe aplicaţii inginereşti şi în special în construcţiile de maşini se întâlnesc piese şi


sarcini care nu satisfac condiţiile de solicitare statice, admise până acum. Solicitările dinamice sunt
un rezultat al mişcării piesei studiate, sau a altor corpuri, care aplică asupra sarcinii dinamice.
Dacă la solicitarea statică se admite ca vitezele şi acceleraţiile să fie nule, la cea dinamică
intervin aceste mărimi cinematice în cele mai variate feluri: constante (un volant în mişcare de
rotaţie uniformă), variabile continuu, variabile cu discontinuităţi.
O sistematizare a modului de variaţie a acestor mărimi cinematice după efectul mecanic
asupra piesei studiate, permite gruparea solicitărilor dinamice astfel:
1. Solicitări prin forţe de inerţie, datorate unor acceleraţii mari, constante sau variabile
continuu, întâlnite la: cabluri de ascensoare, volanţi, discuri de şlefuit, rotori de turbine.
2. Solicitări prin şocuri, cauzate de variaţii bruşte (discontinue) ale vitezelor şi acceleraţiilor.
3. Solicitări la oboseală datorate unor variaţii periodice (uneori aleatoare) ale eforturilor,
repetate de un număr mare de ori.

3.2 Solicitări prin forţe de inerţie

Piesele solicitate prin forţe de inerţie se studiază la fel cu cele solicitate static, dacă se adaugă
forţele de inerţie după care se determină eforturile, prin metodele cunoscute.

Calculul cablului de macara sau ascensor

În cablul de ascensor, efortul cel mai mare are loc în perioada de pornire de jos în sus (figura
de mai jos). Dacă mişcarea are loc cu acceleraţie a, forţa axială în capătul superior al cablului este:
N  P  qx  Fi  P  qx  p  qx / g  a  ( P  qx)  (1  a / g )
Când greutatea cablului este mică în comparaţie cu greutatea cabinei, q se neglijează.
Bara în mişcare de rotaţie

Tija OA din figura alăturată de greutate p daN/cm şi lungime l, are în capăt o bilă de greutate
G şi se roteşte, în plan orizontal cu viteza unghiulară în jurul punctului O.
Se cere să se determine forţa axială maximă din tijă.
Această forţă are loc în punctul O şi este egală cu forţa centrifugă a bilei plus forţa centrifugă
a tijei.
F1  G / g  l 2

Pentru un element dx din tijă, la distanţa x de punctul O, forţa centrifugă este:


dF2  p dx / g  x 2
iar pentru întreaga tijă este:
F2  p / q  xdx  p / q  (l 2 2 ) / 2

3.3 Calculul de dimensionare al cablului


Q?

Re1  ?
Re 2  ?
Ipoteza: Considerăm că Re1  Re 2  Q / 2 pentru cazul în care cablul se află la jumătatea
distanţei dintre capetele tamburului (troliului).

Schema reală de calcul a reacţiunilor Re1 şi Re2

 Fz  0
 Mrul  0
 Q  Re1  Re 2  0 (1)
Q(d / 2)  Re 2  d  0 (2)
Q( d / 2  x )
Din (2)  Re 2  0
d
d  2x d  2x d  2x
Din (1)  Re1  Q  Re 2  Q  Q   Q(1  )Q
2d 2d 2d
Pentru cazul considerat în ipoteza simplificatoare de mai sus:
x  0 şi Re1  Re 2  Q / 2
Calculul lui Q

Q  G  Fi  6F f

G  mmax  g

mmax  mcabinei  mutila  500 kg

mcabinei  150 kg

mutila  350 kg
Prin urmare: G  500  9.81  4905 N

Fi  mmax  amax

amax  Vcablu
max
/  t acc
max
Vcablu  max  Rtroliu

Dtroliu 120
Rtroliu    60 mm
2 2
  nmax
 max 
30   max  5 rad / s
nmax  50 rot / min
max
Vcablu  5 rad / s  0,06 m  0,3 m / s

0,3
a max   0,15 m / s 2
2
Fi  500  0,15  75 N

F f ( rostogolire)  N  S  200  0,01  20 N

N  200 N
S  0,01

Deci:
Q  G  Fi  6 F f  (500 kg  9,81 m / s 2 )  75 N  (6  20 N ) 
 4905 N  75 N  120 N  5100 N

Dimensionarea cablului

 tr admisibil  250 N / mm2 (pentru oţel)

Q
 cablu    admisibil
d 2
4
4Q
d min 
 tractiune
4Q 4  5100 20400
d    25,987  5 mm
 admisibil   250 785

Se amplifică cu un coeficient de siguranţă CS  2 pentru a fi incluse şi efectele altor solicitări


mecanice decât cele prezentate.
Deci: dmin  5,098  2  10,195 mm
S-a ales diametru cablu de tracţiune lift d  11 mm sau echivalent cablu multifilar.

3.4 Verificarea rulmenţilor

Cauza principală a scoaterii din uz a rulmenţilor se datorează apariţiei pittingului (oboselii


superficiale) pe căile de rulare ale inelelor, respectiv ale corpurilor de rostogolire.
Calculul de verificare al rulmenţilor constă în stabilirea duratei de funcţionare Lh care trebuie

să fie mai mare decât o durată admisibilă Lha , care pentru reductoare de turaţie de uz general este
recomandată la valori de 12000...15000 ore, iar pentru maşini agricole de 8000....12000 ore.
Cunoscând reacţiunile radiale şi axiale din lagăre, precum şi sistemul de montaj al rulmenţilor
şi caracteristicile acestora (uzual, cei doi rulmenţi de pe arbore sunt identici), se calculează sarcina
dinamică echivalentă, preluată de fiecare rulment de pe arbore:
P  X R  Y Fa
unde X, Y – coeficienţii forţei radiale, respectiv axiale; X, Y sunt dependenţi de tipul şi mărimea
rulmentului, precum şi de mărimea forţelor radiale şi axiale preluate de rulment.
Valorile coeficienţilor X şi Y se aleg din cataloage pentru rulmenţi, iar în vederea alegerii
corecte a acestor coeficienţi, sunt precizate şi soluţiile de montaj al rulmenţilor radiali şi respectiv
radiali-axiali. Soluţiile trebuie să ne permită compensarea dilatărilor axiale ale arborilor, fără a
introduce solicitări suplimentare în rulmenţi.

Montajul rulmenţilor radiali cu bile

Rulmenţii radiali cu bile se pot monta în două variante.


La montajul cu rulment conducător şi rulment liber se fixează axial atât pe arbore cât şi în
carcasă rulmentul cu sarcina radială cea mai mică (rulmentul conducător). Acesta va prelua şi
sarcina axială. Cel de-al doilea rulment se fixează axial fie pe arbore, fie mai rar în carcasă,
putându-se descărca prin el dilatările termice axiale ale arborelui. Acest rulment (rulmentul liber) va
prelua numai forţa radială. Soluţia se utilizează în special la arborii lungi. Este mai complicată din
punct de vedere tehnologic şi constructiv, necesitând prelucrări şi elemente de asamblare
suplimentare.
Montajul cu rulmenţi flotanţi se realizează prin fixarea axială a fiecărui rulment, într-un singur
sens pe arbore (spre interior) şi în sens opus în carcasă, prin intermediul capacelor. Forţa axială este
preluată în acest caz de rulmentul către care este îndreptată. Soluţia de montaj este simplă, se
utilizează la arbori scurţi, cum sunt de exemplu, arborii reductoarelor de turaţie. Această soluţie de
montaj prezintă dezavantajul unei încărcări neuniforme a celor doi rulmenţi, spre deosebire de
prima variantă.
Indiferent de varianta de montaj, cunoscând rulmentul care preia forţa axială, se determină
raportul i  Fa / C 0 , unde i reprezintă numărul de rânduri de bile iar C 0 - capacitatea statică de

încărcare a rulmentului. Valorile i şi C 0 se aleg din catalogul firmelor producătoare de rulmenţi şi

în funcţie de acest raport se alege mărimea „e” faţă de care se compară raportul Fa / R .

 Dacă Fa / R  e , rezultă X  1, Y  0 .

 Dacă Fa / R  e , se determină X şi Y prin interpolare lineară (conf. STAS 7160-82).

Montajul rulmenţilor radiali – axiali cu bile sau cu role conice

Rulmenţii radiali – axiali se montează pe arbore, întotdeauna perechi şi poate fi realizat în „O”
pentru arbori cu roţi în consolă şi în „X” pentru arbori care au roţile situate între lagăre. Forţa axială
totală de pe arbore este K a . Mărimea şi direcţia forţelor axiale, preluate de fiecare rulment Fa ,

depind de montajul acestora şi de forţele axiale proprii Fa s , cauzate de faptul că direcţia de preluare

a sarcinii este diferită faţă de direcţia radială a reacţiunilor.


Intr-o primă etapă se alege din catalog Y  0 , cu ajutorul căruia se determină forţele axiale
proprii din fiecare rulment, apoi calculându-se forţele axiale totale din fiecare rulment. Valorile
finale ale lui X şi Y rezultă, determinând rapoartele: FarA / R A şi FarB / RB , care se compară cu „e”.
Pentru rulmentul cel mai încărcat de pe arbore (cu sarcina echivalentă cea mai mare) se
determină, în funcţie de capacitatea dinamică a lui, durabilitatea (numărul de milioane de rotaţii
efectuate până la apariţia primelor semne de oboseală).
p
C 
L    [milioane rotaţii]
P
unde:
3  pentru rulmenti cu bile
p
10 / 3  pentru rulmenti cu role
În funcţie de durabilitatea efectivă şi de turaţia arborelui se stabileşte durata efectivă de
funcţionare:
L  10 6
Lh   Lha [ore]
60  n
Dacă rulmentul ales nu se verifică, atunci se schimbă acesta cu un rulment cu acelaşi diametru
al inelului interior, însă de serie superioară de dimensiuni.
Rulmenţii aleşi în final trebuie să facă parte din clasa întâi de utilizare, care se fabrică în mod
curent. După efectuarea calculului de verificare al rulmenţilor, proiectantul trebuie să decidă asupra
alegerii ajustajelor realizate între rulment şi carcasă, respectiv între rulment şi arbore. Alezajul
rulment – carcasă este de tipul alezaj unitar. Acest lucru se datorează faptului că rulmentul este un
subansamblu independent şi, deci, câmpurile de toleranţă pentru diametrele d şi D sunt impuse de
fabricant. Astfel, execuţia rulmenţilor, conform STAS 4207-89, stabileşte 5 clase de precizie pentru
rulmenţi, simbolizate cu P0 – precizie normală, P6, P5, P4, P2 – cea mai precisă clasă.
O altă problemă, căreia proiectantul trebuie să-i găsească rezolvare, este aceea legată de
modul de ungere, răcire şi etanşare a lagărelor cu rulmenţi. Trebuie aleasă o soluţie de ungere care
să reducă pierderile prin frecare, să permită evacuarea căldurii generate prin frecare, să protejeze
rulmentul împotriva pătrunderii de particole abrazive din exterior, precum şi a umezelii.
Ca materiale de ungere, în cazul rulmenţilor folosiţi în construcţia reductoarelor de turaţie, se
recomandă cu precădere uleiurile minerale de transmisie, folosite dealtfel şi pentru ungerea
angrenajelor. Într-o astfel de situaţie, nu se admite ca elementul de rostogolire, aflat în poziţia cea
mai de jos, să fie cufundat în ulei mai mult de jumătate. Dacă rulmentul este situat deasupra băii de
ulei, ungerea acestuia se realizează prin canale colectoare sau cu ajutorul unor „buzunare”,
practicate în carcasa superioară. In aceste buzunare se colectează uleiul scurs pe peretele interior al
carcasei care, apoi, este dirijat către rulment, realizând atât răcirea rulmentului, cât şi ungerea
acestuia.
Pentru calculul durabilităţii rulmenţilor de la arborele reductor (numărul de milioane de rotaţii
efectuate până la apariţia primelor semne de oboseală) am ales doi rulmenţi radiali cu role cilindrice
NUP 210 ISO/R15 STAS 3041-68 cu capacitatea de încărcare C = 43 kN şi următoarele dimensiuni
principale:
- d = 50 mm
- D = 90mm
- B = 20 mm
- r = 2 mm
Aşadar:
p 10
 C 
p
C   43000  3
L           12295,917 [milioane rotaţii]
P Q/2  5100 / 2 

L  10 6 12295,917  10 6
Lh    4098639 [ore]
60  n 60  50

3.5 Proiectarea şi realizarea machetei funcţionale

Sistemele mecatronice de tip ascensor trebuiesc proiectate în funcţie de standardul


ascensorului şi nivelul de calitate de care dispune instalaţia aferentă acestora. În acest context,
trebuie ţinut cont de numărul de senzori şi limitatori de care dispune ascensorul şi amplasate alte
sisteme de semnalizare şi alţi senzori mult mai eficienţi care să preia informaţia pentru o cât mai
bună siguranţă şi fiabilitate.
Odată cu creşterea nivelului de siguranţă pe care îl oferă acest sistem creşte şi nivelul de
confort şi calitatea unui sistem de tip ascensor care poate deveni un sistem mecatronic datorită
componenţei pe care o are.

Macheta (proiect) a fost realizată din diferite materiale de natură metalică sau plastică care pot
imita într-o oarecare măsură un caz real. Astfel structura machetei este realizată din ţeavă PVC cu
diametrul de 40 şi respectiv 25 mm, palierele sunt realizate din PVC alb de 5 mm, iar casa liftului
din PVC alb de 3mm.
În mod practic, pentru deplasarea liftului în plan vertical, sunt utilizate ghidaje din oţel tras
care oferă o calitate a căilor de rulare suficient de bună pentru experimentarea sistemului
mecatronic de tip ascensor.
Motorul de acţionare al cabinei este un motor grup reductor, alcătuit dintr-un motor pas cu pas
şi un reductor cu angrenaj melcat, care oferă suficientă forţă pentru deplasarea cabinei liftului.
Datorită grupului motoreductor nu este permisă nici deplasarea în gol a cabinei când motorul nu
este în funcţiune astfel imitând cu succes aspectul şi comportamentul unui ascensor real, ducând
deci la o mai bună funcţionare şi oferind posibilitatea de a face toate testele aferente proiectului.

Acest tip de reductor având gradul de reducţie de 4/1 este suficient pentru a nu putea fi dat în
sens invers de greutatea cabinei când motorul nu este alimentat şi astfel nu a mai fost nevoie de
sistem de frânare şi putând să păstreze o viteză de deplasare între nivele suficient de bună pentr a
imita cazul real.
CAPITOLUL 4
Algoritmi software şi harware de funcţionare ai aplicaţiei

4.1 Algoritmi software


Fig.2.1.Algoritmul principal de funcţionare al programului
La pornirea programului principal ascensorul este în poziţie de repaus şi se aşteaptă chemarea
la unul din etaje, sau comanda de deplasare se poate da şi din ascensor.
În momentul în care se face o comandă se memorează etajul dorit după care se determină
viteza şi direcţia de deplasare.
Se porneşte ascensorul cu viteza şi direcţia determinate până se ajunge la un sensor unde se
determină din nou viteza de deplasare, iar dacă s-a ajuns la etajul dorit se opreşte ascensorul.
Fig.2.2.Algoritmul de verificare al butoanelor
Pentru a verifica tastatura reprezentată prin butoane se fac următorii paşi:
- se activează o linie ( linia 1 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează o linie ( linia 2 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează o linie ( linia 3 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează o linie ( linia 4 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează o linie ( linia 5 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează o linie ( linia 6 ) şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează linia 7 şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
- se activează linia 8 şi se verifică dacă există buton apăsat,
- se determină care buton este apăsat
Fig.2.3.Algoritmul de determinare al poziţiei şi sensului de deplasare ale ascensorului

Pentru a determina poziţia şi sensul de deplasare ale liftului trebuie să ştim următoarele informaţii:
- dacă liftul se deplasează - cu viteză mică
- cu viteză mare
- dacă liftul ar trebui să se mişte ( buton apăsat dar liftul este încă în repaus )
- dacă una din uşi este deschisă atunci liftul trebuie oprit în regim de urgenţă deoarece se pot
produce accidente
- dacă liftul se mişcă şi poziţia s-a modificat trebuie să verificăm dacă poziţia actuală nu
cumva este poziţia în care trebuie să ajungă.
Fig.2.4.Algoritmul de afişare al cifrelor pe display

Pentru afişarea cifrelor pe display am realizat multiplexarea celor doi digiţi.


Cei doi digiţi se aprind succesiv, fiecare rămânând aprins aproximativ 10 ms, rezultând în
felul acesta 100 de clipiri pe secundă pentru fiecare din cei doi digiţi.
Aceste clipiri sunt prea rapide pentru ochiul uman care va avea senzaţia de lumină continuă.

4.2 Algoritm hardware


Fig.2.5.Algoritmul harware de funcţionare al ascensorului
Microcontrolerul ca să funcţioneze are nevoie de o sursă stabilizată de tensiune care se obţine cu
ajutorul unui transformator coborâtor de tensiune, o punte redresoare, condensator de filtraj şi a unei
surse LM 7805 care debitează la ieşire 5 V cc.
Display-ul are 2 digiţi care funcţionează prin multiplexare, ambii fiind conectaţi pe aceeaşi
pini de date iar comanda afişării fiind separată.
Toate butoanele sunt multiplexate pe o matrice 8 X 8
După funcţie butoanele se împart în:
- butoane pentru chemarea liftului (aflate pe palier)
- butoane pentru alegerea etajului dorit (aflate în lift)
- butoane pentru simularea senzorilor de prezenţă a liftului în anumite poziţii (între etaje sau
ajuns la etaj)
- butoane pentru simularea uşilor deschise (ceea ce duce la oprerea de urgenţă a liftului)
Pentru comanda motorului sunt mai multe variante:
- direct cu contactoare interblocate
- circuite de comandă speciale
- invertoare de putere.

4.3 Caracteristicile ascensorului utilizat


1. Blocul de alimentare

 Transformator 220 V / 12 V (100 mA)

 Punte redresoare (DB 108)

 Surse de alimentare LM7805 şi LM 7812

 Condensator de filtraj de 1000 µF / 25 V

2. Microcontroler Pic 16F877 – commandă afişajul

- primeşte informaţii de la butoane

3. Panou comandă – butoane – pentru simulare

senzori poziţie etaj şi între etaj

- pentru chemare ascensor (exterior)

- pentru comadă ascensor (interior)

4. Afişaj LED cu 1 digit – afişarea numărului etajului

5. Bloc comandă al motoarelor - în această

aplicaţie motoarele sunt reprezentate prin 2

LED-uri:

- de viteză mare

- de viteză mică

CAPITOLUL 5

Programe utilizate

5.1 MPLab – programare şi simulare microcontroler


Urmând procedura de instalare, veţi obţine un ecran al programului însuşi. După cum vedeţi,
MPLAB arată ca cele mai multe programa Windows. În apropierea zonei de lucru este un "menu"
(în partea de sus colorat în albastru cu opţiunile File, Edit…etc.), "toolbar" (o zonă cu ilustraţii de
mărimea unor pătrate mici), şi linia de stare în partea de jos a ferestrei. Este o regulă în Windows de
a lua cele mai frecvent folosite opţiuni de programe şi de a le plasa mai jos de menu, de asemenea.
Astfel le putem accesa mai uşor şi să grăbim lucrul. Cu alte cuvinte, ceea ce aveţi în în toolbar aveţi
de asemenea în menu.
Pregătirea unui program de a fi citit într-un microcontroler se poate rezuma în câţiva paşi:

Alegerea modului de dezvoltare

Setarea unui mod dezvoltare este necesară aşa ca MPLAB să poată şti ce instrumente vor fi
folosite pentru a executa programul scris. În cazul nostru, avem nevoie să setăm simulatorul ca un
instrument ce este folosit. Făcând clic pe OPTIONS---> DEVELOPMENT MODE, o nouă fereastră
apare ca în figura 3.1:

Fig.3.1.Fereastra de setare a simulatorului

Trebuie să selectăm opţiunea 'MPLAB-SIM Simulator' pentru că acolo se va testa programul.


În afară de această opţiune, este de asemenea disponibilă opţiunea 'Editor Only'. Această opţiune
este folosită doar dacă dorim să scriem un program şi prin programator să scriem ' hex file' într-un
microcontoler. Selecţia modelului microcontrolerului este făcută în partea dreaptă. Pentru că această
carte este bazată pe PIC16F84, trebuie selectat acest model.
De obicei când începem să lucrăm cu microcontrolere, folosim un simulator. După cum
nivelul cunoaşterii va creşte, programul se va scrie într-un microcontroler imediat după translare.
Sfatul nostru este ca să folosiţi totdeauna simulatorul. Chiar dacă programul va părea că se dezvoltă
lent, se va merita la sfârşit.
Conceperea unui proiect

Pentru a începe să scrieţi un program aveţi nevoie să creaţi mai intâi un proiect. Făcând clic pe
PROJECT --> NEW PROJECT puteţi să vă denumiţi proiectul şi să-l memoraţi într-un director pe
care-l doriţi. În figura de mai jos (fig.3.2), este creat un proiect numit 'test.pjt' şi memorat în
directorul c:\PIC\PROJEKTS\.

Fig.3.2. Fereastra de creare a unui nou proiect


După denumirea unui proiect, clic pe OK. O nouă fereastră apare în figura umătoare:

Fig.3.3.Fereastra de editare a unui proiect


Făcând un clic pe "test [.hex]" se activează opţiunea 'Node properties' în colţul din dreapta jos
a ferestrei. Făcând clic pe ea se obţine figura 3.4:
Fig.3.4.Fereastra „Node Properties”
Din această imagine observăm că sunt diferiţi parametri. Fiecare fel corespunde la un
parametru în "Command line". Pentru că memorarea acestor parametri este foarte necomfortabilă,
chiar interzisă pentru începători, s-a introdus ajustarea grafică. Din imagine observăm ce opţiuni
trebuie deschise. Făcând clic pe OK ne întoarcem la fereastra anterioară unde "Add node" este o
opţiune activă. Făcând clic pe ea obţinem următoarea fereastră unde ne denumim programul
asamblor. Să-l denumim"Test.asm" pentru că acesta este primul nostru program în MPLAB.

Fig.3.5.Fereastra de denumire a unui program asamblor


Făcând clic pe OK ne întoarcem la fereastra de început unde observăm adăugat un fişier
asamblor (figura 3.5). Făcând clic pe OK ne întoarcem la mediul de dezvoltare MPLAB.

Conceperea unui nou fişier asamblor(scrierea un program nou)

Când partea "proiect" a lucrului este terminată, trebuie să începem să scriem un program.
Cu alte cuvinte, un nou fişier trebuie deschis, şi se va denumi "test.asm". În cazul nostru, fişierul
trebuie denumit "test.asm" pentru că în proiecte ce au doar un fişier ( ca al nostru), numele
proiectului şi numele fişierului sursă trebuie să fie aceleaşi.
Un nou fişier este deschis făcând clic pe FILE>NEW. Astfel obţinem o fereastră
text(fig.3.6) în interiorul spaţiului de lucru MPLAB.
Fig.3.6.Fereastră text nouă în spaţiul de lucru
Fereastra nouă reprezintă un fişier unde va fi scris programul. Pentru că fişierul nostru trebuie
denumit "test.asm", îl vom denumi aşa. Denumirea se face (ca la toate programele Windows) prin
clic pe FILE>SAVE AS. Obţinem apoi o fereastră ca în figura 3.7:

Fig.3.7.Fereastra de denumire şi salvare a unui proiect


Când obţinem această fereastră, trebuie să scrierm'test.asm' mai jos de 'File name:', şi facem
clic pe OK. După aceea, vom observa numele fişierului 'test.asm' în partea de sus a ferestrei noastre.
Programul trebuie să fie scris într-o fereastră care este deschisă, sau copiată de pe un disc,
folosind opţiunile copy şi paste. Când programul este copiat în "test.asm" window, putem folosi
comanda PROJECT -> BUILD ALL (dacă nu sunt erori), şi o nouă fereastră va apare ca în figura
3.8:
Fig.3.8.Fereastra de construcţie a programului
Putem vedea din imagine că obţinem fişierul "test.hex" ca rezultat al procesului de translare,
pentru care este folosit programul MPASMWIN, şi că este doar un mesaj. În toate aceste informaţii,
ultima propoziţie în fereastră este cea mai importantă pentru că arată dacă translarea a fost sau nu
făcută cu succes. 'Build completed successfully' este un mesaj afirmând că translarea a fost de
succces şi că nu sunt alt erori.
În caz că apare o eroare, trebuie să facem dublu clic pe mesajul eroare în fereastra 'Build
Results'. Aceasta vă va transfera automat în programul asamblor şi în linia unde a fost eroarea.

Simulatorul MPSIM

Simulatorul este o parte a mediului MPLAB care dă o mai bună imagine a lucrărilor unui
microcontroler. Printr-un simulator, putem monitoriza valorile curente ale variabilelor, valorile
registrului şi starea pinilor portului. Este adevărat, simulatorul nu are aceeaşi valoare în toate
programele. Dacă un program este simplu ( ca cel dat aici ca exemplu), simulrea nu este foarte
importantă pentru că setarea pinilor portului B la unu logic nu este o sarcină dificilă. Totuşi,
simulatorul poate fi de mare de mare ajutor la programele mai complicate ce includ timer-i, condiţii
diferite unde ceva se întâmplă , şi alte cerinţe similare (în special cu operaţii matematice).
Simularea, după cum indică numele " simulează lucrul unui microcontroler". În timp ce simulatorul
este conceput ca microcontrolerul să execute instrucţiunile una câte una, programatorul se mişcă
într-un program pas-cu-pas (linie-cu-linie) şi urmăreşte ce se întâmplă cu datele în microcontroler.
Când scrierea s-a terminat, este un obicei bun ca programatorul să-şi verifice mai întâi programul
său în simulator, şi apoi să-l ruleze într-o situaţie reală (fig.3.9).
Primul lucru pe care trebuie să-l facem este, ca într-o situaţie reală, este de a reseta un
microcontroler cu comanda DEBUG > RUN > RESET. Această comandă rezultă în linia îngroşată
poziţionată la începutul unui program, şi contorul programului este poziţionat la zero ceea ce poate
fi observat în linia de stare (pc: 0x00).
Fig.3.9 Fereastra de simulare şi rulare a programului
Una din principalele caracteristici a simulatorului este abilitatea de a vedea starea regiştrilor
din microcontroler. Aceşti regiştri sunt numiţi regiştri de funcţie specială, sau SFR. Putem obţine o
fereastră cu regiştri SFR (fig.3.10.) făcând clic pe WINDOW->SPECIAL FUNCTION
REGISTERS, sau pe icon-ul SFR. În afară de regiştrii SFR, este util de a avea o avea o privire în
interiorul fişierului regiştrilor. Fereastra cu fişierul regiştrilor poate fi deschisă făcând clic pe
WINDOW->FILE REGISTERS. Dacă sunt variabile în program, este bine de a le vedea de
asemenea. Fiecărei variabile îi este desemnată o fereastră (Watch Windows) făcând clic pe
WINDOW->WATCH WINDOWS.

Fig.3.10.Fereastra cu regiştrii SFR


Comanda următoare într-un simulator este DEBUG>RUN>STEP care începe paşii noştri prin
program. Aceeaşi comandă ar fi putut fi desemnată de la o tastatură cu tasta <F7> (în general, toate
comenzile importante au taste desemnate de le claviatură). Folosind tasta F7, programul este
executat pas cu pas. Când obţinem un macro, fişierul conţinând un macro este deschis (Bank.inc), şi
continuăm cu macro. Într-o fereastră cu regiştri SFR putem observa cum registrul W primeşte
valoarea 0xFF şi pe care o trimite la portul B. Făcând clic pe tasta F7 din nou, nu obţinem nimic
pentru că programul a ajuns într-o "infinite loop"-buclă infinită. Bucla infinită este un termen pe
care îl întâlnim adesea. Reprezintă bucla din care un microcontroler nu poate ieşi până nu se
întâmplă întreruperea (dacă este folosită într-un program), sau pănă ce micorcontrolerul va fi
resetat.

5.2 ORCAD – Realizare scheme electrice şi cablaje

Crearea unui proiect nou


File>New>Project
Comenzi care au ca consecinţă deschiderea ferestrei de creare proiect nou(fig.3.11):

Fig.3.11.Fereastra de creare a unui proiect nou


Name -> numele noului proiect
Se alege tipul proiectului în cazul de faţă Analog or Mixed-Signal Circuit Wizard
În partea dreaptă se poate vedea o scurtă descriere a programului ce urmează să fie creat.
Location -> permite alegerea directorului unde va fi creat proiectul

Crearea schemelor cablajului


După crearea proiectului „spaţiului de lucru” se poate începe desenarea propriu-zisă a
schemelor logice care vor fi folosite în continuare pentru realizarea cablajului.
În ORCAD pot fi definite mai multe scheme care sunt introduse în acelaşi proiect pentru
uşurarea înţelegerii şi a urmăririi traseelor.
De observat că odată terminată o schemă şi începerea trasării cablajului „deschiderea
programului Layout” nu se pot aduce modificări ale conexiunilor decât prin revenirea în Capture.
Pentru înţelegerea uşoară a programului redenumim pagina iniţială, creată automat, dându-i
noul nume Sursă, deoarece va deţine toate informaţiile necesare creării stabilizatorului de tensiune.

Fig.3.12.Fereastra de editare a unui proiect


După cum se vede pentru a redenumi o pagină a proiectului este necesar să se facă clik pe
semnul + din dreptul următoarelor căsuţe: Design resource, /sursa dsn, schematic1 şi click dreapta
pe pagina care trebuie redenumită.
Pentru a adăuga componente noi (piese) se urmăresc următorii paşi:
a) se selectează pagina proiectului în care se introduce componenta
b) se alege din meniu Place, Part... sau se face click a se vedea figura 3.13.:

Fig.3.13.Fereastra de introducere a componentelor


Pentru alegerea pieselor se foloseşte fereastra din fig.3.14 care se deschide la comanda part...
Fig.3.14.Fereastra de alegere a componentelor
Part: specifică numele piesei care se doreşte;
Libraris: arată care sunt bibliotecile selectate „în care se face căutarea”;
Add Library...: adaugă noi librării la proiect;
Remove Library: elimină o bibliotecă din căutare;
Part Search...: caută o componentă în toate librăriile disponibile în directorul specificat;
Datorită programului Capture CIS odată făcută şi verificată o schemă logică ca cea de mai sus,
poate fi folosită şi în alte programe cu ajutorul comenzilor Copy, Paste. Acest lucru reduce foarte
mult timpul de lucru deoarece o schemă verificată poate fi foarte uşor refolosită fără a fi nevoie să
se construiască din nou schema logică a cablajului.
După realizarea schemelor logice ale diverselor părţi componente ale proiectului se trece la
realizarea cablajului schemei cablajului imprimat, pentru aceasta se vor urma următorii paşi:
Creerea Netlist-listei fişier care va fi folosit de programul Layout pentru realizarea schemei
cablajului imprimat.
Pentru crearea net-listei se va selecta obţiunea Create Netlist din meniul Tools care va duce la
deschiderea ferestrei Create Netlist(fig.3.15.) unde se poate alege tipul listei şi alte obţiuni în funcţie
de tipul listei selectat. Unele tipuri de liste care pot fi create sunt:

Fig.3.15.Fereastra de creare a net-listului


Pspice – cu ajutorul căreia se pot executa verificări funcţionale în Pspice;
Spice – pentru realizarea verificărilor cu Spice;
Layout – pentru realizarea cabaljului imprimat;
În cadrul opţiunii Layout se poate alege numele şi locul unde se va salva fişierul, se poate opta
între inchi şi milimetrii, iar în cazul în care schema cablajului este deja realizată dar s-au adus
modificări de ultimă oră se poate bifa optiunea Run Eco to Layout care adaugă modificările făcute
fără ca să modifice tot cablajul, ci modificând doar acolo unde este cazul.
Odată realizat net-listul se poate trece la realizarea propiu-zisă a schemei cablajului imprimat
prin executarea următorilor paşi: - rularea programului Layout
- crearea unui proiect nou
La crearea unui proiect nou se au în vedere următorii paşi:
 alegerea unei foi din librărie
 încărcarea fişierului sursă
 alegerea unui nume pentru noul cablaj
După executarea acestor paşi programul rulează un program specializat Automatic ECO
Utility care caută în bazele de date instalate pe sistem (baze de date cu caracteristici ale pieselor
electronice) pentru fiecare componentă folosită în CaptureCIS o corespondenţă fizică.

Fig.3.16.Fereastra de rulare a progarmului Automatic Eco

Dacă o piesă electronică utilizată în proiect nu are corespondenţă în bazele de date utilizatorul
are două variante: să aleagă manual din baza de date o corespondenţă pentru piesa dată, iar în cazul
în care nu găseşte nimic trebuie să creeze singur o nouă piesă (numai distanţele între pini nu şi piesa
fizic) sau poate termina programul fără a realiza cablajul şi să modifice în CaptureCIS piesa folosită
(fig.3.17.).
Fig.3.17.Fereastra pentru modificarea unei piese noi
În figura următoare se poate vedea figura 3.18. cu fereastra pentru crearea unei noi piese:

Fig.3.18.Fereastra pentru crearea unei noi piese


Obs: O dată facută o legatură între o piesa fizică exemplu tranzistorul BC547 şi un model de
piesă care să fie aşezat pe placă această legatură se va ţine pentru toate tranzistoarele BC547
folosite în proiect nefiind necesar crearea legăturii pentru fiecare piesă în parte (pentru piese
identice).
Pentru proiectul de faţă după rularea paşilor precedenţi proiectul arată în felul următor ca în
fig.3.19:

Fig.3.19.Fereastra cu cablajul realizat


În figura de mai sus se vede că conexiunile sunt făcute pe layerul global (culoare galbenă)
ceea ce înseamnă că pot exista (pe acest layer sau între acest layer şi celelalte layere “albastru partea
de sus a cablajului”, “rosu partea de jos a cablajului”) intersecţii fără ca programul să anunţe
utilizatorul.
Primul pas în momentul de faţă este poziţionarea pieselor pe cablaj după care se trece la
trasarea cablajului. Programul are grijă ca cablajul să nu intersecteze două fire de acceaşi culoare
care ar duce la o funcţionare dezastruoasa a cablajului sau chiar la nefuncţionarea cablajului.
Ultimul pas software pentru realizarea cablajului imprimat este printarea schemelor (fig.3.20),
care se execută cu comanda Print/Plot, care deschide caseta de dialog din figura următoare:

Fig.3.20.Fereastra pentru printarea cablajului


Unde se pot alege urmatoarele opţiuni în funcţie de tehnologia de realizare a cablajului
folosită:
Force Black & White: desenare negru;
Keep Drill Holes Open: nu astupă găurile în special pentru cablajele profesionale realizate cu
fotorezist.
Center on page: centrează pe pagină
Mirror: pentru a nu exista greşeli în amplasarea pieselor pe cablajul imprimat se foloseşte
miroruirea, deoarece partea de pe spate a cablajului trebuie văzută în oglindă.
După scoaterea la imprimantă a celor două layere se poate trece la realizarea fizică a
cablajului.

CAPITOLUL 6
Descrierea aplicaţiei

6.1 Schema de comandă şi control a microcontrolerului


12 VCC

Releu 1N4007
12 VCC
2
J17 1 10K 10K 1N4007

3
4 J1
3 3 BC107 2
2 5 1

3
1 10K 2
2 BC107 2 1N4007 CON2

1
CON3 BC107

10K 10K

1
12 VCC 5 VCC

Releu 1N4007
2
J18 1 4k7 U2
3

4 J14
3 3 BC107 2 1 40 10K
2 MCLR RB7 1 Randul1
5 2 39 10K
1 RA0 RB6 2 Randul2
10K 3 38 10K
RA1 RB5 3 Randul3
4 37 10K
1

RA2 RB4 4 Randul4


CON3 5 36 10K
RA3 RB3 5 Randul5
6 35 10K
RA4 RB2 6 Randul6
7 34 10K
RA5 RB1 7 Randul7
8 33 10K
RE0 RB0 8 Randul8
9 32
C7 10 RE1 VDD 31 J15
11 RE2 VSS 30 10K
5 VCC VDD RD7 1 Coloana8
22 pF Y1 12 29 10K
VSS RD6 2 Coloana7
4 MHz 13 28 10K
OSC1 RD5 3 Coloana6
C8 14 27 10K
OSC2 RD4 4 Coloana5
15 26
RC0 RC7 5 Coloana4
22 pF 16 25
RC1 RC6 6 Coloana3
17 24
RC2 RC5 7 Coloana2
18 23
RC3 RC4 8 Coloana1
10K 19 22 10K
10K 20 RD0 RD3 21 10K
RD1 RD2

PIC16F877A

330
330
330
330
330
330
330
330
4
3
2
1
4
3
2
1

A B C D E F G DP

Desrierea funcţionării schemei de comandă şi control a microcontrolerului

În schema principală s-au folosit următoarele piese care au roluri bine definite în
funcţionarea machetei ascensorului, aceste piese sunt:
- Y1 (cuarţ de 4Mhz)
- C7, C8 (condensatori de 22pF...33pF)
Acest cuarţ şi cele două condensatoare sunt folosite pentru realizarea oscilatorului
microcontrolerului, oscilator pe bază de cuart cu frecvenţa de oscilaţie de 4Mhz (ceea ce înseamnă
că microcontrolerul execută 1.000.000 instrucţiuni pe secundă).
- s-a folosit o rezistenţă de 10k pentru a se lega pinul 1 (MCLR) la 5VCC obligatoriu
pentru buna funcţionare a microcontrolerului.
- Pinul 11 este legat la 5 V c.c
- Pinul 12 este legat la minusul sursei de alimentare
Pe pinii 9, 10 ai microcontrolerului s-au cuplat două relee prin intermediul a doi tranzistori,
două rezistenţe care comandă cei doi tranzistori şi două diode de protecţie care protejeaza cei doi
tranzistori împotriva curenţilor autoinduşi care apar în momentul în care bobina este cuplată s-au
decuplată.
Releul este un dispozitiv electromecanic care transformă un semnal electric într-o mişcare
mecanică. El este alcătuit dintr-o bobină din conductori izolaţi înfăşuraţi pe un nucleu metalic şi o
armătură metalică cu unul sau mai multe contacte. În momentul în care o tensiune de alimentare
este aplicată la bornele unei bobină, curentul circulă şi va fi produs un câmp magnetic care mişcă
armătura pentru a închide un set de contacte şi/sau pentru a deschide un alt set. Când alimentarea
este dezactivată din releu, cade fluxul magnetic din bobină şi se produce o tensiune înaltă în direcţia
opusă. Această tensiune poate strica tranzistorul de comandă şi de aceea este conectată o diodă cu
polarizare inversă de-a lungul bobinei pentru a scurtcircuita vârfurile de tensiune în momentul în
care apar.
Multe microcontrolere nu pot comanda un releu direct şi de aceea un tranzistor de comandă
este necesar. Un HIGH pe baza tranzistorului activează tranzistorul şi acesta la rândul lui activează
releul. Releul poate fi conectat la orice dispozitiv electric prin intermediul contactelor. Rezistenţa de
10K din baza tranzistorului limitează curentul dinspre microcontroler la o valoare solicitată de
tranzistor. Rezistenţa de 10K dinspre bază şi bara negativă previne ca tensiunile de zgomot aplicate
în baza tranzistorului să activeze releul. De aceea numai un semnal clar de la microcontroler va
activa releul.
Aceste două relee sunt folosite pentru inversarea sensului de mişcarea a motorului, motor
care este de tip universal iar releele schimbă polaritatea curentului care trece prin rotor în felul
acesta schimbând de fapt sensul de rotaţie al motorului.
Pentru o mai mare protecţie a microcontrolerului se poate folosi pe liniile de ieşire un
optocuplor care să realizeze separarea optică între circuitul comandat şi circuitul de comandă.
Un releu poate fi de altfel activat prin intermediul unui optocuplor care în acelaşi timp
amplifică curentul provenit de la ieşirea microcontrolerului şi oferă un grad înalt de izolare.
Optocuploarele HIGH CURRENT deobicei conţin un tranzistor cu o ieşire „Darlington” pentru a
oferi curent mare de ieşire. Conectarea prin intermediul unui optocuplor este recomandată în mod
special pentru aplicaţiile cu microcontroler unde motoarele sunt activate şi zgomotele de comutaţie
provenite de la motor pot ajunge în microcontroler prin intermediul liniilor de alimentare.
Optocuplorul comandă un releu iar releul activează motorul.
În figura următoare se poate vedea conectarea unui consumator la un microcontroler prin
intermediul unui optocuplor.
- Pe portul C al microcontrolerului am conectat un afişaj numeric cu doi digiţi în felul
următor:
- Pinul 0 --- segmentul A
- Pinul 1 --- segmentul B
- Pinul 2 --- segmentul C
- Pinul 3 --- segmentul D
- Pinul 4 --- segmentul E
- Pinul 5 --- segmentul F
- Pinul 6 --- segmentul G
- Pinul 7 --- punctual decimal (care de fapt afişează cifra 1 pe primul digit “zece”)
Pe pinii 2,3 sunt conectaţi doi tranzistori care au rol de a seta viteza de deplasare a
ascensorului cu ajutorul blocului de comandă, bloc de comandă pe care pot fi reglate mai multe
viteze în funcţie de rezistenţa de comandă dar pentru acest proiect au fost de ajuns 2 astfel de
comenzi.

6.2 Schema de comandă a surselor de alimentare


U3
LM7812/TO
1 3
VIN VOUT 12 VCC

GND
+ C3

2
3
1 T1 3 U4
LM7805/TO
J11 2 - + 4 1 3
VIN VOUT 5 VCC
220V F6
2 2 4 + C5 + C6

GND
220 V 1
FUSE

2
Sursa de alimentare folosită la acest proiect este compusă din:
1. Conectorul J1 care are rolul de a face legatura între sursa de alimentare (priză) şi montaj
2. Siguranta F6 are rolul de protecţie la supracurenţi
3. Conectorul J1 este conectat la transformatorul T1 prin intermediul siguranţei F6 care este un
transformator coborâtor de tensiune de la 220V la 12V
4. Puntea redresoare 1 are rolul de a transforma curentul alternativ de pe pinii 1,3 în curent
continuu la pinii 2 (-) şi 4 (+)
5. Condensatorul C5 are rol de filtraj şi se leagă între pinii 2 şi 4 ai punţii redresoare
6. La condensatorul C5 se leagă şi stabilizatorul LM7805 care are rolul de stabilizare şi reglare
a tensiunii de ieşire la borna 3 a stabilizatorului găsindu-se un condensator de filtraj, la
bornele acestui condensator găsindu-se o tensiune stabilizată de 5V CC care este necesară
pentru alimentarea microcontrolerului şi a tuturor elementelor de mică putere
7. Sursa LM7812 se leagă la C5 şi are ca scop împreună cu condensatorul C3 obţinerea unei
tensiuni de 12V CC necesară pentru alimentarea releelor.

6.3 Multiplexarea butoanelor


1
2
3
4
5
6
7
8
SW1 SW2 SW3 SW4 SW5 SW6 SW7 SW8

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

SW9 SW16 SW17 SW18 SW19 SW20 SW21 SW22

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

SW10 SW23 SW24 SW25 SW26 SW27 SW28 SW29

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

SW11 SW30 SW35 SW40 SW45 SW50 SW55 SW60


J13 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
8
7
6
5 SW12 SW31 SW36 SW41 SW46 SW51 SW56 SW61
4
3 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
2
1

CON8
SW13 SW32 SW37 SW42 SW47 SW52 SW57 SW62

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

SW14 SW33 SW38 SW43 SW48 SW53 SW58 SW63

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

SW15 SW34 SW39 SW44 SW49 SW54 SW59 SW64

1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2

Pentru citirea tuturor senzorilor s-a folosit multiplexarea unei tastaturi de 8 linii x 8 coloane
liniile fiind legate pe pinii portului B iar coloanele fiind legate pe pinii portului D rezultând în total
8*8=64 butoane.
Sunt necesare atâtea butoane (senzori) din următoarele motive:
- 12 butoane în lift (P.....10 + urgenţă)
- 11 butoane pe paliere (P....10)
- 12 butoane uşi deschise (uşa internă la cabină + cele 11 uşi de pe paliere)
- 11 butoane poziţie lift la etaj
- 12 butoane poziţie lift între etaje + urgenţă (mai jos de parter sau mai sus de et. 10)
- total 58 butoane

6.4 Descrierea microcontrolerului ales

PIC16F877 aparţine unei clase de microcontrolere de 8 biţi cu arhitectură RISC. Structura


lui generală este arătată în schiţa următoare reprezentând blocurile de bază.
Memoria program (FLASH)-pentru înmagazinarea unui program scris. Pentru că memoria
ce este făcută în tehnologia FLASH poate fi programată şi ştearsă mai mult decât odată, aceasta
face microcontrolerul potrivit pentru dezvoltarea de componentă.
EEPROM-memorie de date ce trebuie să fie salvate când nu mai este alimentare. Este în
mod uzual folosită pentru înmagazinarea de date importante ce nu trebuie pierdute dacă sursa de
alimentare se întrerupe dintr-o dată. De exemplu, o astfel de dată este o temperatură prestabilită în
regulatoarele de temperatură. Dacă în timpul întreruperii alimentării această dată se pierde, va
trebui să facem ajustarea încă o dată la revenirea alimentării. Asfel componenta noastră pierde în
privinţa auto-menţinerii.
RAM-memorie de date folosită de un program în timpul executării sale. În RAM sunt
înmagazinate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la întreruperea
sursei de alimentare.
PORTUL A, PORTUL B, PORTUL C, PORTUL D, PORTUL E sunt conexiuni fizice între
microcontroler şi lumea de afară. Portul A are 6 pini, portul B are 8 pini, portul C are 8 pini, portul
D are 8 pini iar portul E are 3 pini.
TIMER-ul LIBER este un registru de 8 biţi în interiorul microcontrolerului ce lucrează
independent de program. La fiecare al patrulea impuls de ceas al oscilatorului îşi încrementează
valoarea lui până ce atinge maximul (255), şi apoi începe să numere tot din nou de la zero. După
cum ştim timpul exact dintre fiecare două incrementări ale conţinutului timer-ului, poate fi folosit
pentru măsurarea timpului ce este foarte util la unele componente.
UNITATEA DE PROCESARE CENTRALĂ are rolul unui elemnet de conectivitate între
celelalte blocuri ale microcontrolerului. Coordonează lucrul altor blocuri şi execută programul
utilizatorului.

Fig.4.1.Conectivitatea între blocurile microcontrolerului


Fig.4.2.Arhitecturile Harvard şi Von-Neumann

CISC, RISC
S-a spus deja că PIC1684 are o arhitectură RISC. Acest termen este adeseori găsit în
literatura despre computere, şi are nevoie să fie explicat aici mai în detaliu. Arhitectura Harvard este
un concept mai nou decât von-Neumann`s. S-a născut din nevoia de mărire a vitezei
microcontrolerului. În arhitectura Harvard, bus-ul de date şi bus-ul de adrese sunt separate. Astfel
un mare debit de date este posibil prin unitatea de procesare centrală, şi bineînţeles, o viteză mai
mare de lucru. Separând un program de memoria de date face posibil ca mai departe instrucţiunile
să nu trebuiască să fie cuvinte de 8 biţi. PIC16F877 foloseşte 14 biţi pentru instrucţiuni ceea ce
permite ca toate instrucţiunile să fie instrucţiuni de un cuvânt. Este de asemenea tipic pentru
arhitectura Harvard să aibă mai puţine instrucţiuni decât von-Newmann şi să aibă instrucţiuni
executate uzual intr-un ciclu.
Microcontrolerele cu arhitectură Harvard sunt de asemenea numite "microcontrolere RISC".
RISC înseamnă Reduced Instruction Set Computer. Microcontrolerele cu arhitectura von-Newmann
sunt numite "microcontrolere CISC". Titlul CISC înseamnă Complex Instruction Set Computer.
Pentru că PIC16F877 este un microcontroler RISC, aceasta înseamnă că are un set redus de
instrucţiuni, mai precis 35 de instrucţiuni (de ex. microcontrolerele INTEL şi Motorola au peste 100
de instrucţiuni). Toate aceste instrucţiuni sunt executate într-un ciclu cu excepţia instrucţiunilor
jump şi branch. Conform cu ceea ce spune constructorul, PIC16F877 ajunge la rezultate de 2:1 în
compresia cod şi 4:1 în viteză în comparaţie cu alte microcontrolere de 8 biţi din clasa sa.

Aplicaţii
PIC16F877 se potriveşte perfect în multe folosinţe, de la industriile auto şi aplicaţiile de
control casnice la instrumentele industriale, senzori la distanţă, mânere electrice de uşi şi
dispozitivele de securitate. Este de asemenea ideal pentru cardurile smart ca şi pentru aparatele
alimentate de baterie din cauza consumului lui mic.
Memoria EEPROM face mai uşoară aplicarea microcontrolerelor la aparate unde se cere
înmagazinarea permanentă a diferitor parametri (coduri pentru transmiţătoare, viteza motorului,
frecvenţele receptorului, etc.). Costul scăzut , consumul scăzut, mânuirea uşoară şi flexibilitatea fac
PIC16F877 aplicabil chiar şi în domenii unde microcontrolerele nu au fost prevăzute înainte
(exemple:funcţii de timer, înlocuirea interfeţei în sistemele mari, aplicaţiile coprocesor, etc.)
Programabilitatea sistemului acestui cip (împreună cu folosirea a doar doi pini în transferul de date)
face posibilă flexibilitatea produsului, după ce asamblarea şi testarea au fost terminate. Această
capabilitate poate fi folosită pentru a crea producţie pe linie de asamblare, de a înmagazina date de
calibrare disponibile doar după testarea finală, sau poate fi folosit pentru a îmbunătăţi programele la
produse finite.

Ciclul de clock / instrucţiune


Clock-ul sau ceasul este starter-ul principal al microcontrolerului, şi este obţinut dintr-o
componentă de memorie externă numită "oscilator". Dacă ar fi să comparăm un microcontroler cu
un ceas de timp, "clock-ul" nostru ar fi un ticăit pe care l-am auzi de la ceasul de timp. În acest caz,
oscilatorul ar putea fi comparat cu arcul ce este răsucit astfel ca ceasul de timp să meargă. De
asemenea, forţa folosită pentru a întoarce ceasul poate fi comparată cu o sursă electrică.
Clock-ul de la oscilator intră într-un microcontroler prin pinul OSC1 unde circuitul intern al
unui microcontroler divide clock-ul în 4 clock-uri egale Q1,Q2,Q3 şi Q4 ce nu se suprapun. Aceste
4 clock-uri constituie un ciclu de o singură instrucţiune (numit de asemenea ciclu maşină) în timpul
căreia o instrucţiune este executată.
Executarea instrucţiunii începe prin apelarea unei instrucţiuni care este următoarea în linie.
Instrucţiunea este apelată din memoria program la fiecare Q1 şi este scrisă în registrul de
instrucţiuni la Q4. Decodarea şi executarea instrucţiunii sunt făcute între următoarele cicluri Q1 şi
Q4. În următoarea diagramă putem vedea relaţia dintre ciclul instrucţiunii şi clock-ul oscilatorului
(OSC1) ca şi aceea a clock-urilor interne Q1-Q4. Contorul de program(PC) reţine informaţia despre
adresa următoarei instrucţiuni.

Fig.4.3.Ciclul de instrucţiune al microcontrolerului


Pipelining
Ciclul de instrucţiuni constă din ciclurile Q1, Q2, Q3 şi Q4. Ciclurile de instrucţiuni de
apelare şi executare sunt conectate într-un aşa fel încât pentru a face o apelare, este necesar un ciclu
cu o instrucţiune, şi este nevoie de încă una pentru decodare şi executare. Totuşi, datorită pipeline-
ului sau liniei directe, fiecare instrucţiune este efectiv executată într-un singur ciclu. Dacă
instrucţiunea cauzează o schimbare în contorul programului, şi PC-ul nu direcţionează spre
următoarea ci spre alte adrese (poate fi cazul cu subprogramele jumps sau de apelare), 2 cicluri sunt
necesare pentru executarea unei instrucţiuni. Aceasta este pentru că instrucţiunea trebuie procesată
din nou, dar de data aceasta din partea adresei corecte. Ciclul începe cu clock-ul Q1, prin scrierea
într-un registru (IR). Decodarea şi executarea începe cu clock-urile Q2, Q3 şi Q4.

Fig.4.4.
TYCO citeşte instrucţiunea MOVLW 55h (nu are importanţă pentru noi ce instrucţiune a fost
executată, ce explică de ce nu este un dreptunghi în partea de jos).TCYI execută instrucţiunea
MOVLW 55h şi citeşte MOVWF PORTB.
TCY2 execută MOVWF PORT şi citeşte CALL SUB_1.TCY3 execută o apelare a unui
subprogram CALL SUB_1, şi citeşte instrucţiunea BSF PORTA, BIT3. Pentru că instrucţiunea
aceasta nu este aceea de care avem nevoie, sau nu este prima instrucţiune a unui subprogram
SUB_1 a cărui execuţie este următoarea în ordine, instrucţiunea trebuie citită din nou. Acesta este
un bun exemplu a unei instrucţiuni având nevoie de mai mult de un ciclu.
TCY4 ciclul instrucţiunii este total folosit pentru citirea primei instrucţiuni dintr-un
subprogram la adresa SUB_1. TCY5 execută prima instrucţiune dintr-un subprogram SUB_1 şi
citeşte următoarea.

Semnificaţia pinilor
PIC16F84 are un număr total de 18 pini. Cel mai adesea se găseşte într-o capsulă de tip DIP18
dar se poate găsi de asemenea şi într-o capsulă SMD care este mai mică ca cea DIP. DIP este
prescurtarea de la Dual In Package. SMD este prescurtarea de la Surface Mount Devices sugerând
că găurile pentru pini unde să intre aceştia , nu sunt necesare în lipirea acestui tip de componentă.
Fig.4.5.Semnificaţia pinilor la PIC 16F877
Pinii microcontrolerului PIC16F84 au următoarea semnificaţie:
Pin nr. 1 MCLR Resetează intrarea şi tensiunea de programare Vpp a microcontrolerului.
Pin nr. 2 RA0 Primul pin la portul A. Poate fi configurat ca intrare analogică AN0.
Pin nr. 3 RA1 Al doilea pin la portul A. Poate fi configurat ca intrare analogică AN1.
Pin nr. 4 RA2 Al treilea pin la portul A. Poate fi configurat ca intrare analogică AN2 sau ca referinţă
de tensiune negativă.
Pin nr. 5 RA3 Al patrulea pin la portul A. Poate fi configurat ca intrare analogică AN3 sau ca
referinţă de tensiune pozitivă.
Pin nr. 6 RA4 Al cincelea pin la portul A. TOCK1 care funcţionează ca timer se găseşte de
asemenea la acest pin.
Pin nr. 7 RA5 Al şaselea pin la portul A. Poate fi configurat ca intrare analogică AN4 sau ca selectie
slave pentru portul serial sincron de date.
Pin nr. 8 RE0 Primul pin la portul E. Poate fi configurat ca intrare analogică AN5.
Pin nr. 9 RE1 Al doilea pin la portul E. Poate fi configurat ca intrare analogică AN6.
Pin nr. 10 RE2 Al treilea pin la portul E. Poate fi configurat ca intrare analogică AN7.
Pin nr. 11 Vdd Polul pozitiv al sursei.
Pin nr. 12 VSS Alimentare, masă.
Pin nr. 13 OSC1 Pin desemnat pentru conectarea la un oscilator.
Pin nr. 14 OSC2 Pin desemnat pentru conectarea la un oscilator.
Pin nr. 15 RC0 Primul pin la portul C. Timer1.
Pin nr. 16 RC1 Al doilea pin la portul C. Poate fi configurat ca port de captură sau ca ieşire PWM.
Pin nr. 17 RC2 Al treilea pin la portul C. Poate fi configurat ca port de captură sau ca ieşire PWM.
Pin nr. 18 RC3 Al patrulea pin la portul C. Poate fi configurat ca ceas serial pentru transmisie date.
Pin nr. 19 RD0 Primul pin la portul D. Nu are funcţie adiţională.
Pin nr. 20 RD1 Al doilea pin la portul D. Nu are funcţie adiţională.
Pin nr. 21 RD2 Al treilea pin la portul D. Nu are funcţie adiţională.
Pin nr. 22 RD3 Al patrulea pin la portul D. Nu are funcţie adiţională.
Pin nr. 23 RC4 Al cincelea pin la portul C. Poate fi configurat ca SPI data IN.
Pin nr. 24 RC5 Al şaselea pin la portul C. Poate fi configurat ca SPI data OUT.
Pin nr. 25 RC6 Al şaptelea pin la portul C. Poate fi configurat ca transmitator USART.
Pin nr. 26 RC7 Al optulea pin la portul C. Poate fi configurat ca receptor USART.
Pin nr. 27 RD4 Al cincelea pin la portul D. Nu are funcţie adiţională.
Pin nr. 28 RD5 Al şaselea pin la portul D. Nu are funcţie adiţională.
Pin nr. 29 RD6 Al şaptelea pin la portul D. Nu are funcţie adiţională.
Pin nr. 30 RD7 Al optulea pin la portul D. Nu are funcţie adiţională.
Pin nr. 31 VSS Alimentare, masă.
Pin nr. 32 Vdd Polul pozitiv al sursei.
Pin nr. 33 RB0 Primul pin la portul B. Intrarea întreruptă este o funcţie adiţională.
Pin nr. 34 RB1 Primul pin la portul B. Nu are funcţie adiţională.
Pin nr. 35 RB2 Al doilea pin la portul B. Nu are funcţie adiţională.
Pin nr. 36 RB3 Al treilea pin la portul B. Functionează şi ca selecţie pentru programarea la tensiune
redusă.
Pin nr. 37 RB4 Al patrulea pin la portul B.Întrerupere la schimbarea stării.
Pin nr. 38 RB5 Al cincilea pin la portul B. Întrerupere la schimbarea stării.
Pin nr. 39 RB6 Al şaselea pin la portul B. Întrerupere la schimbarea stării. Linia de 'Clock' în mod
programare.
Pin nr. 40 RB7 Al şaptelea pin la portul B. Întrerupere la schimbarea stării. Linia 'Dată' în mod
programare.

6.5 Descrierea realizării practice – software


Macroul de schimbare al bancurilor de memorie ale microcontrolerului, PIC16F877A
(BANK0, BANK1, BANK2, BANK3) şi macroul pentru salvarea datelor în monentul detectării
unei întreruperi în cazul de faţă în cazul detectării întreruperi la trecerea timpului pe timerul 2, care
este folosit pentru afişarea pe display ca timp de licărire a celor doi digiţi.
În continuare se prezintă codurile sursă ale acestor macrouri:
Subrutina selecţie BANK0 – se desetează biţii STATUS,5 şi STATUS,6
BANK0 MACRO
BCF STATUS,5
BCF STATUS,6
ENDM
Subrutina selecţie BANK1 – se desetează bitul STATUS,6 şi se setează bitul STATUS,5
BANK1 MACRO
BSF STATUS,5
BCF STATUS,6
ENDM
Subrutina selecţie BANK2 – se desetează bitul STATUS,5 şi se setează bitul STATUS,6
BANK2 MACRO
BCF STATUS,5
BSF STATUS,6
ENDM
Subrutina selecţie BANK3 – se setează biţii STATUS,5 şi STATUS,6
BANK3 MACRO
BSF STATUS,5
BSF STATUS,6
ENDM
În momentul în care se detectează o întrerupere (microcontrolerul a detectat un stimul intern
sau extern important: întrerupere pe TMR2, apăsare de buton, etc) microcontrolerul cu ajutorul
rutinei PUSH salvează toate datele importante (W, OPTION_REG, STATUS) după care se execută
întreruperea (se actualizează display-urile) şi după ce se termină instrucţiunile care trebuiesc
executate la întrerupere microcontrolerul cu ajutorul rutinei POP revine la starea iniţială.

PUSH MACRO
MOVWF W_TEMP
SWAPF W_TEMP,F
BANK1
SWAPF OPTION_REG,W
MOVWF OPTION_TEMP
BANK0
SWAPF STATUS,W
MOVWF STATUS_TEMP
ENDM
POP MACRO
SWAPF STATUS_TEMP,W
MOVWF STATUS
BANK1
SWAPF OPTION_TEMP,W
MOVWF OPTION_REG
BANK0
SWAPF W_TEMP,W
ENDM

Întreruperea în timpul depăşirii contorului TMR2


Depăşirea contorului TMR2 (de la FFh la 00h) va seta bitul T2IF (INTCON<2>). Aceasta
este o întrerupere foarte importantă pentru că multe probleme reale se por rezolva folosind această
întrerupere. Unul din exemple este măsurarea timpului. Dacă ştim cât timp are nevoie contorul
pentru a completa un ciclu de la 00h to FFh, atunci numărul de întreruperi înmulţit cu acea durată
de timp va da timpul total scurs. În rutina de întrerupere unele variabile vor fi incrementate în
memoria RAM, valoarea acelei variabile înmulţite cu timpul de care are nevoie contorul pentru a
contoriza într-un ciclu întreg, va da timpul total scurs. Întreruperea poate fi pornită/oprită prin
setarea/resetarea bitului T2IE (INTCON<5>).

Deoarece în programe este necesar cateodata o întârziere variabila şi destul de lungă putem
folosi macrourile de intarziere Wait.inc conţine două macrouri: WAIT şi WAITx. Prin intermediul
acestor macrouri este posibil să repartizăm întârzieri de timp în intervale variate. Amândouă
macrouri folosesc depăşirea contorului TMR0 ca un interval de timp de bază. Prin schimbarea
prescaler-ului putem schimba lungimea intervalului depăşirii contorului TMR0.

; Declararea constantelor
CONSTANT PRESCstd = b'00000001' ;Valoarea standard pentru TMR0
; Macrouri
WAIT macro timeconst_1
movlw timeconst_1
call WAITstd
endm
WAITX macro timeconst_2, PRESCext
movlw timeconst_2
movwf WCYCLE
movlw PRESCext
call WAIT_x
endm
; Subprograme
WAITstd
movwf WCYCLE
movlw PRESCstd
WAIT_x
clrf TMR0
BANK1
movwf OPTION_REG
BANK0
WAITa
bcf INTCON,2
WAITb
btfss INTCON,2
goto WAITb
decfsz WCYCLE,1
goto WAITa
RETURN

Dacă folosim un oscilator (rezonator) de 4MHz, pentru valorile prescaler-ului 0,1 şi 7 care
divid ceasul de bază al oscilatorului, intervalul urmat de o depăşire a contorului TMR0 va fi 0.512,
1.02 şi 65.3ms. Practic, aceasta înseamnă că cea mai mare întârziere va fi 256x65.3ms care este
egală cu 16.72 secunde.
Pentru a utiliza macrouri în programul principal este necesar să declarăm variabilele wcycle
şi prescWAIT după cum vom vedea în exemplele ce vor urma acestui capitol. Macroul WAIT are
un singur argument. Valoarea standard atribuită prescaler-ului acestui macro este 1 (1.02ms), şi nu
poate fi schimbată.

WAIT timeconst_1

timeconst_1 este un număr de la 0 la 255. Prin multiplicarea acestui număr cu perioada de timp de
depăşire (overflow) vom obţine durata totală a întârzierii:

TIME = timeconst_1 x 1.02ms.

Exemplu: WAIT .100

Exemplul arată cum să obţinem o întârziere de 100x1.02ms, sau durata totală de 102ms.

Spre deosebire de macroul WAIT, macroul WAITX mai are un argument care poate atribui o
valoare prescaler-ului. Macroul WAITX are două argumente:

timeconst_2 este un număr de la 0 la 255. Prin multiplicarea acestui număr cu perioada de timp de
depăşire (overflow) vom obţine durata totală a întârzierii: TIME = timeconst_1 x 1.02ms x
PRESCext.

PRESCext este un număr de la 0 la 7 care setează relaţia dintre tact şi timer-ul TMR0.

Exemplu: WAITX .100,7

Exemplul arată cum să obţinem o întârziere de 100x65.3ms, sau durata totală de 6,53s.

Segmentele într-un afişaj cu 7 segmente sunt aranjate astfel încât să formeze un singur digit
de la 0 la F, după cum se observă în desen:
Putem afişa un număr pe mai mulţi digiţi prin conectarea de afişaje adiţionale. Chiar dacă
este mult mai confortabil să lucrăm cu LCDuri, afişajele cu 7 segmente sunt încă un standard în
industrie. Aceasta din cauza rezistenţei la temperatură, vizibilităţii şi unghiului larg de observare.
Segmentele sunt marcate cu litere mici: a, b, c, d, e, f, g şi dp, unde dp este punctul zecimal. Cele 8
LEDuri din cadrul fiecărui afişaj pot fi aranjate cu catod comun sau cu anod comun. La un afişaj cu
catod comun, catodul comun trebuie să fie conectat la linia de 0v şi LEDurile sunt activate cu unu
logic. Afişajele cu anod comun trebuie să prezinte anodul comun conectat la linia de +5v.
Segmentele sunt activate cu zero logic. Dimensiunea afişajului este măsurată în milimetri; se
măsoară doar înălţimea digitului (nu carcasa, doar digitul!). Afişajele sunt disponibile cu digiţi de
înălţimi de 7, 10, 13.5, 20 sau 25 milimetri. Sunt de diferite culori incluzând: roşu, portocaliu şi
verde. Cea mai simplă metodă pentru a comanda un afişaj este prin intermediul unui driver de
afişaj. Acestea sunt disponibile pentru până la 4 afişaje. Alternativ, afişajele pot fi comandate de un
microcontroler, şi, dacă este necesar mai mult decât un afişaj, metoda de comandare se numeşte
„multiplexare”. Principala diferenţă dintre cele două metode este numărul de linii de comandă. Un
driver special poate avea numai o singură linie de tact şi integratul de comandă va accesa toate
segmentele şi va incrementa afişajul. Dacă avem doar un singur afişaj de comandat de către
microcontroler, vor fi necesare 7 linii plus una pentru punctul zecimal. Pentru fiecare afişaj zecimal,
este necesară doar câte o linie în plus. Pentru a produce un afişaj cu 4, 5 sau 6 digiţi, toate afişajele
cu 7 segmente vor fi conectate în paralel. Linia comună (linia catodului comun) este conectată
separat şi această linie este conectată la zero logic pentru o perioadă scurtă de timp pentru a activa
afişajul. Fiecare afişaj este activat de 100 ori pe secundă şi vor da impresia că toate afişajele sunt
active în acelaşi timp. În timp ce fiecare afişaj este activat, informaţia trebuie livrată astfel încât el
va afişa informaţia corectă. Pot fi accesate până la 6 afişaje în acest mod fără ca strălucirea fiecărui
afişaj să fie afectată. Fiecare afişaj este activat efectiv pentru 1/6 din timp şi persistenţa vizuală a
ochilor dă impresia că afişajul este pornit tot timpul. Toate semnalele de sincronizare pentru afişaj
sunt produse de program, avantajul unui afişaj controlat de un microcontroler este flexibilitatea.
Afişajul poate fi configurat ca un contor crescător, contor descrescător, şi poate produce un număr
de mesaje folosind literele alfabetului care pot fi uşor de afişat. In continuare prezint macroul folosit
pentru afisarea informatiei pe cei 2 digiti ai displyului.

LED_Init macro

call InitTimers

endm
InitTimers

movlw b'00010110'

movwf T2CON

BANK1

movlw .50

movwf PR2

bsf PIE1,TMR2IE

BSF INTCON,6

BSF INTCON,7

BANK0

return

LedTable

andlw 0FH

addwf PCL,F

retlw B'11010111' ;0

retlw B'00010100' ;1

retlw B'11001110' ;2

retlw B'01011110' ;3

retlw B'00011101' ;4

retlw B'01011011' ;5

retlw B'11011011' ;6

retlw B'00010110' ;7

retlw B'11011111' ;8

retlw B'01011111' ;9

ISR
PUSH ;salvam variabele temporare
BCF PIR1,TMR2IF ;curatam bitul de intrerupere pe timer 2
clrf PORTE ;curatam portula
CLRF PORTA ;curatam portulb
;avem 2 digiti
;testam daca trebuie actualizat digitul 1
BTFSS ADIG,0 ;testam daca trebuie actualizat digitul 1
GOTO DIG2 ;nu atunci ne ducem la digitul 2
RLF ADIG,1 ;da rotim adig un element la stanga
BCF PORTD,1 ;oprim digitul 6
MOVFW Dig1 ;mutam valoarea lui dig1 in W
MOVWF PORTA ;afisam valoarea pe porta
btfsc Dig1,6 ;facem impartirea pe porturi
bsf PORTE,1 ;afisam si valoarea lui porte
BSF PORTC,0 ;pornim digitul 1
GOTO EX ;iesim din intrerupere
;testam daca trebuie actualizat digitul 2
DIG2
BTFSS ADIG,1 ;testam daca trebuie actualizat digitul 2
GOTO EX ;NU ATUNCI IESIM DIN RUTINA
bsf ADIG,0 ;da
BCF PORTC,0 ;oprim digitul 1
MOVFW Dig2 ;mutam valoarea lui dig2 in W
MOVWF PORTA ;afisam valoarea pe porta
btfsc Dig1,6 ;facem impartirea pe porturi
bsf PORTE,1 ;afisam si valoarea lui porte
BSF PORTC,1 ;pornim digitul 2
GOTO EX
;pe aici se face iesirea din intrerupere
EX
POP ;restauram variabelele temporare
RETFIE
Multiplexarea tastaturii
Pentru tastatura am folosit o rutina de multiplexare pe 8 pini patru linii si patru coloane,
realizand multiplexarea pe portulb deoarece acest port suporta multiplexarea unei tasturi intrucat are
incorporate si rezistentele de mentinere in 5V atata timp cat butonul nu este apasat reducand
numarul de piese externe necesare pentru executia acestui cablaj.
In continuare se poate vedea rutina de citire a butoanelor care lucreaza in felul urmator: se
activeaza una din liniile de citire (numai cate una niciodata mai multe simultan intrucat ar putea
aparea citiri eronate) si se testeaza rand pe rand toate cele 4 butone de pe acea linie iar in cazul in
care se intalneste un buton apasat se executa codul necesar acelui buton.
BUTOANE_INT
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000001' ;PORTB,0 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_P
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_1
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_2
MOVLW B'11110111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_3
MOVLW B'11101111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_4
MOVLW B'11011111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_5
MOVLW B'10111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_6
MOVLW B'01111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_7
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000010' ;PORTB,1 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_8
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_9
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_10
RETURN
; BUTON CHEMARE LIFT LA PARTER
BUTTON_P
call PARTER
WAITX .15,7
MOVLW D'2'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 1
BUTTON_1
CALL ETAJ1
WAITX .15,7
MOVLW D'4'
MOVWF POZ_DOR
RETURN

; BUTON CHEMARE LIFT LA ETAJUL 2


BUTTON_2
CALL ETAJ2
WAITX .15,7
MOVLW D'6'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 3
BUTTON_3
CALL ETAJ3
WAITX .15,7
MOVLW D'7'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 4
BUTTON_4
CALL ETAJ4
WAITX .15,7
MOVLW D'8'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 5
BUTTON_5
CALL ETAJ5
WAITX .15,7
MOVLW D'9'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 6
BUTTON_6
CALL ETAJ6
WAITX .15,7
MOVLW D'10'
MOVWF POZ_DOR
RETURN

; BUTON CHEMARE LIFT LA ETAJUL 7


BUTTON_7
CALL ETAJ7
WAITX .15,7
MOVLW D'11'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 8
BUTTON_8
CALL ETAJ8
WAITX .15,7
MOVLW D'12'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 9
BUTTON_9
CALL ETAJ9
WAITX .15,7
MOVLW D'14'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 10
BUTTON_10
CALL ETAJ10
WAITX .15,7
MOVLW D'16'
MOVWF POZ_DOR
RETURN

Programul principal face urmatorele operatiuni:


- Initializeaza uC
- Initializeaza displayul
- Verifica tastatura
- Determina ce buton este apasat si ia decizii in concordanta
- Determina directia de mers (sus, jos)
- Determina viteza de deplasare (mica, mare)
- Afiseaza pozitia pe dispaly
In continuare se prezinta codul sursa al programului principal:
LIST P=16F877A ;ALEGEM MICROCONTROLERUL PIC
16F877A
ERRORLEVEL -302 ;SE SUPRIMA MESAJELE DESPRE
MEMORIE
__CONFIG 2F41H ;SE SELECTEAZA OSCILATOR XT (VEZI
ANEXA XX)
#include "p16f877A.inc" ;fisierul standard de initializare al uC
CBLOCK 0X20 ;inceputul blocului de date (memorie RAM
volatila)
WCYCLE ;APARTIN MACROULUI WAITX
PRESCwait ;APARTIN MACROULUI WAITX
LO
LO_TEMP
Bcheck
TEMP_2
TEMP1
TEMP2
POZ_ACT ;POZITIA ACTUALA A LIFTULUI
POZ_DOR_T ;POZITIA ACTUALA TEMPORARA
POZ_DOR ;POZITIA DORITA PENTRU LIFT
STARE
ENDC ;sfarsitul declararii variabilelor

#DEFINE REL1 PORTE,1 ;BIT RELEU 1


#DEFINE REL2 PORTE,2 ;BIT RELEU 2
#DEFINE VIT1 PORTA,0 ;BIT VITEZA 1
#DEFINE VIT2 PORTA,1 ;BIT VITEZA 2

ORG 0X00 ;LOCUL DE PORNIRE LA RESET


GOTO RESET ;RESETAREA TUTUROR VARIABILELOR

#INCLUDE "BANC.INC" ;NU SE PUN INCLUDURILE INAINTE DE ORG ???


#INCLUDE "WAIT.inc" ;fisierele de includere pentru macrouri
#INCLUDE "ETAJE.INC"
#INCLUDE "BUTOANE.INC"
#INCLUDE "TEST.INC"
#INCLUDE "BUTOANE_INT.INC"
#INCLUDE "BUTOANE_ETAJE.INC"
#INCLUDE "SENZORI_ETAJE.INC"

RESET
BANK1 ;SELECTAM BANCUL 1
MOVLW B'00000111'
MOVWF ADCON1
CLRF TRISB
CLRF TRISC
CLRF TRISD
clrf TRISE
BANK0 ;REVENIM IN BANCUL 0
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF POZ_ACT
CLRF POZ_DOR
CLRF STARE
call MISCARE
CALL TEST
START
CALL BUTOANE_INT
CALL SENZORI_ETAJ
CALL BUTTOANE_ETAJ
goto START
MISCARE
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie sa oprim
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU ZERO
btfss STATUS,0
goto miscare1
BCF PORTE,1
BCF PORTE,2
RETURN
miscare1
MOVFW POZ_DOR
MOVWF POZ_DOR_T
MOVFW POZ_ACT ;mutam POZ_ACT in W
subwf POZ_DOR_T,f ;SCADEM POZ_ACT DIN POZ DORITA
btfsc STATUS,0 ;facem verificarea
GOTO SUS ;SUS
;afisam directia de deplasare (JOS)
CLRF STARE ;JOS
BSF STARE,0
;setam releele pe viteza mare
BCF PORTE,2
BSF PORTE,1
;mutam POZ_DOR in POZ_DOR_T
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie viteza mica
DECF POZ_ACT,F ; INCREMENTAM VALOAREA POZ_ACT
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU ZERO
btfss STATUS,0
return ;NU ESTE EGAL CU ZERO
;SETAM RELEELE PE VITEZA MICA
BCF PORTE,1
BSF PORTE,2
RETURN
SUS
;afisam directia de deplasare (sus)
CLRF STARE
BSF STARE,1
;setam releele pe viteza mare
BCF PORTE,2
BSF PORTE,1
;mutam POZ_DOR in POZ_DOR_T
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie viteza mica
INCF POZ_ACT,F ; INCREMENTAM VALOAREA POZ_ACT
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU ZERO
btfss STATUS,0
return ;NU ESTE EGAL CU ZERO
;SETAM RELEELE PE VITEZA MICA
BCF PORTE,1
BSF PORTE,2
RETURN
ERR
MOVLW B'01111001'
MOVWF PORTC
BCF PORTE,1
BCF PORTE,2
RETURN
END

6.6 Descrierea realizării practice - hardware

Circuite imprimate

Utilizarea cablajelor imprimate constituie la ora actuală o tehnică universală de (inter)


conectare a componentelor electronice atât în echipamentele electronice profesionale, cât şi în cele
de larg consum. Producţia cablajelor imprimate a crescut an de an deoarece ele au avantajele
următoare:
 permit reducerea volumului şi masei echipamentelor prin creşterea densităţii de montaj a
componentelor electronice,
 contribuie la creşterea siguranţei în funcţionare a echipamentelor prin micşorarea
numărului firelor de legătura între componentele electronice,
 contribuie la simplificarea operaţiilor de asamblare, la reducerea duratei lor de execuţie şi
permit automatizarea lor în cazul unei producţii de (mare) serie,
 concură la reducerea cazurilor de montare eronată a componentelor electronice în
scheme şi asigură o bună reproductibilitate a montajelor,
 asigură montaje cu o bună comportare la acţiuni mecanice (vibraţii, şocuri) şi climatice
(căldură, umiditate),
 contribuie la miniaturizarea montajelor eleetronice şi deci a echipamentelor în
ansamblu,
 fac posibilă unificarea şi standardizarea construcţiei blocurilor electronice funcţionale
care intră în componenţa echipamentelor electronice şi asigură interconectarea uşoară a
acestor.
Realizarea cablajelor
Primul pas în crearea cablajului îl reprezintă decuparea unei bucăţi de textolit de dimensiuni
convenabile. Se îndepărtează eventualele bavuri de pe margini şi se curăţă partea placată cu cupru
cu detergent de eventualele grăsimi sau oxizi depuşi.
Pentru imprimarea cablajului pe placa se foloseşte folia de transfer PnP
Folia de transfer PnP este un mijloc practic şi uşor, care face posibilă realizarea de cablaje
imprimate. Cu ajutorul acestei tehnologii se pot realiza rapid şi curat cablaje imprimate

Principiul de funcţionare al foliei de transfer PNP

Se bazează pe principiul de funcţionare a imprimantei laser. În imprimanta laser există un


tambur fotosensibil din seleniu pe care raza laser "desenează" urma de imprimare. Acest tambur se
impregnează apoi cu toner-ul, care aderă numai la zonele desenate (electrizate) anterior de raza
laser. Tamburul, rotindu-se, transpune tonerul pe hârtie, toner care este apoi presat la cald pe hârtie,
topit, realizându-se astfel fixarea urmei de imprimare, fiind deci gata o hârtie imprimată.
În cazul foliei PnP, datorită structurii ei chimice superficiale, tonerul de pe tamburul de
seleniu se transpune pe folie, se fixează acolo dar nu definitiv. Nu se "înrădăcinează" aşa ca şi pe o
foaie normală de hârtie, care este poroasă. În momentul când punem folia deja imprimată pe
cablajul curăţat (evident, faţa cu toner-ul să facă contact cu cuprul cablajului), putem "transpune"
tonerul de pe folie pe cablaj cu ajutorul unui călcător de haine încins. Acest toner transpus pe cablaj
reprezintă de fapt zona ce va rezista la corodare. După îndepărtarea atentă a foliei placuţa poate fi
imediat pusă în baia de corodare formată din clorura ferică sau acid clorhidric cu apă oxigenată.

Din principiul de funcţionare rezultă că traseele pot fi transpuse pe folia PnP folosind numai
imprimanta laser sau xerocopiatorul.

Modul de folosire al foliei de transfer PNP

 A se curăţa cablajul cu ajutorul unui praf de curăţat sau cu o hârtie abrazivă fină. Se poate
curăţa şi printr-o cufundare de 30 secunde într-o baie de corodare. Astfel suprafaţa va fi pregătită
pentru transferul desenului.
 Folia PnP poate fi folosită doar cu xerocopiatoare sau imprimante laser ce folosesc hârtie
normală de xerox. Pentru desenarea traseelor se poate folosi orice program CAD care are
posibilitatea să imprime pe o imprimanta laser. Cablajele apărute în publicaţii sau cele imprimate cu
alte tipuri de imprimante decât cele laser, pot fi copiate pe folia PnP cu ajutorul unui xerocopiator.
Imprimanta sau xerocopiatorul trebuie reglate pe contrastul maxim, dar astfel încât pe zonele ce
trebuie să se corodeze să nu fie depuneri de toner.
 Desenul cablajului trebuie astfel realizat încât traseele (deci părţile ce nu se vor coroda) să
fie desenate cu negru. Deci spunem că desenul este în pozitiv. Desenul cablajului ce îl vedem pe
folia PnP ieşită din imprimantă trebuie să arate ca şi cum am vedea traseele (prin transparenţă)
dinspre partea cu piese. Deci oglindit. Imprimarea sau xerocopierea se va face pe partea mai
lucioasă a foliei PnP (nu pe partea din spate pe care are inscripţii).
 Folia se dispune în imprimantă sau în xerocopiator exact ca şi foile normale de hârtie. Se
recomandă punerea doar a unei singure folii în imprimantă.
 Desenul ce apare pe folie trebuie decupat, lăsind o bordură de cca 0,5 cm. Luăm călcătorul
de haine şi îl încingem la o temperatură (de pornire) ce corespunde pentru nylon. Temperatura
călcătorului trebuie aleasă experimental, ea depinzând şi de tipul tonerului.
 Plasăm folia PnP (cu faţa desenată în jos) pe placuţa curăţată, pe faţa cu cupru. Deci desenul
să atingă cuprul. Acest ansamblu îl plasăm pe o placa de bachelită, lemn sau orice alt termoizolator
(pentru a nu se pierde repede căldura călcătorului). Cu călcătorul încins apăsăm peste folie,
începând de la mijlocul ei, pâna se lipeşte şi venim progresiv spre margini. Acest proces poate să
dureze cca 2...3 minute la o placă de 10x10cm, depinzând şi de temperatura călcătorului.
 Desenul traseelor va transpare şi se va vedea la un moment dat şi pe spatele foliei, adică
unde plimbăm călcătorul. Verificăm dacă traseele transpar peste tot şi ne asigurăm astfel dacă am
dat peste tot cu călcătorul.
 După răcire îndepărtăm încet folia de pe cablaj, începând de la un colţ. Eventualele greşeli
pot fi reparate cu vopsea sau o cariocă specială.
 Plăcuţa astfel pregătită poate fi pusă în baia de corodare formată din clorură ferică sau acid
clorhidric cu apă oxigenată, care trebuie pregătită conform prescripţiilor producătorului. După
corodare se îndepărtează tonerul cu un solvent organic, cu praf de curăţat sau cu hârtie abrazivă
fină.
După ce în prealabil a fost lăsat la uscat cablajul se introduce în "baia" de corodare - un vas
din material plastic sau sticlă în care se află agentul coroziv: clorură ferică.
Atenţie! Clorura ferică este o substanţă toxică şi trebuie manipulată cu grijă.
Când tot cuprul nedorit a fost îndepărtat prin coroziune se scoate placa din baia de corodare şi
se spală foarte bine în multă apă pentru a îndepărta urmele de agent coroziv ce ar putea distruge mai
tarziu cablajul.
Se inspectează cu grijă placa pentru a detecta eventuale greşeli de trasare a cablajului sau
conexiuni nedorite rămase după corodare. Acestea se înlătură prin zgâriere sau polizare.
Cu alcool tehnic se îndepărtează stratul protector de vopsea, curăţând cu grijă traseele cu o
cârpă moale.
Se dau găurile necesare componentelor. Găurile se dau dinspre partea placată cu cupru pentru
că altfel s-ar putea exfolia stratul subţire de cupru la ieşirea burghiului. Bormaşina folosită trebuie
să fie de dimensiuni reduse pentru a nu rupe burghiul.
Înainte de începerea plantării pieselor se verifică din nou corectitudinea traseelor, a găurilor.

CAPITOLUL 7

Calculul economic (al machetei)

1 3 C3,C5,C6 CAPACITOR POL/SM


2 2 C7,C8 CAPACITOR NON-POL
3 4 D13,D15,D16,D17 1N4148
4 1 D14 BRIDGE
5 1 F6 FUSE
6 2 J1,J11 CON2
7 2 J2,J3 CON4
8 4 J12,J13,J14,J15 CON8
9 2 J17,J18 CON3
10 2 K1,K2 RELAY SPDT
11 4 Q1,Q2,Q3,Q4 BC107
12 31 R1,R2,R3,R4,R5,R6,R7,R8, RESISTOR
R9,R10,R11,R12,R13,R14,
R15,R16,R17,R18,R19,R20,
R21,R22,R23,R24,R25,R26,
R27,R28,R29,R30,R31
13 64 SW1,SW2,SW3,SW4,SW5,SW6 SW KEY-YM061
14 1 T1 TRANSFORMER
15 1 U2 PIC16F877A
16 1 U3 LM7812/TO
17 1 U4 LM7805/TO
18 1 Y1 ZTA
19 1 Grup motoreductor (motor pas cu pas + reductor) Pentru urcarea şi
coborârea liftului
20 1 Motor unitate floppy Pentru închiderea şi deschiderea
uşii
21 6 Teavă PVC Ø40 mm × 150 mm Stâlp susţinere machetă
22 3 Teavă PVC Ø25 mm × 150 mm Stâlp susţinere machetă
23 1,5m2 PVC 5 mm alb Pentru construcţia palierelor
24 0,25m2 PVC 3 mm alb Pentru construcţia cabinei liftului
25 2 Sină unitate CD-ROM Pentru glisarea uşii liftului în plan
orizontal
26 1 Cremalieră unitate CD-ROM Pentru mecanismul roată dinţată-
cremalieră
27 1 Roată dinţată (imprimantă)
28 4 Tijă ghidare Ø4 mm × 500 mm
29 2 Vopsea auto metalizată (400ml)

Nr.Crt Componenta Pretul / buc Nr buc Total


1 Cuarţ 15.000 1 15.000
2 LM7805 10.000 1 10.000
3 LM7812 10.000 1 10.000
4 PIC16F877A 300.000 1 300.000
5 Transformator 350.000 1 350.000
6 Butoane 10.000 6 60.000
7 Relee 60.000 2 120.000
8 Rezistente 1.500 40 60.000
9 Tranzistori 1.500 4 6.000
10 Conectori 10.000 3 30.000
11 Sigurante 5.000 1 5.000
12 BT139 40.000 1 40.000
13 Diode 1.500 4 6.000
14 Condensatori electrolitici 5.000 10 50.000
15 Condensatori 5.000 6 30.000
16 Punte redresoare 10.000 1 10.000
17 TDA 1085C 50.000 1 50.000
18 Semireglabili 10.000 1 10.000
19 Grup motoreductor 400.000 1 400.000
20 Motor unitate floppy 30.000 1 30.000
21 Teavă PVC Ø40 mm × 150 mm 15.000 6 90.000
22 Teavă PVC Ø25 mm × 150 mm 10.000 3 30.000
23 PVC 5 mm alb 300.000 1,5 m2 300.000
24 PVC 3 mm alb 50.000 0,25 m2 50.000
25 Sină unitate CD-ROM 5.000 1 5.000
26 Cremalieră unitate CD-ROM 5.000 1 5.000
27 Roată dinţată (imprimantă) 5.000 1 5.000
28 Tijă ghidare Ø4 mm × 500 mm 20.000 4 80.000
29 Vopsea auto metalizată (400ml) 210.000 2 420.000

30 Manopera 50% 1.288.500

31 Adaos comercial 40% 1.546.200

TOTAL 5.411.700

CAPITOLUL 8

Concluzii şi observaţii

Proiectul de faţă şi-a propus sa demonstreze fiabilitatea si performanţele ridicate care pot fi
obţinute prin utilizarea unui microcontroler pentru comanda si controlul unui lift.
- Implementare rapida a sistemului necesitând foarte puţine componente auxiliare.
- Cost redus faţă de un sistem clasic
- Fiabilitate sporită întrucât un uC este garantat o perioadă foarte lungă de timp în condiţiile
unei exploatări corespunzatoare.
- Consum redus de energie electrică deoarece uC-ul poate intra în modul sleep (când
consumul este de aproximativ 1mA) si un pic mai mare in timpul functionarii si datorita cuplarii
diverselor elemente de comanda (relee, amplificatoare etc. care in modul sleep sunt oprite).
- Posibilitatea de conectare a diferitelor tipuri de senzori care pot fi folositi pentru citirea
pozitiei:
 senzori magnetici
 senzori incrementali
 senzori de proximitate
 senzori absoluti
- in acelasi timp uC poate comanda şi sisteme complexe cum ar fi invertoare de mare putere
dotate cu frane dinamice in felul acesta fiind redus substantial riscul de accidente prin simplul motiv
ca uC sau chiar si unele tipuri de invertoare pot lua decizii în timp real de oprire sau frânare a
liftului in conditii extreme: cădere de tensiune, suprasarcina pe motor, supraîncalzire a bobinajului
motorului;
- uC poate fi conectat la un dispozitiv de transmisie date (PC, telefon mobil, retea CAN, retea
TCP/IP, retea ethernet), în felul acesta liftul poate fi monitorizat tot timpul sau numai periodic în
functie de necesitate, sau în caz de avarie liftul poate contacta dispecerul fara interventia unei
persoane binevoitoare economisindu-se în acest fel timp (în momentul în care echipa de interventie
ajunge, ştie deja care este problema).
ANEXĂ

Imagini realizarea practică a machetei

Fig.1.Blocul de comadă şi control al aplicaţiei


Fig.2.Butoanele de pe paliere şi din interiorul ascensorului

Fig.3.Macheta practică în stare de funcţionare

Aplicaţia software a microcontrolerului

LIST P=16F877A ;ALEGEM MICROCONTROLERUL PIC 16F877A


ERRORLEVEL -302 ;SE SUPRIMA MESAJELE DESPRE MEMORIE
__CONFIG 2F41H ;SE SELECTEAZA OSCILATOR XT (VEZI ANEXA
XX)
#include "p16f877A.inc" ;fisierul standard de initializare al uC
CBLOCK 0X20 ;inceputul blocului de date (memorie RAM volatila)
WCYCLE ;APARTIN MACROULUI WAITX
PRESCwait ;APARTIN MACROULUI WAITX
LO
LO_TEMP
Bcheck
TEMP_2
TEMP1
TEMP2
POZ_ACT ;POZITIA ACTUALA A LIFTULUI
POZ_DOR_T ;POZITIA ACTUALA TEMPORARA
POZ_DOR ;POZITIA DORITA PENTRU LIFT
STARE
ENDC ;sfarsitul declararii variabilelor
#DEFINE REL1 PORTE,1 ;BIT RELEU 1
#DEFINE REL2 PORTE,2 ;BIT RELEU 2
#DEFINE VIT1 PORTA,0 ;BIT VITEZA 1
#DEFINE VIT2 PORTA,1 ;BIT VITEZA 2
ORG 0X00 ;LOCUL DE PORNIRE LA RESET
GOTO RESET ;RESETAREA TUTUROR
VARIABILELOR
#INCLUDE "BANC.INC" ;NU SE PUN INCLUDURILE
INAINTE DE ORG ???
#INCLUDE "WAIT.inc" ;fisierele de includere pentru macrouri
#INCLUDE "ETAJE.INC"
#INCLUDE "BUTOANE.INC"
#INCLUDE "TEST.INC"
#INCLUDE "BUTOANE_INT.INC"
#INCLUDE "BUTOANE_ETAJE.INC"
#INCLUDE "SENZORI_ETAJE.INC"
RESET
BANK1 ;SELECTAM BANCUL 1
MOVLW B'00000111'
MOVWF ADCON1
CLRF TRISB
CLRF TRISC
CLRF TRISD
clrf TRISE
BANK0 ;REVENIM IN BANCUL 0
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF POZ_ACT
CLRF POZ_DOR
CLRF STARE
call MISCARE
CALL TEST
START
CALL BUTOANE_INT
CALL SENZORI_ETAJ
CALL BUTTOANE_ETAJ
goto START
MISCARE
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie sa oprim
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN
POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU
ZERO
btfss STATUS,0
goto miscare1
BCF PORTE,1
BCF PORTE,2
RETURN
miscare1
MOVFW POZ_DOR
MOVWF POZ_DOR_T
MOVFW POZ_ACT ;mutam POZ_ACT in W
subwf POZ_DOR_T,f ;SCADEM POZ_ACT DIN POZ
DORITA
btfsc STATUS,0 ;facem verificarea
GOTO SUS ;SUS
;afisam directia de deplasare (JOS)
CLRF STARE ;JOS
BSF STARE,0
;setam releele pe viteza mare
BCF PORTE,2
BSF PORTE,1
;mutam POZ_DOR in POZ_DOR_T
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie viteza mica
DECF POZ_ACT,F ; INCREMENTAM VALOAREA POZ_ACT
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU ZERO
btfss STATUS,0
return ;NU ESTE EGAL CU ZERO
;SETAM RELEELE PE VITEZA MICA
BCF PORTE,1
BSF PORTE,2
RETURN
SUS
;afisam directia de deplasare (sus)
CLRF STARE
BSF STARE,1
;setam releele pe viteza mare
BCF PORTE,2
BSF PORTE,1
;mutam POZ_DOR in POZ_DOR_T
MOVFW POZ_DOR
MOVWF POZ_DOR_T
;verificam daca trebuie viteza mica
INCF POZ_ACT,F ; INCREMENTAM VALOAREA POZ_ACT
MOVFW POZ_ACT ;MUTAM POZ_ACT IN W
SUBWF POZ_DOR_T,F ;SCADEM POZ ACT DIN POZ_DOR_T
MOVFW POZ_DOR_T ;MUTAM POZ_DOR_T IN W
sublw 0 ;VERIFICAM DACA E EGAL CU ZERO
btfss STATUS,0
return ;NU ESTE EGAL CU ZERO
;SETAM RELEELE PE VITEZA MICA
BCF PORTE,1
BSF PORTE,2
RETURN
ERR
MOVLW B'01111001'
MOVWF PORTC
BCF PORTE,1
BCF PORTE,2
RETURN
END

BANK0 MACRO ;MACRO PENTRU BANCUL 0


BCF STATUS,5 ;STERGEM STATUS,5
BCF STATUS,6 ;STERGEM STATUS,6
ENDM
BANK1 MACRO ;MACRO PENTRU BANCUL 1
BSF STATUS,5 ;SETAM STATUS,5
BCF STATUS,6 ;STERGEM STATUS,6
ENDM
BANK2 MACRO ;MACRO PENTRU BANCUL 2
BCF STATUS,5 ;STERGEM STATUS,5
BSF STATUS,6 ;SETAM STATUS,6
ENDM
BANK3 MACRO ;MACROU PENTRU BANCUL 3
BSF STATUS,5 ;SETAM STATUS,5
BSF STATUS,6 ;SETAM STATUS,5
ENDM

PUSH MACRO ;MACROU PUSH PENTRU


SALVAREA REGISTRILOR IMPORTANTI LA EXECUTIA INTRERUPERILOR
MOVWF W_TEMP ;MUTAM CONTINUTUL
REGISTRULUI W_TEMP
SWAPF W_TEMP,F
BANK1
SWAPF OPTION_REG,W
MOVWF OPTION_TEMP
BANK0
SWAPF STATUS,W
MOVWF STATUS_TEMP
ENDM

POP MACRO
SWAPF STATUS_TEMP,W
MOVWF STATUS
BANK1
SWAPF OPTION_TEMP,W
MOVWF OPTION_REG
BANK0
SWAPF W_TEMP,W
ENDM

TSTLIFT
RETURN
TSTETAJE
RETURN
SENZORI
RETURN

BUTTOANE_ETAJ
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00001000' ;PORTB,3 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL PARTER
MOVLW B'11110111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ1
MOVLW B'11101111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ2
MOVLW B'11011111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ9
MOVLW B'10111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ10
RETURN
BUTOANE_INT
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000001' ;PORTB,0 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_P
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_1
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_2
MOVLW B'11110111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_3
MOVLW B'11101111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_4
MOVLW B'11011111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_5
MOVLW B'10111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_6
MOVLW B'01111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,0
CALL BUTTON_7
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000010' ;PORTB,1 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_8
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_9
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_10
RETURN
; BUTON CHEMARE LIFT LA PARTER
BUTTON_P
call PARTER
WAITX .15,7
MOVLW D'2'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 1
BUTTON_1
CALL ETAJ1
WAITX .15,7
MOVLW D'4'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 2
BUTTON_2
CALL ETAJ2
WAITX .15,7
MOVLW D'6'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 3
BUTTON_3
CALL ETAJ3
WAITX .15,7
MOVLW D'7'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 4
BUTTON_4
CALL ETAJ4
WAITX .15,7
MOVLW D'8'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 5
BUTTON_5
CALL ETAJ5
WAITX .15,7
MOVLW D'9'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 6
BUTTON_6
CALL ETAJ6
WAITX .15,7
MOVLW D'10'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 7
BUTTON_7
CALL ETAJ7
WAITX .15,7
MOVLW D'11'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 8
BUTTON_8
CALL ETAJ8
WAITX .15,7
MOVLW D'12'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 9
BUTTON_9
CALL ETAJ9
WAITX .15,7
MOVLW D'14'
MOVWF POZ_DOR
RETURN
; BUTON CHEMARE LIFT LA ETAJUL 10
BUTTON_10
CALL ETAJ10
WAITX .15,7
MOVLW D'16'
MOVWF POZ_DOR
RETURN
Buton macro HiLo, Port, Bit, Delay, Adress, CallGoto
Local Ex
Local Lop
if HiLo == 0
btfsc Port,Bit
else
btfss Port,Bit
endif
goto Ex
WAIT Delay
Lop if HiLo == 0
btfss Port,Bit
else
btfsc Port,Bit
endif
goto Lop
WAIT Delay
call Adress
Ex
Endm

EEPROMR MACRO AD
MOVLW AD ; SCRIEM ADRESA DE PE
BANK2 ; SELECTAM BANCUL 2
MOVWF EEADR ; CARE FACEM CITIREA
BANK3 ; SELECTAM BANCUL 3
BCF EECON1,EEPGD ; POINT TO DATA MEMORY
BSF EECON1,RD ; INCEPE OPERATIUNEA DE CITIRE
BANK2 ; SELECTAM BANCUL 2
MOVF EEDATA,W ; W = VALOAREA CITITA DIN EEPROM
BANK0
ENDM
EEPROMRW MACRO ADDR,VALUE
WAITX .50,2
BANK3 ; SELECTAM BANCUL 3
BTFSC EECON1,WR ; ASTEPTAM SA SE
GOTO $-1 ; TERMINE SCRIEREA PRECEDENTA
BANK0 ; SELECTAM BANCUL 1
MOVLW ADDR ; ADRESA CARE
BANK2
MOVWF EEADR ; TREBUIE SCRISA
BANK0
MOVF VALUE,W ; INFORMATIA CARE
BANK2
MOVWF EEDATA ; TREBUIE SCRISA
BANK3 ; SELECTAM BANCUL 3
BCF EECON1,EEPGD ; POINT TO DATA MEMORY
BSF EECON1,WREN ; PERMITEM SCRIEREA
BCF INTCON,GIE ; DEZACTIVAM INTRERUPERILE
MOVLW 0X55 ; SCRIEM 0X55
MOVWF EECON2 ; IN EECON2
MOVLW 0XAA ; SCRIEM 0XAA
MOVWF EECON2 ; IN EECON2
BSF EECON1,WR ; INCEPEM OPERATIA DE SCRIERE
BSF INTCON,GIE ; ACTIVAM INTRERUPERILE
BCF EECON1,WREN ; NU MAI PERMITEM SCRIEREA
(ACCIDENTALA)
BANK0
ENDM
PARTER
MOVLW B'01110011'
MOVWF PORTC
RETURN
ETAJ1
MOVLW B'00000110'
MOVWF PORTC
RETURN
ETAJ2
MOVLW B'01011011'
MOVWF PORTC
RETURN
ETAJ3
MOVLW B'01001111'
MOVWF PORTC
RETURN
ETAJ4
MOVLW B'01100110'
MOVWF PORTC
RETURN
ETAJ5
MOVLW B'01101101'
MOVWF PORTC
RETURN
ETAJ6
MOVLW B'01111101'
MOVWF PORTC
RETURN
ETAJ7
MOVLW B'00000111'
MOVWF PORTC
RETURN
ETAJ8
MOVLW B'01111111'
MOVWF PORTC
RETURN
ETAJ9
MOVLW B'01101111'
MOVWF PORTC
RETURN
ETAJ10
MOVLW B'10111111'
MOVWF PORTC
RETURN
LedTable
andlw 0FH
addwf PCL,F
retlw B'00111111' ;0
retlw B'00000110' ;1
retlw B'01011011' ;2
retlw B'01001111' ;3
retlw B'01100110' ;4
retlw B'01101101' ;5
retlw B'01111101' ;6
retlw B'00000111' ;7
retlw B'01111111' ;8
retlw B'01101111' ;9
SENZORI_ETAJ ;SENZORI PREZENTA ETAJ + SENZORI
USA + SENZORI INTRE ETAJE
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000010' ;PORTB,1 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11110111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_PP
MOVLW B'11101111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL USA_PARTER
MOVLW B'11011111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_P1
MOVLW B'10111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL USA_ETAJ1
MOVLW B'01111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,1
CALL BUTTON_P2
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00000100' ;PORTB,1 INTRARE
MOVWF TRISB
BANK0
MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL USA_ETAJ2
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL BUTTON_P9
MOVLW B'11111011'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL USA_ETAJ9
MOVLW B'11110111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL BUTTON_P10
MOVLW B'11101111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL USA_ETAJ10
MOVLW B'11011111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL PARTER_
MOVLW B'10111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL PARTER_ETAJ1
MOVLW B'01111111'
MOVWF PORTD
WAIT .1
BTFSS PORTB,2
CALL ETAJ1_ETAJ2
BANK1
BCF OPTION_REG,7 ;ACTIVAM PUL-UP
MOVLW B'00001000' ;PORTB,2 INTRARE
MOVWF TRISB
BANK0

MOVLW B'11111110'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ8_ETAJ9
MOVLW B'11111101'
MOVWF PORTD
WAIT .1
BTFSS PORTB,3
CALL ETAJ9_ETAJ10
RETURN
; SENZOR URGENTA PARTER
PARTER_
MOVLW B'00110110'
MOVWF PORTC
RETURN
; SENZOR PREZENTA PARTER
BUTTON_PP
MOVLW D'2'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO PP_ ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL PARTER ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
PP_ ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL PARTER ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA INTRE PARTER SI ETAJ 1
PARTER_ETAJ1
MOVLW D'3'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO P_ET1 ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL PARTER ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
P_ET1 ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ1 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA ETAJ 1
BUTTON_P1
MOVLW D'4'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO P1_ ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ1 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
P1_ ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ1 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA INTRE ETAJ 1 SI ETAJ 2
ETAJ1_ETAJ2
MOVLW D'5'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO ET1_ET2 ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ1 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
ET1_ET2 ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ2 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA ETAJ 2
BUTTON_P2
MOVLW D'6'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO P2_ ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ2 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
P2_ ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ2 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA INTRE ETAJ 8 SI ETAJ 9
ETAJ8_ETAJ9
MOVLW D'13'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO ET8_ET9 ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7
CALL ETAJ8 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
ET8_ET9 ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ9 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA ETAJ 9
BUTTON_P9
MOVLW D'14'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO P9_ ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ9 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
P9_ ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ9 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA INTRE ETAJ 9 SI ETAJ 10
ETAJ9_ETAJ10
MOVLW D'15'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO ET9_ET10 ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ9 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
ET9_ET10 ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM A
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ10 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; SENZOR PREZENTA ETAJ 10
BUTTON_P10
MOVLW D'16'
MOVWF POZ_ACT
CALL MISCARE ;RUTINA PENTRU VERIFICAREA
POZITIEI LIFTULUI
BTFSS STARE,0 ;verificam daca liftul merge in jos
GOTO P10_ ;nu liftul merge in sus
MOVLW B'00011110' ; da liftul merge in jos
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ10 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
P10_ ; DA LIFTUL MERGE IN SUS
MOVLW B'01101101' ; AFISAM S
MOVWF PORTC ; PE AFISAJ
WAITX .15,7 ; PENTRU O SECUNDA
CALL ETAJ10 ; AFISAM POZITIA ACTUALA
WAITX .15,7 ; PENTRU O SECUNDA
RETURN
; USA DESCHISA LA PARTER
USA_PARTER
MOVLW B'00111110'
MOVWF PORTC
WAITX .15,7 ; PENTRU O SECUNDA
call ERR
RETURN
; USA DESCHISA LA ETAJUL 1
USA_ETAJ1
MOVLW B'00111110'
MOVWF PORTC
WAITX .15,7 ; PENTRU O SECUNDA
call ERR
RETURN
; USA DESCHISA LA ETAJUL 2
USA_ETAJ2
MOVLW B'00111110'
MOVWF PORTC
WAITX .15,7 ; PENTRU O SECUNDA
call ERR
RETURN
; USA DESCHISA LA ETAJUL 9
USA_ETAJ9
MOVLW B'00111110'
MOVWF PORTC
WAITX .15,7 ; PENTRU O SECUNDA
call ERR
RETURN
; USA DESCHISA LA ETAJUL 10
USA_ETAJ10
MOVLW B'00111110'
MOVWF PORTC
WAITX .15,7 ; PENTRU O SECUNDA
call ERR
RETURN
TEST
CALL PARTER
WAITX .40,7
CALL ETAJ1
WAITX .40,7
CALL ETAJ2
WAITX .40,7
CALL ETAJ3
WAITX .40,7
CALL ETAJ4
WAITX .40,7
CALL ETAJ5
WAITX .40,7
CALL ETAJ6
WAITX .40,7
CALL ETAJ7
WAITX .40,7
CALL ETAJ8
WAITX .40,7
CALL ETAJ9
WAITX .40,7
CALL ETAJ10
WAITX .40,7
CALL ETAJ10
WAITX .40,7
CALL ETAJ9
WAITX .40,7
CALL ETAJ8
WAITX .40,7
CALL ETAJ7
WAITX .40,7
CALL ETAJ6
WAITX .40,7
CALL ETAJ5
WAITX .40,7
CALL ETAJ4
WAITX .40,7
CALL ETAJ3
WAITX .40,7
CALL ETAJ2
WAITX .40,7
CALL ETAJ1
WAITX .40,7
CALL PARTER
WAITX .40,7
RETURN
; Declararea constantelor
CONSTANT PRESCstd = b'00000001' ;Valoarea standard pentru TMR0
; Macrouri
WAIT macro timeconst_1
movlw timeconst_1
call WAITstd
endm
WAITX macro timeconst_2, PRESCext
movlw timeconst_2
movwf WCYCLE
movlw PRESCext
call WAIT_x
endm
; Subprograme
WAITstd
movwf WCYCLE
movlw PRESCstd
WAIT_x
clrf TMR0
BANK1
movwf OPTION_REG
BANK0
WAITa
bcf INTCON,2
WAITb
btfss INTCON,2
goto WAITb
decfsz WCYCLE,1
goto WAITa
RETURN

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