Índice:

Relógio Nixie Bargraph: 6 etapas (com imagens)
Relógio Nixie Bargraph: 6 etapas (com imagens)

Vídeo: Relógio Nixie Bargraph: 6 etapas (com imagens)

Vídeo: Relógio Nixie Bargraph: 6 etapas (com imagens)
Vídeo: MNC6 Nixie Clock Build - Part 3 - Tube mounting 2024, Julho
Anonim
Relógio Nixie Bargraph
Relógio Nixie Bargraph
Relógio Nixie Bargraph
Relógio Nixie Bargraph

Editar 9/11 / 17Com a ajuda do Kickstarter eu lancei um kit para este kit de relógio! Inclui uma placa de driver e 2 tubos Nixie IN-9. Tudo que você precisa adicionar é seu próprio Arduino / Raspberry Pi / outro. O kit pode ser encontrado clicando neste link!

Eu vi muitos relógios Nixie online e achei que eles pareciam ótimos, mas eu não queria gastar mais de US $ 100 em um relógio que nem inclui os tubos! Então, com um pouco de conhecimento em eletrônica, eu procurei nos vários tubos nixie e circuitos. Eu queria fazer algo um pouco diferente da grande variedade de relógios nixie de aparência bastante semelhante. No final, optei por usar tubos de gráfico de barras Nixie IN-9. São tubos longos e finos e a altura do plasma brilhante depende da corrente que passa pelos tubos. O tubo à esquerda está em incrementos de horas e o tubo à direita está em minutos. Eles têm apenas duas derivações e, portanto, tornam a construção de um circuito mais simples. Nesse projeto, há um tubo de horas e minutos, com as alturas do plasma em cada tubo representando o tempo atual. A hora é mantida usando um microcontrolador Adafruit Trinket e um relógio de tempo real (RTC).

Etapa 1: montagem das peças

Montagem das peças
Montagem das peças

Existem duas seções, primeiro a eletrônica e, em segundo lugar, a montagem e acabamento. Os componentes eletrônicos necessários são: Adafruit Trinket 5V - $ 7,95 (www.adafruit.com/products/1501) Adafruit RTC - $ 9 (www.adafruit.com/products/264) 2x Nixie IN-9 bargraph ~ $ 3 por tubo no eBay 1x Fonte de alimentação Nixie 140v ~ $ 12 no eBay 4x 47 uF capacitores de eletrólito 4x resistores de 3,9 kOhm 2x potenciômetro de 1 kOhm 2x Transistor MJE340 NPN alta tensão ~ $ 1 cada 1x LM7805 5v regulador ~ $ 1 1x soquete de 2,1 mm ~ $ 1 1x caixa de projeto com pcb ~ $ 5 1x Fonte de alimentação 12v DC (encontrei uma velha de algum gadget esquecido há muito tempo) Solda, fio de conexão, etc. Montagem: Decidi montar a eletrônica em uma pequena caixa plástica preta de projeto, em seguida, montar os tubos em um movimento de relógio antigo. Para marcar a hora e os minutos, usei fio de cobre enrolado nos tubos. Peças de montagem: Movimento de relógio antigo - $ 10 eBay de fio de cobre - $ 3 eBay de pistola de cola quente

Etapa 2: Circuito

O circuito
O circuito
O circuito
O circuito
O circuito
O circuito
O circuito
O circuito

