Autor Tema: Conversor A/D  (Leído 1581 veces)

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

Desconectado impedancio

  • PIC10
  • *
  • Mensajes: 2
Conversor A/D
« en: 06 de Marzo de 2009, 21:25:21 »
Con el convertidor A/D del 16f877 quisiera convertir el voltaje que me da una dinamo al hacerla girar, en rpm y sacar este dato por la pantalla del un LCD.       Las revoluciones maximas que puede llegar a dar son 1600 por lo que quiero hacer la siguiente conversión:
quisiera que introduciendo un voltaje de 5V por la patilla RA0 me saliera por la pantalla de un LCD el voltaje maximo,
es decir, las 1600 rpm. si el voltaje que introduzco es menor,que salga una rpm menor siempre en proporcion.

El programa que e hecho hasta ahora es este con el que e conseguido realizar una conversion pero no la que yo quiero

#include <pic.h>
#include <stdio.h>
#include "LCDnuevo.h"

void Pintamensaje(unsigned char temp)
{
char M[16];
unsigned char i=0;
LCD_Comando(LCDCasa);
   
sprintf (M,"Vel es:%5d rpm", temp);            //saca l binario q hay en el puerto a por el LCD
while (M!=0) LCD_Caracter(M[i++]);
}
void main()
   {
   TRISA = 0xFF;      // PORTA entradas
   ADCON1=0x00;      //pone todo el PORTA como analogico y con el ultimo bit ordena a que juestifique a la izquierda"ADFM = 0"
   LCD_Port();      // activas los puertos ver fichero lcd.h
   LCD_Reset();      //activa el lcd ver fichero lcd.h
   
   ADCON0=0xC1;                   //11000001
                //11reloj RC
                // 000 seleccion de canal cero - RA0
                //0 se pone automaticamente a cer cuando hace la conversion
                //0 no usado,
                //conversor AD habilitado
      while(1)   //bucle infinito
      {
      ADIF=0;      // borra el bit que indica que a finalizado la conversion
      ADGO=1;      // orden de para que inicie a covertir
      
      while(!ADIF);   
      Pintamensaje(ADRESH<<8|ADRESL);   //mueve la parte alta del dato 8 posiciones a la izquierda para meterlo en una variable int de dos bits
      }
   }

Si alguien puede ayudarme en algo se lo agradecería porque por mas vueltas que le doy no lo consigo.   

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Conversor A/D
« Respuesta #1 en: 07 de Marzo de 2009, 00:22:41 »
Hola.

Debes hacer la curva respectiva (curva de caracterizacion) entre RPM y el Voltaje. Una vez obtenida esa curva (con datos experimentales) miras que comportamiento tiene (ruega para que sea una linea recta) y listo, segun esa ecuacion caracteristica puedes obtener lo que tu quieres (o lo que creo que quieres)
El papel lo aguanta todo

Desconectado impedancio

  • PIC10
  • *
  • Mensajes: 2
Re: Conversor A/D
« Respuesta #2 en: 07 de Marzo de 2009, 06:55:28 »
Si yo lo que quiero es eso si introduzco los 5 voltios que en el LCD aparezcan 1600, si introduzco 4 que aparezcan 1280 si meto 4'5 aparezcan 1440 etc.
Creo que entiendo mas o menos lo que me dices pero lo que no se es como añadir esa ecuacion en el programa si pudieses darme alguna  pista gracias por tu ayuda

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Conversor A/D
« Respuesta #3 en: 07 de Marzo de 2009, 14:31:48 »
Hola.

Para sacar la curva caracteristica de tu sistema, debes medir las RPM y el voltaje generado (con un flashometro para las RPM y un voltimetro para el voltaje). Luego sacas la curva, que si es lineal, te relacionara una medida con la otra de la siguiente manera: RPM = aV + b.

Como tu lees el valor de voltaje, tan solo es multiplicar por y sumar las variables resultantes de la regresion lineal de tus datos experimentales.

Saludos
El papel lo aguanta todo