Microcontroladores - Uso de dos canales del ADC del PIC18F4550

 
Vista:

Uso de dos canales del ADC del PIC18F4550

Publicado por ESAU (7 intervenciones) el 01/10/2008 17:19:07
Hola amigos.... despues de varios dias de trabajo y con su ayuda he podido obtener buenos resultados.... soo que ahora mi aplicacion requiere de 2 canales analogicos
del PIC18F4550, y hasta el momento he usado solo uno....

Pero como necesito hacer comparaciones entre dos señales analogicas requiero de dos canales ( AN0 y AN1)... Aun sigo porgramando en CCS Compiler (PCW) :

#include <18f4550.h> //PIC utilizado
#device ADC = 8 //Configuracion de ADC de 8 bits

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#use delay (clock=4000000)

void main(void)
{
int value;
setup_adc_ports( AN0_TO_AN1 );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel(0);

DO
{

delay_us(10);
value = read_adc();
output_b(value);

}
while(1);

}

solo que en la instruccion adc_channel(x), si vario x de 0 o 1 puedo usar individualmente o elcanal 1 o el canal 0.. y yo deseo usar los dos como le hago????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Uso de dos canales del ADC del PIC18F4550

Publicado por Guillermo (40 intervenciones) el 02/10/2008 13:42:29
una vez seteado el AD, haces asi,
elegis el canal, esperas un toque,
y lees, depues cambias de canal, esperas, lees...

do
{

set_adc_channel(0);
delay_us(10); //espera necesaria al cambiar de canal
value = read_adc(); //lees el canal 0
output_b(value);

set_adc_channel(1);
delay_us(10); //espera necesaria al cambiar de canal
value = read_adc(); //lees el canal 1
output_b(value);

}
while(1);

ojo,
la espera necesaria al cambiar de canal, puede variar,
habria que ver la hoja de datos, en todo caso si con 10us
no te alcanza, le pones un poco mas y listo.

saludos
guillermo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Uso de dos canales del ADC del PIC18F4550

Publicado por daniel (1 intervención) el 08/05/2009 23:40:42
pues verá ud, nunca se puede usar los dos canales al mismo tiempo, lo que sucede es cada vez que se interrumpe un canal para trabajar el otro canal se hace cada 20uSEgundos, ese tiempo para el ser humana es como si yo trabajara al mismo tiempo, pero en dentro del pic nunca se va apoder trabajar al mismo tiempo att: Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Uso de dos canales del ADC del PIC18F4550

Publicado por marvin (1 intervención) el 08/08/2010 05:05:59
necesitas un bit que seleccione el canal por ejemplo

if(canal==1){
set_adc_channel(0);
value = read_adc(); }
else(set_adc_channel(1);
value = read_adc(); )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de dos canales del ADC del PIC18F4550

Publicado por gustavo (1 intervención) el 07/03/2012 19:23:44
que tal yo quuero utilizar dos adc en el pic 18f4550 solo que me marca error
aqu i les dejo el programa


#include"18f4550.h"
#device ADC=10
#use delay(clock=48000000)
#include"lcd.c"
#build(reset=0x02000,interrupt=0x02008)
#org 0x0000,0x1FFF{}

//----------------------------------------------





void main()
{
float sensor1,sensor2,valor1,valor2; //DATO CON DECIMALES VARIABLE don de sel da el valor de loque lee el puerto a0

setup_adc_ports( AN0_TO_AN1 );
setup_adc(ADC_CLOCK_INTERNAL );

set_adc_channel(0);
sensor1=read_adc();
valor1=sensor1*.3908; // el valor leido se multiplica por .3908 por qu e se convierte de binario a decimal
delay_us(10); //espera necesaria al cambiar de canal

set_adc_channel(1);
sensor2=read_adc();
valor2=sensor2*.3908;
delay_us(10); //espera necesaria al cambiar de canal


lcd_init();

printf(lcd_putc," \fsensores \n"); // imprime temperaura en la primera fila del lcd
//printf(lcd_putc,"sensor1=%f \nsensor2=",valor1,valor2); // imprime grados en la segunda columna de lcd y da el valor que se asigna en la variable GRA
printf(lcd_putc "\f%u: %u"valor1,valor2);
delay_ms(2000); //hace un muestreo cada 2 segundos

while(true);
do{

if(valor1>=32)
{
output_high(PIN_B0);
}
else
{
output_low(PIN_B0);
}
if(valor1>=32)
{
output_high(PIN_B1);
}
else
{
output_low(PIN_B1);
}

if(valor2>=32)
{
output_high(PIN_B2);
}
else
{
output_low(PIN_B2);
}
if(valor2>=32)
{
output_high(PIN_B3);
}
else
{
output_low(PIN_B3);
}

}


}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de dos canales del ADC del PIC18F4550

Publicado por Ing Hermilo Alvarez (1 intervención) el 17/04/2016 17:49:27
De hecho solo existe un convertidor, el cual se multiplexa en las entradas. por lo cual necesitas ir tomando uno por uno los canales. Es imposible que se haga simultaneo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar