TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: marco_zappia en 25 de Febrero de 2012, 15:24:21

Título: Velocimetro
Publicado por: marco_zappia en 25 de Febrero de 2012, 15:24:21
Hola, como estan? Tengo la siguiente duda, estoy haciendo un velocimetro con un 16f648A. Estoy trabajando con el ocilador interno y utizando el TIMER 1.Estoy temporizando el tiempo entre flancos de bajada mediante un sensor hall. De esta forma cuento la cantidad de desbordes del timer y le sumo el resultado del ultimo conteo.

Esto es:  tiempo=(desbordes*0.5243+(65536-conteo_tiempo)*8*10e-6)*1/3600        EXPRESADO EN HORAS POR ESTO MULTIPLICO POR 1/3600
donde:
-desbordes= cantidad de desbordes del timer
-0.5243=tiempo desde que cargo el timer con 0000 y se de el desbordamiento (en segundos) con un factor 1/8
-conteo_tiempo=get_timer1()

y despues simplemente hago:

distancia=2*pi*radio*0.001;
              velocidad=distancia/tiempo;
              velocidad_entera=velocidad;

convierto a bcd de 2 digitos:
   
            bin2bcd(velocidad);

muestro en display.

¿hay algun error?
Título: Re: Velocimetro
Publicado por: AcoranTf en 26 de Febrero de 2012, 19:24:57
Creo que la distancia la estas expresando en metros, (2*pi*r*0.001), si el tiempo esta en horas, la velocidad que obtendras sera de metros/hora. Si estoy confundido que alguien lo aclare.

Saludos.

P.D.: Rectifico, precisamente al multiplicar por 0.001 lo estas convirtiendo a kilometros, por lo que estaria bien, me hice un lio al pensar que lo dividias por 0.001.
Título: Re: Velocimetro
Publicado por: mtristan en 26 de Febrero de 2012, 20:16:28
.


El desarrollo pareciera estar bien, pero son demasiadas operaciones aritméticas para el mcu. Podrías simplificar considerando que la velocidad va a ser inversamente proporcional al tiempo entre capturas. Entonces:

tiempo = 256*desbordes + conteo_tiempo     // da el tiempo capturado en nº de ciclos de reloj (con una frecuencia de operación de 1MHz, queda en microsegundos)
velocidad = k/tiempo                                   // k es una constante a determinar, que depende del radio de la rueda y las unidades que uses para expresar la velocidad

Por ej, si el radio lo tenés expresado en metros, usás un oscilador de 1MHz, y querés la velocidad en m/s:

k = 2*pi*radio*10^6

Espero que te sirva. Saludos.



Título: Re: Velocimetro
Publicado por: NoSepComo en 27 de Febrero de 2012, 05:24:02
Pero que te pasa exactamente?, hace algo el PIC?.
El pic16f84a tiene 2 timers, esque no me acuerdo si ese PIC dispone del timer de 16 bits que estás intentando usar.
Título: Re: Velocimetro
Publicado por: AngelGris en 27 de Febrero de 2012, 10:10:33
Pero que te pasa exactamente?, hace algo el PIC?.
El pic16f84a tiene 2 timers, esque no me acuerdo si ese PIC dispone del timer de 16 bits que estás intentando usar.

  Él está intentando usar un PIC16F648A que tiene 3 timers. Y como bien dices, el F84 sólo tiene 1 timer
Título: Re: Velocimetro
Publicado por: marco_zappia en 27 de Febrero de 2012, 14:21:23
Estoy trabajando con un timer1 de 16bits,
Me queda la siguiente tuda en tu cuenta ya que cambie la cuenta.

porque pones total_t= (de*255) + tiempo;?

mas precisamente porque pones: "de*255" LO DEMAS ME QUEDA CLARISIMO. Estas sumando la cantidad de desbordes y el "pico" de tiempo.

Ahora bien, ese 255 no tendrias que convertirlo a segundos?

Yo estoy haciendo en esencia la misma cuenta pero se que con timer1 de 16bits, se da el desborde cada 0.5243s (trabajando a 4MHZ y prescaler 1/8) por lo tanto la cuenta es:
t_total=desbordes*0.5243+get_timer1()*10e-6 (exppresado en segundos).   sabiendo que con cada incremento del timer pasó 1 milisegudo.

Estoy interpretando mal? saludos
Título: Re: Velocimetro
Publicado por: mtristan en 27 de Febrero de 2012, 15:23:39
.


Es cierto, está mal el número 256, debería ser:

t_total = desbordes*65536 + cuenta_timer

Puse 256 porque pensaba en un timer de 8 bits :mrgreen:. Y ahora "k" debería incluir también el prescaler de 8, sería:

k = 2*pi*radio*(1/8)*10^6

En realidad la cuenta que estás haciendo es correcta, pero utiliza demasiadas operaciones (sobre todo considerando que el mcu no dispone de instrucciones para multiplicar ni dividir) y es posible resumir todo en una multiplicación, una suma y una división.

Saludos.

Título: Re: Velocimetro
Publicado por: MerLiNz en 27 de Febrero de 2012, 16:11:56
estas cogiendo la velocidad del sensor de velocidad no? lo digo porque suelen ser inductivos por eso me ha extrañado.

No te tienes que complicar tanto con operaciones para el pic, unicamente calcula tanto el desarrollo como el diametro y conviertelo en una constante, entonces multiplicas (o divides) constante*rpm captadas y solo tienes que hacer una operacion. Al igual que para el timer, calcula la velocidad del cristal, prescaler y demas y conviertelo en una constante.
Título: Re: Velocimetro
Publicado por: marco_zappia en 27 de Febrero de 2012, 17:46:33
Aclaro que estoy utilizando a pila.
Título: Re: Velocimetro
Publicado por: marco_zappia en 27 de Febrero de 2012, 18:19:05
Hola, estoy intententando probarlo en mi moto, en un ventiladorsito de pc funciona barbaro. Ahora cuando prendo la moto tengo oscilaciones que me interrumpen continuamente y me muestra 99km/h, cuando me alejo de la moto funciona bien. ¿cual es mi error?
estoy utilizando pilas y la conexiona mi sensor hall A3144 es:

pin1= +5
pin2=ground
pin3=a resistencia 10k a +5 (pull up) y al pin rb0 para interrupcion mediante flanco de bajada. Esoy utilizando el 16f648A
GRACIAS!!!
Título: Re: Velocimetro
Publicado por: marco_zappia en 27 de Febrero de 2012, 23:06:05
Cambie todos los cables, pero sigue oscilando, el problema esta en el sensor (no digo q este roto porque probe con 2), pero cuando lo acerco a la moto, mas o menos un metro, me empieza a interrumir continuamente como si pusiera un iman al lado, apago la moto y funciona barbaro.  el problema yo creo que es de hardware, q opinan? como puedo solucionar?
Título: Re: Velocimetro
Publicado por: AngelGris en 27 de Febrero de 2012, 23:24:22
  Parecería ser un problema de ruido eléctrico que está afectando la lectura del sensor de efecto hall. Tal vez la chispa sobre la bujía.
Título: Re: Velocimetro
Publicado por: NoSepComo en 28 de Febrero de 2012, 06:14:49
Hola, lo mismo que te ha dicho angelgris te iba a decir yo, es muy común que la bijía  induzca ruido por las alimentaciones, al fin y al cabo, al mezclarlo con continua se trata de una señal de baja frecuencia y muy potente. Lo normal en automoción es aislar las alimentaciones (o blindar bien), aisla tu circuito, puedes utilizar un dc/dc de por medio y eso ya te hace muchísimo, aunque algo más sencillo primero que metas condensadores para filtrar el ruido.
Título: Re: Velocimetro
Publicado por: marco_zappia en 28 de Febrero de 2012, 13:21:14
Hola, el tema es que ahora la alimentacion del circuito la estoy haciendo mediante pilas AA, mi problema esta en el sensor al acercarlo a la moto, que condensadores puedo usar? donde lo conecto? entre ground y salida? GRACIAS!!!
Título: Re: Velocimetro
Publicado por: mtristan en 28 de Febrero de 2012, 15:23:30
.


¿Cómo es el montaje que estás usando? Si vemos el esquemático se va a hacer más fácil ayudarte. Eliminar problemas de ruido es una de las partes más difíciles del proyecto, y más aún en una moto o un auto. A no perder el ánimo :-)

Saludos.

