Tabla de contenido:

Reloj con gráfico de barras Nixie: 6 pasos (con imágenes)
Reloj con gráfico de barras Nixie: 6 pasos (con imágenes)

Video: Reloj con gráfico de barras Nixie: 6 pasos (con imágenes)

Video: Reloj con gráfico de barras Nixie: 6 pasos (con imágenes)
Video: COMO HACER un RELOJ VFD a 25V con ARDUINO! Parte 2: INTERFAZ Arduino con UDN2981 [FUNCIONA!!] 2024, Mes de julio
Anonim
Reloj Nixie Bargraph
Reloj Nixie Bargraph
Reloj Nixie Bargraph
Reloj Nixie Bargraph

Edición 9/11/17 ¡Con la ayuda de Kickstarter, he lanzado un kit para este kit de reloj! Incluye placa de controlador y 2 tubos Nixie IN-9. Todo lo que necesita agregar es su propio Arduino / Raspberry Pi / otro. ¡El kit se puede encontrar haciendo clic en este enlace!

¡Así que he visto muchos relojes Nixie en línea y pensé que se veían geniales, sin embargo, no quería gastar más de $ 100 en un reloj que ni siquiera incluye los tubos! Así que con un poco de conocimiento de electrónica busqué entre los diversos tubos nixie y circuitos. Quería hacer algo un poco diferente a la amplia gama de relojes nixie de apariencia bastante similar. Al final, opté por usar tubos de gráfico de barras Nixie IN-9. Estos son tubos largos y delgados y la altura del plasma brillante depende de la corriente a través de los tubos. El tubo de la izquierda está en incrementos de horas y el tubo de la derecha está en minutos. Solo tienen dos cables y, por lo tanto, hacen que la construcción de un circuito sea más sencilla. En este diseño, hay un tubo de una hora y un minuto, y las alturas del plasma en cada tubo representan la hora actual. El tiempo se mantiene utilizando un microcontrolador Adafruit Trinket y un reloj de tiempo real (RTC).

Paso 1: Montaje de las piezas

Ensamblaje de las piezas
Ensamblaje de las piezas

Hay dos secciones, primero la electrónica y en segundo lugar el montaje y el acabado. Los componentes electrónicos requeridos son: Adafruit Trinket 5V - $ 7.95 (www.adafruit.com/products/1501) Adafruit RTC - $ 9 (www.adafruit.com/products/264) 2x Gráfico de barras Nixie IN-9 ~ $ 3 por tubo en eBay 1x Fuente de alimentación Nixie 140v ~ $ 12 en eBay 4x 47 uF condensadores de electrolito 4x 3,9 kOhm resistencias 2x 1 kOhm potenciómetro 2x Transistor MJE340 NPN alto voltaje ~ $ 1 cada uno 1x LM7805 5v regulador ~ $ 1 1x enchufe de 2,1 mm ~ $ 1 1x caja de proyecto con pcb ~ $ 5 1x Fuente de alimentación de 12 V CC (encontré una vieja de un dispositivo olvidado hace mucho tiempo) Soldadura, cable de conexión, etc. Montaje: Decidí montar los componentes electrónicos en una pequeña caja de proyecto de plástico negro y luego montar los tubos en un mecanismo de reloj antiguo. Para marcar la hora y los minutos usé alambre de cobre enrollado alrededor de los tubos. Piezas de montaje: Movimiento de reloj antiguo - $ 10 eBay Alambre de cobre - $ 3 Pistola de pegamento caliente eBay

Paso 2: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

