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