Hola, es la primera vez que escribo aunque si visito mucho este sitio, esto me llevó a decidirme a escribir aquí mi problema, el cual persiste por más tiempo de lo habitual y me está comenzando a preocupar
.
Estoy programado en PIC C y uso el pic 16f819 para que funcione como alcoholimetro, utilizo un display de siete segmentos para mostrar el valor decimal y dos leds que indicarán la parte entera (1 solo un led .. 2 indicado con dos leds encendidos) el problema es que no logro capturar o interpretar los valores que emite el MQ-3. hasta ahora en el display puedo determinar si hay o no alcohol (Salida digital) pero no se leer los datos analógicos. voy a adjuntar el programa que lee la entrada digital, quizás puedan ayudarme para modificarlo y poder leer los valores analógicos, utilizo cristal interno y AN1 para conectar el sensor MQ-3.
Mi idea es que, seguro recibo un valor en la variable que se carga con read_adc() pero no se que valor tiene, debería ser un valor entre 0 y 1024 pero no lo hallo. En un ratito pongo el programa porque no lo tengo en el trabajo, disculpas pensé que lo tenía en el pendrive.
Aquí está.
#include <16f819.h>
#fuses NOBROWNOUT
#use delay(internal = 4MHz)
void main()
{
int sensor;
setup_oscillator(OSC_4MHz);// Configurar el oscilador interno a 4MHz.
while(true)
{
sensor=input(pin_a1);
if (sensor == 1){
output_b(0b01111111);} // Dibujo numero 0
if (sensor == 0){
output_b(0b11101110);} // Dibujo letra A
}
}
este otro es el que uso para leer el valor analógico, y no lo logro mostrar nada en display.
#include <16F819.h>
#device ADC=10
#fuses NOWDT,INTRC_IO,PUT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,NOMCLR
#use delay(internal = 4MHz)
#include<LCD_FLEX.c>
void main()
{
float volt;
lcd_init();
printf (lcd_putc,"HOLA");
delay_ms(500);
lcd_init();
setup_oscillator(OSC_4MHz);// Configurar el oscilador interno a 4MHz.
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
set_adc_channel(1);
delay_ms(10);
while(true)
{
volt = read_adc() /1024.0 * 4.892367906066536;
lcd_gotoxy(1,1);
printf(lcd_putc, "Valor: %1.4fV ",volt);
delay_ms(500);
}
}