El primer paso es construir la fuente de alimentación Nixie. Este vino como un pequeño y agradable kit de eBay, que incluía un pequeño PCB y solo necesitaba que los componentes se soldaran a la placa. Este suministro particular es variable entre 110-180v, controlable con una pequeña olla en el tablero. Con un destornillador pequeño, ajuste la salida a ~ 140v. Antes de ir a todo el camino, quería probar mis tubos nixie, para hacer esto, construí un circuito de prueba simple usando un tubo, un transistor y un potenciómetro de 10k que tenía por ahí. Como se puede ver en la primera figura, el suministro de 140v está conectado al ánodo del tubo (pata derecha). El cátodo (pata izquierda) se conecta luego a la pata colectora del transistor MJE340. Un suministro de 5v está conectado a un potenciómetro de 10k que se divide a tierra en la base del transistor. Finalmente, el emisor del transistor se conecta a tierra a través de una resistencia limitadora de corriente de 300 ohmios. Si no está familiarizado con los transistores y la electrónica, en realidad no importa, simplemente conéctelo y cambie la altura del plasma con la perilla del potenciómetro. Una vez que esté funcionando, podemos mirar a hacer nuestro reloj. El circuito de reloj completo se puede ver en el segundo diagrama de circuito. Después de investigar un poco, encontré un tutorial perfecto en el sitio web de aprendizaje de Adafruit haciendo casi exactamente lo que quería hacer. El tutorial se puede encontrar aquí: https://learn.adafruit.com/trinket-powered-analog-m… Este tutorial utiliza un controlador Trinket y un RTC para controlar dos amperímetros analógicos. Usando modulación de ancho de pulso (PWM) para controlar la desviación de la aguja. La bobina del amperímetro promedia el PWM en una señal de CC efectiva. Sin embargo, si usamos el PWM directamente para impulsar los tubos, entonces la modulación de alta frecuencia significa que la barra de plasma no permanecerá "sujeta" a la base del tubo y usted tendrá una barra flotante. Para evitar esto, promedié el PWM usando un filtro de paso bajo con una constante de tiempo prolongada para obtener una señal casi de CC. Esto tiene una frecuencia de corte de 0.8 Hz, esto está bien ya que estamos actualizando la hora del reloj solo cada 5 segundos. Además, dado que los gráficos de barras tienen una vida útil finita y es posible que sea necesario reemplazarlos y no todos los tubos son exactamente iguales, incluí una olla de 1k después del tubo. Esto permite ajustar para ajustar la altura del plasma para los dos tubos. Para conectar el trinket al reloj en tiempo real (RCT), conecte el pin 0 de Trinket a RTC-SDA, el pin 2 de Trinket a RTC-SCL y Trinket-5v a RTC-5v y el Trinket GND a la tierra del RTC. Para esta parte, puede ser útil ver las instrucciones del reloj de Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Una vez que el Trinket y el RTC estén correctamente conectados, conecte los tubos nixie, transistores, filtros, etc.en una placa de pruebas siguiendo cuidadosamente el diagrama del circuito.

Para que RTC y Trinket hablen, primero debe descargar las bibliotecas correctas de Adafruit Github. Necesita TinyWireM.hy TInyRTClib.h. Primero queremos calibrar los tubos, cargue el boceto de calibración al final de este instructivo. Si ninguno de los bocetos al final funciona, intente con el boceto del reloj Adafruit. He modificado el boceto del reloj de Adafruit para que funcione de manera más eficaz con los tubos nixie, pero el boceto de Adafruit funcionará bien.

Paso 3: Calibración

Calibración
Calibración

Una vez que haya cargado el boceto de calibración, es necesario marcar las graduaciones.

Hay tres modos para la calibración, el primero ajusta ambos tubos nixie a la salida máxima. Use esto para ajustar la olla de modo que la altura del plasma en ambos tubos sea la misma y que esté ligeramente por debajo de la altura máxima. Esto asegura que la respuesta sea lineal en todo el rango de reloj.

El segundo ajuste calibra el tubo de minutos. Cambia entre 0, 15, 30, 45 y 60 minutos cada 5 segundos.

La última configuración repite esto para cada incremento de hora. A diferencia del reloj Adafruit, el indicador de hora se mueve en incrementos fijos una vez cada hora. Era difícil obtener una respuesta lineal para cada hora cuando se usaba un medidor analógico.

Una vez que haya ajustado la olla, cargue el boceto para calibrar durante minutos. Toma el alambre de cobre delgado y corta un trozo corto. Envuelva esto alrededor del tubo y gire los dos extremos juntos. Deslícelo a la posición correcta y con una pistola de pegamento caliente coloque una pequeña gota de pegamento para mantenerlo en el lugar correcto. Repita esto para cada incremento de minutos y horas.

Olvidé tomar fotografías de este proceso, pero en las fotografías se puede ver cómo está conectado el cable. Aunque usé mucho menos pegamento solo para unir el cable.

Paso 4: Montaje y acabado

Montaje y acabado
Montaje y acabado
Montaje y acabado
Montaje y acabado
Montaje y acabado
Montaje y acabado

Una vez que todos los tubos estén calibrados y funcionando, es el momento de hacer el circuito de forma permanente y montarlo en algún tipo de base. Elegí un movimiento de reloj antiguo porque me gustó la combinación de tecnología antigua, de los años 60 y moderna. Cuando transfiera de la placa de pruebas a la placa de tira, tenga mucho cuidado y tómese su tiempo para asegurarse de que se realicen todas las conexiones. La caja que compré era un poco pequeña, pero con una colocación cuidadosa y un poco de fuerza logré que todo encajara. Perforé un agujero en el costado para la fuente de alimentación y otro para los cables nixie. Cubrí los cables nixie con termorretráctil para evitar cortocircuitos. Cuando la electrónica esté montada en la caja, péguela a la parte posterior del mecanismo del reloj. Para montar los tubos utilicé pegamento caliente y pegué las puntas del alambre retorcido al metal, teniendo cuidado de asegurarme de que estuvieran rectos. Probablemente usé demasiado pegamento, pero no se nota mucho. Podría ser algo que se pueda mejorar en el futuro. Cuando esté todo montado, cargue el boceto del reloj Nixie al final de este instructivo y admire su nuevo y encantador reloj.

Paso 5: Arduino Sketch - Calibración

#define HOUR_PIN 1 // Visualización de la hora a través de PWM en Trinket GPIO # 1

#define MINUTE_PIN 4 // Visualización de minutos a través de PWM en Trinket GPIO # 4 (a través de llamadas del temporizador 1)

int horas = 57; int minutos = 57; // establecer pwm mínimo

configuración vacía () {pinMode (HORA_PIN, SALIDA); pinMode (MINUTE_PIN, SALIDA); PWM4_init (); // configurar salidas PWM

}

void loop () {// Use esto para ajustar las ollas nixie para asegurarse de que la altura máxima del tubo coincida con analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Use esto para calibrar los incrementos de minutos

/*

analogWrite4 (57); // retraso del minuto 0 (5000); analogWrite4 (107); // retraso del minuto 15 (5000); analogWrite4 (156); // retraso de 30 minutos (5000); analogWrite4 (206); // retraso de 45 minutos (5000); analogWrite4 (255); // retraso de 60 minutos (5000);

*/

// Use esto para calibrar los incrementos de horas / *

escritura analógica (PIN_HORA, 57); // 57 es la salida mínima y corresponde a un retraso de 1 am/pm (4000); // demora 4 segundos analogWrite (HOUR_PIN, 75); // 75 es la salida que corresponde a un retraso de 2 am/pm (4000); escritura analógica (PIN_HORA, 93); // 93 es la salida que corresponde a un retraso de 3 am/pm (4000); escritura analógica (PIN_HORA, 111); // 111 es la salida que corresponde al retraso de 4 am/pm (4000); escritura analógica (PIN_HORA, 129); // 129 es la salida que corresponde al retraso de 5 am/pm (4000); escritura analógica (PIN_HORA, 147); // 147 es la salida que corresponde a un retraso de 6 am/pm (4000); escritura analógica (PIN_HORA, 165); // 165 es la salida que corresponde al retraso de 7 am/pm (4000); escritura analógica (PIN_HORA, 183); // 183 es la salida que corresponde al retraso de 8 am/pm (4000); escritura analógica (PIN_HORA, 201); // 201 es la salida que corresponde al retraso de 9 am/pm (4000); escritura analógica (PIN_HORA, 219); // 219 es la salida que corresponde al retraso de 10 am/pm (4000); analogWrite (PIN_HORA, 237); // 237 es la salida que corresponde al retraso de 11 am/pm (4000); escritura analógica (PIN_HORA, 255); // 255 es la salida que corresponde a las 12 am/pm

*/

}

