Sunteți pe pagina 1din 30

Semnale digitale și PWM

Craiova, 02.11.2017
Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

2 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Introducere în semnale digitale
• Semnalul digital (sau numeric)

 Prin semnal digital se ințelege un semnal ce poate lua un set finit de valori.
 În echipamentele digitale, semnalul util se poate schimba doar între două stări: HIGH
(corespunzător lui logic 1) şi LOW (corespunzător lui 0 logic).
 Acestea sunt interpretate fizic prin două nivele de tensiune 𝑼𝟎 şi 𝑼𝟏 . Un exemplu este acela în
care, pentru valoarea 0, valoarea tensiunii 𝑼𝟎 este cuprinsă între 0 V şi 1 V : 0V < 𝑼𝟎 < 1 V, iar
pentru valoarea 1, avem o tensiune 𝑼𝟏 cuprinsă între 4 V şi 5 V : 4 V < 𝑼𝟏 < 5 V.
 Interpretarea nivelelor ca HIGH sau LOW depinde de nivelul tensiunilor conform specificaţiilor
microcontrollerului, care la rândul lor depind de tensiunea de alimentare la care funcţionează
controllerul.

3 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Tipuri de semnale digitale
Un întrerupator de contact sau un comutator este o componentă care poate întrerupe un
circuit electric.

4 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Tipuri de semnale digitale
• Semnalul de intrare digital detectează dacă tensiunea este deasupra /
sub o valoare de prag specifică. Dacă tensiunea este mai mare decat
valoarea de prag, circuitul este HIGH (ON, 1 logic). Dacă tensiunea este
mai mică decat valoarea de prag, circuitul este LOW (OFF, 0 logic).

 Când switch-ul este inchis intrarea va citi starea HIGH.


 Când switch-ul nu este inchis intrarea va citi starea LOW.

Exista mai multe tipuri de switch-uri:

 push-button
• ”push-to-make”
• “push-to-brake”
 toggle switch

5 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Tipuri de semnale digitale
• Semnalul de ieșire digital permite controlarea tensiunii. Dacă ieșirea
este programată să fie HIGH va produce o tensiune între 3.3V – 5 V.
Dacă ieșirea este programată să fie LOW, este conectată la masă și nu
produce tensiune.

 Aprinderea unui LED

6 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

7 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Digital vs Analog
 Spre deosebire de semnalul analogic un semnal digital nu poate lua decât valoarea
logică 1 sau 0. Folosind ca exemplu tot un microcontroller de 5V, un semnal digital
va avea valoarea 1 la 5V și valoarea 0 la 0V.

 Deși pare mai ușor de folosit și mai util un semnal analogic, deoarece ia orice
valoare între 0V și 5V nu doar sus/jos, un senzor digital este mai precis deoarece
elimină zgomotul pe care senzorul analogic l-ar putea capta.

 Zona de histereză este folosită pentru a reduce nivelul zgomotului pe un semnal


digital.
Limita
maximă

Histereză

Limita
minimă

8 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

9 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Rezistență Pull-up
• Dacă curentul curge dinspre microcontroler (MC) către
circuitul extern intrarea este numită “source input”.
• Dacă curentul curge dinspre circuitul extern către MC
intrarea este numită “sink input”.
• MC pot genera curenţi de aproximativ 4-20 mA.
• La majoritatea MC curentul absorbit (sink) este mai mare
decât cel ce poate fi generat (source).

 R1 se numește rezistență de pull-up.

 Când butonul este apasat intrarea va citi starea LOW.


Valoarea rezistenței R1 controlează tensiunea care
vine de la VCC prin buton către GND.

 Când butonul nu este apasat intrarea va citi starea


HIGH, mai apropiată de VCC în funcție de valoarea
rezistenței pull-up.

10 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

11 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Software debouncing
• Un switch ideal nu ar avea căderi de tensiune la închidere, nu ar avea
limite de tensiune sau curent, schimbandu-și starea in ON sau OFF
fară niciun pic de oscilație.
• În lumea reala:

12 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Software debouncing
• Deoarece procesoarele actuale au viteze de prelucrare de ordinul a
cel putin un milion de operații pe secundă, citirea intrării se va face
cu siguranță în mai puțin de 1 ms, astfel încât următoarea citire a
portului de intrare va fi în zona de instabilitate.

• Din analiza situației prezentate anterior, rezultă că este nevoie


de un bloc de prelucrare care să elimine impulsurile
suplimentare. Acest bloc primește la intrare tensiunea Up și
generează tensiunea Ugood ca în figura de mai sus.

13 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
DIO

HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie


14 Confidential ISO 16016
2017
Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

15 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Semnale PWM
 PWM - Pulse Width Modulation, este un semnal la care lăţimea impulsurilor
este proporţională cu amplitudinea semnalului analogic modulator.

 semnalul analogic

 impulsurile de eşantionare

 semnalul PWM - Modulaţia Impulsurilor în


Lăţime (Pulse Width Modulation – PWM)

16 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Semnale PWM
 PWM este o tehnică folosită pentru a varia în mod controlat tensiunea
dată unui dispozitiv electronic. Această metodă schimbă foarte rapid
tensiunea oferită dispozitivului respectiv din ON în OFF și invers (treceri
rapide din HIGH (5V de exemplu) in LOW (0V).

 Perioada de timp corespunzătoare valorii ON dintr-un ciclu ON-OFF se


numește factor de umplere (duty cycle) și reprezintă, în medie, ce
tensiune va primi dispozitivul electronic.

 Astfel, se pot controla circuite analogice din domeniul digital. Practic, asta
înseamnă că un LED acționat astfel se va putea aprinde / stinge gradual,
iar în cazul unui motor acesta se va învârti mai repede sau mai încet.

17 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Semnale PWM

 Frecvența semnalului

 Factorul de umplere al semnalului

18 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

19 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Prezentare Board

20 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Prezentare Board

21 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

22 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Agenda
 Introducere în semnale digitale

 Digital vs Analog

 Rezistență Pull-up

 Software debouncing

 Semnale PWM

 Prezentare Board

 Sesiune de întrebări

 Sesiune de practică

23 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Sesiune practică
Descriere fișiere standard

• Std_Types.h – conține maparea între tipurile de date generale (int, char, short, long) și tipurile de date standard
(uint32, uint8, uint16, uint32), definirea stărilor (STD_HIGH, STD_LOW, STD_ON, STD_OFF)
• Det.c/h – conține corpul funcției folosită pentru detectarea erorilor în timpul dezvoltării modulelor
• iodefine.h – fișier generat de CS+, conține maparea tuturor regiștrilor folosiți de microcontroller
• ModuleName_Types.h – conține tipurile de date folosite de modul mapate pe cele standard
• ModuleName_Private.h – conține datele private folosite de modul și numai de acesta
• ModuleName.h – conține extern-ul funcțiilor folosite în modul
• ModuleName.c – conține implementarea cerințelor aferente fiecărei funcții

HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie


24 Confidential ISO 16016
2017
Semnale digitale și PWM
Sesiune practică
Configurarea unui input digital și generarea de semnal PWM
• Un input digital și un output de PWM vor fi configurate

• Statusul pinului de input va fi citit ciclic având un delay între citiri


• Fiecare citire a pinului de input va conduce la o modificare a semnalului de PWM astfel:
• Dacă statusul este LOW, semnalul PWM va scădea cu 2% pe fiecare citire
• Dacă statusul este HIGH, semnalul PWM va crește cu 2% pe fiecare citire
• Când semnalul PWM ajunge la extremități, atunci modificarea acestuia nu va mai fi posibilă cât timp
statusul pinului de input va rămâne același.

25 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Sesiune practică
Modulele care vor fi folosite:
• Drivere:
• PORT
• DIO
• PWM
• MCU
• Handlere:
• DinH
• PoutH

26 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Sesiune practică
Cerințe, explicații și implementare PORT

• Modulul PORT realizează configurația fiecărui pin de pe uC în funcție de necesitățiile proiectului


• Asignarea pinilor: Table 2.9 pagina 91
• Maparea funcțiilor alternative: Table 2.48 pagina 152, Table 2.27 pagina 123
• În PORT_Types.h, deja au fost implementate cerințele privind maparea între tipurile generale și
cele folosite de modul
• Modificări ce trebuie făcute în PORT.c:
• În PORT_Init(), configurarea funcției și direcției pinilor folosind Port Mode Control register, Port Mode register,
Port Input Buffer Control register, Port Function Control register
• În PORT_GetPinMode(), implementată diferențierea între pinii primiți ca parametru, iar în funcție de ce pin a
fost primit, să fie returnate valorile dorite (mod și direcție).

27 HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie 2017


Semnale digitale și PWM
Sesiune practică
Cerințe, explicații și implementare DIO

• Modulul DIO realizează schimbarea stării (HIGH și LOW) unui pin configurat din PORT ca I/O
• În DIO.h, a fost realizată definirea de canale folosite ca input în proiect
• Modificări ce trebuie făcute în DIO_Types.h:
• Definirea tipurilor de date folosite de modul în funcție de cele standard (uint8, uint16, etc)
• Modificări ce trebuie făcute în DIO.c:
• Verificarea de pin corect primit ca parametru
• Apelarea corectă a funcției din PORT de verificare a configurației pinului primit
• Citirea valorii pinului din registrii uC-lui și returnarea acesteia în pointerul primit

HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie


28 Confidential ISO 16016
2017
Semnale digitale și PWM
Sesiune practică
Cerințe, explicații și implementare DinH

• Modulul DinH realizează abstractizarea canalelor digitale de input și manipularea ciclică a acestora
• În DinH.h, a fost realizat un exemplu de definire a unor semnale de input folosite în proiect
• Modificări ce trebuie făcute în DinH_Types.h:
• Definirea tipurilor de date folosite de modul în funcție de cele standard (uint8, uint16, etc)
• Modificări ce trebuie făcute în DinH.c:
• Definirea în DinH_Init() a buferului folosit
• Citirea ciclică a statusului canalului de DIO în funcția DinH_Cyclic() și updatarea buferului cu acel status
• Verificarea canalului trimis ca parametru în funcția DinH_GetChannelValue()
• Retunarea statusului din bufer către utilizator prin pointerul primit ca parametru în funcția DinH_GetChannelValue()

HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie


29 Confidential ISO 16016
2017
Semnale digitale și PWM
Sesiune practică
Cerințe, explicații și implementare PoutH

• Modulul PoutH realizează abstractizarea canalelor de PWM și manipularea ciclică a acestora


• În PoutH.h, a fost realizat un exemplu de definire a câteva semnale de PWM folosite în proiect
• Modificări ce trebuie făcute în PoutH_Types.h:
• Definirea tipurilor de date folosite de modul în funcție de cele standard (uint8, uint16, etc)
• Modificări ce trebuie făcute în PoutH.c:
• Definirea în PoutH_Init() a buferului folosit
• Scrierea ciclică a canalului de PWM în funcția PoutH_Cyclic() și verificarea în caz de modificare de duty cycle
• Verificarea canalului și valorii corecte trimise ca parametru în funcția PoutH_SetChannelValue()
• Updaterea valorii din bufer în funcție de valoarea primită pentru canalul de PWM în funcția
PoutH_SetChannelValue()

HELLA Embedded Club| HELLA Craiova | Craiova, Noiembrie


30 Confidential ISO 16016
2017