Autor Tema: Tacómetro  (Leído 10169 veces)

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

Desconectado Bacche

  • PIC10
  • *
  • Mensajes: 17
Tacómetro
« en: 14 de Octubre de 2003, 08:29:00 »
Hola a Todos !!!!!
Alguien sabe de donde puedo conseguir informacion para hacer un Tacómetro con Pic Basic ????
Si alguien me puede ayudar.......muchas gracias.

Desconectado pachopic

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 207
RE: Tacómetro
« Respuesta #1 en: 16 de Noviembre de 2003, 11:23:00 »
podrias usar el LM2907-17 de national semiconductor
es un convertidor F/V lineal , que da a su salida 1vpor cada 67hz, pero se puede ajustar su escala...
Sobre el puedes buscar circuitos practicos en la pagina de national......
luego con un pic 16C71 o un  16f87x usando su convertidor A/D puedes convertir los volts a rpm etc.... y visualizarlas en un LCD ETC..    O.. O ..O..
usando el comando counter de PBPLUS  COUNTER PIN,PERIOD, puedes contar los pulsos de entrada en un periodo dado la señal de entrada a pin debe ser acondicionada  correctamente a un nivel de voltaje seguro para el pic....(funciona similar a un frecuencimetro)
puedes capturar la señal mediante un fototransistor y un diodo  infrarrojo, o una ldr y una pequeña lampara etc...

perdon por haber tardado tanto en responder...

SALUDOS......




Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Tacómetro
« Respuesta #2 en: 16 de Noviembre de 2003, 11:35:00 »
Hola con el comando PULSIN se puede hacer un tacometro
tambien con el comando COUNT ya utilizando el TMR0
dejame que busco en trabajos antiguos ye te comento como guardar los datos de entrada y enviarlos en forma serial
la opcion del conversor frecuencia tension tambien es valida pero hay que utilizar el Conversor A/D del micro
para setear los valores a mostrar o sea que puede complicarse si no hay conocimientos

yo realice un trabajo para un limitador de RPM con F84
que funciono bastante bien con una barra de leds
esperame que busco sobre ese tema y te explico un poco
saludos
Luis Frino

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Tacómetro
« Respuesta #3 en: 16 de Noviembre de 2003, 18:49:00 »
este fuente corresponde a unos ejemplos para basic stamp 1 (BS1)
hay que ajustarlo para el PBP
la idea es que trabajes un poco y lo adaptes a tu requerimiento

si quieres compilar directamente
hay que listar un  include para llamar al macro Bs1defs.bas
la idea es que trabajes un poco hay un par de errores
voluntarios  




main:
symbol transmit = 0 "salida de datos por RB0
symbol input = 1   " entrada de datos RB1