Título: Re: Velocimetro
Publicado por: marco_zappia en 28 de Febrero de 2012, 16:55:52
Les dejo la conexion que tengo ahora, agrege un par de condensadores entre la salida del sensor y vcc y se soluciona bastante, algun otra idea? quizas condensadores mas grandes. GRACIAS!!!!
(http://s2.subirimagenes.com/otros/previo/thump_74866271.jpg)
Título: Re: Velocimetro
Publicado por: MerLiNz en 28 de Febrero de 2012, 18:42:23
tambien tienes el problema de los ruidos de la bobina, por asi decirlo magnetismo. Para solucionar esto deberias meter tu circuito en una caja metalica y esta caja metalica conectada al chasis de la moto por ejemplo (masa) yo he probado una bobina aqui en mi cuarto y el monitor estaba a 1m empezaba a parpadear, vamos que la bobina emite mucho ruido.
Título: Re: Velocimetro
Publicado por: MLO__ en 28 de Febrero de 2012, 19:43:09
Hola.

Si colocas el condensador en la salida, puedes afectar la medicion de los pulsos. En las hojas tecnicas de los sensores Hall, recomiendan el condensador entre Vcc y GND lo mas cerca posible al sensor.

Yo he utilizado sensores hall en velocimetros para vehiculos ... y no me han dado problema .... eso si, el cable del sensor es blindado, para evitar interferencias

Saludos
Título: Re: Velocimetro
Publicado por: marco_zappia en 28 de Febrero de 2012, 20:38:13
condensador entre vcc y vss? a cual te referis?
Título: Re: Velocimetro
Publicado por: MLO__ en 28 de Febrero de 2012, 20:51:54
Hola

Al condensador de desacople cerca al sensor, entre los pines 1 y 2, el valor puede ser de 100nF.

Saludos
Título: Re: Velocimetro
Publicado por: MerLiNz en 28 de Febrero de 2012, 21:20:05
ah, no habia leido entre la salida y gnd xD ahi no debes colocar un capacitador, sobretodo si es muy grande, este te influira en que el flanco de subida y bajada no sea plano, y a muchas rpm puede que se te unan subida con subida.
Título: Re: Velocimetro
Publicado por: marco_zappia en 28 de Febrero de 2012, 21:45:34
es verdad,MLO__ ya que trabajaste con velocimetros, tienes alguna idea de como reducir el ruido? he colocado unos condensadores entre la salida del sensor y vss, esto me reduce bastante, esta bien porque no estoy seguro....
Título: Re: Velocimetro
Publicado por: MLO__ en 28 de Febrero de 2012, 22:54:23
Hola.

Con el condensador en el pin de salida, anularas los pulsos, dependiendo del valor del condensador, en mayor o menor medida. A mi no me da problema el ruido ... no entiendo porque a ti si (segun el esquema que has posteado  :mrgreen: )

Inclusive he utilizado cable comun y corriente (es decir, no apantallado) para la conexion de la senal de pulsos y no me da lios ... seria bueno ver el esquema completo

Saludos
Título: Re: Velocimetro
Publicado por: marco_zappia en 01 de Marzo de 2012, 01:56:40
Es raro si, pero poniendo un condensador ahi me anula el ruido.... pero igual sigue sin funcionar bien... alguna recomendacion?
Título: Re: Velocimetro
Publicado por: mtristan en 01 de Marzo de 2012, 12:43:28
.


No me queda claro cómo es la disposición física del montaje. Imagino que es con el sensor conectado al circuito a través de un cable más o menos largo. Si es así, podrías intentar usando un amplificador diferencial para cancelar el ruido en la señal de salida del sensor. Estando los cables de salida cerca uno del otro, el ruido inducido será el mismo para ambos y el amplificador los elimina haciendo la diferencia entre las 2 señales. En la imagen intenté dar a entender que el cable de alimentación del sensor es blindado, y con un capacitor de desacople cerca del sensor.

Saludos.

Título: Re: Velocimetro
Publicado por: marco_zappia en 01 de Marzo de 2012, 20:55:14
Muchas Gracias por ayudar, coloque un condensador de desacoplo un poco mas grande y magicamente el problema se solucionó. Si quieren posteo el codigo y el montaje asi me dan su opinión. Saludos  :lol: