TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Coldplay en 02 de Enero de 2007, 01:35:31
-
Buenas... Ante todo me presento:
Soy Jorge de Argentina y me encanta la electrónica, materia de la cual soy autodidacta y foros como este me ayudan muchísimo.
Ahora estoy tratando de realizar un simple tacómetro que prenda una secuencia de leds en función de las RPM, pero para esto necesito la base para luego realizar las cuentas.
¿Cómo hago para contar la cantidad de pulsos que se producen en una entrada de un PIC 16F84a durante un determinado tiempo?
El valor registrado sería luego usado como base-
De antemano, gracias por la ayuda!
PD: Me manejo bastante con Niple, pero cuelquier ayuda me sirve ya que todo se relaciona.
-
Para lo que necesitas creo que en este enlace te puedes iniciar:
http://www.todopic.com.ar/foros/index.php?topic=14987.0
Aún sigo con la duda del contador en ese enlace pero creo que mejor me dejo de problemas y multiplico arriba por múltiplos.
-
Hola Mario, estuve leyendo y quiero hacer algo parecido, por el tema de la resolución con ese tiempo de espera para el cálculo yo por lo menos no tendría problemas.
Mi mayor problema es como hacer mientras cuento por un lado los pulsos, que por otro me limite el tiempo. Es decir, contar pulsos en 0.6 segundos por ejemplo. Todavía soy novato en programación y si me pudieras/an tirar un par de líneas con el programita me vendría al pelo! O al tacómetro mejor... jajajaja :D :D :D :D :D :D :D
-
¿En qué lenguaje programas?
Si es ensablador sugiero que veas esto:
www1.cs.columbia.edu/~sedwards/classes/2005/4840/reports/Shifter.pdf
http://www.todopic.com.ar/foros/index.php?topic=13378.0
Si es basic, te echo la mano.
Si es C, puedes iniciarte con esto:
http://www.vermontficks.org/dtachc.htm
Realiza una búsqueda en el foro y encontrarás cosas sin duda alguna.
-
Ahora estoy programando con Niple y tratando de entender ASM.
Hoy hice un programita muy simple que consistía en comparar el valor de la entrada, si era 0 incrementaba el registro pulso en 1 y tenía un retardo de 50 milisegundos, de esta forma iba contando cada 0.05seg hasta que cuando comparaba nuevamente y tenía un 1 en la entrada iba a otros comparadores que leían el estado del registro pulso y en base a ello prendían la secuencia de leds y borrarban luego el registro para comenzar nuevemte. Todo muy simple, pero no me funcionó y me cansé de revisarlo y no anda, se queda en un mismo estado y no modifica.
-
la manera mas precisa no es contandolos pulsos sino contando que tan largo es un pulso, y el resto no es mas que una multiplicacion sencilla
-
Exacto, es la menera más sencilla y exacta ya que el tiempo de ¨refresco¨ de la salida es practicamente nulo, en cambio con el otro que toma muestras en un determindado tiempo, ese tiempo de toma es tiempo que se pierde para mostrar los resultados.
El tema es, cómo inicio el timer cuando detecta un pulso y como lo reseteo e inicio nuevamnte cuando detecta el otro. Donde se lee el timer?
-
Hace varios años hice algo parecido con un micro 8051 de atmel:
Los pulsos entraban por una patilla, y cada vez que llegaba uno, activaba una interrupción que incrementaba un registro utilizado como contador.
El timer estaba configurado a una cierta frecuencia, y cuando se desbordaba leía el registro contador y lo ponía a cero.
No estoy seguro de si era asi exactamente, pero tal vez te pueda dar alguna idea.
Un saludo.
-
haces un while tal pin =1 , contador = contador + 1
lo que te resta es calcular el tiempo que lleva ese while
-
No se niple pero tengo entendido que hace diagramas de flujo; si es así, en la tarde-noche que salga del trabajo te hago un "pseudo" código.
-
tal vez te convenga mas probar con proton basic, es poderosisimo y tiene muchas cosas ya resueltas
-
Lo hice señores! Efectivamente haciendo una interrupción y sumandole un 1 a un regitro llamado pulso mientras está sin señal, cuando le llega la señal compara el valor del registro pulso y muestra los valores, luego borra pulso y espera la próxima señal para empezar a contar de nuevo. Todo bien, pero tengo un grave problema, el rebote, no se como acomodar la señal de la bobina de la moto donde lo tengo puesto para que no tenga rebote. Ya probé con transistores, diodos, capacitores y nada. Sugerencias se aceptan! :mrgreen: :mrgreen: :mrgreen:
-
Me alegra que lo hayas conseguido :-) :-) :-)
Respecto al acondicionamiento de la señal, supongo que el pulso que obtienes no es un cuadrado, si no que tiene cierto rizado. Deberías filtrarla para evitar las frecuencias superiores a la máxima que deseas medir, amplificar o atenuar su amplitud, y para obtener valores TTL tal vez sería interesante utilizar una báscula schmitt (se escribe asi??) creo que algunas entradas de los pic se comportan como básculas, a ver si álguien con más experiencia nos asesora.
Un saludo.
-
efectivamente, unas compuertas schmitt te nivelarian la señal
-
Me alegra que lo hayas conseguido :-) :-) :-)
Respecto al acondicionamiento de la señal, supongo que el pulso que obtienes no es un cuadrado, si no que tiene cierto rizado. Deberías filtrarla para evitar las frecuencias superiores a la máxima que deseas medir, amplificar o atenuar su amplitud, y para obtener valores TTL tal vez sería interesante utilizar una báscula schmitt (se escribe asi??) creo que algunas entradas de los pic se comportan como básculas, a ver si álguien con más experiencia nos asesora.
Un saludo.
Ahí se escapa de mis conocimientos... a ver que circuito proponen...
Gracias!
-
busque amigo 8) que info sobre esas cosas sobra
-
Te doy unas pistas, pero no te digo la respuesta por que merece la pena que investigues por ti mismo, es muy sencillo 8)
Una báscula es como un comparador.
Un comparador es un circuito que compara una señal Vin respecto a una referencia Vref, supongamos que Vref=2.5V. Cuando Vin>2.5 la salida es 1
Cuando Vin<2.5 la salida es 0
Ahora bien, que ocurre si la señal es muy distorsionada y con picos??
Pues que sería más conveniente tener 2 referencias, supongamos 1 y 4V:
Cuando Vin>4 la salida es 1
Cuando Vin<1 la salida es 0
Si Vin tiene un valor entre 1 y 4 la salida permanece en el valor que sea.
Te adjunto un par de gráficas para que lo entiendas:
(http://webpages.ursinus.edu/lriley/ref/circuits/img134.gif)
(http://www.talkingelectronics.com/Projects/OP-AMP/images/Threshold.gif)
(http://cktse.eie.polyu.edu.hk/IntroductiontoEC/EC1-notes(TAD9)_files/image574.gif)
Al final te he dado más información de la que quería, pero es que una vez que agarro el teclado, no lo suelto :P
Un saludo.
-
Claro! Exactamente esto le quiero hacer a la señal!!! El tema es con que... a pensar... :mrgreen: :mrgreen: :mrgreen:
-
Buscando me encuentro que está lleno de circuitos de básculas, la mayoría con AO pero tienen un problema, solo usan 1 punto de referencia y yo necesito 2. Seguiremos navegando.
-
Este tema de la báscula me superó, no logro entenderlo :x :x :x :x :x :x :x Sugerencias se aceptan así después digo: Así era?!?!?... que bolu que soy! :lol:
-
¿Para qué necesitas dos puntos de comparación?
Utilizando cualquier schmith puedes mandar a 0 o 1 lógico tu señal (7414 por ejemplo, 74132); la explicación de juancar es muy ilustrativa, no sé por qué dices que no le entiendes.