Problem med ADC af potentiometer

H

Hasher

Guest
Hej!

Jeg bruger PIC18F2420 (krystal = 8MHz & & HS-PLL) med HiTech C compiler.
Jeg ønsker 50kΩ potentiometer til at blive konverteret til digitalt på to 7-Segmenter displayet på PORTB.

Problem ==> Jeg fik korrekte o / p men med minus én.Jeg mener, hvis 50KΩ anvendes Jeg fik 0xFE snarere end 0xFF og hvis 0kΩ anvendes Jeg fik 0x01 snarere end 0x00.

Program ==>
#
include <pic18.h>
#
include "config.h"
#
include "delay.h"
#
include "jwb.h"

int adc_value;
void init (void);
usignerede CHAR ReadAdcChannel (usignerede char c);

void Main (void)
(
usignerede CHAR val0;
CHAR I;
usignerede char c;
dobbelt dval0;

init ();

mens (1)
(
val0 = ReadAdcChannel (0);
/ / dval0 = 5,0 * val0 / 1024 / / konvertere AN0 værdi til at flyde (påtage Vdd = 5V)
PORTB = val0;
)

void init (void)
(
PORTA = 0x00;
/ / SELECT INTERNE ADC CLOCK og tænde ADC
ADCS2 = 0; ADCS1 = 1; ADCS0 = 1; ADON = 1;

/ / KUN çH0 vælges med INTERNE
Ref. = Vcc og ref-= GND
PCFG0 = 0; PCFG1 = 1; PCFG2 = 1; PCFG3 = 1;

SET_AS_INPUT (TRISA, BIT0 | BIT1);
TRISB = 0x00;

)

usignerede CHAR ReadAdcChannel (usignerede CHAR c)
(
usignerede CHAR temp;

/ / CLEAR GODONE BIT, CHS0 = CHS1 = CHS2 = 000 for at vælge kanal 0
CHS0 = 0; CHS1 = 0; CHS2 = 0; GODONE = 0;

DelayUs (20); / / vente 20us for ADC at blive klar
GODONE = 1 / / start ADC konvertering
while (GODONE); / / derefter vente på ADC til slut
if (ADFM)
tilbagevenden ((ADRESH <<

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

| ADRESL);
anden
tilbagevenden ((ADRESH <<2) | (ADRESL>> 6));
tilbagevenden ADRESH;
)================================================== ===
jwb.h
================================================== ===
# define SET_AS_INPUT (havn, bits) port | = (bits)
# define SET_AS_OUTPUT (havn, bits) port & = (~ (bits))
# define BIT0 0x01
# define BIT1 0x02
# define BIT2 0x04
# define BIT3 0x08
# define BIT4 0x10
# define BIT5 0x20
# define BIT6 0x40
# define BIT7 0x80

 
Hasher wrote:

Hej!Jeg bruger PIC18F2420 (krystal = 8MHz & & HS-PLL) med HiTech C compiler.

Jeg ønsker 50kΩ potentiometer til at blive konverteret til digitalt på to 7-Segmenter displayet på PORTB.Problem ==> Jeg fik korrekte o / p men med minus én.
Jeg mener, hvis 50KΩ anvendes Jeg fik 0xFE snarere end 0xFF og hvis 0kΩ anvendes Jeg fik 0x01 snarere end 0x00.Program ==>

# include <pic18.h>

# include "config.h"

# include "delay.h"

# include "jwb.h"int adc_value;

void init (void);

usignerede CHAR ReadAdcChannel (usignerede char c);void Main (void)

(

usignerede CHAR val0;

CHAR I;

usignerede char c;

dobbelt dval0;init ();mens (1)

(

val0 = ReadAdcChannel (0);

/ / dval0 = 5,0 * val0 / 1024 / / konvertere AN0 værdi til at flyde (påtage Vdd = 5V)

PORTB = val0;

)void init (void)

(

PORTA = 0x00;

/ / SELECT INTERNE ADC CLOCK og tænde ADC

ADCS2 = 0; ADCS1 = 1; ADCS0 = 1; ADON = 1;/ / KUN çH0 vælges med INTERNE Ref. = Vcc og ref-= GND

PCFG0 = 0; PCFG1 = 1; PCFG2 = 1; PCFG3 = 1;SET_AS_INPUT (TRISA, BIT0 | BIT1);

TRISB = 0x00;)usignerede CHAR ReadAdcChannel (usignerede CHAR c)

(

usignerede CHAR temp;/ / CLEAR GODONE BIT, CHS0 = CHS1 = CHS2 = 000 for at vælge kanal 0

CHS0 = 0; CHS1 = 0; CHS2 = 0; GODONE = 0;DelayUs (20); / / vente 20us for ADC at blive klar

GODONE = 1 / / start ADC konvertering

while (GODONE); / / derefter vente på ADC til slut

if (ADFM)

tilbagevenden ((ADRESH <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" /> | ADRESL);

anden

tilbagevenden ((ADRESH <<2) | (ADRESL>> 6));

tilbagevenden ADRESH;

)================================================== ===

jwb.h

================================================== ===

# define SET_AS_INPUT (havn, bits) port | = (bits)

# define SET_AS_OUTPUT (havn, bits) port & = (~ (bits))

# define BIT0 0x01

# define BIT1 0x02

# define BIT2 0x04

# define BIT3 0x08

# define BIT4 0x10

# define BIT5 0x20

# define BIT6 0x40

# define BIT7 0x80
 
Den maksimale kilde impedans ADC af mine PIC18F2420 er 2.5kΩ.

Does that info hjælpe dig?

 
Hasher wrote:

Den maksimale kilde impedans ADC af mine PIC18F2420 er 2.5kΩ.Does that info hjælpe dig?
 
den maksimale impedans kan være den faktor ....kan du teste den med en 1k potentiomter???

 

Welcome to EDABoard.com

Sponsor

Back
Top