O primeiro passo é construir a fonte de alimentação do Nixie. Ele veio como um pequeno kit do eBay, incluindo um pequeno PCB e só precisava que os componentes fossem soldados à placa. Esta fonte particular é variável entre 110-180v, controlável com um pequeno pote na placa. Usando uma pequena chave de fenda, ajuste a saída para ~ 140v. Antes de ir para todo o caminho, eu queria testar minhas válvulas nixie, para fazer isso eu construí um circuito de teste simples usando uma válvula, transistor e um potenciômetro de 10k que eu tinha ao redor. Como pode ser visto na primeira figura, o fornecimento de 140 V é conectado ao ânodo do tubo (perna direita). O cátodo (perna esquerda) é então conectado à perna do coletor do transistor MJE340. Uma fonte de 5 V é conectada a um potenciômetro de 10k dividido para aterrar na base do transistor. Finalmente, o emissor do transistor é conectado ao aterramento por meio de um resistor limitador de corrente de 300 ohms. Se você não está familiarizado com transistores e eletrônicos, isso realmente não importa, apenas conecte-o e altere a altura do plasma com o botão do potenciômetro! Uma vez que isso esteja funcionando, podemos começar a fazer nosso relógio. O circuito de relógio completo pode ser visto no segundo diagrama de circuito. Depois de alguma pesquisa, encontrei um tutorial perfeito no site de aprendizado Adafruit fazendo quase exatamente o que eu queria fazer. O tutorial pode ser encontrado aqui: https://learn.adafruit.com/trinket-powered-analog-m… Este tutorial usa um controlador Trinket e um RTC para controlar dois amperímetros analógicos. Usando modulação por largura de pulso (PWM) para controlar a deflexão da agulha. A bobina do amperímetro calcula a média do PWM em um sinal CC efetivo. No entanto, se usarmos o PWM diretamente para acionar os tubos, a modulação de alta frequência significa que a barra de plasma não ficará "presa" à base do tubo e você terá uma barra flutuante. Para evitar isso, calculei a média do PWM usando um filtro passa-baixa com uma constante de tempo longa para obter um sinal quase CC. Isso tem uma frequência de corte de 0,8 Hz, isso é bom, pois estamos atualizando a hora do relógio apenas a cada 5 segundos. Além disso, como os gráficos de barras têm uma vida útil finita e podem precisar ser substituídos, e nem todos os tubos são exatamente iguais, incluí um pote de 1k após o tubo. Isso permite ajustes para ajustar a altura do plasma para os dois tubos. Para conectar o trinket ao relógio de tempo real (RCT), conecte o pino 0 do Trinket ao RTC-SDA, o pino 2 do Trinket ao RTC-SCL e o Trinket-5v ao RTC-5v e o Trinket GND ao aterramento do RTC. Para esta parte, pode ser útil visualizar as instruções do relógio Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Uma vez que o Trinket e o RTC estão conectados corretamente, conecte os tubos nixie, transistores, filtros etc. em uma placa de ensaio seguindo cuidadosamente o diagrama do circuito.

Para fazer o RTC e o Trinket falarem, primeiro você precisa baixar as bibliotecas corretas do Adafruit Github. Você precisa do TinyWireM.h e do TInyRTClib.h. Primeiro queremos calibrar os tubos, carregue o esboço de calibração no final deste instrutível. Se nenhum dos esboços no final funcionar, tente o esboço do relógio Adafruit. Eu ajustei o esboço do relógio Adafruit para funcionar de forma mais eficaz com os tubos nixie, mas o esboço do Adafruit funcionará bem.

Etapa 3: Calibração

Calibration
Calibration

Depois de fazer o upload do esboço de calibração, as graduações precisam ser marcadas.

Existem três modos de calibração, o primeiro define os dois tubos nixie para a saída máxima. Use para ajustar o potenciômetro de forma que a altura do plasma em ambos os tubos seja a mesma e ligeiramente abaixo da altura máxima. Isso garante que a resposta seja linear em todo o intervalo de clock.

A segunda configuração calibra o tubo dos minutos. Ele muda entre 0, 15, 30, 45 e 60 minutos a cada 5 segundos.

A última configuração repete isso para cada incremento de hora. Ao contrário do relógio Adafruit, o indicador de hora se move em incrementos fixos uma vez a cada hora. Era difícil obter uma resposta linear para cada hora ao usar um medidor analógico.

