¿Cuál es el chip de reloj correcto para hacer un velocímetro con un AVR?

2

Estoy construyendo un hot rod y decidí hacer un velocímetro con una pantalla de 3 dígitos de nixietube. Estoy planeando utilizar un microcontrolador Atmel AVR (ATmega32 I beleive). Me gustaría un reloj CMOS que pueda usar para comparar el tiempo y mantener el speedo lo más preciso posible.

  1. ¿Qué es un buen chip de reloj para usar?

  2. ¿Cómo puedo conectarla al AVR?

  3. ¿Cómo lo uso correctamente en el software?

Esto es lo que tengo hasta ahora:

  • Generador de impulsos para transmisión (señal de onda, utilizará el auto alimentó el circuito del convertidor de onda cuadrada 4069 pero apáguelo de la ps no la ola)
  • Tubos y zócalos Nixie
  • Atmel microntroller and socket
  • chips de controlador de tubo Nixie
  • Toma de programación para AVR

Me gustaría hacer un pedido a Mouser y obtener el hardware lo más rápido posible para que cualquier ayuda esté disponible.

    
pregunta Bence Kaulics

7 respuestas

3

Su velocímetro debe medir el tiempo transcurrido entre dos pulsos, y no necesita saber la hora del día.

Consideraría usar el oscilador interno calibrado del AVR. Su desviación de + -1% de la frecuencia nominal es probablemente más precisa que la circunferencia de los neumáticos de su vehículo.

Si eso no es lo suficientemente bueno para ti, gasta cincuenta centavos adicionales para un oscilador de cristal.

    
respondido por el joeforker
2

No me preocuparía mucho la precisión del oscilador interno del AVR, es lo suficientemente bueno en comparación con la inflación del neumático que varía tanto en función de la temperatura del día, el asfalto, la agresividad que maneja, etc., puede cambiar la circunferencia en porcentaje grave. Una vez que pueda realizar la calibración y obtener lo mejor que pueda del gadget, está bien. Un SpeedOmeter informativo hace eso, informándole, si muestra 37 mph en lugar de 36 mph, esa no es una diferencia dramática o traumática.

    
respondido por el Wagner Lipnharski
0

Probablemente puedas usar el oscilador de chips. Hice algo similar (bueno, utilicé una pantalla LCD de dos líneas) con un PIC antiguo. El sensor en la transmisión envió tantos miles de pulsos por milla, lo que le da una buena cantidad de espacio para calibrar el tamaño de los neumáticos y las relaciones de engranajes, etc. Por lo tanto, puede elegir cualquier cantidad de soluciones desde la medición del tiempo entre pulsos individuales hasta la medición. 10 pulsos o algo así, con un tiempo de espera en el que claramente sabe que el automóvil se ha detenido y la velocidad es cero. que necesitarías para cualquier solución. Si conoce o calcula los pulsos por milla, no es difícil hacer cálculos matemáticos para calcular el tiempo entre pulsos a diferentes velocidades y luego agregar la precisión más o menos del reloj en el microcontrolador para averiguar cuál es su error de velocidad. Supongo que la naturaleza analógica y de temporización del sensor y los cables van a tener tanto error como el reloj que está utilizando como referencia. (jitter en los pulsos a una velocidad fija). También puede introducir una inclinación en el tren motriz, variación en el tamaño de los neumáticos (a medida que se despega, estresa el neumático con el freno o el acelerador, etc.), probablemente esté bien, empezaría con el oscilador interno.

Usando un oscilador externo o uno interno, puede tener un contador de temporizador cada segundo o algo así, y contar las pulsaciones de velocidad por segundo y actualizar la pantalla (tubos) en función de eso (en lugar de medir entre cada marca de velocidad). El mayor problema que tuve cuando hice esto no fue la detección o el tiempo de los pulsos, tuve un gran momento haciendo la división por decenas para imprimir la velocidad en decimal, el hex fue fácil, octal aún más fácil, pero el decimal cuando el espacio del programa era un kbyte o menos y la memoria se medía en bytes. su avr probablemente tenga más recursos de los que tenía en ese momento y un buen compilador de C (y asequible).

Me encantaría ver las imágenes cuando las pongas en funcionamiento ...

    
respondido por el old_timer
0

Aquí hay algunos consejos:

enlace

enlace

Como han dicho otros, no necesitas un reloj en tiempo real a menos que te importe la fecha y la hora, solo necesitas medir el tiempo entre rotaciones.

    
respondido por el Toby Jaffey
0

Gracias,  Revisé los enlaces y creo que podemos hacerlo sin. Hay un speedo en el mercado que, para calibrarlo, maneja en la carretera y pulsa el botón Calibrar una vez para los marcadores de 2 millas. esto contará cuántos pulsos hay en una milla y luego podemos calcular la velocidad en función de esos números y usar la velocidad de los amigos para confirmar. Ahora todo lo que necesito es una simple selección e implementación de transistores y resistencias, y estoy listo para ordenar.
  También quiero tener indicadores de giro de alto voltaje con bombillas de neón, así que pensé que usaría 2 resistencias para dividir el voltaje de la lámpara de giro y luego poner eso a través de un transistor. Tengo un montón de transistores mpsa42 que creo que funcionarán. Gracias Ed

    
respondido por el Ed OWens
0

No confiaría en el RC a bordo en una aplicación automotriz para medir la velocidad. Mira la especificación para la deriva sobre la temperatura. ¿Qué temperaturas extremas anticipas a dónde vives o podrías viajar?

Un simple cristal y dos tapas le brindarán un oscilador que es mucho más preciso de lo que necesita.

