TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nina en 03 de Julio de 2007, 15:10:03
-
necessito de un AD con 12 bits o mas de resolucion. voy a conectarlo en el 16f877
Podriam sugerir algunos de facil implementacion?
gracias
nina
-
Hola nina, puedo recomendarte estos:
MCP3202
MCP3204
MCP3208
Los 3 son de microchip, faciles de usar ya que se comunican por SPI, los 3 son de 12 bits y de 2, 4 y 8 canales respectivamente y posibles de usar en varias configuraciones.
Un saludo.
Atte. CARLOS.
-
Estava pensando se es mas sencillo usar un pic con 12bits ADC.
Alguno de ustedes tiene algun codigo con un pic de 12 bits ADC + LCD.
He hecho un codigo pero no estas mostrando nadie en el LCD. Solo SHUNT e 000000
#include <18F6520.h>
#device ADC=16
#use delay(clock=4000000)
#FUSES HS, NOPROTECT, NOPUT, NOBROWNOUT, NOWDT, NOCPD
#include <flex_lcd.c>
#use fast_io (A)
#use fast_io (B)
#use fast_io (D)
void main(void)
{
float pot,r,t,b;
lcd_init();
enable_interrupts(GLOBAL);
setup_port_a(ALL_ANALOG);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
do{
set_adc_channel(0);
pot=read_adc();
r = pot*5;
t = r/4096;
b = (t*260/5);
if (b > 100)
{
output_high(PIN_D0);
}
if (b < 100)
{
output_low(PIN_D0);
}
lcd_gotoxy(1,1);
delay_ms(500);
printf(lcd_putc,"Shunt: %f",b);
delay_ms(500);
}while(true);
}
saludo
Nina
-
hola mina, te sugiero modifiques algunas cosas, .... que lcd usas?
*si usas un cristal de 4000000 esta mal colocar el fuse HS, debes colocar el fuse XT.
*si solamente vas a usar un canal AD, te sugiero que coloques la linea set_adc_channel(0); por fuera del loop
y si la usas en el loop, coloques un retardo de unos cuantos us, por ejemplo delay_us(30);
*puedes cambiar
r = pot*5;t = r/4096;b = (t*260/5);
por: b=(pot*13)/205;
*te puedes ahorrar la linea gotoxy(1,1);
escribiendo
printf(lcd_putc,"\fShunt: %f",b);