Bueno, pues sí, sería muuy sencillote con un PIC. Si tienes un ATMEL, será sencillo, también, aunque te tocará mirarte bien qué juego de instrucciones tiene y darle caña.
Básicamente, lo que tienes que hacer está aquí:
#include <16F876.h> // El PIC. Aquí iría tu ATMEL.
#device adc=10 // Queremos que convierta con 10 bits
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=4000000) // Señal de reloj
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Sacar datos puerto serie
void main( void ) // Función principal
{
long valor; // Valor es una variable de 16 bits
float const resoluc= 5.0/1024.0; // Conversión es con 10 bits 2^10
float voltios;
setup_adc_ports( ALL_ANALOG ); // Entrada analógica por RA0
// El puerto destinado a la conversión A/D es el A. Viene preparado así
// de fábrica.
// Se le indica qué pines de dicho puerto serán analógicos o digitales
setup_adc( ADC_CLOCK_INTERNAL ); // Reloj interno para el conversor A/D
set_adc_channel(3); // Elegimos canal 3 para convertir
while ( 1 ) // Bucle infinito. Coge datos y los convierte continuamente.
{
valor = read_adc(); // Función incorporada del compilador CCS para
// lenguaje C donde él solito convierte el valor y sabe cuánto tiempo
// debe esperar.
voltios= valor * resoluc;
printf("%f voltios ", voltios ); // Sacamos el resultado por pantalla
delay_ms(200); // Convierte cada 200ms o el tiempo que quieras
// Siempre hay que dejar un tiempo entre adquisiciones de datos a convertir
}
}
Con micros ATMEL no sé si se pueden programar en C. Éste te lo pongo a modo de ejemplo. En ensamblador, se haría igual, pero con distintas instrucciones. Te tocaría añadir algunas más pero, independientemente del lenguaje que uses, aquí tienes lo que tienes que hacer para utilizar un conversor A/D. Si tienes dudas, ya sabes dónde encontrarnos. Espero te sirva de algo.
Un saludo.