Un resonador probablemente funcionaría bien. Algunos tienen los condensadores incorporados. Por lo general, el costo es menor que el de los cristales, aunque para proyectos de pasatiempos creo que contar centavos es un poco tonto.

    
respondido por el user103218
-1

Acabo de terminar un proyecto similar para un amigo, compró un carrito de golf y quería instalar un SpeedOMeter en él. Era simple Le pido que produzca un disco que se adjuntaría a uno de los neumáticos delanteros, imanes incrustados en el disco, un sensor magnético (eBay). El sensor cambia su salida lógica cada vez que un imán se acerca a su cabeza. Midió la circunferencia del neumático y me dio un parque de pelota de 52.8 pulgadas, lo que significa que una revolución por segundo significa 3 mph. En base a eso, le pedí que instalara 15 imanes pequeños en el disco, si capturo pulsos del sensor durante 200 ms, me dará 3 conteos, por lo tanto, a 3 mph. Fue fácil. Pero podría requerir calibración, sus medidas podrían estar equivocadas, el neumático en movimiento podría tener una circunferencia diferente, etc. No es gran cosa. Estaría satisfecho con dos pantallas LED azules de 7 segmentos (1.5 "de altura) para indicar la velocidad. Elijo un AtMega88 simple (en el cajón). El AtMega podría manejar la pantalla directamente, sin necesidad de transistores, si la corriente no está Lo bueno es que la gran pantalla azul usa dos LED en serie debajo de cada segmento, lo que tendría un doble brillo con la misma corriente de un solo LED. Pero hubo un retén, dos LED azules requerirían más de 5 V, requieren 6.3V para tener un buen brillo diurno. Compró los 7 segmentos en la versión de Common Cathode, lo que fue complicado. El AtMega no puede funcionar con 6.3V, por lo que necesitábamos crear una base virtual en + 1.3Vdc para el AtMega, mientras que La tierra de la pantalla será el cero real Volts. La solución fue simple, alimentando el AtMega con 6.3V, pero su ZeroV se conectaría a tierra real a través de dos diodos de silicio simples 1N914 o 1N4148. El AtMega tendría + 5V o menos entre VCC y Los pines de GND y la pantalla se manejarán con 6.3 V dir. Desde los pines del puerto de E / S de AtMega. Funcionó muy bien. Ahora, reloj fusible para usar oscilador interno de 8MHz. Conectó el sensor de pulso directamente al pin T1 (PD5), programó el contador para que cuente cuando el pin T1 sube, constantemente. Programado Counter1 (16 bits) para contar desde un valor específico, e interrumpe cuando el contador llega a cero, me dio una interrupción cada 200 ms. En la rutina de interrupción, simplemente lea el contador T1 y ponga a cero. Almacene el valor de lectura en 4 registros y empújelos hacia adelante, para mantener solo las últimas 4 lecturas en esos registros. Luego, agréguelos todos y divídalos por cuatro, lo que se hace con un simple cambio lógico dos veces. Al hacer esto, redujo la inestabilidad entre 3 y 4 valores en la pantalla, por ejemplo. Use una tabla simple de segmentos para iluminar en cada una de las pantallas dobles, de -0 a 29 y voilá, solo busque la tabla desde el valor del valor promedio y vuélvala a los pines del puerto que controlan la pantalla de 7 segmentos. Trabajado como un encanto. Ah, el carrito de golf funciona a una velocidad máxima de 20 mph, esta es la razón por la que la mesa sube hasta 29 solamente. La calibración se hizo fácilmente. Un simple puente hace que el AVR deshabilite la interrupción de 200 ms, cuente los impulsos del pin T1, comenzando desde cero, mientras conduce el carro por exactamente, exactamente 22 pies, lo que es 264 pulgadas. Si la llanta tiene una circunferencia de 52.8 ", girará exactamente 5 revoluciones, exactamente 75 pulsos en el sensor. Ahora viene matemática. El contador 1 se desborda a cada 200 ms cuando se carga con cierto valor, que es la división de 8MHz con 256 prescaler. ¿Qué es exactamente el número 31250? ¿Qué hago ahora? multiplique 31250 por 75 (es decir, una constante fija de 2343750 = 0x23C346) y divida por los pulsos reales contados durante el movimiento de 22 pies. No estoy dispuesto a crear un caos completo de división de 24 bits , Simplemente resté el valor del contador de pulsos del 0x23C346 las veces suficientes para llegar a cero, esto no es una carrera de velocidad de cálculo, funcionó. Badabim. Tendré el nuevo valor para cargar en el desbordamiento del contador 1 y tendré una cantidad de tiempo diferente 200 ms o más, ese desbordamiento del contador 1 me interrumpe para leer el valor de los conteos de pulsos T1 durante ese tiempo. Fácil. Ahora, todo lo que el usuario debe hacer para calibrar es insertar un puente, correr los 22 pies y quitar el puente. El puente, el cálculo es hacer. ne y el nuevo valor de counter1 se almacena en eeprom. Ahora, cada vez que enciende la unidad, lee el eeprom para el valor de los desbordamientos del contador 1, y está listo para funcionar. Fácil, menos de 100 bytes de programación en ensamblaje. Me encanta este idioma. Le gustó la idea de usar un AVR, ya que al principio quería hacerlo utilizando contadores y temporizadores simples en lógica TTL pura. Ahora quiere que actualice el AVR para hacer el control de las luces intermitentes y los temporizadores, y así sucesivamente.

    
respondido por el Wagner Lipnharski

Lea otras preguntas en las etiquetas