Depois de ajustar o potenciômetro, carregue o esboço para calibrar por minutos. Pegue o fio de cobre fino e corte um pedaço curto. Enrole isso em volta do tubo e torça as duas pontas. Deslize para a posição correta e usando uma pistola de cola quente coloque uma pequena gota de cola para mantê-la no lugar certo. Repita isso para cada incremento de minuto e hora.

Esqueci de tirar alguma foto desse processo, mas dá para ver nas fotos como o fio está preso. Embora eu tenha usado muito menos cola apenas para prender o fio.

Etapa 4: montagem e acabamento

Montagem e Acabamento
Montagem e Acabamento
Montagem e Acabamento
Montagem e Acabamento
Montagem e Acabamento
Montagem e Acabamento

Uma vez que os tubos estão todos calibrados e funcionando, agora é a hora de fazer o circuito permanentemente e montar em alguma forma de base. Eu escolhi um movimento de relógio antigo porque gostei da mistura de tecnologia antiga, anos 60 e moderna. Ao transferir da placa de ensaio para a placa de strip, tenha muito cuidado e leve o seu tempo garantindo que todas as conexões sejam feitas. A caixa que comprei era um pouco pequena, mas com um pouco de colocação cuidadosa e um pouco de força, consegui fazer tudo para caber. Eu fiz um furo na lateral para a fonte de alimentação e outro para os cabos nixie. Cobri os fios nixie com termorretrátil para evitar qualquer curto. Quando os componentes eletrônicos forem montados na caixa, cole-os na parte de trás do movimento do relógio. Para montar os tubos usei cola quente e colei as pontas dos fios retorcidos ao metal, tomando cuidado para que fiquem retos. Provavelmente usei muita cola, mas não é muito perceptível. Pode ser algo que possa ser melhorado no futuro. Quando tudo estiver montado, carregue o esboço do relógio Nixie no final deste instrutível e admire o seu adorável novo relógio!

Etapa 5: Arduino Sketch - Calibração

# define HOUR_PIN 1 // Exibição das horas via PWM no Trinket GPIO # 1

#define MINUTE_PIN 4 // Exibição de minutos via PWM no Trinket GPIO # 4 (via chamadas do temporizador 1)

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

void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // configurar saídas PWM

}

void loop () {// Use isso para ajustar os potes nixie para garantir que a altura máxima do tubo corresponda a analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Use para calibrar os incrementos de minuto

/*

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

*/

// Use para calibrar os incrementos de hora / *

analogWrite (HOUR_PIN, 57); // 57 é a saída mínima e corresponde ao atraso de 1 am / pm (4000); // atrasa 4 segundos analogWrite (HOUR_PIN, 75); // 75 é a saída que corresponde a 2 am/pm delay (4000); analogWrite (HOUR_PIN, 93); // 93 é a saída que corresponde a 3 am / pm delay (4000); analogWrite (HOUR_PIN, 111); // 111 é a saída que corresponde a 4 am/pm delay (4000); analogWrite (HOUR_PIN, 129); // 129 é a saída que corresponde a 5 am / pm delay (4000); analogWrite (HOUR_PIN, 147); // 147 é a saída que corresponde a 6 am/pm delay (4000); analogWrite (HOUR_PIN, 165); // 165 é a saída que corresponde a 7 am / pm delay (4000); analogWrite (HOUR_PIN, 183); // 183 é a saída que corresponde a 8 am / pm delay (4000); analogWrite (HOUR_PIN, 201); // 201 é a saída que corresponde ao atraso das 9 am / pm (4000); analogWrite (HOUR_PIN, 219); // 219 é a saída que corresponde a 10 am / pm delay (4000); analogWrite (HOUR_PIN, 237); // 237 é a saída que corresponde a 11 am / pm delay (4000); analogWrite (HOUR_PIN, 255); // 255 é a saída que corresponde às 12h / pm

*/

}

