# Tacometro digital



## Fierros

hola un gusto ante todo en que todos aporten ayudas temas, etc.. estoy muy interesado en armar un tablero digital (tipo como tiene tacometro digital, cuentakilometros digital , etc) que sea todo digital pero mas que nada me gustaria saber si se puede llegar armar uno (tacometro digital) con pocas cosas y a bajo costo y que funcione bien.. mas que nada lo quiero hacer a ese porque me lo quiero implementar en un Ford Galaxy 2.0i y quedaria re espectacular el lcd o como fuera el tacometro.. bueno espero que alguien me de una mano si me pueden ayudar todos mejor...
salu2
Daniel


----------



## EinSoldiatGott

Fierros dijo:
			
		

> hola un gusto ante todo en que todos aporten ayudas temas, etc.. estoy muy interesado en armar un tablero digital (tipo como tiene tacometro digital, cuentakilometros digital , etc) que sea todo digital pero mas que nada me gustaria saber si se puede llegar armar uno (tacometro digital) con pocas cosas y a bajo costo y que funcione bien.. mas que nada lo quiero hacer a ese porque me lo quiero implementar en un Ford Galaxy 2.0i y quedaria re espectacular el lcd o como fuera el tacometro.. bueno espero que alguien me de una mano si me pueden ayudar todos mejor...
> salu2
> Daniel



Hola, me hizo recordar que cuando yo estudié el tema de tacómetros nunca me salió  jaja, en internet circulan varios digitales pero siempre falta algún integrado y ya no funciona nada .

Hay uno múy fácil, busque en alldatasheet.com el LM2907, es un convertidor de frecuencia  voltaje, este voltaje puede meterlo a un convertidor A/D o usar un pic con entrada A/D, y hacer una equivalencia para mostrarlo en un LCD.

Busque en este foro la palabra "reluctancia" o "reluctancia magnética" ahí s etrató como hacer un tacómetro.

Saludos


----------



## tiopepe123

Se puede hacer perfectamente con un pic mejor un pic16f876 /877

Utilizando una LCD inteligente o LED si quieres que sea mas vistoso.
No necesitas el lm2907 si utilizas el pic ya que contiene un contador.
Si es un buen sitio para pillar las revoluviones, es un sensor que hay en el disco de freno para el abs. Se trata de una simple bobina y un iman muy cerda del disco metalico del freno. El disco de freno tiene una ranua o diente o taladro. Quando la rueda da vueltas, al pasar por el agujero hay una variacion de flujo al faltar ese trocito de hierro y se induce una pequeña tension facilmente amplificable con un transistor.


----------



## Fierros

Muchas gracias.. tiopepe123 y a einsoldiattgott
pero me gustaria mas hacerlo mucho mas facil... pregunte para ver si alguien tiene algun circuito ya echo asi nomas.. que cuente vueltas.. como dijistes vos tiopepe123... eso esta muy buena la información muchas gracias.. por otra parte contaba con algo mucho mas sensillo por ejemplo a que me ayudaran a armarlo... por ejemplo haciendo un dibujito con el paint aunquesea para orientarme mucho mas.. pero buen.. si puede ser posible que me ayuden con eso plz.. porque la verdad quedaria mas futuristico el auto.. lcds por aca leds para otras cosas.. etc.. 
Muchas gracias.
salu2


----------



## EinSoldiatGott

Fierros dijo:
			
		

> Muchas gracias.. tiopepe123 y a einsoldiattgott
> pero me gustaria mas hacerlo mucho mas facil... pregunte para ver si alguien tiene algun circuito ya echo asi nomas.. que cuente vueltas.. como dijistes vos tiopepe123... eso esta muy buena la información muchas gracias.. por otra parte contaba con algo mucho mas sensillo por ejemplo a que me ayudaran a armarlo... por ejemplo haciendo un dibujito con el paint aunquesea para orientarme mucho mas.. pero buen.. si puede ser posible que me ayuden con eso plz.. porque la verdad quedaria mas futuristico el auto.. lcds por aca leds para otras cosas.. etc..
> Muchas gracias.
> salu2



Hola, una vez hice una especie de frecuencímetro, bastante chafa por cierto , epro ahi anduvo.

Diagramita sencillo, viene uno en el datasheet del LM2907, ahi exponen un tacómetro con una mínima cantidad de componentes.

Saludos


----------



## ryghar

La mejor forma es con un PIC. Conectas un cable al negativo de la bobina y contas los impulsos (los tenes que dividir por la cantidad de cilindros que tenga tu auto).
Para el odómetro la cosa se complica porque necesitás saber cada vez que la rueda da un giro..... eso lo podés hacer como comentaban en el otro post con un imán y un inductor puesto en la rueda.

Yo estoy en un proyecto similar (tacómetro, switch light, velocímetro, odómetro, temperaturas, etc)

Sds.


----------



## dhanher

Hola a todos, soy nuevo y d verdad q me encanto esta pagina con la cantidad d respuestas q todos dan y la calidad de sus participantes. Ante la duda d crear un tacómetro, he encontrado algunos q d verdad se ven(en teoria) bastante faciles de crear,entre ellos estan:
http://www.renaultfuego.com.ar/meca...icidad/tacometro_digital/tacometrodigital.htm

http://www.discovercircuits.com/T/tachometers.htm

http://usuarios.lycos.es/jomasi/cuentakm.htm
Este seria genial hacerlo, pero yo nose programacion,y el q lo publico no da el programa a cargar en el PIC( si alguien tiene idea de como convencerlo,d antemano,gracias  )

Y el q pretendo hacer,y el q mas me ha convencido,aparte q es publica la programacion del PIC (llegar,descargar y grabar)

http://www.josepino.com/pic_projects/indexsp.pl?tachometer.jps

Este seria mi humilde aporte
PDe q manera puedo hacer el velocimetro por las revoluciones del motor? o solamente debera funcionar en base a las de las ruedas?


----------



## Hitmanhack

Hola, tengo un proyecto escolar final de hacer un tacometro digital con este pic 16F84 pero no encuentro alguna referencia en ninguna parte. no se si alguno de ustedes sepan de un enlace donde me ayude ha realizar alguno. no lo quiero para motor de un automovil, solo lo quiero para medir la velocidad de un motor de algun auto de juguete, no tan complejo y que me de respuesta en un display o con una manecilla pero que demuetsre que esta midiendo las vueltas. si me pueden ayudar porfavor?
muchas gracias


----------



## tiopepe123

Que poco emos buscado.......

http://www.google.es/search?client=...cometro+pic16f84&meta=&btnG=Buscar+con+Google

el primer pdf ya hay un ejemplo, tiempo de busqueda 2 segundos.

Cuidadin con los motores de juguete son extemadamente ruidosos si no llevan condensadores, si al acercar el micro al motor se te resetea ya sabes interferencias al canto.

Si no sabes como calibrarlo o para comprobar el buen funcionamiento puedes utilizar un simple transformador que te dara esos 50hz(50 ciclos por segundo)  , calculalo a rpm ,  si no recuerdo mal se miltiplica por 60 o sea 3000 rpm
Es una fuente extremadamente precisa.

Si el transformador es de entre 6V y 12V conectando una simple resistencia 4k7 entre el transformador y el pic y el otro terminal del transformador a masa.

Ojo, el pic lo alimentas con un alimentador o a pilas y con un transformador INDEPENDIENTE lo conectas al micro con la resistencia limitadora.


----------



## materere

Buenas yo tambien estoy interesado tambien en este proyecto, y buscando por ahi econtre algo que les puede servir. No he probado este circuito pero habria que ver que onda.
http://usuarios.lycos.es/jomasi/cuentakm.htm
Nos vemos.


----------



## materere

Ah por otros lados mas encontre otro tacometro digital con el pcb


----------



## DJ DRACO

Hola amigos del foro.

Vengo a presentar un nuevo diseño de tacómetro mitad analogico, mitad digital.

Hace muy pocos dias encontre en mi carpeta de Datasheets un integrado "LM331" conversor de frecuenia a voltaje, y de voltaje a frecuencia.

entre otras utilidades puede servir para conversor analogico-digital.

En este caso lo uni co un vúmetro digital de 12led's "UA180" y diseñe el pcb de un tacómetro para auto o moto.

En la entrada de frecuencia debe entrar una señal cuadrada, la cual si proviene desde la entrada de la bobina de ignicion, solo lleva un resistor de 1M. pero si viene desde la chispa de la bujia, debe ser de 10M en serie para evitar dañar el circuito.

aun no lo probe, pero el diseño esta bien, y deberia funcionar.

la onda es q entre la señal de pulsos, el LM331 las convierta en voltaje, y al aumentar la frecuencia de los pulsos aumenta el voltaje.

ese voltaje ingresa al UA180, y a medida q aumenta el voltaje, aumentan la cantidad de led's q brillan.

sencillo y barato, cualquiera puede realizarlo.

saludos.


----------



## chacarock

DJ draco , te felicito nuevamente por tu pryecto de tacometro, esta bastante interesante, tengo un vumetro con el UAA180 me faltaria el convertidor de frecuencia a volt nadamas verdad'


un saludo


----------



## jonarojas

Hola. Quisiera saber como armar un tacometro digital que involucre los lm3914 y ne 555.
Alguien tiene un diagrama osabe como conectarlo. tmbn se que se involura un potenciometro en el 555, quisiera saber como conectarlo. gracias.


----------



## boya678

amigo como asi que al negativo de la bobina si el que da la señal de carga y descarga es el positivo mi carro no es de platino entonces como haria en ese caso


----------



## Rijiru

Hola, estaba viendo la problematica y aqui les traigo un tacometro con PIC, se trata de un optoacoplador que cuenta las veces que la luz es interrumpida de acuerdo a eso calcula las RPM y el motor es activado con un switch(vease diagrama adjunto), espero y sea de ayuda.



Saludos


----------



## boya678

que excelnete pero veo que la entrada es de 4 voltios tocaria ponerle un 7405 y la señal que recive si puede ser de 12 voltios? a y otra cosita hermano se le pude adaptar otra pantalla que sea como mas amigable para poner en un vehiculo?

pero los componentes por favor los podrias presentar bein me parecio muy interesante


----------



## Rijiru

Esta bien, por lo de los 12V, bastaria añadirle un regulador de voltaje. Por los componentes es un PIC16F628, las compuertas NOT son 74LS14 para el optoacoplador con ello evitas "rebotes", por lo de la pantalla, pondre a trabajar en ello.



Saludos


----------



## boya678

amigo y osea tendria que poner un regulador para la alimentacion del circuito pero la señal que viene de las rpm tambien es a 12 voltios la pregunta es tambien hay que ponerle regulador a esa señal?


----------



## Rijiru

Si observas bien en el diagrama es un optoacoplador quien te da las señales que se cuentan para ser convertidas a RPM's con el pic, en el lado del Diodo LED solo debes calcular la resistencia limitadora, su formula es:


                                      R=(Vcc-Vd)/Id

R=Resistencia
Vcc= Voltaje con el cual lo vas a polarizar
Vd=Voltaje de consumo del diodo
Id=Corriente de encendido del diodo

 Por el lado del transistor debes tenerle 5v por que de ahi manda señales al PIC.



Saludos


----------



## boya678

Amigo muchas gracias si comprendi lo que me explicaste pero la ultima el archivo compilado en hexadecimal es el que hay que quemarle al pic cierto? Sera que hay algun programa que me deje ver el codigo fuente para cambiar texto?


----------



## Rijiru

Bueno, te dejo el programa en lenguaje C, este si lo puedes alterar



		Código:
	

#include <16f628A.h>
#fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
#use delay(clock=4000000)
#include <lcd_b.c>
int time0, time1;
int16 pulses0, pulses, rpm, time;
int1 rpmbit;
void rpm_get()
{
 rpm=60*pulses;
 if(pulses0!=pulses)
 {
 printf(lcd_putc,"\fRpm \n%Lu", rpm);
 delay_ms(1500);
 }
 pulses=0;
 time1=0;
}
void main()
{
 set_tris_a(0x1F);
 rpm=0;
 time=0;
 time0=0;
 time1=time0;
 pulses=0;
 pulses0=pulses;
 rpmbit=1;
 lcd_init();
 lcd_putc("\fBienvenido\n");
 output_low(PIN_A7);
 do
 {
  diagnostico();
  if(input(PIN_A1))
  {
   if((input(PIN_A0))&&(rpmbit==1))
   {
    pulses++;
    rpmbit=0;
   }
   if((!input(PIN_A0))&&(rpmbit==0))
   {
   rpmbit=1;
   }
   time0++;
   if(time0>=250)
   {
    time1++;
    time0=0;
    if(time1>=4)
    {
     time0=0;
     if(pulses<1)
     {
      lcd_putc("\frpm < 60\nO sin giro");
      delay_ms(500);
     }
     else
     {
      rpm_get();
      pulses0=pulses;
     }
    }
   }
  }
  if(input(PIN_A2))
  {
   output_toggle(PIN_A7);
   if(!input(PIN_A1))
   {
    lcd_putc("\fMotor Apagado");
   }
   delay_ms(500);
  }
  delay_ms(1);
 }
 while(1);
}



solo que el PIN_A2 lo dejas a "1" originalmente se diseño para activar un motor y medir sus RPM's




Saludos


----------



## boya678

muchas gracias depronto les sirve este aporte encontre un circuito para hacer el tacometro a leds tiene video en youtube y todo el porblema es que lo dibujo pero creo que no lo hago bien ya que el porteus se tilda. este es el diagrama y alguien lo pude dibujar bien y montarlo se los agradeceria la verdad la duda es mas que todo con los potenciometros


----------



## bebeto

Rijiru dijo:


> Hola, estaba viendo la problematica y aqui les traigo un tacometro con PIC, se trata de un optoacoplador que cuenta las veces que la luz es interrumpida de acuerdo a eso calcula las RPM y el motor es activado con un switch(vease diagrama adjunto), espero y sea de ayuda.
> 
> 
> 
> Saludos




Hola me gusto la sencillez de tu tacometro, y el hecho de que sea LCD.


Con respecto al rango de RPM que puede medir.... yo necesitaría desde unas 20 RPM hasta 3000 ( si hay mas no importa pero ese es el rango que necesito) este tacometro lee esas RPM¿? ¿o comienza a medir desde mas arriba?


----------



## Rijiru

Desde mas arriba desde 60 RPM, pero bueno vamos a darle una solucion.

Saludos


----------



## bebeto

Rijiru dijo:


> Desde mas arriba desde 60 RPM, pero bueno vamos a darle una solucion.
> 
> Saludos



No quiero ser una molestia ya que no se de programación, no paso mas que de grabar un chip ya que recién empiezo con el mundo de los Microcontroladores, y como mi padre quería comprar un tacometro para el torno, busqué uno con PIC para que resulte lo mas compacto posible.

De tu código solo puedo deducir que la operación que realiza el pic para dar las RPM  proviene de 
[rpm=60*pulses] pero asta ahí nomas.

muchas gracias.


----------



## Rijiru

Que buena onda, mi padre tambien es tornero, por cierto ya encontre la manera de ampliar el rango, el unico incoveniente es que para medir RPM menores a 20 tarda mas en actualizar el resultado, en este caso tarda 8 segundos, el valor minimo es de 15 rpm, en el caso anterior por ejemplo tardaba menos en actualizar por que solo tomaba muestras en un segundo es por eso que se dificultaba medir RPM menores a 60, es este ultimo toma muestras en 8 segundos, no es ninguna molestia, para eso estamos, por cierto el PIC para este caso es el 16F877, espero y sea de ayuda.


Saludos


----------



## bebeto

Rijiru dijo:


> Que buena onda, mi padre tambien es tornero, por cierto ya encontre la manera de ampliar el rango, el unico incoveniente es que para medir RPM menores a 20 tarda mas en actualizar el resultado, en este caso tarda 8 segundos, el valor minimo es de 15 rpm, en el caso anterior por ejemplo tardaba menos en actualizar por que solo tomaba muestras en un segundo es por eso que se dificultaba medir RPM menores a 60, es este ultimo toma muestras en 8 segundos, no es ninguna molestia, para eso estamos, por cierto el PIC para este caso es el 16F877, espero y sea de ayuda.
> 
> 
> Saludos




No hay problema hoy me fijé bien y el torno en su cambio mas lento y en retardo alcanza 35 RPM.

Muchas gracias por el archivo...

Pronto voy a estar con noticias


----------



## erwinwal1

amigos  hola me llamo erwin soy de las grutas !!1 
mi recomendacion es el   integrado ua170..no les puedo postear el circuito pero solo con los datos de este mismo lo veran !!!!
como jovista  lo recomiendo


----------



## Rijiru

Hola amigo, seria de mucha ayuda postear el datasheet del circuito integrado ua170, ya que anduve buscando y googleando y no encontre datos al respecto, lo mas cercano es un IC UAA170 y que es obsoleto.


Saludos


----------



## dfounes

Muy buena la simulacion que enviaste Rijiru si puedes mandar el codigo fuente en c o ensambler estaria mucho mejor, porque tambien estoy en la construccion de un tacometro digital y el pic que me sugirieon es el que estas utilizando en la simulacio gracias de antemano


----------



## Rijiru

Buen dia, en esta ocacion se proporciona el codigo en lenguaje C, estoy tratando de hacer compatible la libreria que se encuentra en este compilador para cualquier PIC cuyos puertos sean de 8 bits, ya que la libreria lcd.c es solo compatible para el 16F877


Saludos


#include <16F877.h>
#fuses XT, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NOWRT, NODEBUG
#use delay(clock=4000000)
#use fast_io(a)
#include <lcd.c>
int time0, time1;
int16 pulses0, pulses, rpm, time;
int1 rpmbit, bitini;
void rpm_get()
{
rpm=7.5*pulses;
if(pulses0!=pulses)
{
printf(lcd_putc,"\fRpm \n%Lu", rpm);
delay_ms(1500);
}
pulses=0;
time1=0;
}
main()
{
set_tris_a(0xFF);
rpm=0;
time=0;
time0=0;
time1=time0;
pulses=0;
pulses0=pulses;
rpmbit=1;
bitini=0;
lcd_init();
lcd_putc("\fInicializando\n");
delay_ms(1500);
lcd_putc("\fMidiendo RPM");

do
{
if((input(PIN_A0))&&(rpmbit==1))
{
pulses++;
rpmbit=0;
}
if((!input(PIN_A0))&&(rpmbit==0))
{
rpmbit=1;
}
time0++;
if(time0>=250)
{
time1++;
time0=0;
if(time1>=32)
{
time0=0;
rpm_get();
pulses0=pulses;
}
}
delay_ms(1);
}
while(1);
}


----------



## dfounes

Muy buena gracias no imagine que respondieras tan pronto, una cuestion mas su programacion no tiene nada que ver con las particiones que tiene el encoder si estoy en un error te agradezco que lo explicaras,
En el esquematico va desde el receptor??


----------



## Rijiru

Tal vez te estes preguntando si se necesite uno, en realidad si ves el diagrama en la pag 1 de este tema te daras cuenta que el circuito consta de un optoacoplador, dos compuertas NOT, un LCD 16x2 y PIC, para que aparezcan los caracteres en el LCD el PIC se encarga de generar los codigos que correspondientes para que el LCD los interprete, espero y eso responda a tu duda.



Saludos


----------



## dfounes

Bueno en realidad queria saber si habia algun elemento que pudiese poner al encoder y que me diera los pulsos y eliminar el emisor y receptor, en todo caso muy bbuena respuesta.
Encontre algo muy bueno seria bueno que le eches un ojito y me cuentas, se trata de usar un sensor QRE00034, muy bueno.

me olvide el link aki esta:
http://www.ermicro.com/blog/?p=1461

en realidad asi quisiera que quedara mi proyecto


----------



## Rijiru

Estaba viendo el sensor del proyecto del link que pusiste en el post, no cambia mucho el diagrama, comparando, sustituyes el optoacoplador por el sensor QRE00034 tal como dices, solo que tendrias que poner un reforzador de pulso a la saluda de este para cuidar que los niveles logico se mantengan ahi mismo en la paguina en la seccion "the RPM sensor" viene como armarlo, de hecho es mucho mejor usar ese sensor que el optoacoplador que propongo. En fin, solo lo sustituyes y no habria problema.


----------



## dfounes

Listo entonces le voy hacer el cambio que me dices hago la prueba y a ver como queda, gracias por las recomendaciones


----------



## Rijiru

Ok, ahi luego nos comentas tus resultados para toda la comunidad


----------



## hugos31

hola amigo Rijiru como se podria modificar este tacometro para uso en un camion antiguo diesel ,en este caso la salida de señal cuadrada se toma del alternador W (12v amplitud de voltaje) ,por ejemplo en modo ralenti sin acelerar en minimo la frecuencia de salida es 180Hz y esto equivale en el tacometro analogico a 500 rpm, 360hz=1000rpm, 540HZ=1500rpm, 720hz=2000rpm, 900hz=2500rpm, y 1080 hz=3000rpm que es lo maximo que gira un motor diesel de camion grande (24v)


----------



## Scooter

Y si se usa un pic u otro micorocontrolador, ¿no sería mas sencillo usar la frecuencia sin mas?
Se le aplica a una entrada de comparación captura y se sabe la frecuencia directamente


----------



## Rijiru

En los post anteriores se usa un optoacoplador de reflexion, o la otra opcion es colgarte de la red CAN del automovil y solo filtrar el PGN de las RPM, la ultima opcion en cuando a hardware es menos complicada debido a que sus componentes son pocos, pero el IC MCP2515 o 2510 que es el transceiver para CAN bus seria el de mayor problema, pero aun asi se puede conseguir, pero aih entraria la cuestion de la programacion, dejame encontrar en donde tengo la programacion para obtener los RPM de la red CAN, o si prefieres modificar el medidor RPM para el proposito que comentas.


Saludos


----------



## hugos31

hola amigo ,te pido por favor si me podrias ayudar, estoy buscando un tacometro para un camion diesel de 24v, donde la señal de honda cuadrada proviene del alternador, el tacometro analogico va de 0 rpm a 3000rpm, el motor en minimo sin acelerar marca 500rpm= 185 hz 1000rpm= 370hz 1500rpm=555hz 2000rpm=740hz 2500rpm=925hz, y 3000rpm=1110hz, todas estas medidas lo medi con un osciloscopio, la amplitud de la señal es de 12v , a hi te mando algunos diagramas que encontre en la wep, yo no domino la pogramacion de microcontroladores, pero quiero aprender saludos desde arequipa-Peru.


----------



## hugos31

este encontre en la wep pero le faltan diagramas


----------



## lapulga5

tiopepe123 dijo:


> Se puede hacer perfectamente con un pic mejor un pic16f876 /877
> 
> Utilizando una LCD inteligente o LED si quieres que sea mas vistoso.
> No necesitas el lm2907 si utilizas el pic ya que contiene un contador.
> Si es un buen sitio para pillar las revoluviones, es un sensor que hay en el disco de freno para el abs. Se trata de una simple bobina y un iman muy cerda del disco metalico del freno. El disco de freno tiene una ranua o diente o taladro. Quando la rueda da vueltas, al pasar por el agujero hay una variacion de flujo al faltar ese trocito de hierro y se induce una pequeña tension facilmente amplificable con un transistor.


 Sí, pero tené en cuenta que lo que quiere hacer es un cuentavueltas, no un velocimetro, de modo que el sensor del disco de freno no le va a servir. Que yo sepa, hay dos métodos más conocidos de obtener señal par un tacometro, uno de la bobina para las bujias, o sino del alternador (aunque la señal de este es sinosoidal)


----------



## Rijiru

Buen dia comunidad, perdonene la tardanza, ultimamente he estado con algo de carga en el trabajo y lo prometido es deuda, aqui les dejo el codigo para medir las RPM directamente del automivil, el detalle de este codigo es que es para los vehiculos de motor a diesel, ya que reconoce solamente el codigo del PGN correpondiente a ese codigo, espero y sea de utilidad

#include <18f458.h>
#include <STDIO.h>
#include <stdlib.h>
#fuses H4, NOPROTECT, NOWDT, PUT, NOLVP, NOWRTC 
#use delay(clock=40000000)
#include <can-18xxx8.c>
#include <lcd.c>
int32 ID;
struct rx_stat stat;
int data[8];
int1 rtr;
int1 ext;
int len;
int pri;
int i;
long RPM;

void main()
{
 for(i=0; i<8; ++i)
 {
  data_=0;
 }
 can_init();

 do
 {
  if(can_kbhit())
  {
   if(can_getd(ID, &data[0], len, stat))
   {
    if(ID==0x0CF00400)
    {
     RPM=256*data[5]+data[4];
     printf(lcd_putc,"\fRPM= %LU", RPM);
    }
   }
   else
   {
    lcd_putc("\fFalla al obtener dato de la red CAN bus\n\r");
   }
  }
 }
 while(1);
}


saludos_


----------



## hugos31

como construir un simulador SAE J1939


----------



## Rijiru

Bueno, algo asi, este codigo alterado podria ser un snifer ya seria cuestion de hacer que reconozcas mas PGN's, pero, en si se posteo para reconocer el PGN y capturar y convertir los bytes correpondientes a las RPM del vehiculo, esto para vehiculos de motor a diesel y ademas con el circuito correpondiente es facil de instalar. Con la brevedad posteare lo que haga falta del mismo.


Saludos


----------



## dfounes

Bueno la cosa esta asi despues de un tiempito logre aprender a programar un pic, el problema esta que sale en la simulacion mas no en el protoboard.

Aca dejo mi codigo fuente asi como el compilado y su respectiva simulacion, las lecturas del tacometro las presento en un lcd, las patitas RA0 y RA1 son las entradas para determinar el sentido de giro del motor, la que este en alto es el sentido, si las dos estan en bajo el motor no gira, si las dos estan en alto no conte con esa opcion luego lo corrijo.

Algun comentario seria de ayuda, Gracias.
El archivo se encuentra adjunto en:

https://www.forosdeelectronica.com/f24/display-mostrar-rpm-motor-cc-39742/

es el tema, Página 1


----------



## COSMICO

amigo Rijiru.
Me puedes pasar el planito de la simulacion en proteus del tacometro con pic 628
Lo monte pero no me funciona, a ver si estoy mal en la conexion.
Gracias..

Rijiru saludos.
Mira, tengo una rueda dentada con 60 dientes para usarla con un sensor inductivo
pero el voltaje a la salida del sensor es muy bajo, sabes si el lm 2907
detecta pulsos de 80mv que saca la bobina.
y como ago para adaptar tu programa a esta rueda que corta el sensor 60 veces en una vuelta?
Agradesco tu ayuda..


----------



## Rijiru

Buen dia COSMICO, En la paguina 1 en este tema, se encuentra el diagrama adjunto, aqui te dejo el codigo para ajustarlo a tu rueda dentada.

#include <16f628A.h>
#fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
#use delay(clock=4000000)
#define LCD_DATA_PORT getenv("SFRORTB")
#include <lcd_b.c>
int time0, time1;
int16 pulses0, pulses, rpm, time;
int1 rpmbit;
void rpm_get()
{
 rpm=pulses;
 if(pulses0!=pulses)
 {
 printf(lcd_putc,"\fRpm \n%Lu", rpm);
 delay_ms(1500);
 }
 pulses=0;
 time1=0;
}
void main()
{
 set_tris_a(0x1F);
 rpm=0;
 time=0;
 time0=0;
 time1=time0;
 pulses=0;
 pulses0=pulses;
 rpmbit=1;
 lcd_init();
 lcd_putc("\fBienvenido\n");
 output_low(PIN_A7);
 do
 {
  diagnostico();
  if(input(PIN_A1))
  {
   if((input(PIN_A0))&&(rpmbit==1))
   {
    pulses++;
    rpmbit=0;
   }
   if((!input(PIN_A0))&&(rpmbit==0))
   {
   rpmbit=1;
   }
   time0++;
   if(time0>=250)
   {
    time1++;
    time0=0;
    if(time1>=4)
    {
     time0=0;
     if(pulses<1)
     {
      lcd_putc("\frpm < 60\nO sin giro");
      delay_ms(500);
     }
     else
     {
      rpm_get();
      pulses0=pulses;
     }
    }
   }
  }
  if(input(PIN_A2))
  {
   output_toggle(PIN_A7);
   if(!input(PIN_A1))
   {
    lcd_putc("\fMotor Apagado");
   }
   delay_ms(500);
  }
  delay_ms(1);
 }
 while(1);
}

En cuanto al LM2907 su entrada typica esta en los +/-25mV, asi que 80mV, estan muy por encima del rango. Espero y te sea de ayuda.


Saludos


----------



## dfounes

Hola, Rijiru podrias enviar enviar la configuracion del lcd ya que no sale mi tacometro, en la simulacion todo perfecto, lo he programado en microcode y en ccs c compile. Agradecido de antemano


----------



## COSMICO

Mil gracias amigo..
Me pondre manos a la obra
Un saludo.

oak amigo Rijiru.
Ahora, me puedes ayudar a comprender como paso los pulsos 
que genera la bobina a rpm si son 60 pulsos en una vuelta
No logro comprender bien el programa; ahora veo que quitaste el rpm=60*pulses;
por rpm=pulses; dare otro ojito a el programa mientras me ayudas


----------



## COSMICO

Gracais amigo Rijiru

umm  ya di con la cosa..
Se miden los pulsos por lapso de un segundo, y se multiplica por 60 segundos 
para un total de 1 minuto= RPM
como son 60 dientes, ya no es necesario multiplicar por 60...
En otra oportunidad hare mas preguntas tontas; que conste que soy menos que principiante en ccs


----------



## facumaster

hay alguna manera de convertir de C a assembler????? *POR*q*UE* todavía no aprendí a usar C =(

yo uso el mplab para programar


----------



## Rijiru

Asi es amigo, el compilador CCS te genera un archivo de extencion .lst ese archivo es el codigo ASM del PIC el programa posteado anteriormente te edjunto el codigo ASM del mismo, viene explicado con cada rutina añadida del mismo, espero y te sea util esta INFO.


Saludos


----------



## davidmncc

hola rijiru muy interesante tu proyecto pero queria saber si la entrada del led en el optoacoplador va conectada directo a la bobina del auto.. de ser asi al terminal positivo o negativo? gracias de antemano


----------



## facumaster

Rijiru dijo:


> Asi es amigo, el compilador CCS te genera un archivo de extencion .lst ese archivo es el codigo ASM del PIC el programa posteado anteriormente te edjunto el codigo ASM del mismo, viene explicado con cada rutina añadida del mismo, espero y te sea util esta INFO.
> 
> 
> Saludos



sos un groso!!!!!!!!!!!! gracias, voy a estudiarlo y cualquier cosa pregunto aca   gracias!!!!!


----------



## Rijiru

Honestamente no conozco muy bien el interior de los automoviles, aquie te adjunto un link con informacion.

http://www.libreopinion.net/foros/showthread.php/2525-Sistemas-de-encendido-DIS

Pero en caso de los automiviles, suguiero "colgarse" de la red CAN, en el caso de los vehiculos de motor a diesel anteriormente se posteo la programacion, aunque aun debo los diagramas, espero encontralos pronto.



Saludos


----------



## COSMICO

Un saludo a todos..
estoy en un dilema, monte el circuito que adjunto del lm2907
esperando que al colocar el pikup o sensor inductivo, a la saluda me diera 
la misma frecuencia de entrada pero en onda cuadrada..y en la simulacion ,siiii
pero en la vida real..no es asi.Se me esta pasando algo??
La salida de mi sensor es de 200 a  mv pp pero al
probar con un motorcito, adecuado para tal fin en el oscilsoscopio veo de 15hz
a 77 hz para maxima velocidad el el sensor; y a la salida del lm varia entre 200hz a 112 hz
pero con unos saltos que hacen muy dificil hacer un claculo..alguien ya lo monto y paso por esto
ahh y aparte de todo la salida del 2907 es de 500mv pp no los 4.5 esperados o algo mas alto..
que configuracion sera las mas estable para este circuito???
Gracias por su ayuda..
Ver el archivo adjunto simulacion.rar :enfadado::enfadado:


----------



## Rijiru

COSMICO dijo:


> Un saludo a todos..
> estoy en un dilema, monte el circuito que adjunto del lm2907
> esperando que al colocar el pikup o sensor inductivo, a la saluda me diera
> la misma frecuencia de entrada pero en onda cuadrada..y en la simulacion ,siiii
> pero en la vida real..no es asi.Se me esta pasando algo??
> La salida de mi sensor es de 200 a mv pp pero al
> probar con un motorcito, adecuado para tal fin en el oscilsoscopio veo de 15hz
> a 77 hz para maxima velocidad el el sensor; y a la salida del lm varia entre 200hz a 112 hz
> pero con unos saltos que hacen muy dificil hacer un claculo..alguien ya lo monto y paso por esto
> ahh y aparte de todo la salida del 2907 es de 500mv pp no los 4.5 esperados o algo mas alto..
> que configuracion sera las mas estable para este circuito???
> Gracias por su ayuda..
> Ver el archivo adjunto 38734 :enfadado::enfadado:


 


En primera instancia debes saber en que forma esta dentada la rueda a sensar, probablemente tenga dientes como se ilustra:

_-_-_---__-_-_---__


unos dientes sean mas cortos que otros y uno mas largo que otro y la separacion de los mismos, y si tdos los dientes son uniformes, toma en cuenta que dentro del automovil hay muchos elementos inductivos y todos generan armonicos que se pueden "inyectar" a tu circuito y ocacionarte señales indeseables, espero y esto te ayude.



saludos


----------



## COSMICO

Hola amigo rijiru un placer saludarte.
solo le puse un troso de metal redondo al motor para medir las rpm
No deberia ser la frecuencia de entrada del pikup, igual a la de salida del lm2907
me esta volviendo loco este circuito..


----------



## Rijiru

COSMICO dijo:


> Hola amigo rijiru un placer saludarte.
> solo le puse un troso de metal redondo al motor para medir las rpm
> No deberia ser la frecuencia de entrada del pikup, igual a la de salida del lm2907
> me esta volviendo loco este circuito..


 




Solo una pregunta mas, El PIN 3 lo tienes conectado a un diodo Zener o a un arreglo RC?


----------



## COSMICO

A un zener de 5.1 volts a tierra y este pin tres puenteado con el pin 4
el pin 10 puenteado con el cinco y estos con una resistencia de 10k tambien a tierra..
Que opinas?...


----------



## Rijiru

COSMICO dijo:


> A un zener de 5.1 volts a tierra y este pin tres puenteado con el pin 4
> el pin 10 puenteado con el cinco y estos con una resistencia de 10k tambien a tierra..
> Que opinas?...


 


Te adjunto una imagen del circuito que creo que estas usando, dime en que coincidimos. Ok?




Saludos


----------



## COSMICO

No no.
Mira en la pagina tres subi el plano de la simulacion..
Ahora lo estoy usando en el modo conversion de frecuencia a voltaje y en esa
si me funciona..en la simulacion que estan en la pagina anterior si funciona bien de frecuncia a frecuencia.
Pero en protoboard solo obtengo 400mv pp en los pulsos..y los inversores no me trabajan 
a tan poco voltaje...dale un ojito y me cuentas..Gracias por tu ayuda


----------



## COSMICO

hola amigos..rijiru como estas.
Ahora tengo otro dilema.
me llego un amigo que trabaja como electricista y me dijo que necesitaba un tacometro
que curioso,estoy en eso con el ej del amigo rijiru..le dije que me trajera el disco pues 
me comento que tenia muchos diente..y si es grande; y tiene 
118 dientes muy pequeños..como de tres milimetros cada uno..
ahora como le calculo las rpm a este..
tomo el valor obtenido de los pulsos durante un segundo, y lo divido en 118
ahh y usando el lm2907 como le hago para la proporcion voltaje frecuencia
gracais de antemano como siempre..


----------



## Rijiru

COSMICO dijo:


> hola amigos..rijiru como estas.
> Ahora tengo otro dilema.
> me llego un amigo que trabaja como electricista y me dijo que necesitaba un tacometro
> que curioso,estoy en eso con el ej del amigo rijiru..le dije que me trajera el disco pues
> me comento que tenia muchos diente..y si es grande; y tiene
> 118 dientes muy pequeños..como de tres milimetros cada uno..
> ahora como le calculo las rpm a este..
> tomo el valor obtenido de los pulsos durante un segundo, y lo divido en 118
> ahh y usando el lm2907 como le hago para la proporcion voltaje frecuencia
> gracais de antemano como siempre..


 



asi es, la formula para un disco de "n" numero de dientes seria:

RPM=60(pulsos/n)

para el caso, se toman muestras cada segundo, es por eso que se multiplica por 60


Saludos


----------



## COSMICO

okk.
por ej...
12000 p
118 d

2360/118= 20
20*60=1200 rpm

Una cosita mas rijiru..Como no tengo un motor para este disco como simulo 
la señal de entrada para este circuito..con un generador, podria servir el de proteus 
y aplicarlo a la entrada del lm2907, pero como lo configuro??
Gracias por tu ayuda..


----------



## Rijiru

Asi es amigo COSMICO....   podrias utilizar un optoacoplador y la señal del genrador la usas para encender y apagar el LED =D

Saludos


----------



## COSMICO

Mira rijiru, que coloque un generador de onda seno,que tengo por ahy con icl8038
se lo puse al lm2907..y no responde a esa señal; aunque la varie en amplitud y frecuencia
y para peor, intente sacar los pulsos del generador de proteus por la salida de audio de mi pc
pero a los 10kHz la frecuencia se atenua totalmente umm..no soporta mucho la dichosa tarjeta.
Sera que el lm..detecta la carga inductiva..tocaria pasarla por un pequeño trafo,
A ver si con un driver de horizontal de esos de tv me funciona..Que opinas..?
Un saludo amigo rijiru..


----------



## COSMICO

Hola amigo rijiru.
se que debes estar ocupado..Pero necesito un favor.
Como puedo meter la señal de un generador senoidal al lm2907, para hacer pruebas y calibracion..Te agradesco la ayuda..


----------



## hugos31

utiliza el motor especial para generar laS señales ,lo aces girar con un taladro de velocidad variable, amas velocidad mas frecuencia


----------



## Fogonazo

COSMICO dijo:


> .....Pero necesito un favor.
> Como puedo meter la señal de un generador senoidal al lm2907, para hacer pruebas y calibracion..Te agradesco la ayuda..


Toma a través de un transformador y un divisor resistivo la señal de la red eléctrica 50/60Hz, haces los cálculos para las RPM que correspondan y lograr la presentación correcta.


----------



## COSMICO

Buenos demo amigo ugus32..
Rijiru como estas..
Pues solucione con un 555 en astable y pase la señal por una red rc, esto con el fin de 
lograr una frecuencia de 413 khz; que deberia ser la maxima alcanzada por el disco 
dentado para 3500rpm, y asi se lo envie directo al pic..sera en verdad la relacion motor disco 1a1, para alcanzar esta frecuerncia?.
Y sera este disco la cremallera del volante del motor...???
me gustaria saber algo de este tipo de motores..aver como le hago..
por lo que veo..Al fin de cuentas no supe si el 2917 soporta los 413khz de entrada
segun la relacion "voltaje de salida frecuencia" se saldria del margen..


----------



## rafhael

buenos videos explicativos ,de donde es ud amigo hugos?  como dicen una imagen vale mas que mil palabras


----------



## jarri

Muy buenos aportes, muchas gracias por compartirlos. Saludos!


----------



## Rijiru

Oraleeeeee, que buenisima onda, a mi el LM2907 no me funciono, aun no se cual es el problema con ese integrado, excelente aporte Hugos, 


Saludos


----------



## vladi

Rijiru dijo:


> Hola, estaba viendo la problematica y aqui les traigo un tacometro con PIC, se trata de un optoacoplador que cuenta las veces que la luz es interrumpida de acuerdo a eso calcula las RPM y el motor es activado con un switch(vease diagrama adjunto), espero y sea de ayuda.
> Saludos



Buenas.
Podría usar el optoaclopador 4N35, podria servir. Cual nos puedes recomendar???
SALUDOS


----------



## pandacba

Aqui les dejo un interesante material con mucha info, leerlo muy detenidamente porque evacuara muchas dudas, tiene muchos ejemplos y formulas necesarias


----------



## victofer1

buenas, queria preguntarte donde encontrastes el circuito del tacometro_196.tenia unas preguntas.No se si me harias el favor de cnt, o igual no lo sabes.Lo unico yo tengo un esquema algo mas completo.En el S1 hay un dibujo representativo en el circuito general.¿Sabes cual es el cable comun??despues hay un transistor y un diodo en el comparador shift light que no esta la referencia.Muxas gracias, un saludo.


----------



## Dario

holas.
che, yo hice este aporte de un taco al que le dieron poca bolilla, ¿les sirve? https://www.forosdeelectronica.com/f23/aporte-tacometro-digital-sencillo-44736/
saludosss


----------



## victofer1

TACOMETRO DIGITAL CON SHIFT LIGTH CON ESCALA DE 10 LEDs.
No,yo no me refiero a ese esquema.me refiero a un esquema que tiene un tacometro,un diplay, un voltimetro, una escala de leds y un convertidor de shift ligth.







http://ebuziyar.com.ar/articulos/Tacometro Digital.htm

En el tacometro hay una resistencia que pone 470.me imagino que sera 470K.
En el comparador shift light hay un transistor y un diodo que no tiene referencia ni nada.
Y por ultimo queria preguntar si alguien sabe que cable es el comun en el pulsador S1, o el funcionamiento.Muchas gracias a todos.Un saludo


----------



## championx

Hola Rijiru!

Esoty desarrollando un proyecto donde debo conectarme a varias ECU con BUS CAN.

Vi que habias desarrollado algo , donde mencionabas como obtener el valor de las RPM.

Mi pregunta es, si tienes algun documento donde indique que IDs son para que dato, es decir, para las RPM, velocidad, Km etc.

Actualmente esoty investigando un poco del J1939, que es para vehiculos de carga pesada, pero me interesa saber tambien para vehiculos livianos (automoviles).

Si tienes algo de informacion te lo agradeceria mucho!

Saludos desde argentina.


----------



## victofer1

buenas amigos siguo con el proyecto del tacometro digital.he coseguido ver uno de los problemas.el condensador de el pin 1.el primer condensador es de 47n en vez de 470microF.pero sigo probando, xk no me funciona,pero he visto a varias personas ke si les ha funcionado.si alguien me podria ayudar.si alguien tiene alguna duda,ke pregunte?el potenciometro del primer esquema no me varia el voltaje de salida, ke con 50hz seria de 1.5voltios por el pin3.muxs graxias a todos.y espero respuestas xra poder terminarle.un saludo


----------



## idelvj

hola amigote rijiru me llamo omar gracias por el aporte esta muy bueno  mira stoy haciendo un proyecto el cual quiero agregar ese tacometro pero lo q no entiendo xq con el pic 16f628 y el 16f877a el cual estoy utilizando cambias el time1 y el productoi de rpm=7.5*pulses te lo agradeceria de todo corazon si me haces una pequeña explicacion porfavor te lo agradeceria de antemano espero tu respuesta rijiru gracias de todas maneras


----------



## dante13045

discupa me podrias mandar la simulacion del tacometro con el pic 16f877 Rijiru por favor


----------



## Rijiru

Disculpa la molestia, pero dejo los archivos adjuntos para la simulacion, aunque en el diagrama aparecen dos LDR, esos son detectores de luz simplemente.

Saludos


----------



## COSMICO

Hola amigo Rijiru, un saludo.
Gran ayuda la tuya en este foro


----------



## hugos31

Hola amigo Rijiru,por favor explicar como se logra esta funcion ACELERACION DE MOTOR VIA CAN BUS a travez de la red y como es posible diagnosticarla en caso de fallas en la aceleracion


----------



## vasco84

Hola Muchachos, desde ya un lujo el foro, Una pregunta al amigo Rijiru; o al resto de la comunidad de este foro... Alguien pudo armar el tacometro con pic y lcd que a proposito Rijiru compartio??? Yo lo monte, e inicializa bien pero queda clavado en la leyenda "motor apagado"; y el sensor esta entregando los pulsos para el conteo al pin 17 del PIC;  medido esto con otro frecuencimetro...Estoy utilizando un 16F628, el 16F628A no lo consegui, pero el pic es de clock interno de 4mhz (16f628); supongo que esto no traeria el problema. Tal vez algun errorcito en el soft...?? no lo sé. Si alguno gustase tirarme una idea me seria de gran ayuda; ya que estoy embalado para terminarlo...
Un saludo enorme, y desde ya gracias¡¡¡


----------



## ricbevi

vasco84 dijo:


> Hola Muchachos, desde ya un lujo el foro, Una pregunta al amigo Rijiru; o al resto de la comunidad de este foro... Alguien pudo armar el tacometro con pic y lcd que a proposito Rijiru compartio??? Yo lo monte, e inicializa bien pero queda clavado en la leyenda "motor apagado"; y el sensor esta entregando los pulsos para el conteo al pin 17 del PIC;  medido esto con otro frecuencimetro...Estoy utilizando un 16F628, el 16F628A no lo consegui, pero el pic es de clock interno de 4mhz (16f628); supongo que esto no traeria el problema. Tal vez algun errorcito en el soft...?? no lo sé. Si alguno gustase tirarme una idea me seria de gran ayuda; ya que estoy embalado para terminarlo...
> Un saludo enorme, y desde ya gracias¡¡¡



Tenes "rebote"(falso contacto) en el pulsador que va al PuertoA.2  pin 1 y +B y toma la acción de pulsado como doble. En la simulación funciona y falla con la inscripcion de "Motor Apagado" si pulsas rápido 2 veces dicho pulsador.Si no lo estas usando y lo conectas directamente a +B deberias activar los fuser del PIC al grabar  BODEN_ON, PWRTE_ON, a ver si le da tiempo a arrancar bien al pic al alimentarlo.Lo mas lógico si no la usas seria corregir el programa donde pregunta por el estado del PuertoA.2 ( if(input(PIN_A2)) ) eliminándolo
y volver a compilarlo para obtener el .hex nuevo pero deberías tener el compilador "C" en que fue echo . Te aclaro que yo NO PROGRAMO EN C y solo tengo una idea general de su sintaxis 
Saludos.

Ric.


----------



## vasco84

ricbevi; desde ya muchas gracias por tu respuesta, te cuento que cambie la configuracion de los fuser pero el problema persiste. 
Pensas que el inconveniente esta en el soft?
Saludos


----------



## ricbevi

vasco84 dijo:


> ricbevi; desde ya muchas gracias por tu respuesta, te cuento que cambie la configuracion de los fuser pero el problema persiste.
> Pensas que el inconveniente esta en el soft?
> Saludos



El problema esta en la aplicación que tu haces del soft ya que evidentemente el que lo hizo como solución a su problema le funciono. En ti esta adaptar lo que alguien ya realizo y desinteresadamente compartió o buscar tu propia creación. Si lees y analizas atentamente lo que ya respondí seguramente podrás resolver tu problema. Como la bola de cristal no tengo y no soy mago de ningún tipo y tu no das ni siquiera la explicación si usas o no la llave del PuertoA2 o al menos si intentaste de alguna forma si la usas de filtrar dicha entrada o no.
Ric.


----------



## vasco84

No; la llave del puerto A2 no la estoy utilizando.
No he intentado filtrar dicha entrada.
Por supuesto que cuando hablo de "error en soft"; hago referencia a mi circuito, y la aplicacion del soft en él.
Ric; si  tuvieras la bola de cristal.... No te pediría la solucion al TACOMETRO, te pediría los numeros del QUINI.. Serías un fenomeno!!!
De onda
De verdad, gracias por tu ayuda.
Saludos


----------



## ricbevi

vasco84 dijo:


> No; la llave del puerto A2 no la estoy utilizando.
> No he intentado filtrar dicha entrada.
> Por supuesto que cuando hablo de "error en soft"; hago referencia a mi circuito, y la aplicacion del soft en él.
> Ric; si  tuvieras la bola de cristal.... No te pediría la solucion al TACOMETRO, te pediría los numeros del QUINI.. Serías un fenomeno!!!
> De onda
> De verdad, gracias por tu ayuda.
> Saludos



Todo bien también de onda pero debes ayudar a que te ayuden. Ponete un rato del otro lado y pensá si la información de lo que estas haciendo y como es completa para que alguien que solo tiene conocimiento de electrónica/programación pueda ayudarte. .....entonces empezamos ya con las suposiciones(empiezo a adivinar cosa que no hago bien todavía pero estoy recibiendo un curso acelerado   ) por que no decís si la usas directamente al +B ya que sin ella no empieza a contar....suponiendo que solo la tenes sin conexión(al aire) prueba mandando a +5Vdc mediante una llave cuando querés que inicie la medición de las RPM y del pin del PuertoA2 a GND una resistencia de 10kpara presentarle un estado bajo mientras esta al aire por que puede ser que te este tomando ruido o como estado alto el que este sin ninguna carga.


Ric.


----------



## vasco84

Te cuento, la coneccíon esta a +5Vdc, caso contrario; de quedar abierta, queda la leyenda en el display de "bienvenido"; y no sale de hay. Al conectar A2 a +5Vdc; lo que te comente, "motor apagado" Todo ello se manifiesta con el sensor entregando o no, los pulsos de conteo, antes ó despues de alimentar el PIC, quiero decir que he probado la variante de que el encoder comienze a entregar los pulsos antes de que inicialize el display, (aunque no deberia tener incidencia en el funcionamiento ya que debe habilitar por soft la entrada en el pin 17).
Gracias Ric.
Saludos


----------



## ricbevi

vasco84 dijo:


> Te cuento, la coneccíon esta a +5Vdc, caso contrario; de quedar abierta, queda la leyenda en el display de "bienvenido"; y no sale de hay. Al conectar A2 a +5Vdc; lo que te comente, "motor apagado" Todo ello se manifiesta con el sensor entregando o no, los pulsos de conteo, antes ó despues de alimentar el PIC, quiero decir que he probado la variante de que el encoder comienze a entregar los pulsos antes de que inicialize el display, (aunque no deberia tener incidencia en el funcionamiento ya que debe habilitar por soft la entrada en el pin 17).
> Gracias Ric.
> Saludos




Funcionamiento: encender la placa  y el encoder de pulsos funcionando.... pin del PuertoA2 sin ninguna conexión(Abierto) muestra mensaje "Bienvenido". Para empezar a leer las RPM debes colocar un pulsador como figura en el circuito(entre +5Vdc y el PuertoA.2) y pulsar solo un instante una sola vez para darle un alto momentáneo(como un disparo) al PuertoA.2 y leerás en la primera linea RPM y en la segunda las RPM que entregue el encoder(pulsas una vez arranca.... si pulsas otra vez a continuación se detiene....si pulsas otra vez a continucion arranca nuevamente).
Si lo mandas a +B permanentemente al PuertoA.2 muestra mensaje Motor Apagado en la primera linea. 
Ric.


----------



## vasco84

Sabes que SI Ric, estaba haí la solucion. Sos un capo.
Lamentablemente el proyecto no me sirve ya que es extremadamente lento al mostrar las actualizaciones en pantalla de las rpm. Yo necesitaba que se actualize constantemente,
Pero bue, que le voy a hacer. Habria que modificar el programa, y ahi no me incluyo.
Desde ya muchisimas gracias por tu tiempo.
Saludos


----------



## ricbevi

vasco84 dijo:


> Sabes que SI Ric, estaba haí la solucion. Sos un capo.
> Lamentablemente el proyecto no me sirve ya que es extremadamente lento al mostrar las actualizaciones en pantalla de las rpm. Yo necesitaba que se actualize constantemente,
> Pero bue, que le voy a hacer. Habria que modificar el programa, y ahi no me incluyo.
> Desde ya muchisimas gracias por tu tiempo.
> Saludos



Ok ...suerte con el proyecto del 18F del otro foro.

Ric.


----------



## vasco84

Gracias Ric.
Agrado que te des una vuelta entonces; te ví por ahí..
Saludos


----------



## gallodraft

Que onda viejo necesito ayuda con este código que encontré, ya lo simulé en proteus y si jala bien, el problema es que al realizar la conexión en físico no hace nada, no manda nada a la LCD, espero mepuedan ayudar para saber que está fallando gracias.

http://www.pyroelectro.com/tutorials/digital_tachometer_rpm/parts.html


----------



## Rijiru

Disculpen la tardanza gente...        @gallodraft, lo has intentado simular en MPLAB, para que veas el comportamiento de los registros, a los demas foristas, estoy tratando de mejorar el tacometro, con base del modulo compare/capture, usando ese modulo, el sistema se eficientiza.

 Saludos


----------



## gallodraft

Rijiru dijo:


> Disculpen la tardanza gente...        @gallodraft, lo has intentado simular en MPLAB, para que veas el comportamiento de los registros, a los demas foristas, estoy tratando de mejorar el tacometro, con base del modulo compare/capture, usando ese modulo, el sistema se eficientiza.
> 
> Saludos



Que tal rijiru gracias,mm no, en MPLAB no lo he simulado, la LCD sólo ponía en negro el renglón de arriba la primera línea, revisé por aquí varias preguntas referente a eso pero ya ajusté el contraste y todo lo que dicen pero nada más no, será cuestión de cómo inicializan la lcd en el código? gracias.


----------



## electroc

]Hola, me gustaria saber como puedo convertir el codigo que nos brindas en el programa para hacer algunos ajustes a lo que necesito..queria saber si hay algun programa que lo hace...recien me he inscrito en este foro que es muy bueno....................................................................................................................................................................................................................................................................................................................................................................................................................................................................


----------



## gallodraft

electroc dijo:


> ]Hola, me gustaria saber como puedo convertir el codigo que nos brindas en el programa para hacer algunos ajustes a lo que necesito..queria saber si hay algun programa que lo hace...recien me he inscrito en este foro que es muy bueno....................................................................................................................................................................................................................................................................................................................................................................................................................................................................



Que onda viejo, pues lo he probado en físico y no jala nada, simulado trabaja muy bien, no he podido encontrar el error, tengo otro código que mide RPM y RPS, pero usa un 18f4550, ese está muy bien, si trabaja y funciona perfecto.

por cierto electroc, lo puedes manipular con el MPLAB y usa el compilador el C18, los puedes descargar desde microchip.


----------



## Rijiru

Hola gente, del foro, despues de un periodo de larga chamba, les tengo noticias...  estaba viendo pa forma de hacer este proyecto, pero, basado en interrupciones, estoy haciendo pruebas, ya que el margen de error con el reloj interno del PIC16F628 es muy alto, lo estoy probando con un reloj de mayor frecuencia y el error se reduce, aun esta en prueba, ya que tenga resultados mejores los posteo, saludos.


----------



## COSMICO

Hola amigo Rijiru.
Gusto saludarte, espero salga bien todo.


----------



## manuelguillen

hola buenas tardes estoy muy pero muy intereado en este tema y poir cierto yo tambien arme el diagrama con el lm2907 y no me dio resultado pero bueno lo mio es para un uso automotriz me interesaria bastante como puedo crear un tacometro para un motor de inyeccion de gasolina que cuente como desde 100rpm hasta un margen de 7500 o mas me agradaria saber como puedo lograr este gran rango con un pic me parece que es lo mas primordial por favor si alguien tiene alguna ide por favor aganmelo saber por favor 
de antemano muchas gracias


----------



## Dj BaLa

Hola Rijiru quiero comenzar a realizar el tacómetro que muestras en la primera página con el pic 16f628A.  Necesito medir la velocidad de un motor dc de 12v 140ma, el clásico ventilador de una fuente de poder de pc. La única duda que tengo es que tu utilizas un optoacoplador npn, la pregunta es, el  optoacoplador es un cto integrado, podria reemplazarlo por un led infrarrojo y un fototransistor como en la foto.


----------



## manuelguillen

bueno si me parece algo bajo creo que tendria que ser desde unas 150 o 200 rpm hasta 7000

bueno con la parte de programacion en el pic estaba pensaando en un 18f877 que tiene entradas analogo digitales 
por eso necesito ayuda


----------



## Rijiru

Dj BaLa dijo:


> Hola Rijiru quiero comenzar a realizar el tacómetro que muestras en la primera página con el pic 16f628A.  Necesito medir la velocidad de un motor dc de 12v 140ma, el clásico ventilador de una fuente de poder de pc. La única duda que tengo es que tu utilizas un optoacoplador npn, la pregunta es, el  optoacoplador es un cto integrado, podria reemplazarlo por un led infrarrojo y un fototransistor como en la foto.



Si se puede reemplazar, solo que toma las debidas precauciones para eliminar los "rebotes". Ademas esa version es un poco lenta para RPM's bajos.

bueno si me parece algo bajo creo que tendria que ser desde unas 150 o 200 rpm hasta 7000



manuelguillen dijo:


> bueno con la parte de programacion en el pic estaba pensaando en un 18f877 que tiene entradas analogo digitales
> por eso necesito ayuda



Estoy en ello, nomas que ay componentes que no me han llegado, para probar el firmware que recientemente termine, tenganme un poco de paciencia, estoy trabajando en ello.


----------



## Dj BaLa

Muchas gracias por la respuesta Rijiru, con respecto a la lentitud de las RPM's para mi no es un problema, ya que es un trabajo para el instituto. Compre los dispositivos y Durante esta semana tendre novedades.


----------



## Dj BaLa

Bueno adjunto las fotos del tacómetro funcionando, el motor esta alimentado con 5 volts y entrega 6.240 RPM no sé si esta en lo correcto, el tacómetro esta alimentado con 8 volts pero el cto tiene un regulador de tensión 7805. 
El motivo por el cual hice este cto, es porque en el instituto debo realizar un PID análogo controlando la variable velocidad, por lo tanto necesito ocupar el tacómetro como sensor que ira conectado al comparador, mi pregunta es cómo puedo obtener un voltaje del tacómetro con respecto a las rpm.


----------



## manuelguillen

buen trabajo Dj Bala me gustaria pedirte un favor nose si nos podrias facilitar el lenguaje que usaste para llegar a esas rpm, con que pic trabajas es un pic de 9 pines pines por lado cual es? seria posible que pudieras postear tus diagramas por favor???????????


----------



## Dj BaLa

Hola manuelguillen, mira utilice lo que compartio Rijiru en la primera pagina, yo grabe en el pic el .Hex que viene en la carpeta, pero también esta en lenguaje C para modificar el programa. El Pic que utilice es el 16f628A tiene 18 pines. Y un integrado 74HC14 compuerta NOT para evitar los rebotes tiene 14 pines. El único cambio que hice, fue cambiar el optoacoplador, por fototransistor infrarrojo y un fotodiodo emisor infrarrojo. Que cumplen la misma función que el optoacoplador. Adjunto el archivo que compartio Rijiru, con una modificacion de alimentacion en el LCD 16X2 del proteus.


----------



## manuelguillen

gracias por responder 
disculpa mi ignorancia pero en el post de la primera pagina cuando lo simulas solo llega a 1560 rpm pero como isiste para que llegue a mas de 6000 como se muestra en las fotos 
la modificacion que isiste esta en lenguaje c? esque no se mucho de lenguaje c


----------



## Dj BaLa

Hola Manuelguillen te va a parecer un poco extraño, pero la verdad que utilice el mismo .HEX que esta en la carpeta que adjunte en el mensaje anterior no he cambiado nada del programa subido por Rijiru.
Creo que a lo mejor con el cambio del optoacoplador, puede alcanzar mas velocidad.
Seria conveniente que muestres tu trabajo, para saber mas detalles de lo que haz hecho hasta el momento, específicamente las conexiones. Lo haz montado en protoboard, placa, o lo haz simulado solo en proteus?.


----------



## Dj BaLa

Hola Rijiru, estoy un poco complicado porque necesito que el tacómetro me entregue un voltaje de salida, es decir a medida que varie la velocidad (rpm) también varie el voltaje y la verdad que no estoy muy seguro de como hacerlo, seria posible tener un voltaje de salida de algún pin del pic16f628a o tendría que utilizar un DAC o un convertidor de frecuencia a voltaje.


----------



## DacidDiaz

Disculpen, saludos a todos! De igual forma que Dj Bala hare el tacometro que nuestro buen amigo Rijiru aporto para el 16F682A, pero es la primera vez que trabajo con un PIC, mi pregunta es que software deberia emplear y como hago para introducir el software al PIC fisicamente hablando, que pines deberia conectar y a que puerto del ordenador. Si alguien me pudiera ayudar con esto, le estoy desde ya muy agradecido.


----------



## alechivo

DacidDiaz dijo:


> Disculpen, saludos a todos! De igual forma que Dj Bala hare el tacometro que nuestro buen amigo Rijiru aporto para el 16F682A, pero es la primera vez que trabajo con un PIC, mi pregunta es que software deberia emplear y como hago para introducir el software al PIC fisicamente hablando, que pines deberia conectar y a que puerto del ordenador. Si alguien me pudiera ayudar con esto, le estoy desde ya muy agradecido.




Hola Maestro.
Te sugiero que uses CSS como compilador para la programación o algun otro producto en C# ya que tienen libreria y ahorra trabajo al armar proyectos con PIC. 
Y para "quemar" dicho PIC debes unar entrenadores o programadores que se vender en el mercado por menos de $200 AR o hacerte si te das mañana uno que publicaron aca en el foro. Algunos son  con puerto Rs232 y otros USB. La mayoria no necesitan Driver y trabajan bajo S.O windows y Linux.
un ABrazo.

PD: yo tmb estoy siguiendo el tema del velocimetro para volcarlo en un PIC16F877A (c/ coonvertidor ADC).


----------



## electrohack

Rijiru dijo:


> Bueno, te dejo el programa en lenguaje C, este si lo puedes alterar
> 
> 
> 
> Código:
> 
> 
> #include <16f628A.h>
> #fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
> #use delay(clock=4000000)
> #include <lcd_b.c>
> int time0, time1;
> int16 pulses0, pulses, rpm, time;
> int1 rpmbit;
> void rpm_get()
> {
> rpm=60*pulses;
> if(pulses0!=pulses)
> {
> printf(lcd_putc,"\fRpm \n%Lu", rpm);
> delay_ms(1500);
> }
> pulses=0;
> time1=0;
> }
> void main()
> {
> set_tris_a(0x1F);
> rpm=0;
> time=0;
> time0=0;
> time1=time0;
> pulses=0;
> pulses0=pulses;
> rpmbit=1;
> lcd_init();
> lcd_putc("\fBienvenido\n");
> output_low(PIN_A7);
> do
> {
> diagnostico();
> if(input(PIN_A1))
> {
> if((input(PIN_A0))&&(rpmbit==1))
> {
> pulses++;
> rpmbit=0;
> }
> if((!input(PIN_A0))&&(rpmbit==0))
> {
> rpmbit=1;
> }
> time0++;
> if(time0>=250)
> {
> time1++;
> time0=0;
> if(time1>=4)
> {
> time0=0;
> if(pulses<1)
> {
> lcd_putc("\frpm < 60\nO sin giro");
> delay_ms(500);
> }
> else
> {
> rpm_get();
> pulses0=pulses;
> }
> }
> }
> }
> if(input(PIN_A2))
> {
> output_toggle(PIN_A7);
> if(!input(PIN_A1))
> {
> lcd_putc("\fMotor Apagado");
> }
> delay_ms(500);
> }
> delay_ms(1);
> }
> while(1);
> }
> 
> 
> 
> solo que el PIN_A2 lo dejas a "1" originalmente se diseño para activar un motor y medir sus RPM's
> 
> 
> 
> 
> Saludos






hola amigo vi tu programacion y al copiarla a el programa c y compilar detecta un error con el lcd quisiera saber si tienes una libreria para el programador c porque cuando modifico el archivo en proteus a lcd .c y compilo el programa con el isis el display no muestra simulacion... gracias





Rijiru dijo:


> Bueno, te dejo el programa en lenguaje C, este si lo puedes alterar
> 
> 
> 
> Código:
> 
> 
> #include <16f628A.h>
> #fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
> #use delay(clock=4000000)
> #include <lcd_b.c>
> int time0, time1;
> int16 pulses0, pulses, rpm, time;
> int1 rpmbit;
> void rpm_get()
> {
> rpm=60*pulses;
> if(pulses0!=pulses)
> {
> printf(lcd_putc,"\fRpm \n%Lu", rpm);
> delay_ms(1500);
> }
> pulses=0;
> time1=0;
> }
> void main()
> {
> set_tris_a(0x1F);
> rpm=0;
> time=0;
> time0=0;
> time1=time0;
> pulses=0;
> pulses0=pulses;
> rpmbit=1;
> lcd_init();
> lcd_putc("\fBienvenido\n");
> output_low(PIN_A7);
> do
> {
> diagnostico();
> if(input(PIN_A1))
> {
> if((input(PIN_A0))&&(rpmbit==1))
> {
> pulses++;
> rpmbit=0;
> }
> if((!input(PIN_A0))&&(rpmbit==0))
> {
> rpmbit=1;
> }
> time0++;
> if(time0>=250)
> {
> time1++;
> time0=0;
> if(time1>=4)
> {
> time0=0;
> if(pulses<1)
> {
> lcd_putc("\frpm < 60\nO sin giro");
> delay_ms(500);
> }
> else
> {
> rpm_get();
> pulses0=pulses;
> }
> }
> }
> }
> if(input(PIN_A2))
> {
> output_toggle(PIN_A7);
> if(!input(PIN_A1))
> {
> lcd_putc("\fMotor Apagado");
> }
> delay_ms(500);
> }
> delay_ms(1);
> }
> while(1);
> }
> 
> 
> 
> solo que el PIN_A2 lo dejas a "1" originalmente se diseño para activar un motor y medir sus RPM's
> 
> 
> 
> 
> Saludos




hola amigo quisiera saber porque cuando compilo el programa en C sale un erro con el lcd 
y no se deja compilar, bien luego lo modifico a lcd. c y esta bien el programa ya no detecta error ahi sino en la variable diagnostico y dice que no esta definida, la otra es que soluciono el eeror dejando la variable diagnostico con // pero el simulador proteus no me deja ver nada en el display. sera algun problema de librerias quisiera sabe si tienes una por ahi para que me la prestes


----------



## TITOLINO

Hola soy nobato y quisiera hacer el tacometro propuesto por RIJIRU, seria posible que me pasaran todos los archivos fuentes para poner a andar el tacometro y al mismo tiempo intentar entender el codigo?. Gracias..


----------



## electrohack

Rijiru dijo:


> Bueno, te dejo el programa en lenguaje C, este si lo puedes alterar
> 
> 
> 
> Código:
> 
> 
> #include <16f628A.h>
> #fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
> #use delay(clock=4000000)
> #include <lcd_b.c>
> int time0, time1;
> int16 pulses0, pulses, rpm, time;
> int1 rpmbit;
> void rpm_get()
> {
> rpm=60*pulses;
> if(pulses0!=pulses)
> {
> printf(lcd_putc,"\fRpm \n%Lu", rpm);
> delay_ms(1500);
> }
> pulses=0;
> time1=0;
> }
> void main()
> {
> set_tris_a(0x1F);
> rpm=0;
> time=0;
> time0=0;
> time1=time0;
> pulses=0;
> pulses0=pulses;
> rpmbit=1;
> lcd_init();
> lcd_putc("\fBienvenido\n");
> output_low(PIN_A7);
> do
> {
> diagnostico();
> if(input(PIN_A1))
> {
> if((input(PIN_A0))&&(rpmbit==1))
> {
> pulses++;
> rpmbit=0;
> }
> if((!input(PIN_A0))&&(rpmbit==0))
> {
> rpmbit=1;
> }
> time0++;
> if(time0>=250)
> {
> time1++;
> time0=0;
> if(time1>=4)
> {
> time0=0;
> if(pulses<1)
> {
> lcd_putc("\frpm < 60\nO sin giro");
> delay_ms(500);
> }
> else
> {
> rpm_get();
> pulses0=pulses;
> }
> }
> }
> }
> if(input(PIN_A2))
> {
> output_toggle(PIN_A7);
> if(!input(PIN_A1))
> {
> lcd_putc("\fMotor Apagado");
> }
> delay_ms(500);
> }
> delay_ms(1);
> }
> while(1);
> }
> 
> 
> 
> solo que el PIN_A2 lo dejas a "1" originalmente se diseño para activar un motor y medir sus RPM's
> 
> 
> 
> 
> Saludos



quisiera saber a que te refieres con <lcd_b.c> ya que mi programa no compila y saca error toca solo dejarlo en lcd.c pero en proteus no simula gracias..


----------



## COSMICO

Hola amigo rijiru.
Ahora lo que necesito es pasar este tacometro a velocimetro en metros por minuto.
Tengo estos datos.

velocidad maxima 200rpm.
tiempo en segundos :0,005
pulsos por vuelta del motor :1
diametro del disco acoplado al motor: 32cm.
radi: 5.09

Medir velocidad lineal o tangencial.

VL= 2*3.1416*5.09
-------------------------= 6396.2976 cm/min
       0.005

pasando a metros:
                               6396.2976
                             -------------=63.93 m/min
                                    100

Que opinas   ?


----------



## TITOLINO

Hola alguien podria pasarme el proyecto completo? es de urgencia, el codigo de riu no incluye las librerias que uso.. porfa!


----------



## emilce

Hola; yo necesitaria hacer un tacometro pero con micro de motorola, con el freescale. Utilizando un motor paso a paso el cual tiene una ruedita del mouse (dentada) la cual tiene entre medio un fotosensor, teengo q medir las RPM, y no se bien como programar el MC908Qb4, el mismo programa en C que hay posteado funcionara?


----------



## gallodraft

Que onda camaradas, les traigo este proyecto para que lo revisen y a ver si a alguien le sirve para la escuela o para pasar el rato. Usa el pic 18f4550, un teclado matricial 4x4, timer 0 y 1 internos del pic, y para hacer la medición un led emisor y un fototransistor y un oscilador xtral externo de 4MHz. Para la compilación se usa el PIC C,la librería "kbd_lib.c" la pueden quitar y poner la que viene de stock en el PIC C "kbd.c". 
Cualquier duda o pregunta andaré por aquí, suerte!.


----------



## chuu

hey gallodraft no tendras el diagrama en proteus esq lo q pasa q no encuentro el fototransistor y no se si me falte alguna libreria o el proteus q tengo es antigua espero tu respuesta...urge...


----------



## chuu

Dj BaLa dijo:


> Hola manuelguillen, mira utilice lo que compartio Rijiru en la primera pagina, yo grabe en el pic el .Hex que viene en la carpeta, pero también esta en lenguaje C para modificar el programa. El Pic que utilice es el 16f628A tiene 18 pines. Y un integrado 74HC14 compuerta NOT para evitar los rebotes tiene 14 pines. El único cambio que hice, fue cambiar el optoacoplador, por fototransistor infrarrojo y un fotodiodo emisor infrarrojo. Que cumplen la misma función que el optoacoplador. Adjunto el archivo que compartio Rijiru, con una modificacion de alimentacion en el LCD 16X2 del proteus.





oye amigo abri el archivo en C  estoy utlizando PIC C Compiler en la version y me marca un error pone una ventana y luego dice file not found y no se porq soy nuevo en esto espero pronto tu respuesta...





gallodraft dijo:


> Que onda camaradas, les traigo este proyecto para que lo revisen y a ver si a alguien le sirve para la escuela o para pasar el rato. Usa el pic 18f4550, un teclado matricial 4x4, timer 0 y 1 internos del pic, y para hacer la medición un led emisor y un fototransistor y un oscilador xtral externo de 4MHz. Para la compilación se usa el PIC C,la librería "kbd_lib.c" la pueden quitar y poner la que viene de stock en el PIC C "kbd.c".
> Cualquier duda o pregunta andaré por aquí, suerte!.



hola amigo oye quize compilar el archivo q viene en diagrama en c pero me marca un error  kbd_init(); me dice q undefined identifier...espero tu respuesta...


----------



## gallodraft

chuu dijo:


> hey gallodraft no tendras el diagrama en proteus esq lo q pasa q no encuentro el fototransistor y no se si me falte alguna libreria o el proteus q tengo es antigua espero tu respuesta...urge...



Que tal, no lo tengo en proteus, y recuerdo que al simularlo( en la computadora de otra compañero) usamos un push button para hacer el trabajo del fototransistor, o sea manualmente mandabamos pulsos de señal al pic, lo puedes hacer también con un generador de funciones, metiendole una señal a una determinada frecuencia y simularlo, no es complicado, pero para mi se me hizo más fácil usando el push.





chuu dijo:


> oye amigo abri el archivo en C  estoy utlizando PIC C Compiler en la version y me marca un error pone una ventana y luego dice file not found y no se porq soy nuevo en esto espero pronto tu respuesta...
> 
> 
> 
> 
> 
> hola amigo oye quize compilar el archivo q viene en diagrama en c pero me marca un error  kbd_init(); me dice q undefined identifier...espero tu respuesta...



Que tal, si ya lo quise correr y también me sale eso,algo raro porque si lo hago con la librería kbd_lib.c me compila sin problema, intenta con ese código del teclado y compilalo, a ver que changos hace, debería funcionarte sin problema, me avisas si te funcionó.


----------



## chuu

gallodraft dijo:


> Que tal, no lo tengo en proteus, y recuerdo que al simularlo( en la computadora de otra compañero) usamos un push button para hacer el trabajo del fototransistor, o sea manualmente mandabamos pulsos de señal al pic, lo puedes hacer también con un generador de funciones, metiendole una señal a una determinada frecuencia y simularlo, no es complicado, pero para mi se me hizo más fácil usando el push.
> 
> 
> 
> 
> 
> Que tal, si ya lo quise correr y también me sale eso,algo raro porque si lo hago con la librería kbd_lib.c me compila sin problema, intenta con ese código del teclado y compilalo, a ver que changos hace, debería funcionarte sin problema, me avisas si te funcionó.





hola amigos oye me paso algo si me compila pero nose q tan malo es que me aparescan esto lo q te muestro en la imagen te paso todo el programa completo y quisiera saber si tengo errores...gracias...



		Código:
	

#include <18f4550.h>
#fuses XT, NOWDT, NOPROTECT, NOLVP
#use delay (clock=4000000)
#include <kbd_lib.c>
#include <lcd.c>
#use standard_io(A)
int16 counter=0;

#int_timer1
void timer1_isr(void)
{
counter=get_timer0();   //lectura contador TMR0
counter=counter*60; //conversion a rpm
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%6ld rpm",counter);
   lcd_gotoxy(1,2);
   printf(lcd_putc,"rpm");
   set_timer0(0);
   set_timer1(3036);
}
void main()
{
   char k, kant='0';          //k valor tecla, kant valor anterior
   char PWMH=0, PWML=0;       //semiperiodo alto y bajo
   lcd_init();
   kbd_init();
   port_b_pullups(true);
   
   setup_timer_0(rtcc_ext_l_to_h|rtcc_div_1);
   setup_timer_1(t1_internal|t1_div_by_4);
   set_timer0(0);
   set_timer1(3036);
   enable_interrupts(int_timer1);
   enable_interrupts(global);
   
   while(1)
   {
      k=kbd_getc();   //se lee la tecla pulsada en ascii
      if (k=='\0')   //si no se pulsa una tecla se queda el valor anterior
         k=kant;
      
      if ((k=='*') || (k=='#'))            //si se pulsa * o # se asigna cero
         k='0';
         
      kant=k;         //se guarda tecla pulsada
      k=k-48;         //de ascii a valor numérico
      PWMH=k*28;        //valor tecla y periodo alto
      PWML=255-PWMH;      //Semiperiodo bajo
      
      for (PWMH;PWMH>0;PWMH--)   //Obtiene salida nivel alto
      {
         output_high (pin_A0);
      }
      
      for (PWML;PWML>0;PWML--)   //obtiene salida nivel bajo
      {
         output_low (pin_A0);
      }
      
   }
}


----------



## COSMICO

son advertencias que saca el compilador,pero programa el pic 
que esto no afecta.
Al trabajar con interrupciones, y esta ser llamada, se desasctiva para impedir reentradas erroneas
en una solo interrupcion.
Si esto no fuera asi, el micro quedaria en un bucle infinito, y no podra salir de ahí


----------



## chuu

aaaa.ok gracias te lo agradesco esq como soy nuevo en la programacion salen dudas....


----------



## chuu

Rijiru dijo:


> Solo una pregunta mas, El PIN 3 lo tienes conectado a un diodo Zener o a un arreglo RC?



hola Rijiru quisiera saber si el programa q tienes para el tacometro con pic16f628A podria servir para pic 18f4550 y no sabria q tanto cambira el diagrama y el programa tendria q ser otro??? la verdad soy muy novato en esto de los pic apenas ando aprendiendo....espero tu respuesta gracias...


----------



## chuu

electrohack dijo:


> hola amigo vi tu programacion y al copiarla a el programa c y compilar detecta un error con el lcd quisiera saber si tienes una libreria para el programador c porque cuando modifico el archivo en proteus a lcd .c y compilo el programa con el isis el display no muestra simulacion... gracias
> 
> 
> 
> 
> 
> 
> hola amigo quisiera saber porque cuando compilo el programa en C sale un erro con el lcd
> y no se deja compilar, bien luego lo modifico a lcd. c y esta bien el programa ya no detecta error ahi sino en la variable diagnostico y dice que no esta definida, la otra es que soluciono el eeror dejando la variable diagnostico con // pero el simulador proteus no me deja ver nada en el display. sera algun problema de librerias quisiera sabe si tienes una por ahi para que me la prestes






hola amigo a mi me pasa lo mismo al compilar el lenguaje q pones aqui  espero y puedas postear el archivo en C o que puedas ayudarnos con el tema... gracias espero tu respuesta...saludos


----------



## chuu

electrohack dijo:


> quisiera saber a que te refieres con <lcd_b.c> ya que mi programa no compila y saca error toca solo dejarlo en lcd.c pero en proteus no simula gracias..





q tal amigo soy novato en esto tengo una pregunta porq no usas un crystal de conexion para el PIC, ps me han dicho q tods los pic llevan crystal oscilador... espero tu respueta gracias...


----------



## Dj BaLa

Hola Rijiru, estoy ,modificando tu tacometro digital con el objetivo de omitir el boton de inicio, ya que solamente lo estoy ocupando como sensor, para un trabajo en el instituto, por lo tanto seria ideal si pudieras compartir la libreria o biblioteca del lcd_b.c  estare al espera de tu respuesta y nuevamente gracias por el aporte.


----------



## manuelguillen

hola buenas 
trate de armar el taco metro propuesto por Dj BaLa o bueno el diagrama publicado en la primera parte pero tengo un pequeño problema con respecto a la instalación del opto acoplador hacia el lcd y por otro lado en la ultima prueba que realice el pic 16f628 no responde pero sinenvargo al momento de escribir y borrar el código mediante el pic kit 2 no detecta ninguna falla quisa alguien me pueda ayudar
gracias


----------



## elfosil11

Hola gente como va? Tenemos que armar con un grupo de estudiantes un taco-metro digital para una Moto (cualquiera). seria display, regulador de RPM, tiras de led indicadoras, los que hemos armado son basados en auto y se nos esta haciendo muy complejo pasarlo a una moto y la presentación es en 2 meses.
también le vamos a adjuntar un dispositivo de señal que en determinadas zonas el tablero marque la velocidad con la que el motociclista que (debería andar) ; si alguien tiene archivos o ya lo hizo o quiere dar una mano de lo que sea seria de excelente ayuda...
Aclaro que el dispositivo de señales ya lo tenemos.
Si alguien tiene el paso a paso de verdad me darían tremenda mano abrazo desde el Cerro de Montevideo República Oriental del Uruguay Esteban Roselli. ...


----------



## Cdma System

¿Donde está lo que tenés hecho hasta ahora? 

www.forosdeelectronica.com/f29/esta-aqui-tema-8069/

Podés pasar por ese link y leer algunas cosas para empezar.

www.forosdeelectronica.com/politicas.htm


----------



## elfosil11

Parte de la información la tienen otros compañeros.
Detallo bien lo que tenemos armado en unos minutos.
Ver el archivo adjunto 117452

Ver el archivo adjunto 117453

Ver el archivo adjunto 117454

Ver el archivo adjunto 117455

Ver el archivo adjunto 117456
Esto es lo que tenemos armado hasta ahora.
En la tarde vemos a mis compañeros y detallo mas cosas.


----------



## orbit26

Dj BaLa dijo:


> Bueno adjunto las fotos del tacómetro funcionando, el motor esta alimentado con 5 volts y entrega 6.240 RPM no sé si esta en lo correcto, el tacómetro esta alimentado con 8 volts pero el cto tiene un regulador de tensión 7805.
> El motivo por el cual hice este cto, es porque en el instituto debo realizar un PID análogo controlando la variable velocidad, por lo tanto necesito ocupar el tacómetro como sensor que ira conectado al comparador, mi pregunta es cómo puedo obtener un voltaje del tacómetro con respecto a las rpm.



hola amigo me gustaria saber como cambiaste el opto acoplador por los los sensores infrarrojos gracias


----------

