590 likes | 978 Views
Elektronski fakultet Niš Katedra za elektroniku. Implementacija impulsno-širinske (PWM) i impusno-amplitudske modulacije (PAM) korišćenjem mikrokontrolera PIC16F877. Miličić Nikola 10881 Branković Dragan 10763. 1. Impulsno-širinska i impusno-amplitudska modulacija.
E N D
Elektronski fakultet Niš Katedra za elektroniku Implementacija impulsno-širinske (PWM) i impusno-amplitudske modulacije (PAM) korišćenjem mikrokontrolera PIC16F877 Miličić Nikola 10881 Branković Dragan 10763
1. Impulsno-širinska i impusno-amplitudska modulacija • Impulsno širinska modulacija(PWM) je vrsta upravljanja koja predstavlja način da se od digitalnog signala napravi signal analogne vrednosti. Korišćenjem brojača sa visokom rezolucijom, odnos impuls/pauza se moduliše da odgovara specificiranom nivou analognog signala. • Impulsno-amplitudska modulacija (PAM) je metod modulacije signala u kojoj se informaciona poruka kodira po amlitudi iz serije signalnih impulsa. Na primer, 2-bitni modulator (PAM-4) uzima po 2 bita istovremeno i odmerava amplitude signala po jednom od mogućih nivoa, -3v, -1v, 1v i 3v. Mogu da budu i drugačije vrednosti napona na nivoima ali su ovi uobičajeni.
Impulsno širinska modulacija - PWM • Na slici su prikazani PWM signali sa tri različita odnosa impuls/pauza , odnosno sa tri različita faktora ispune. • Na slici a)prikazan je signal sa faktorom ispune 0,1, • Na slicib) je prikazan signal sa faktorom ispune 0,5 i • Na slicic) je prikazan signal sa faktorom ispune 0,9. • Ova tri signala reprezentuju tri vrednosti analognog signala. Ako je npr. napon napajanja 9V tada navedeni signali na svom izlazu daju vrednosti od 0.9V, 4.5V i 8.1V respektivno.
Struktura PWAM modulacije • Na slici a) prikazana je šema PWAM primopredajnika, gde čip A koristi 4-bitni PWAM predajnik kako bi preneo odmerene podatke i klok preko kanala sve do čipa B koji obnavlja podatke i klok. Na slici b) imamo 4-stepeni PWM (4-PWM) i 5-stepeni PAM (5-PAM) koji prenosi 4 bita podataka i sistemski klok preko kanala. PWAM kodirani signali ne mogu da postignu velike brzine zbog PAM formata ali mogu znatno da redukuju ukupan broj pinova i da obezbede lako rekonstruisanje klok signala (takta) uz pomoć PWM funkcije.
2. MIKROKONTROLER • Mikrokontroler (microcontroller) je elektronski uređaj koji, slično kao i računar, ima zadatak da zameni čoveka u kontroli dela proizvodnog procesa ili gotovo celog proizvodnog procesa. To je uređaj opšte namene, koji pribavlja podatke, obavlja ogranicenu obradu nad tim podacima, i upravlja svojim okruzenjem na osnovu rezultata izracunavanja. Mikrokontroleri su uglavnom dizajnirani za specifične zadatke, vrlo raznolike od slučaja do slučaja. Primera ima mnogo, od jednostavne regulacije osvetljenja, alarmnih sistema, pa do upravljanja robotima u industrijskim pogonima. • Svi mikrokontroleri imaju usađenu memoriju na čipu kao i veći broj ulazno-izlaznih interfejs linija. Mikrokontroleri poseduju A/D i D/A konvertore, impulsno-širinski modulisane (PWM) generatore, sofi-sticirani sistem prekida, veći broj serijskih i paralelnih ulazno-izlaznih portova, fleksibilni sistem tajmer-brojač događaja, LCD drajvere, i dr. Ova njegova kompaktnost se može iskazati konstatacijom: Računar na jednom čipu.
Opis mikrokontrolera PIC16F877 Firma Microchip je tržištu ponudila mikrokontroler PIC16F877 pre oko deset godina. Ovaj mikrokontroler takođe predstavlja integraciju mikroprocesora (CPU), memorije i periferija. On je izrađen u CMOS tehnologiji sa ugrađenom FLASH i EEPROM memorijama, za čuvanje programa i podataka. PIC16F877 ima tipičnu RISC arhtekturu (ka-rakteriše manjim skupom instrukcija koje se brže izvršavaju u odnosu na CISC arhitekturu).
RASPORED PINOVA PIC16F877 DIP-40 ● Napajanjeod +5V se dovodinapinove VDD (11 i 32) a masanapinove VSS (12 i 31) ● Nozice OSC1 i OSC2 (pinovi 13 i 14) sluzezapriklucivanjeoscilatorskihkomponeti (RC-koloilikvarc) ● Pin 1 (MCLR/VPP) imadvostrukuulogu. Standardno se koristikao Reset, a u procesuprogramiranjakao pin zadovodjenjevisokognapona (13V) ● Ostalih 33 pinaprestavljaju U/I linije. One sugrupisane u pet portova (PORTA-PORTE) isvakiodnjihmozemokonfigurisatikaoulazniiliizlazni.).
OSNOVNE KARAKTERISTIKE MIKROKONTROLERA • RISC mikroprocesor visokih performansi • 35 instrukcija obima jedne reči • Radna frekvencija do 20 MHz • Trajanje taktnog intervala 200 ns, pri frekvenciji 20 MHz • Opkôd obima 14 bita • Harverski magacin sa osam nivoa • Tri načina adresiranja (direktno,indirektno i relativno) • Programska flash memorija kapaciteta 8 k X 14-bitnih reči • Memorije za podatke tipa RAM kapaciteta 368 X 8 bita • Memorije za podatke EEPROM tipa kapaciteta 256 X 8 bita • Prekidi (do 14 izvora prekida) • U/I portovi: A, B, C, D, E • Tri tajmera: - Timer0 (TMR0): 8-bitni tajmer/brojač_događaja - Timer1 (TMR1): 16-bitni tajmer/brojač_događaja - Timer2 (TMR2): 8-bitni tajmer/brojač_događaja
10-bitni 8-kanalni analogno-digitalni (A/D) konvertor • Serijska komunikacija: MSSP, USART • Paralelna komunikacija: PSP • Power-on Reset - reset pri uključenju napajanja (POR) • Power-up timer - unošenje kašnjenja nakon uključenja napajanja (PWRT) • Oscillator Start-up Timer - unošenje kašnjenja nakon stabilizovanja radne frekvencije oscilatora (OST) • Sleep mode - režim rada sa malim utroškom energije • Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora • Radni napon od 2V do 5.5V • Mala potrošnja energije: • -0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz • 20µA pri naponu od 3V i radnom taktu od 32kHz • -1µA u standby režimu rada.
BLOK DIJAGRAM MIKROKONTROLERA • Sa blok dijagrama kojeg daje proizvođač (Slika 2.1 ) može se ustanoviti da se koncepcija ovog mikrokontrolera ne razlikuje mnogo od koncepcije RISC mikrokontrolera drugih proizvođača prisutnih na tržištu. Uočavaju se standardne komponente: • Flash programska memorija – 8 kiloreči obima 14 bita • RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Višekanalni A/D konvertor, USART (univerzalni sinhroni i asinhroni primo-predajnik), tajmere, portove itd.
MEMORIJSKA MAPA MIKROKONTROLERA • Strukturu memorije kod PICmicro™ mikrokontrolera čine tri odvojena bloka: • Programska memorija • Memorija podataka • EEPROM memorija podataka. PIC16F877 mikrokontroleri imaju 13-bitni programski brojač (PC) koji je može da adresira memorijski prostor od 8k programskih reči od 14 bita. Reset vektor je 0x0000 i od njega počinje izvršavanje programa. Interapt vektor je 0x0004. Mapa programske memorije i magacin prikazani su dijagramom na sledećoj slici.
Organizacija memorije podataka • Memorija za podatke je izdeljena u više celina banki (eng. banks), a sastoji se od registara opšte namene (General Purpose Registers) i registara specijalne funkcije (Special Function Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0 koji služe za odabir željene banke podataka po principu:
Maparegistara mikrokontrolera • Mapa registara procesora PIC16F877A prikazana je na Sliki 2.4. Nekoliko specijalnih registara su registri jezgra, usko povezani sa funkcionisanjem CPU. Ostali registri su vezani za periferne module i služe njihovom upravljanju i kontroli statusa.
PROGRAMIRANJE • Harvardska RISC arhitektura procesora ima samo 35 instrukcija. One su 14-bitne i sastoje se od operacionog kôda i jednog ili više operanada. Slika 3.5 prikazuje opšti format implementiranih instrukcija, a kompletan pregled seta instrukcija daje tabela na narednom slajdu. Instrukcije su podeljene u tri kategorije: • Byte-oriented (operacije sa čitavim registrima), • Bit-oriented (operacije sa pojedinim bitovima), • Literal & Control (operacije sa konstantama i upravljačke).
MikroC – softver za PIC mikrokontrolere Osnovne karakteristike MikroC-asu: • Pisanje C kôda korišćenjem kvalitetnog i preglednog editora, što se ogleda u automatskoj kontroli i upozorenjima vezanim za sintaksu kôda, korišćenih para-metara, kao i automatskoj korekciji pojedinih grešaka • Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code explorer • Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka toka programa preko ugrađeg debagera (debugger) • Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje značajno ubrzavaju pisanje programa • Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike kôda i slično.
MikroC – parametri USART terminala • Parametri koji se podešavaju: • Serijski port (COM1, COM2, COM3) • Brzina prenosa • Broj stop bitova (1, 1.5 ili 2) • Izbor parnosti (bez, parna, neparna itd.) • Broj bitova koji čine karakter (5, 6, 7 ili 8) • Uključivanje/isključivanje handshaking signala (RTS i DTR) • Izbor formata podatka koji se šalje (ASCII, HEX ili DEC) • Način slanja.
PISANJE KÔDAU MikroC-u • Postupak pisanja kôda u mikroC-u (u narednim slajdovima) i generisanje fajlova posle prevođenja (kompilacije/ kompajliranja) biće objašnjeno na sledećim stranama. Slike dovoljno jasno ilustruju ceo proces, a komentari se nalaze ispod slika.
Podešavanje parametara projekta (naziv mikrokontrolera, takta, reseta...)
Posle prevođenja (kompilacije/kompajliranja) generiše se nekoliko fajlova: asemblerski kôd (ASM), heksadecimalni kôd (HEX), izveštaji itd.
USART TERMINAL • Pokretanje internog softverskog terminala mikroC-a koji se koristi za komunikaciju računara i mikrokontrolera ostvaruje se na sledeći način: • Tools → USART Terminal
Podesivi parametri u USART-u: • Serijski port (u padajućem meniju treba izabrati željeni serijski port, a kod standardnih računara to su COM1 i COM2) • Brzina prenosa (za frekvenciju kvarca od 4MHz treba izabrati 2400 bauda, dok za 8MHz bira se 9600 bauda itd.) • Broj stop bitova (1, 1.5 i 2) • Izbor parnosti (bez, parna, neparna itd.) • Broj bitova koji čine karakter (5, 6, 7 ili 8) • Uključivanje/isključivanje handshaking signala (RTS i DTR) • Izbor formata podatka koji se šalje (ASCII, heksadecimalni - HEX ili dekadni - DEC) • Način slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.
Kada se podese parametri, terminal se startuje klikom na komandno dugme Connect. • Odmah zatim, terminal je spreman da prihvati komande (vidi Sliku 3.9). Kada se završi komunikacija, treba kliknuti na komandno dugme Disconnect. Izgled prozora softverskog USART terminala kada je pokrenut
Implementacija PWAM predajnika Blok šema PWAM predajnika realizovanog pomoću mikrokontrolera
Električnašema PWAM predajnika realizovanog pomoću mikrokontrolera
Na prethodnoj slici je prikazana električna šema PWAM predajnika realizovanog preko mikrokontrolera PIC16F877 i operacionog pojačavača LF353. • Mikrokontroler PIC16F877 radi na frekvenciji od 4Mhz. • Pošto se koristi transformator bez srednje tačke, za formiranje vrši se jednostrano usmeravanje/ ispravljanje i pozitivnog i negativnog napona. Oba napona se stabilizuju preko regulatora napona 7805 i 7905, respektivno. • Komunikacija mikrokontrolera sa PC računarom se ostvaruje preko interfejsnog kola MAX232. Pomenuta komunikacija je bez handshaking-a. • Na Slici je ilustrovan raspored komponenti na štampanoj ploči. Napominjemo kako su električna šema i štampana ploča (PCB) dizajnirani u programu PROTEL 99 SE. • Na izlazu operacionog pojačavača formiraju se naponi -2ΔV, - ΔV, 0, ΔV i 2ΔV, zavisno od toga koji se signal prenosi. • U formiranju PWAM signala učestvuju 2 bita za PAM i 2 bita za PWM modulaciju – kada je signal dozvole aktivan.
Štampana ploča (PCB) PWAM predajnika realizovanog pomoću mikrokontrolera
Programski kod u mikroC-u unsigned short i = 0, j = 0, k = 0, l = 0; unsigned short m = 0, n = 0, t = 0, o = 0, q = 0; void main() { TRISB = 0x00; // pinova PORTA PORTB = 0b01100000; TRISD = 0x00; PORTD = 0x00; TRISA = 0b111111; ADCON0 = 0; // Definisanje digitalnih signala A porta ADCON1 = 6; Usart_Init(2400); // Inicijalizacija USART modula // (8 bita, 2400 bauda) do { // Otvaranje beskonacne petlje j.F0 = PORTA.F4; j.F1 = PORTA.F5;
PORTB.F7 = !l.F1; PORTB.F6 = !l.F1&&!l.F0; PORTB.F5 = !l.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(o); PORTB.F4 = 0; PORTB.F7 = !m.F1; PORTB.F6 = !m.F1&&!m.F0; PORTB.F5 = !m.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(o); PORTB.F4 = 0; PORTB.F7 = !n.F1; PORTB.F6 = !n.F1&&!n.F0; PORTB.F5 = !n.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(o); PORTB.F4 = 0; PORTB.F7 = 0; PORTB.F6 = 1; PORTB.F5 = 1; } if (Usart_Data_Ready()) { i = Usart_Read(); // Citanje primljenog podatka Usart_Write(i); // Slanje poslatog podatka k.F1 = i.F7; // Razbijanje 8-bitne reci na k.F0 = i.F6; // 2-bitne reci l.F1 = i.F5; l.F0 = i.F4; m.F1 = i.F3; m.F0 = i.F2; n.F1 = i.F1; n.F0 = i.F0; if (PORTA.F2 == 1) { o = j+1; PORTB.F7 = !k.F1; PORTB.F6 = !k.F1&&!k.F0; PORTB.F5 = !k.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(o); PORTB.F4 = 0;
if (PORTA.F2 == 0) { o = l+1; q = n+1; PORTB.F7 = !k.F1; PORTB.F6 = !k.F1&&!k.F0; PORTB.F5 = !k.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(o); PORTB.F4 = 0; PORTB.F7 = !m.F1; PORTB.F6 = !m.F1&&!m.F0; PORTB.F5 = !m.F0; delay_ms(1); PORTB.F4 = 1; Vdelay_ms(q); PORTB.F4 = 0; PORTB.F7 = 0; PORTB.F6 = 1; PORTB.F5 = 1; } } if (PORTA.F0 == 0) {// Na pritisak tastera generise // se testna PWAM sekvenca PORTB = 0b11100000; delay_ms(1); PORTB = 0b00100000; delay_ms(1); PORTB = 0b00000000; delay_ms(1); PORTB = 0b10000000; delay_ms(1); PORTB = 0b01100000; delay_ms(4); PORTB = 0b11100000; delay_ms(2); PORTB = 0b00100000; delay_ms(2); PORTB = 0b00000000; delay_ms(2); PORTB = 0b10000000; delay_ms(2); PORTB = 0b01100000; delay_ms(4);
PORTB = 0b11100000; delay_ms(3); PORTB = 0b10000000; delay_ms(3); PORTB = 0b00100000; delay_ms(3); PORTB = 0b00000000; delay_ms(3); PORTB = 0b01100000; delay_ms(4); PORTB = 0b00000000; delay_ms(4); PORTB = 0b10000000; delay_ms(4); PORTB = 0b11100000; delay_ms(4); PORTB = 0b00100000; delay_ms(4); PORTB = 0b01100000; delay_ms(4); } } while (1);// Kraj beskonacne petlje }//~!
LABORATORIJSKA VEŽBA - Zadatak • Povezati PWAM predajnik sa serijskim portom računara preko standardnog pin-to-pin DB9 kabla. • Dovesti kolu napajanje preko TRANSFORMATORA. • Postaviti sondu osciloskopa kao na slici 31. (Vremenska baza OSCILOSKOPA treba da bude 1ms). • Pokrenuti USART terminal iz programa mikroC. • Podesiti parametra USART terminala (prikazano na Slici 6.4): • COM1 ili COM2 (zavisno na koji port je povezano kolo) • Brzina 2400 Bauda, 1 stop-bit (One Stop Bit), Space bit parnosti (Parity), osam bitova čini karakter/podatak (Data bits), isključen RTS (Off) • Podesite da prenos mikrokontroler↔PC bude HEX • Čekirati Send as number.
Slika 30. Raspored tastera i prekidača Slika 31. Postavljanje sonde osciloskopa
Raspored tastera i prekidača je na Slici 30. • Pritiskom na taster SW1 vrši se resetovanje mikrokontrolera • Pritiskom na taster SW2 vrši se generisanje testnog signala, koji je prikazan na donjoj slici. Testni signal sadrži 4 sekvence 00101101, 00101101, 00011011 i 11010001, što je uokvireno u crvenom «prozoru» (Slika 32). • Kada je prekidač S1 u stanju logičke «1», to znači da se iz USART terminala šalju 4 dvobitna PAM signala, a da se širinska modulacija definiše prekidačima S3 i S4 (00, 01, 10, 11). Dakle, sva četiri signala se amplitudski modulišu po obrascu: 00 (-3.5V), 01 (-1.75V), 10 (1.75V), 11 (3.5V). Zatim se vrši širinska modulacija zavisno od stanja prekidača S3 i S4 (00, 01, 10, 11) . • Kada je prekidač S1 u stanju logičke «0», to znači da se iz USART terminala šalju 4 dvobitna PAM signala, pri čemu se sa prva dva bita definiše amplitudska modulacija, sa sledeća dva širinska modulacija. Isto se odnosi i na sledeći nibl (četvorku). Stanja prekidača S3 i S4 se u ovom slučaju programski ne tretiraju.
Slika 32. Izgled testne sekvence je uokvirena crvenim prozorom