|
2 KANALNI AD KONVERTOR |
Primer upotrebe
mikrokontrolera za AD konverziju data je na donjoj slici.
Mikrokontroler PIC16F877 ima više pinova koji se
mogu koristiti za AD konverziju. U ovom primeru upotrebljeni su pinovi RA2 i RA3. Potenciometrima P1
i P2 menjamo ulazni napon koji
dolazi na pinove za merenje. Ovaj mikrokontroler ima 10-bitnu AD rezoluciju tj.
ima 210=1024 koraka, odnosno za napon od 5 Volti rezolucija je 5
/1023=0.0048 = 4.8mV. Izmereni napon nakon konverzije šalje se na LCD
displej(2x16 karaktera). Program je tako napisan da vrši merenje na prvom,
a zatim drugom kanalu i tako ukrug.
Rb. |
Komponenta
|
Količina |
1. |
IC2 - PIC16F877A dip pakovanje |
1 kom |
2. |
Naponski regulator 7805 |
1 kom |
3. |
Alfanumerički displej
D16217SYH |
1 kom |
4. |
Q1 - Keramički rezonator 3
pina - 4 Mhz |
1 kom |
5. |
P1, P2
– trimer potenciometri 5k, linearni |
2 kom |
6. |
DIL-8 podnožje |
1 kom |
7. |
R1 - 10kW(1/4W) |
1 kom |
8. |
C1, C2 – 1 mF elektrolitski |
2 kom |
9. |
R -
mikro taster za PCB montažu |
1 kom |
10. |
Dvopolna
redne stezaljke za štampu |
2 kom |
11. |
Kabal za priključak 9 V
baterije |
1 kom |
Program za po podršku ovom konvertoru je sledeći:
''**************************************************************** ' IME PROGRAMA: ADKONVER.BAS ' OPIS: Program meri vrednost napona na pinu
RA2 i RA3 ' Radi se o desetobitnoj konverziji.
Vrednost napona se prikazuje ' na LCD displeju koji je povezan na port D. ' Okretanjem potenciometra P1 menja se napon
na RA2 a P2 na RA3 '**************************************************************** DEFINE
LCD_DREG PORTD DEFINE LCD_DBIT 4 DEFINE LCD_BITS 4 DEFINE LCD_RSREG PORTD DEFINE LCD_RSBIT 2 DEFINE LCD_EREG PORTD DEFINE LCD_EBIT
3 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 40 Define
ADC_BITS 10 ' Broj bita Define ADC_CLOCK 1 '
Klok (0=Oscilator /8) AD_Rez
var word ' Rezultat AD konverzije Napon var word ' Promenljiva za dobijanje napona TRISA = %11111111 '
Port A je ulazni ADCON1 = %10000010 ' Port A je u
analognom modu, 0 i 5V su
' referentni naponi a rezultat je desno
'formatiran. Dummy var
byte ' Promenljiva za 32 bitno delenje i mnozenje Pause 500
'
Pauza 0.5 sec Lcdout
$fe, 1 ' Izbrisi ceo LCD displej Lcdout $fe, 2 ' Pozicioniraj se na prvi red prvi karakter Lcdout " AD KONVERTOR"
' Ispisi "AD KONVERTOR" u prvom redu Lcdout $fe, $C0
' Podesi kursor na pocetak drugog reda Lcdout
"sa 2
kanala"
' Ispisi dati tekst u drugom redu displeja Pause 15000 ' Pauza 15
sec Glavni: ' Procitaj 1 kanal na RA2 i prikazi Lcdout
$fe, 1 ' Izbrisi ceo LCD displej Lcdout $fe, 2 ' Pozicioniraj se na prvi red prvi karakter Lcdout
" A/D kanal br.1" ' Ispisi “A/D kanal br.1 u prvom redu ADCIN 2, AD_Rez
' Izvrsi konverziju na
RA2 i 16 bita i
' rezultat smesti u AD_Rez. Lcdout $fe, $C0 '
Podesi kursor na pocetak drugog reda Dummy
= AD_Rez * 5 * 100 Napon =
Div32 1023 Lcdout $fe, $C0
' Podesi kursor na pocetak drugog reda Lcdout
" Napon:", DEC Napon DIG
2,".", DEC2 Napon, "V"
Pause 10000 '
Pauza 10 sec ' Procitaj 2 kanal na RA3 i prikazi Lcdout $fe, 1 '
Izbrisi ceo LCD displej Lcdout $fe, 2 ' Pozicioniraj se na prvi red prvi karakter Lcdout " A/D kanal br.2" ' Ispisi
“A/D kanal br.2 u prvom redu ADCIN 3, AD_Rez '
Izvrsi konverziju na RA3 i 16 bita i
' rezultat smesti u
AD_Rez. Lcdout $fe, $C0 ' Podesi kursor na pocetak drugog
reda Dummy = AD_Rez * 5 * 100 Napon = Div32 1023 Lcdout $fe, $C0
' Podesi kursor na pocetak drugog reda Lcdout
" Napon:", DEC Napon DIG
2,".", DEC2 Napon, "V" Pause 10000
' Pauza 10 sec Goto Pocetak ' Kreni ponovo na merenje End
' Kraj programa |
Program čita rezultat AD konverzije
instrukcijom ADCIN x, AD_Rez gde je x broj kanala a AD_Rez promenljiva dužine jedne reči u koju se
smešta 10 bitna vrednost konverzije. Da bi dobili rezultat na dve decimale
koristimo instrukciju Div32 koja
koristi 32 bita za rezultat. Tako dobijen rezultat prikaže se na displeju.
Nakon prikaza na displeju napravi se pauza od 10 sekundi pre prelaska na
očitavanje sledećeg kanala.
http://vojo.milanovic.org
© Copyright, 2005 Milanović Vojo
All right reserved