H
hhhsssmmm
Guest
Hallo
Im benytter PIC12F675 med intern OSC kjører @ 4MHz.Im benytter MikroC kompilatoren versjon 8.2.
Jeg ønsker å gjøre en enkel ADC eksperiment.Vennligst se vedlagte diagram.
Før PIC er plassert i kretsen, er 10K potten er først trimmet for å få jevn 5.03V MAX utgang fra 15V DC forsyning som er en jevn variabel DC strømforsyning.Det 5V forsyning for PIC gis fra 78L05 regulator IC.Den første referansen er den samme for hele kretsen.
Nå når 15V DC forsyning er på 15V MAX, den 10K potten utgang leser på volt meter som 5.03V.Tilsvarende hvis 15V DC forsyning senkes til 10V, så 10k potten output leser på volt meter som 3.4V.Jeg antar at disse spenningene er også sett av PIC ADC pin (an1) som vist i diagrammet.
Min programmet nedenfor bare sjekker for å se at hvis ADC spenning er lik eller over 3.4V, så PIC slår på LED.Dersom spenningen faller under 3.4V, deretter LED forblir utenfor.
Dessverre er dette ikke skjer og LED forblir på selv om DC forsyning senkes ned til 6V.Da den tilsvarende spenningen ut fra POT leser 2V.Jeg har prøvd å variere "ADC_Result" variabel verdi til en mye høyere Vaule (800), men selv dette ikke hjelper, og det samme problemet gjenstår.
I mikroC kompilatoren, jeg har konfigurert prosjektet mitt som ....
CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = ON
Nedenfor er mitt program.Behage kanne noen hjelpe meg å løse dette problemet.
Takk
Haseeb
Code:unsigned int ADC_Result; / ADC resultat holding variabelvoid main (void)
(OSCCAL = 0x80; / trimming intern 4MHz OSC ned til 'Midtstilt'GPIO = 0; / intiallize porten/ / intillize den Comparitor pins (GP0 til GP1) til Digital I / O pinner
CMCON = 7;ADCON0.ADFM = 1; / / Result Høyre begrunnet
ADCON0.VCFG = 1; / / Voltage Reference is Vref/ / 01 Channel (an1) VALGT
ADCON0.CHS1 = 0;
ADCON0.CHS0 = 1;ADCON0.GO_DONE = 0; / / Stopp ADC konvertering
ADCON0.ADON = 0; / ADC funksjonshemmede/ / A / D-konvertering Clock er FOSC / 8
ANSEL.ADCS2 = 0;
ANSEL.ADCS1 = 0;
ANSEL.ADCS0 = 1;/ / An1 er Analog .....
Resten er alt Digital
ANSEL.ANS0 = 0;
ANSEL.ANS1 = 1;
ANSEL.ANS2 = 0;
ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED-utgang
TRISIO.GP1 = 1; / / Channel an1 inngangINTCON = 0; / deaktivere alle avbrudd
PIE1 = 0; / deaktivere alle perifere avbruddADCON0.ADON = 1; / / ADC Enabledmens 1 () / / løkke for alltid
(ADCON0.GO_DONE = 1; / / Start ADC konverteringmens ADCON0.GO_DONE (== 1); / / Vent til konvertering ferdigADC_Result = (ADRESH * 256) ADRESL; / Flette High byte med lav byteif (ADC_Result> = 696) / / hvis vi får 3.4VGPIO.GP5 = 1; / / LED påellersGPIO.GP5 = 0; / LED off)) / / End of main ()
Im benytter PIC12F675 med intern OSC kjører @ 4MHz.Im benytter MikroC kompilatoren versjon 8.2.
Jeg ønsker å gjøre en enkel ADC eksperiment.Vennligst se vedlagte diagram.
Før PIC er plassert i kretsen, er 10K potten er først trimmet for å få jevn 5.03V MAX utgang fra 15V DC forsyning som er en jevn variabel DC strømforsyning.Det 5V forsyning for PIC gis fra 78L05 regulator IC.Den første referansen er den samme for hele kretsen.
Nå når 15V DC forsyning er på 15V MAX, den 10K potten utgang leser på volt meter som 5.03V.Tilsvarende hvis 15V DC forsyning senkes til 10V, så 10k potten output leser på volt meter som 3.4V.Jeg antar at disse spenningene er også sett av PIC ADC pin (an1) som vist i diagrammet.
Min programmet nedenfor bare sjekker for å se at hvis ADC spenning er lik eller over 3.4V, så PIC slår på LED.Dersom spenningen faller under 3.4V, deretter LED forblir utenfor.
Dessverre er dette ikke skjer og LED forblir på selv om DC forsyning senkes ned til 6V.Da den tilsvarende spenningen ut fra POT leser 2V.Jeg har prøvd å variere "ADC_Result" variabel verdi til en mye høyere Vaule (800), men selv dette ikke hjelper, og det samme problemet gjenstår.
I mikroC kompilatoren, jeg har konfigurert prosjektet mitt som ....
CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = ON
Nedenfor er mitt program.Behage kanne noen hjelpe meg å løse dette problemet.
Takk
Haseeb
Code:unsigned int ADC_Result; / ADC resultat holding variabelvoid main (void)
(OSCCAL = 0x80; / trimming intern 4MHz OSC ned til 'Midtstilt'GPIO = 0; / intiallize porten/ / intillize den Comparitor pins (GP0 til GP1) til Digital I / O pinner
CMCON = 7;ADCON0.ADFM = 1; / / Result Høyre begrunnet
ADCON0.VCFG = 1; / / Voltage Reference is Vref/ / 01 Channel (an1) VALGT
ADCON0.CHS1 = 0;
ADCON0.CHS0 = 1;ADCON0.GO_DONE = 0; / / Stopp ADC konvertering
ADCON0.ADON = 0; / ADC funksjonshemmede/ / A / D-konvertering Clock er FOSC / 8
ANSEL.ADCS2 = 0;
ANSEL.ADCS1 = 0;
ANSEL.ADCS0 = 1;/ / An1 er Analog .....
Resten er alt Digital
ANSEL.ANS0 = 0;
ANSEL.ANS1 = 1;
ANSEL.ANS2 = 0;
ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED-utgang
TRISIO.GP1 = 1; / / Channel an1 inngangINTCON = 0; / deaktivere alle avbrudd
PIE1 = 0; / deaktivere alle perifere avbruddADCON0.ADON = 1; / / ADC Enabledmens 1 () / / løkke for alltid
(ADCON0.GO_DONE = 1; / / Start ADC konverteringmens ADCON0.GO_DONE (== 1); / / Vent til konvertering ferdigADC_Result = (ADRESH * 256) ADRESL; / Flette High byte med lav byteif (ADC_Result> = 696) / / hvis vi får 3.4VGPIO.GP5 = 1; / / LED påellersGPIO.GP5 = 0; / LED off)) / / End of main ()