Autor Tema: Diseño de velocimetro  (Leído 4486 veces)

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

Desconectado JEJAVI

  • PIC10
  • *
  • Mensajes: 2
Diseño de velocimetro
« en: 29 de Octubre de 2010, 21:33:56 »
saludos, resulta que estoy diseñando un velocimetro, pero me encuentro algo confundido al hacer los calculos de la velocidad
quiero obtener la velocidad instantanea y mis datos son los siguientes:
diametro de la llanta: 60 cm
4 pulsos por vuelta de la llanta
entonces en una vuelta de la llanta recorre pi x 60cm = 188,495 cm o bien 1,88 m
y como V= d/t donde d es distancia , y t es el tiempo en dar una vuelta , pero como pienso utilizar 4 sensores para
obtener mejor resolución, y tambien calcular el tiempo entre cada 2 interrupciones
necesito saber como se calcula el tiempo entre dos interrucciones
manejo algo de assembler pero preferíria utilizar basic.
agradeceria si alguien puede ayudarme.




Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Diseño de velocimetro
« Respuesta #1 en: 29 de Octubre de 2010, 23:32:45 »
Que tal JEJAVI,

Si mencionas que tendras 4 pulsos por vuelta de la llanta entonces cada pulso se genera por cada 1,88m/4 = 0.47 m. Ahora bien el primer pulso sera tu inicio, el cual sera tu primera interrupcion, en ese momento puedes encender un timer, preferentemente el de 16 bits. Ahora bien ese timer contara el tiempo el cual sera dependiente del crystal que estes usando. Suponiendo que estas usando un crystal de 4 MHz, entonces el timer se incrementara cada microsegundo. Ahora bien el detectar el siguiente pulso, detienes el conteo del timer y ese es el tiempo entre tus dos pulsos. Si ese tiempo es de 50 ms (50000 microsegundos).
Ahora bien 0.47m/50 ms = 9.4 m/seg = 33.84 km/h.

Toda la clave esta en el uso del timer y del uso de punto flotante. Asi qeu dependiendo del compildaor basic que uses, sera el nivel de dificultad trabajar con el punto flotante.

Saludos y espero haber podido al menos darte una idea.

elreypic.

Desconectado JEJAVI

  • PIC10
  • *
  • Mensajes: 2
Re: Diseño de velocimetro
« Respuesta #2 en: 31 de Octubre de 2010, 12:40:54 »
Gracias por tu respuesta, ese es el unico problema con que me he encontrado en estos momentos, debido a que no he podido utilizar el timer para hacer el conteo del tiempo, por eso debería hacer una prueba real del conteo de tiempo utilizando el TMR0
porque en proteus he tenido problemas para comprobarla.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Diseño de velocimetro
« Respuesta #3 en: 17 de Noviembre de 2010, 22:08:48 »
Que tal amigo, mira hace algun tiempo me di a la tarea de realizar un velocimetro pero sin meterme a trabajar con los timer pero si trabajé con la interrupción en RB0, no es como lo planteas pero puede funcionar una precisión aceptable pero no exacta ya que empleo un retardo asignado para el calculo de la velocidad. El programa está realizado en Mikrobasic,no recuerdo de momento todos los detalles per tiene areas de mejora pero te puede servir.


Código: [Seleccionar]
program Km_hr
'Este programa describe el trabajo de un velocímetro con indicador de velocidad
'y kilómetros recorridos en un trayecto. Emplea un Pic 16F873 con cristal 4 MHZ
'emplea variable float las cuales permiten trabajar con números fraccionarios se
'usa la interrupción externa INT por RB0

dim velocidad,distancia,perimetro as float
dim avance, km as float
dim tiempo as integer
dim salida1 as string[17]
dim salida2 as string[7]

sub procedure interrupt
   if testbit(INTCON,1) then         'Pregunta si interrupción es x cambio en RB0
     distancia = distancia + perimetro
     avance = avance + perimetro
     delay_ms(5)
    end if
clearbit(INTCON,1)                    'Limpia flag de interrupción por RB0
end sub

main:
     ADCON1 = %00000111
     portb = 0                        'Limpia puerto B
     trisa.0 = 1                      'Pin0 como entrada
     trisb = %00000001                'Puertoa B como salida RB0 entrada
     setbit(intcon,4)                 'Habilito interrupción INT/RB0
     setbit(intcon,7)                 'Habilito GIE interrupciones generales
     distancia   = 0                  'Reseteo distancia
     tiempo    = 1                    'Tiempo = 1 segundo
     perimetro = 0.125                'Perímetro en metros
     avance=0
     Lcd_Init(PORTB)                  'Initialize LCD on PORTB
     Lcd_Cmd(Lcd_CURSOR_OFF)          'Cursor apagado
     Lcd_Out(1, 1, "Velocimetro V1.0")'Imprime text en LCD
     Lcd_Out(2, 1, "PRODIEL 2009  ")  'Imprime text en LCD
     delay_ms(1000)
     Lcd_Cmd(Lcd_Clear)
     Lcd_Out(1, 10, "km/h")           'Print text at LCD

Conteo:
     distancia = 0
     delay_ms(1000)                    'Deja pasar 1 segundo antes de calcular
     velocidad=((distancia/tiempo)*3.6)'Fórmula de velocidad
     km = avance/1000                  'Calcula los kilómetros acumulados
     if porta.0=1 then                 'Reseteamos el acumulador de km
        delay_ms(50)
        km=0
     end if
     FloatToStr(velocidad, salida1)    'Convierte variables Float a string
     FloatToStr(km, salida2)
     Lcd_Cmd(Lcd_CURSOR_OFF)           'Cursor off
     Lcd_Out(1, 1, salida1)            'Print text at LCD
     Lcd_Out(2, 1, salida2)
     Lcd_Out(2, 14, "km")              'Print text at LCD
     goto Conteo
end.

Saludos
Sonrie Cristo te ama


 

anything