tach:
   pulsin 1,1,w2 "mide el tiempo que el bit o pin esta en alto y lo carga en w2
   w2 = w2/100   "divide el valor de w2 por 100
   w2 = 60000/w2 "divide el contenido de w2 por 60000 para calcular RPM
   serout
   transmit,N2400,("RPM",#w2,13)
   pause 1000
   goto tach

*****************
para la lectura del pulso hay que intercalar u flip flop tipo
CD 4013 para acondicionar el pulso con un periodo  del 50%
///////////////
la intruccion pulsin permite medir el tiempo en que una señal digital esta en determinado estado,
utilizando esta instruccion es posible medir el periodo de una señal , si esta señal proviene de un didpositivo que
genera pulsos por revolucion se debe conformar el pulso en onda cuadrada para que el tiempo en que esta permanece en alto sea igual al que permanece en bajo
de esa forma obtendremos una señal de tacometro

si medimos uno de esos ciclos obtendremos el tiempo demorado por el dispositivo medido en en dar una rpm
calculando el inverso y multiplicando el resultado por 60000
el valor obtenido puede ser enviadp via RS232 por ejemplo a un PC o almacenar los datos en una base de datos

Un comentario extra seria importante que quienes envian respuestas al foro
envien sus practicas para que todos puedan utilizar las experiencias de otros
esa es la cuestion COMPARTIR!!!!!!

Desconectado XSFM

  • PIC10
  • *
  • Mensajes: 1
Re: Tacómetro
« Respuesta #4 en: 15 de Agosto de 2013, 17:10:04 »
Hola,
Como le puedo hacer para contar las RPM de un motor ??   quiero usar un pic16f877 o un pic16f877A  no se cual sea la diferencia.

El asunto es que ya tengo el editor y el programador,  CDlite y Melabsprogrammer,    el programa es en picbasic.  La verdad es que no tengo ni idea de como hacer que cuente RPM !!  se de una instruccion timer0  pero no se como hacer el codigo,  alguien tiene idea de como comeinzo ??
Tambien voy a utilizar un LCD para ver las RPM.

Gracais y agradezco su ayuda     :mrgreen:

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #5 en: 04 de Noviembre de 2013, 15:50:01 »
creo que en los ultimos 2 dias he leido todos los post sobre tacometros de este foro y de otros sitios, no encuentro lo que necesito, voy a volcarlo aca, quiero hacer el tacometro usando una interrupcion para que no me detenga el programa contando pulsos.

Aprendi en estos dias que puedo usar una interrupcion externa que puede ser por el puerto A4/intco1, que lo puedo configurar con  option reg, que puedo habilitar la funcion interrupcion con on interrupt que puedo modificar el tipo de interrupcion con intcon, pero no encontre en ningun lado como contar pulsos y guardarlos en una variable, para que luego desborde y mandarlo a una rutina o rulo del programa.

Lei todo lo que pude, la programacion que leo no la logro interpretar complemente, aparecen variables que no veo cuando la definen me confunde. Estoy aprendiendo, programo en basic desde 1988, aprendi con mi TK90X (si tengo varios años) asi que lo que aprendi es a programar muy ordenadamente, no estoy acostumbrado a ver programaciones sin forma y por eso no las comprendo en totalidad. El resto que encontre bien claro la programacion estaba en otro lenguaje que no era basic asi que por mas que me los imprimi y trate de comprender no lo logre

mi proyecto es hacer un medidor de RPM con LCD y adema sel pic tiene que hacer otra tarea, por lo que lei este no puede hacer dos cosas al mismo tiempo y los experimentos que hice con el comando count solo me detuvieron el programa por el momento que cuenta, por lo tanto no me sirve.

Necesito ayuda con ejemplos de programacion de como hacer el contador de la interrupcion, solo eso.

Lo que aprendi en estos dias fue en teoria y logre comprender:

+ tipos de interrupcion segun el pic de 4 a 12
+ diferenciarlas entre internas y externas
+ como definir el registro option si uso el puerto b o el puerto A0 o si uso interrupciones internas calculadas acorde a la velocidad del cristal y usando for...next para no retrasar el programa como bucle de marcador de tiempo
+ a como calcular la division de psa  o wtd (lo comprendo pero no logro aplicarlo para contar pulsos)
+ comandos: option_reg, intcon,  disable, enabled

pero no logro hacer un programa yo y aplicarlo para hacer el tacometro, necesito una mano con un ejemplo claro de programancion bien claro y explicado.

yo programo con microcode studio.

desde ya muchas gracias a todos y sobre todo si alguno me da una mano con este tema...la ignorancia me esta superando, necesito asesinarla.


« Última modificación: 04 de Noviembre de 2013, 15:55:35 por jorgenuviola »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Tacómetro
« Respuesta #6 en: 07 de Noviembre de 2013, 14:42:13 »
para conocer las RPM basta con calcular el período de una señal cuadrada generada por el corte de un haz infrarojo con la inclusión de una mini" aspa" en el rotor del motor.

esa señal cuadrada se puede obtener por muchos metodos, la mas precisa es usando el modulo CCP del micro

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #7 en: 07 de Noviembre de 2013, 18:16:11 »
para conocer las RPM basta con calcular el período de una señal cuadrada generada por el corte de un haz infrarojo con la inclusión de una mini" aspa" en el rotor del motor.

esa señal cuadrada se puede obtener por muchos metodos, la mas precisa es usando el modulo CCP del micro



la señal no es problema, el tema es obtener un ejemplo de como hacer el contador con el tmro

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #8 en: 10 de Noviembre de 2013, 18:17:04 »
llegue a hasta este punto, mi gran duda es como hacer para que lo que cuenta se guarde en una variable para luego poder hacer lo que yo quiera.

lo que trate de hacer aca es que cuente los pulsos del boton y los destelle por el segundo led acorde a la cantidad de pulsos que recibio.


define osc 10     "osc 10 mhz"
trisa = %00000
trisb = %00000000
TOCK var byte
X var byte

on interrupt goto rpm   " se activa interrupcion por desborde y va a la etiqueta rpm"
symbol toif = intcon.2   "para manejar el TOIF ponerlo en 1 o en 0"
symbol gie = intcon.7   "para manejar el encendido de interrupciones encendidas o no"
option_reg = %00110111   "configuracion del registro TOCS encendido para contar por el RA4, TOSE encendido para que cuente por subida y el  TMR0 en 1 a 256  de contador"
intcon = %10100100 "interrupciones activadas , se habilita el temporizados y se establece el modo manual para ponerlo en cero"
a:                            "primer etiqueta  o rutina que seria el programa general, siempre titila el led 1 del port A2"
high porta.2
pause 500
low porta.2
pause 500
goto a
rpm:               "rutina de interrupcion"
tmr0 = TOCK " aca esta mi mayor duda de todo este tema ¿¿¿¿¿¿aca es donde se almancenan la cantidad de pulsos contados en el periodo del TMR0??????"
disable
if TOCK = 1 then goto led    
if TOCK = 0 then goto continua
led:
high porta.3
pause 200
low porta.3
pause 200
toif = 0
gie = 1
tmr0 = 0
enable
resume
continua:
toif = 0    "volvemos a cero el contador"
gie = 1   "activamos interrupciones"
tmr0 = 0  "si entendi bien tambien esto limpia donde estan almacenandos los pulsos"
enable
resume
end




Bueno ...........NO FUNCIONA........no logro hacer contar, quiero hacer un tacometro pero necesito contar pulsos y no lo logro, no se como se almacena lo que entra por el port  A4 que cuenta en el TMR0 en una variable, no logro descularlo y todo lo que lei en estos dias NO LO EXPLICA,  en el manual de carlos reyes da un ejemplo genial y no explica como hace para que la variable que el pone en su programacion reciba los datos obtenidos durante el conteo del TMR0.

Gente necesito una mano con esto, quiero hacer un tacometro
« Última modificación: 10 de Noviembre de 2013, 18:20:04 por jorgenuviola »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Tacómetro
« Respuesta #9 en: 11 de Noviembre de 2013, 20:26:35 »
No he leído todo el hilo, pero si lo que quieres es asignar el valor del contador del Tmr0 a una variable, casi en todos los basic se puede hacer lo siguiente: variable = TMR0. Por supuesto TMR0 es una variable reservada del sistema.
« Última modificación: 11 de Noviembre de 2013, 20:40:19 por dogflu66 »
Saludos desde Granada, España.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #10 en: 14 de Noviembre de 2013, 18:30:24 »
No he leído todo el hilo, pero si lo que quieres es asignar el valor del contador del Tmr0 a una variable, casi en todos los basic se puede hacer lo siguiente: variable = TMR0. Por supuesto TMR0 es una variable reservada del sistema.

entonces tan lejos no estoy, te pregunto, variable reservada del sistema, significa  que solo la puedo leer ¿no?

esa variable la puedo poner sin problemas en el lcd
« Última modificación: 14 de Noviembre de 2013, 18:32:53 por jorgenuviola »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Tacómetro
« Respuesta #11 en: 16 de Noviembre de 2013, 20:25:10 »
Se utiliza como una variable normal y corriente. Normalmente se pueden tanto escribir como leer, esto solo depende a que registro del micro hacen referencia, como esta variable se refiere al contador del timer0 pues se puede escribir y leer ya que este registro es de escritura y lectura.
Saludos desde Granada, España.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #12 en: 17 de Noviembre de 2013, 20:06:01 »
Se utiliza como una variable normal y corriente. Normalmente se pueden tanto escribir como leer, esto solo depende a que registro del micro hacen referencia, como esta variable se refiere al contador del timer0 pues se puede escribir y leer ya que este registro es de escritura y lectura.

ahora viene mi segunda duda, pudiendo leer el TMR0, yo no quiero usar ninguna pausa en el programa, querria que el tiempo de conteo sea el que tarde en desbordar y ahi mi interrumpa el program.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Tacómetro
« Respuesta #13 en: 18 de Noviembre de 2013, 19:12:12 »
Pues lo mismo que antes, se usa otra variable definida por el sistema que hace referencia directa al flag que indica desborde del timer. Puede existir en los lenguajes de dos maneras:
INTCON.TMR0IF = True ‘Se desbordo el Timer 0
TMR0IF = True ‘Se desbordo el Timer 0

Hay que recordar que antes de comenzar una nueva cuenta hay que hacer:
INTCON.TMR0IF = False o TMR0IF = False

Y de esta manera cuando se desborde de nuevo el Timer0, INTCO.TMR0IF de forma automática volverá a tomar valor 1.

Sobre interrupciones no te puedo ayudar porque son distintas para cada lenguaje Basic. En realidad son distintas entre todos los lenguajes, cada lenguaje las incorpora de una forma diferente.
« Última modificación: 18 de Noviembre de 2013, 19:19:51 por dogflu66 »
Saludos desde Granada, España.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Tacómetro
« Respuesta #14 en: 19 de Noviembre de 2013, 21:50:55 »
muchas gracias por responder


 

anything