void PWM4_init () {// Configure PWM en Trinket GPIO # 4 (PB4, pin 3) usando el temporizador 1 TCCR1 = _BV (CS10); // sin prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // borrar OC1B al comparar OCR1B = 127; // ciclo de trabajo se inicializa al 50% OCR1C = 255; // frecuencia}

// Función para permitir analogWrite en Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // el deber puede ser de 0 a 255 (0 a 100%)}

Paso 6: Arduino Sketch - Reloj

// Reloj medidor analógico Adafruit Trinket

// Funciones de fecha y hora utilizando un RTC DS1307 conectado a través de I2C y la lib TinyWireM

// Descargue estas bibliotecas del repositorio Github de Adafruit e // instálelas en su directorio de bibliotecas Arduino #include #include

// Para la depuración, descomente el código de serie, use un amigo FTDI con su pin RX conectado al Pin 3 // Necesitará un programa de terminal (como el software gratuito PuTTY para Windows) configurado en el // puerto USB del amigo FTDI en 9600 baudios. Descomente los comandos en serie para ver qué pasa // # defina HOUR_PIN 1 // Visualización de la hora a través de PWM en Trinket GPIO # 1 #define MINUTE_PIN 4 // Visualización de minutos a través de PWM en Trinket GPIO # 4 (a través de llamadas del temporizador 1) // SendOnlySoftwareSerial Serial (3); // Transmisión en serie en Trinket Pin 3 RTC_DS1307 rtc; // Configurar reloj en tiempo real

configuración vacía () {pinMode (HORA_PIN, SALIDA); // define los pines del medidor PWM como salidas pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Establecer el temporizador 1 para que funcione PWM en el Pin 4 de Trinket TinyWireM.begin (); // Iniciar I2C rtc.begin (); // Iniciar el reloj en tiempo real DS1307 //Serial.begin(9600); // Inicie el Monitor de serie a 9600 baudios if (! Rtc.isrunning ()) {//Serial.println("RTC NO se está ejecutando! "); // la siguiente línea establece el RTC en la fecha y hora en que se compiló este boceto rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

bucle vacío () {uint8_t valor de hora, valor de minuto; uint8_t hourvoltage, minutevoltage;

DateTime ahora = rtc.now (); // Obtener la información de RTC hourvalue = now.hour (); // Obtiene la hora if (hourvalue> 12) hourvalue - = 12; // Este reloj es de 12 horas minutevalue = now.minute (); // Obtén los minutos

voltaje minuto = mapa (valor minuto, 1, 60, 57, 255); // Convertir minutos en ciclo de trabajo PWM

if (valor de hora == 1) {escritura analógica (PIN_HORA, 57); } si (valor de hora == 2) {escritura analógica (PIN_HORA, 75); // cada hora corresponde a +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

if (valor de hora == 4) {analogWrite (HOUR_PIN, 111); } si (valor de hora == 5) {escritura analógica (PIN_HORA, 126); } si (valor de hora == 6) {escritura analógica (PIN_HORA, 147); } si (valor de hora == 7) {escritura analógica (PIN_HORA, 165); } si (valor de hora == 8) {escritura analógica (PIN_HORA, 183); } si (valor de hora == 9) {escritura analógica (PIN_HORA, 201); } si (valor de hora == 10) {escritura analógica (PIN_HORA, 215); } si (valor de hora == 11) {escritura analógica (PIN_HORA, 237); } if (valor de hora == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (voltaje minuto); // la escritura analógica por minuto puede permanecer igual mientras el mapeo funciona // el código para poner el procesador en suspensión puede ser preferible - retrasaremos el retraso (5000); // verifica el tiempo cada 5 segundos. Puedes cambiar esto. }

void PWM4_init () {// Configure PWM en Trinket GPIO # 4 (PB4, pin 3) usando el temporizador 1 TCCR1 = _BV (CS10); // sin prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // borrar OC1B al comparar OCR1B = 127; // ciclo de trabajo se inicializa al 50% OCR1C = 255; // frecuencia}

// Función para permitir analogWrite en Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // el deber puede ser de 0 a 255 (0 a 100%)}

Recomendado: