Desarrollo "Tacometro, Odometro y Velocimetro para Ciclomotor"

Saludos compañeros :D

Hoy traigo a ustedes unas dudas y solicito de su ayuda y conocimientos para poder desarrollar este proyecto.

Hace casi 1 mes tengo mi ciclomotor y en el me transporto, estoy tratando de desarrollar un Tacometro, Odometro y Velocimetro con microcontrolador, todo alimentado con una bateria de 6V.

La idea es la siguiente:
Para la velocidad utilizare un reed switch con un iman en la rueda para contar los pulsos y hacer el calculo de la velocidad y la distancia recorrida y representar todo en una LCD 2X16.

Para las RPM del motor utilizare los pulsos que envia la bobina del CDI(6v) para hacer el calculo y utilizar esa frecuencia para representar el dato de las RPM en leds.

Mi duda principal es usar 1 micro(16f887) para todo, o usar 2 micros(16f628a) para tratar cada frecuencia por separado.

Pienso que para la opcion de 1 solo micro podria utilizar un conversor de frecuencia a voltaje(LM2917) para obtener las RPM del motor y poder visualizarlo en los leds(17 leds y un led de indicador de luz de cambio), para la velocidad y distancia utilizar el timer0 para los pulsos del reed switch y hacer el calculo. :confused: Mi duda es que tan confiable es el conversor de frecuencia a voltaje, el motor de la bici tiene un minimo de 800 RPM y un maximo de 6000RPM, es decir que su frecuencia va desde los 10Hz hasta los 100Hz.

Para la opcion de los dos micros solo utilizaria los TIMER0 de cada micro para tomar las frecuencias de cada cosa.:confused:

Como un extra, desearia poder ir guardando la distancia recorrida en al eeprom y cada vez que encienda el micro me muestre la distancia total y tambien la distancia del recorrido actual.:confused:

Este es mi ciclomotor::)


Este es el conversor de frecuencia a voltaje:


Mi idea es obtener algo asi(no importa si son menos leds):


Espero que puedan ayudarme a solucionar mi problema.

Gracias.

Nota: para agrandar las imagenes hacer clic sobre ellas.
 
ninguna de esas opciones

con el pic16f886/883/884/887
lo que cambian en estos es la memoria el 883 es mas barato

ahora leer pulsos no es dificil
yo usaria el modulo CCP del pic el pin CCP1

ahora si ya la moto ya genera los pulsos lo que falta es leerlos

¿como leerlos?

bien simple con un transistor que entre en corte y saturacion del colector sacaras los pulsos a 5v y este colector lo conectas al pin CCP1

ahora

¿como leerlos en el pic?

con la interrupcion de CCP1

int16 pulsos;

#int_ccp1
void pulso(void)
{
pulsos++;
}

y en el main

void main()
{

setup_ccp1(CCP_CAPTURE_RE);//RE flanco de subida FE son flancos de bajada
enable_interrupts(INT_CCP1); //interrupcion CCPI habilitada
enable_interrupts(GLOBAL); //interrupcion global habilitada
while(1)
{
//tu codigo para imprimir los pulsos
}
}


con algoritmos puedes sacar frecuencia , pulsos , distancia ,etc. etc. de el puro modulo
no es tan necesario usar un monton de pics para eso

otra cosa no es buena idea escribir todo el tiempo en la eeprom
eso es una barbaridad imagina tiene un limite de escrituras si las sobrepasas la eprom no servira

yo recomendaria usar en reloj en tiempo real el DS1307 es i2c o el DS1302 que es SPI

la diferencia en estos 2 solo es la conexion SPI o I2C

lo que hacen estos te dan la hora , la fecha y aparte tiene una RAM no volatil en la que puedes guardar lo que quieras como una EPROM
 
Última edición:
ninguna de esas opciones

con el pic16f886/883/884/887
lo que cambian en estos es la memoria el 883 es mas barato

ahora leer pulsos no es dificil
yo usaria el modulo CCP del pic el pin CCP1

ahora si ya la moto ya genera los pulsos lo que falta es leerlos

¿como leerlos?

bien simple con un transistor que entre en corte y saturacion del colector sacaras los pulsos a 5v y este colector lo conectas al pin CCP1

ahora

¿como leerlos en el pic?

con la interrupcion de CCP1

int16 pulsos;

#int_ccp1
void pulso(void)
{
pulsos++;
}

y en el main

void main()
{

setup_ccp1(CCP_CAPTURE_RE);//RE flanco de subida FE son flancos de bajada
enable_interrupts(INT_CCP1); //interrupcion CCPI habilitada
enable_interrupts(GLOBAL); //interrupcion global habilitada
while(1)
{
//tu codigo para imprimir los pulsos
}
}


con algoritmos puedes sacar frecuencia , pulsos , distancia ,etc. etc. de el puro modulo
no es tan necesario usar un monton de pics para eso

bueno, esto si me sorprende, mis conocimientos no llegan hasta alla, ahora mi duda es:
esto es solo para una señal(las RPM), como hago para la señal del reed switch que viene de la rueda(distancia y velocidad)?

otra cosa no es buena idea escribir todo el tiempo en la eeprom
eso es una barbaridad imagina tiene un limite de escrituras si las sobrepasas la eprom no servira

yo recomendaria usar en reloj en tiempo real el DS1307 es i2c o el DS1302 que es SPI

la diferencia en estos 2 solo es la conexion SPI o I2C

lo que hacen estos te dan la hora , la fecha y aparte tiene una RAM no volatil en la que puedes guardar lo que quieras como una EPROM

algun diagramita o tutorial sobre esto?
 
hijoles bueno te dejo un programita para calcular el transistor que entre en saturacion ;)

Ver el archivo adjunto 110664

diagrama como tal no

busca la imagen del pic16f886 y el pin C2 es el modulo CCP

¿donde buscar temas?
en todopic.ar hay muchos ejemplos en el foro

para el reloj en tiempo real

pues hay muchas librerias del Pic C compiler

busca para el ds1302 o para el ds1307

no es complejo es simple solo analiza el codigo y te puedo sujerir revisar el libro
compilador C CCS y simulador proteus para microcontroladores PIC

no es muy educativo pero si te sugiere varias ideas
 
Hola.

Compra el 16f876a, el 873a es un poquito más barato, pero tiene mucha menos memoria (la mitad aproximadamente). Eso me fijé yo para adquirir el mio. La diferencia entre ellos es más o menos US$1 cuando me lo cobran US$6, es decir, 1/6 de diferencia de precio por el doble de memoria, te conviene comprar el de más memoria, porque algún día por ahí la uses, por más que sea un poco más caro. De todas formas a mi me lo cobran US$6 pero en realidad no sale más que US$3, así que hacé la cuenta.

Para contar, usá los módulos timer y contadores y leelos cada tanto (y una vez que los leas, resetealos así no pegan la vuelta), y hacé la cuenta con el micro.-

No te recomiendo usar reed switch: Por qué: Es un dispositivo mecánico, que se puede disparar solo con baches o vibraciones. Además tiene una vida útil de no sé, 50000 cambios, por lo que a una velocidad de 30Km/h, con el radio de la rueda y las RPM, no te va a durar mucho.

Usá sensores de efecto hall y 2 imanes en la rueda (opuestos respecto al eje así no se te desbalancea la rueda) y el sensor cerca de donde pasaría el imán.

Lo de guardar las distancias y eso, lo podés guardar tranquilamente.
Es más... te podés hacer un calculador de calorías gastadas! Es una cuenta que tenés que hacer nada más, y queda bastante bien!

Saludos
 
Pienso que para la opcion de 1 solo micro podria utilizar un conversor de frecuencia a voltaje(LM2917) para obtener las RPM del motor y poder visualizarlo en los leds(17 leds y un led de indicador de luz de cambio), para la velocidad y distancia utilizar el timer0 para los pulsos del reed switch y hacer el calculo. Mi duda es que tan confiable es el conversor de frecuencia a voltaje, el motor de la bici tiene un minimo de 800 RPM y un maximo de 6000RPM, es decir que su frecuencia va desde los 10Hz hasta los 100Hz.

yo he probado el LM2907 en frecuencias de 1KHz y es bastante lineal, asi que yo digo que si te funcionaria.

yo utilizaria dos LM2907 uno para el tacometro y otro para el velocímetro, y como te dijeron para el velocimetro es mejor un sensor de efecto Hall.

con respecto al pic si usas el Lm2907 tiene que ser uno con los suficientes pines y con dos ADC.

el esquema que pusiste del LM2917 esta mal asi no funcionaria con señales positivas,el que por cierto debe ser el de 14 pines no el de 8 solo por aclarar.
 
Última edición:
Atrás
Arriba