void PWM4_init () {// Configurar PWM no Trinket GPIO # 4 (PB4, pino 3) usando Timer 1 TCCR1 = _BV (CS10); // sem prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // limpa OC1B na comparação OCR1B = 127; // ciclo de trabalho inicializado em 50% OCR1C = 255; // frequência }

// Função para permitir analogWrite no Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // o dever pode ser de 0 a 255 (0 a 100%)}

Etapa 6: Arduino Sketch - Relógio

// Relógio medidor analógico Adafruit Trinket

// Funções de data e hora usando um DS1307 RTC conectado via I2C e o TinyWireM lib

// Baixe essas bibliotecas do repositório Github da Adafruit e // instale em seu diretório de bibliotecas do Arduino #include #include

// Para depurar, descomente o código serial, use um FTDI Friend com seu pino RX conectado ao Pin 3 // Você precisará de um programa de terminal (como o freeware PuTTY para Windows) configurado para // a porta USB do FTDI friend em 9600 baud. Remova o comentário dos comandos Serial para ver o que está acontecendo // # define HOUR_PIN 1 // Exibição das horas via PWM no Trinket GPIO # 1 #define MINUTE_PIN 4 // Exibição dos minutos via PWM no Trinket GPIO # 4 (via chamadas do Timer 1) // SendOnlySoftwareSerial Serial (3); // Transmissão serial no Trinket Pin 3 RTC_DS1307 rtc; // Configure o relógio em tempo real

void setup () {pinMode (HOUR_PIN, OUTPUT); // define os pinos do medidor PWM como saídas pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Defina o temporizador 1 para trabalhar PWM no Trinket Pin 4 TinyWireM.begin (); // Comece I2C rtc.begin (); // Inicia o relógio em tempo real DS1307 //Serial.begin(9600); // Inicia o Serial Monitor em 9600 baud if (! Rtc.isrunning ()) {//Serial.println("RTC is NOT running! "); // a linha seguinte define o RTC para a data e hora em que este esboço foi compilado rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t hourvoltage, minutevoltage;

DateTime now = rtc.now (); // Obtenha a informação RTC hourvalue = now.hour (); // Obter a hora if (hourvalue> 12) hourvalue - = 12; // Este relógio tem 12 horas minutevalue = now.minute (); // Obtenha os minutos

minutevoltage = map (minutevalue, 1, 60, 57, 255); // Converter minutos em ciclo de trabalho PWM

if (valor da hora == 1) {analogWrite (HOUR_PIN, 57); } if (hourvalue == 2) {analogWrite (HOUR_PIN, 75); // cada hora corresponde a +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

if (valor da hora == 4) {analogWrite (HOUR_PIN, 111); } if (hourvalue == 5) {analogWrite (HOUR_PIN, 126); } if (hourvalue == 6) {analogWrite (HOUR_PIN, 147); } if (hourvalue == 7) {analogWrite (HOUR_PIN, 165); } if (hourvalue == 8) {analogWrite (HOUR_PIN, 183); } if (hourvalue == 9) {analogWrite (HOUR_PIN, 201); } if (hourvalue == 10) {analogWrite (HOUR_PIN, 215); } if (hourvalue == 11) {analogWrite (HOUR_PIN, 237); } if (hourvalue == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (minutevoltagem); // a gravação analógica de minuto pode permanecer a mesma que o mapeamento funciona // o código para colocar o processador para hibernar pode ser preferível - vamos atrasar delay (5000); // verifique o tempo a cada 5 segundos. Você pode mudar isso. }

void PWM4_init () {// Configurar PWM no Trinket GPIO # 4 (PB4, pino 3) usando Timer 1 TCCR1 = _BV (CS10); // sem prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // limpa OC1B na comparação OCR1B = 127; // ciclo de trabalho inicializado em 50% OCR1C = 255; // frequência }

// Função para permitir analogWrite no Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // o dever pode ser de 0 a 255 (0 a 100%)}

Recomendado: