Autor Tema: cual AD  (Leído 1418 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
cual AD
« 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

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: cual AD
« Respuesta #1 en: 03 de Julio de 2007, 15:23:28 »
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.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
Re: cual AD
« Respuesta #2 en: 06 de Julio de 2007, 16:52:08 »
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

Desconectado Giovanny

  • PIC12
  • **
  • Mensajes: 97
    • Supercomponentes
Re: cual AD
« Respuesta #3 en: 06 de Julio de 2007, 19:02:55 »
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);


        Saludos desde Colombia! Que hermoso país....