Elektronička računala i računalna oprema
Predavanje 4: Ulazi i izlazi na mikroupravljač
Video: https://www.youtube.com/watch?v=XQLXKLN_8ZE&index=8&list=PLYqeapOP_CtQKuyzaHtJz16r5JaM4vs-w
Snimljeno 27.10.2016 s TCL SVC 200
1 of 41
Download to read offline
More Related Content
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
1. DIGITALNI ULAZI I IZLAZI
Tehničko veleučilište u Zagrebu
Elektrotehnički odjel
Stipe Predanić
20.10.2016
Elektronička računala i računalna oprema
2. Mikroprocesor i mikroupravljač
● Za upotrebljivo računalo potreban je
– CPU (centralna procesorska jedinica)
– ROM s programom (barem osnovnim)
– RAM za privremeno spremanje podataka
– sklopovi za rad s vanjskim jedinicama
● Mikroprocesor je uobičajeno samo CPU
● Mikroupravljač je cijelo računalo “sve u jednom”
– stoga su nam korisniji za izradu raznih uređaja
3. Digitalni ulazi i izlazi
● Mikroupravljač je potrebno spojiti na vanjske jedinice
– bez ulaza i izlaza nema smisla raditi računalo
● što je potrebno?
– nekakav ulaz, obrada podatka, izlaz
– ulazna jedinica -> CPU -> izlazna jedinica
● Ulazi i izlazi omogućuju mikroupravljaču postavljanje ili
čitanje stanja iz vanjskog svijeta
4. Ulazi
● Kakvi mogu biti ulazi u mikroupravljaču?
– Digitalni
– jedan pin predstavlja jedan bit. Niz bitova (ili cijeli port) se
mogu koristiti kao grupa, ako zatreba
● Analogni
– ugrađena podrška za analogno-digitalnu konverziju
– rezolucija je definirana hardverskom podrškom u samo
mikroupravljaču
● Što ako je potrebna finija rezolucija?
– upotrebljava se vanjski AD pretvornik, te se koriste digitalni
pinovi kao ulaz, ili se podaci šalju preko nekog od protokola
serijske komunikacie (SPI, I2C, TTL serial)
5. Izlazi
● Kakvi mogu biti izlazi na mikroupravljaču?
– Digitalni
● Obični izlazi, jedna izlazna nožina (eng. pin) je jedan bit. Može
se koristiti i niz bitova (ili cijela vanjska vrata eng. port) kao
grupa, ako zatreba.
– Analogni
● Dvije opcije:
– ugrađeni DA pretvornik daje vanjsku vrijednost
– analogni izlaz se simulira kroz širinsko impulsnu modulaciju i
(ako je potrebno) dodatne sklopove
6. Nožice na mikroupravljaču
● Nožice koje služe kao digitalni ulazi i izlazi se često
nazivaju i GPIO (eng. General Purpose Input/Output), jer
je njihova namjena općenita
● Neke nožice mogu imati i specifične zadaće poput serijske
komunikacije ili rada sa sklopovski ugrađenim brojačima.
Tad treba paziti kako se ne bi koristile nožice u dvije ili više
svrha.
7. ŠIM
● Širinsko impulsna modulacija ŠIM (eng Pulse Width
Modulation - PWM)
● korištenjem digitalnog signala dovoljno visoke frekvencije
u kojem se kontrolira odnos impuls/pauza postiže se
modulacija na željenom nivou analognog signala
● iako je izlaz zapravo digitalan, spojeni sklopovi dobivaju
srednju vrijednost odnosa te je moguće dobiti kompletan
analogni spektar
8. Mikroupravljač i ulazi/izlazi
● Ovisno od serije mikroupravljača potrebno je definirati koji
su portovi ulazi a koji su izlazi. Smjer (ulaz odnosno izlaz)
je moguće mjenjati tijekom rada programa, ali u bilo kojem
trenutku port je ili ulaz ili izlaz.
● Neki su mikroupravljači specifični, pa podržavaju oba
smjera odjednom. Takav je i Intel 8051, koji ćemo koristiti
na laboratorijskim vježbama.
9. Građa 8051 portova – idejna slika
Slika preuzeta s: http://www.mikroe.com/chapters/view/65/chapter-2-8051-microcontroller-architecture/
10. Građa 8051 portova - građa
Ugrađeni pull-up
otpornici
Slika preuzeta iz datasheeta.
12. Ulaz - spajanje tipkala
● Tipkalo
– Mehanički elementi koji zatvaraju strujni krug
● Izgled i stvarna namjena su nevažni, čim ispunjava gornji opis
Slike preuzete sa stranica trgovaca elektroničkim komponentama: Chipoteka, Kronos, Forma elektronika
13. Ulaz - spajanje tipkala
● Tipkalo
– Zbog same izrade nemoguć je automatski prijelaz iz jednog
u drugo stanje
● Problem bouncinga
Slika preuzeta s: http://www.ganssle.com/debouncing.htm
14. Ulaz - spajanje tipkala
● Tipkalo
– Debouncing sklopovi
– Debouncing se može riješiti i programski
● U tom slučaju sve izračune poželjno je obaviti u maksimalno
50ms, jer toliko kašnjenje korisnik sklopa “ne osjeti”
Slika preuzeta s: http://www.ganssle.com/debouncing.htm
15. Ulaz - spajanje tipkala
● Tipkalo
– Proteus i (de)bouncing
● Proteus ne simulira bouncing, stoga nije nužan
● Shema se može pojednostaviti!
– Ali ne previše!
Primjer: direktan spoj na +5V (ili masu, ako bi se tako
projektant odlučio) nije dobar, jer napon na nožici 32 nije
definiran kad je sklopka otvorena (u Proteusu prikazano
sivom bojom). Sjetimo se CMOS sklopova s Digitalnih
sklopova.
Slike preuzete s: materijali mr.sc.Dražena Ćike
16. Ulaz - spajanje tipkala
● Tipkalo
– Uobičajena tehnika je spajanje ulaza preko otpornika na višu
naponsku razinu (pull-up), a spoj ulaza i otpornika preko
tipke se spaja na masu.
– Vidljivo je kako su u oba slučaja vrijednosti definirane
Slike preuzete s: materijali mr.sc.Dražena Ćike
17. Ulaz - spajanje tipkala
● Tipkalo
– Što bi se dogodilo ako bi spojili otpornik kao pull-down (spoj
prema masi)?
– Može se primjetiti kako je nožica 32 u oba slučaja na visokoj
razini (označeno crveno)
● Razlog: 8051 nema postavke smjera (ulaz ili izlaz), te se
nožica uvijek ponašaju i kao izvor napona.
Dva invertora čine odvojni sklop (eng.
Buffer) kako nožica ne bi napajala otpornik
Slike preuzete s: materijali mr.sc.Dražena Ćike
18. Izlaz - spajanje LE dioda
● Svjetleća dioda
– eng. Light Effect Diode – LED
– Dioda koja svjetli u određenoj boji
– Važni parametri:
● Struja potrebna kako bi LED svjetlila maksimalnom jačinom
(“radna struja”)
– Tipične vrijednosti: 20mA standardne LED, 2mA štedljive LED
● Napon koljena (minimalni napon u propusnom smjeru kako bi
dioda vodila struju)
– Tipične vrijednosti: oko 1.5 do 2V za žutu i crvenu LED, oko 3V
za plavu i bijelu
19. Izlaz - spajanje LE dioda
● Svjetleća dioda
Slike preuzete s: http://www.electronics.dit.ie/staff/tscarff/DT089_Physical_Computing_1/LEDS/Leds.htm
20. Izlaz - spajanje LE dioda
● Svjetleća dioda
– Potrebno je spojiti otpornik koji će ograničiti maksimalnu struju
kroz LED, te koji će preuzeti “višak” napona
– Primjer izračuna za
● VS
= 5V
● VF
= 2V
● IF
= 20mA
● RS
= 150 ohma
● Veći otpor bi smanjio struju, jer je
pad napona isti, ali bi I LED slabije
svjetlila
● Snaga koja se pretvara u toplinu
P = I2
R = 60 mW
Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
21. Izlaz - spajanje LE dioda
● Svjetleća dioda
– LED se može direktno pogoniti s nožice mikroupravljača, ali
treba paziti na maksimalne struje koje nožica
mikroupravljača može primiti ili dati.
● Nožica može biti
– Izvor struje (eng. current source), primjer je nožica 21
– Ponor struje (eng. current sink), primjer je nožica 28
Slike preuzete s: materijali mr.sc.Dražena Ćike
22. Izlaz - spajanje LE dioda
● Svjetleća dioda
– Vrijednosti koje je potrebno postaviti na mikroupravljaču
kako bi LED svjetlila:
● Mikroupravljač izvor struje (eng. current source) – nožica u
visokoj razini (logička 1)
– važno je pripaziti na maksimalnu struju koju kroz jednu nožicu
može dati mikroupravljač
● Mikroupravljač ponor struje (eng. current sink) – nožica u
niskoj razini (logička 0)
– Opet je važno pripaziti na maksimalnu struju, iako
mikroupravljači u pravilu mogu podnijeti veću struju ponora nego
dati struju izvora
– Važno: vrijednost na nožici niska razina (logička 0), a LED
svjetli?
● Nekad se elementi uključuju s “0”, a isključuju s “1”
Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
23. Izlaz - spajanje LE dioda
● Svjetleća dioda
– Potrebno je biti oprezan ako se želi spojiti više LED na isti
pin
● (pre)velike struje
● Paziti na zasebnost svake LED, ne spajati paralelno s jednim
otpornikom ili čak serijski
– Problemi kad pregori jedna
● Ako je potrebno, spojiti preko tranzistora
Slika preuzeta s: http://forum.arduino.cc/index.php?topic=8320.0
24. Izlaz – spajanje na 7 segmentni display
● 7 segmentni display
– Nije ništa drugo doli 7 LED u jednom kućištu, s zajedničkom
katodom ili anodom
– Moguće pogoniti:
● direktno iz mikroupravljača
– Potrebno je barem 7 linija s mikroupravljača, paziti na struju
● kroz BCD dekoder za 7 segmentni display
– Potrebne su 4 linije s mikroupravljača, nije potrebno paziti na
struju
● Kroz posmačne registre (eng. shift) za izlaz
– Potrebno je 3 linije s mikroupravljača, struja je nevažna
25. Izlaz – spajanje uređaja s većim potrebama struje
● Ako je potrebno spojiti uređaj koji ima veće potrebe za
strujom, koristimo tranzistore ili odgovorajuće sklopove za
pokretanje (eng. driver)
Slike preuzete s: http://generichid.sourceforge.net/pwm.htm ; http://electronics.stackexchange.com/questions/17116/how-to-drive-a-mosfet-with-an-optocoupler
26. Izlaz – spajanje releja
● Releji se koriste kad je teret kojim se upravlja naponski i
strujno izvan raspona rada mikroupravljača
– Kako releji zahtjevaju dosta struje, potrebno ih je upogoniti s
nekom vrstom tranzistora
– Dioda na slici se naziva flyback dioda, i spriječava nagli
porast napona nakon isključenja zavojnice releja
Slike preuzete s: https://www.pantechsolutions.net/microcontroller-boards/relay-interfacing-with-8051-slicker http://www.mikroe.com/chapters/view/69/chapter-6-examples/
27. Izlaz – spajanje na H-most
● Ako mikroupravljač treba upravljati sklopom ili opremom
koja ima potrebu za promjenom polova, koristi se H-most
– Npr. Motor koji bi se trebao vrtjeti na jednu ili drugu stranu
Slika preuzeta s: http://developer.mbed.org/users/4180_1/notebook/relays1/
Ulaz 1 Ulaz 2 Rezultat
niska razina (0) niska razina (0) motor se ne vrti
niska razina (0) visoka razina (1) motor se vrti na jednu stranu (stezaljka A+, B-)
visoka razina (1) niska razina (0) motor se vrti na drugu stranu (stezaljka A-, B+)
visoka razina (1) visoka razina (1) motor se ne vrti
28. Galvansko odvajanje
● S obzirom na naponske razine i struje kod rada s
tranzistorima, relejima i mostovima, možda bi bilo pametno
odvojiti mikroupravljač od tih nepoćudnih stvari
– Galvansko odvajanje (strujno odvajanje) obavlja se pomoću
optičkog izolatora (optoisolator) odnosno sprežnika (eng.
Optocoupler)
– Radi se o paru LED i fototranzistor u jednom kućištu
– Sklopovi su razdvojeni strujno i naponski
Slike preuzete s:http://320volt.com/opto-kuplor-nedir-nasil-calisir-cesitleri/
29. Rad s portovima – maskiranje bitova
● Registri mikroupravljača mogu biti adresabilni
– Po bitu
– Po byteu
● Nerijetko se registri koji su 16 (ili više) bita dijele u dva (ili više) 8
bitna registra
– Po cijelom registru (ako se radi o 16 ili više bitnom registru)
● Kako u registru koji nije adresabilan po bitu promjeniti samo
jedan bit?
– Koristeći maskiranje bitova pomoću bitwise operatora
● Bitwise operatori:
– I, AND &
– ILI, OR |
– NE, NOT ~
– XOR ^
30. Rad s portovima – maskiranje bitova
● Postavljanje (setiranje) bita u registru/varijabli
REG = REG | 0b00010000
npr. REG 11000100 x ILI 1 = 1
| 0b00010000 x ILI 0 = x
= 11010100
● Brisanje bita (resetiranje) u registru/varijabli
REG = REG & 0b11101111
npr. REG 11010100 x & 1 = x
& 0b11101111 x & 0 = 0
= 11000100
31. Rad s portovima – maskiranje bitova
● Invertiranje bita u registru/varijabli
REG = REG ^ 0b00010000
npr. REG 11000100 REG 11010100 0 XOR 1 = 1
^ 0b00010000 ^ 0b00010000 1 XOR 1 = 0
= 11010100 11000100 x XOR 0 = x
● Invertiranje svih bitova osim jednog registru/varijabli
REG = REG ^ 0b11101111
npr. REG 11010100
^ 0b11101111
= 00111011
32. Rad s portovima – maskiranje bitova
● Kako promjeniti n-ti bit u registru?
REG = REG ? (1 << n );
– ? je bitwise operacija (može po potrebi biti složena)
– Postupak očekuje:
● Stavljanje 1 u privremenu memoriju (neki od slobodnih registara
opće namjene)
● Pomicanje (shift) za n mjesta
– Npr 1 << 5 rezultira s 0b00100000
– Paziti na numeraciju: 1 << 0 je zapravo isti broj
– Kod operacije I ( & ) potrebno je invertirati dobiveni posmak
REG = REG & ~ (1 << n);
00000001 → 00010000 → 11101111
33. Rad s portovima – maskiranje bitova
● Kako promjeniti nekoliko bitova odjednom?
– Postupak je isti!
REG = REG & 0b11110000
● Briše (resetira) zadnja 4 bita
REG = (REG & 0b11110000) | (1 << 1)
● Briše zadnja 4 bita i odmah postavlja predzadnji bit u 1
34. Izlaz – spajanje na posmačni registar
● Jednostavno proširenje broja izlaza na svakom
mikroupravljaču se obavlja korištenjem posmačnog
registra koji ima serijski ulaz i paralelni izlaz
– Primjer takvog je 74HC595
Slika preuzeta s: datasheet proizvođača
Paralelni izlazi
Serijski izlaz za kaskadiranje
Master reset (mora biti 1)
Clock DATA (podatkovni clock)
Output enable (mora biti 1)
Clock za izlaz (LATCH prema izlazima)
Podatkovni (data) ulaz
Paralelni izlaz (0)
35. Izlaz – spajanje na posmačni registar
● Ideja rada:
Slika preuzeta s: https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/the-74hc595-shift-register
36. Izlaz – spajanje na posmačni registar
● Primjer spajanja na mikroupravljač:
– Potrebne su samo 3 linije na mikroupravljaču, za upravljanje
s 8 linija izlaza
Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
37. Izlaz – spajanje na posmačni registar
● Primjer programskog koda:
for (i=0; i<8; i++) {
DATA=podatak & 1; // maskiranje kako bi ostao samo zadnji bit
SHIFT_CLOCK=1;
delay(); // malo kašnjenje
SHIFT_CLOCK=0;
podatak=podatak>>1;// pomakni (shift) podatak za 1 mjesto udesno
}
LATCH_CLOCK=1;
delay();
LATCH_CLOCK=0;
38. Izlaz – spajanje na posmačni registar
● Dobivanje 8 linija za 3 linije
nije puno, ali je moguće
kaskadirati shift registre,
odnosno povezati ih u
lanac.
– Tad za 3 linije na
mikroupravljaču dobivamo
16, 24, 32 izlazne linije,
nauštrb brzine (jer treba
sve prebaciti u posmačni
registar)
Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
39. Ulaz – spajanje na posmačni registar
● Sličan postupak kao kod izlaza, ali se koriste paralelni
ulazi i serijski izlaz
– 74HC597, CD4021
Slike preuzete s: datasheet proizvođača, http://www.arduino.cc/en/Tutorial/ShiftIn
40. Ulaz – spajanje na posmačni registar
● Kaskadiranje ulaza
Slike preuzete s: http://arduino.ru/forum/apparatnye-voprosy/uvelichenie-kol-knopok-74hc597-kaskadirovanie
41. Posmačni registri
● Postoji puno različitih modela posmačnih registara
– Npr 74198 i 7199 imaju i serijske i paralelne - ulaze i izlaze
– Važno je razumjeti potrebe
● IZLAZI : serijski ulaz → paralelni izlaz
● ULAZI : paralelni ulaz → serijski izlaz
– Preko posmačnih registara moguće je primiti ili poslati
podatke na sve uređaje (nema razlike u funkcionalnosti svih
danih shema) ali nauštrb vremena potrebnog da se podaci
prebace između mikroupravljača i shift registra.