Оглавление:

Часы Nixie Bargraph: 6 шагов (с изображениями)
Часы Nixie Bargraph: 6 шагов (с изображениями)

Видео: Часы Nixie Bargraph: 6 шагов (с изображениями)

Видео: Часы Nixie Bargraph: 6 шагов (с изображениями)
Видео: Nixie Tube Clock on 6 IN-14 / Часы на лампах ИН-14 (6 ламп). 2024, Июль
Anonim
Часы Nixie Bargraph
Часы Nixie Bargraph
Часы Nixie Bargraph
Часы Nixie Bargraph

Редактировать 11.09.17 С помощью Kickstarter я выпустил комплект для этого набора часов! Он включает в себя плату драйвера и 2 лампы Nixie IN-9. Все, что вам нужно добавить, - это ваш собственный Arduino / Raspberry Pi / другое. Комплект можно найти, перейдя по этой ссылке!

Так что я видел много часов Nixie в Интернете и подумал, что они выглядят великолепно, однако я не хотел тратить более 100 долларов на часы, в которые даже не входят лампы! и схемы. Я хотел сделать что-то отличное от большого диапазона довольно похожих на вид часов никси. В конце концов, я решил использовать гистограммы Nixie IN-9. Это длинные тонкие трубки, и высота светящейся плазмы зависит от тока через трубки. Трубка слева показывает шаг в часах, а трубка справа - в минутах. У них всего два вывода, что упрощает построение схемы. В этой конструкции есть часовая и минутная трубки, причем высота плазмы в каждой трубке представляет текущее время. Время ведется с помощью микроконтроллера Adafruit Trinket и часов реального времени (RTC).

Шаг 1: Сборка деталей

Сборка деталей
Сборка деталей

Есть два раздела, во-первых, электроника, а во-вторых, монтаж и отделка. Необходимые электронные компоненты: Adafruit Trinket 5V - 7,95 долларов США (www.adafruit.com/products/1501) Adafruit RTC - 9 долларов США (www.adafruit.com/products/264) 2 штангенциркуля Nixie IN-9 ~ 3 доллара США за трубку на eBay 1x Блок питания Nixie 140 В ~ 12 долларов на eBay 4 электролитных конденсатора по 47 мкФ 4 резистора по 3,9 кОм 2 потенциометра по 1 кОм 2 транзистора MJE340 NPN высокого напряжения ~ 1 доллар США 1x Регулятор LM7805 5 В ~ 1 доллар США 1x розетка 2,1 мм ~ 1 доллар 1x Проектная коробка с печатной платой ~ 5 долларов 1x Источник питания 12 В постоянного тока (я нашел старый от какого-то давно забытого устройства) Припой, соединительный провод и т. Д. Монтаж: Я решил установить электронику в небольшую черную пластиковую коробку для проекта, а затем установить трубки на старинный часовой механизм. Чтобы отметить час и минуты, я использовал медную проволоку, обмотанную вокруг трубок. Крепежные детали: античный часовой механизм - медный провод eBay 10 долларов - пистолет горячего клея eBay 3 доллара

Шаг 2: Схема

Схема
Схема
Схема
Схема
Схема
Схема
Схема
Схема

Первый шаг - собрать блок питания Nixie. Это был замечательный маленький комплект от eBay, включающий небольшую печатную плату, и компоненты просто нужно было припаять к плате. Этот конкретный источник питания варьируется в пределах 110-180 В, управляемый с помощью небольшого горшка на плате. Используя небольшую отвертку, отрегулируйте выход до ~ 140 В. Перед тем, как пройти весь путь, я хотел протестировать свои никси-лампы, для этого я построил простую тестовую схему, используя одну лампу, транзистор и потенциометр 10 кОм, который у меня был. Как видно на первом рисунке, источник питания 140 В подключен к аноду трубки (правая ножка). Катод (левая ножка) затем подключается к коллекторной ножке транзистора MJE340. Источник питания 5 В подключается к потенциометру 10 кОм, который соединяется с землей в базе транзистора. Наконец, эмиттер транзистора подключается через токоограничивающий резистор 300 Ом к земле. Если вы не знакомы с транзисторами и электроникой, это не имеет значения, просто подключите его и измените высоту плазмы с помощью ручки потенциометра! Как только это сработает, мы можем заняться изготовлением наших часов. Полную тактовую схему можно увидеть на второй принципиальной схеме. После некоторого исследования я нашел идеальный учебник на веб-сайте Adafruit Learn, делающий почти то, что я хотел делать. Учебное пособие можно найти здесь: https://learn.adafruit.com/trinket-powered-analog-m… В этом руководстве для управления двумя аналоговыми амперметрами используется контроллер Trinket и RTC. Использование широтно-импульсной модуляции (ШИМ) для управления отклонением иглы. Катушка амперметра усредняет ШИМ в эффективный сигнал постоянного тока. Однако, если мы используем ШИМ непосредственно для управления лампами, то высокочастотная модуляция означает, что плазменная планка не будет оставаться «зажатой» на основании трубки, и у вас будет парящая планка. Чтобы избежать этого, я усреднил ШИМ, используя фильтр нижних частот с большой постоянной времени, чтобы получить сигнал почти постоянного тока. Это имеет частоту среза 0,8 Гц, это нормально, так как мы обновляем время только каждые 5 секунд. Кроме того, поскольку барграфы имеют ограниченный срок службы и могут нуждаться в замене, а не каждая трубка точно такая же, я поставил горшок 1k после трубки. Это позволяет настроить высоту плазмы для двух трубок. Чтобы подключить брелок к часам реального времени (RCT), подключите контакт Trinket 0 к RTC-SDA, контакт Trinket 2 к RTC-SCL и Trinket-5v к RTC-5v, а заземление Trinket GND к земле RTC. В этой части может быть полезно просмотреть инструкцию по часам Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. После того, как Trinket и RTC правильно подключены, подключите газовые лампы, транзисторы, фильтры и т. Д. На макетной плате, внимательно следуя принципиальной схеме.

Чтобы заставить RTC и Trinket разговаривать, вам сначала нужно загрузить правильные библиотеки с Adafruit Github. Вам нужны TinyWireM.h и TInyRTClib.h. Сначала мы хотим откалибровать трубки, загрузите эскиз калибровки в конце этой инструкции. Если ни один из эскизов в конце не работает, попробуйте эскиз часов Adafruit. Я настроил эскиз часов Adafruit, чтобы он работал наиболее эффективно с никсидными трубками, но эскиз Adafruit будет работать нормально.

Шаг 3: Калибровка

Калибровка
Калибровка

После того, как вы загрузили калибровочный эскиз, необходимо отметить градуировку.

Есть три режима калибровки, первый устанавливает максимальную мощность для обеих газовых трубок. Используйте это, чтобы отрегулировать горшок так, чтобы высота плазмы в обеих пробирках была одинаковой и была немного ниже максимальной высоты. Это гарантирует, что отклик будет линейным во всем тактовом диапазоне.

Вторая настройка калибрует минутную трубку. Он меняется между 0, 15, 30, 45 и 60 минутами каждые 5 секунд.

Последняя настройка повторяется для каждого часа. В отличие от часов Adafruit, индикатор часа перемещается с фиксированным шагом один раз в час. При использовании аналогового измерителя было сложно получить линейный отклик для каждого часа.

После того, как вы настроили горшок, загрузите эскиз для калибровки в течение нескольких минут. Возьмите тонкую медную проволоку и отрежьте ее немного. Оберните его вокруг трубки и скрутите два конца вместе. Сдвиньте его в правильное положение и с помощью пистолета для горячего клея поместите небольшую каплю клея, чтобы она оставалась в нужном месте. Повторите это для каждой минуты и часа.

Я забыл сфотографировать этот процесс, но на фотографиях видно, как крепится провод. Хотя я использовал гораздо меньше клея, чтобы прикрепить проволоку.

Шаг 4: Монтаж и отделка

Монтаж и отделка
Монтаж и отделка
Монтаж и отделка
Монтаж и отделка
Монтаж и отделка
Монтаж и отделка

После того, как все лампы откалиброваны и заработают, настало время навсегда сделать схему и установить ее на какую-нибудь основу. Я выбрал старинный часовой механизм, так как мне понравилось сочетание антиквариата, 60-х и современных технологий. При переходе с макета на стрип-плату будьте очень осторожны и не торопитесь, проверяя все соединения. Коробка, которую я купил, была немного маленькой, но, аккуратно разместив и приложив немного усилий, мне удалось подогнать все по размеру. Я просверлил сбоку отверстие для блока питания и еще одно - для проводов. Чтобы избежать коротких замыканий, я накрыл никси-провода термоусадочной пленкой. Когда электроника будет установлена в коробке, приклейте ее к задней части часового механизма. Для крепления трубок я использовал горячий клей и приклеил концы скрученной проволоки к металлу, следя за тем, чтобы они были прямыми. Я, наверное, использовал слишком много клея, но это не очень заметно. Это может быть что-то, что можно улучшить в будущем. Когда все будет установлено, загрузите эскиз часов Nixie в конце этой инструкции и полюбуйтесь своими прекрасными новыми часами!

Шаг 5: Эскиз Arduino - Калибровка

#define HOUR_PIN 1 // Отображение часов через ШИМ на Trinket GPIO # 1

#define MINUTE_PIN 4 // Отображение минут через ШИМ на Trinket GPIO # 4 (через вызовы Таймера 1)

int часов = 57; int минут = 57; // устанавливаем минимальную ШИМ

пустая настройка () {pinMode (HOUR_PIN, OUTPUT); pinMode (МИНУТ_ПИН, ВЫХОД); PWM4_init (); // настраиваем выходы ШИМ

}

void loop () {// Используйте это, чтобы настроить потенциометры, чтобы убедиться, что максимальная высота трубки соответствует analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Используйте это для калибровки минутных приращений

/*

analogWrite4 (57); // задержка 0 минут (5000); analogWrite4 (107); // задержка 15 минут (5000); analogWrite4 (156); // задержка 30 минут (5000); analogWrite4 (206); // задержка 45 минут (5000); analogWrite4 (255); // задержка 60 минут (5000);

*/

// Используйте это для калибровки приращения часов / *

analogWrite (HOUR_PIN, 57); // 57 - минимальный выход и соответствует задержке 1 час / мин (4000); // задержка 4 секунды analogWrite (HOUR_PIN, 75); // 75 - это выход, который соответствует задержке 2 часа ночи / вечера (4000); analogWrite (HOUR_PIN, 93); // 93 - это выход, который соответствует задержке 3 часа ночи / вечера (4000); analogWrite (HOUR_PIN, 111); // 111 - это выход, который соответствует задержке 4 утра / вечера (4000); analogWrite (HOUR_PIN, 129); // 129 - это выход, который соответствует задержке 5 утра / вечера (4000); analogWrite (HOUR_PIN, 147); // 147 - это выход, который соответствует задержке 6 утра / вечера (4000); analogWrite (HOUR_PIN, 165); // 165 - это выход, который соответствует задержке 7 утра / вечера (4000); analogWrite (HOUR_PIN, 183); // 183 - это выход, который соответствует задержке 8 утра / вечера (4000); analogWrite (HOUR_PIN, 201); // 201 - это выход, который соответствует задержке 9 утра / вечера (4000); analogWrite (HOUR_PIN, 219); // 219 - это выход, который соответствует задержке 10 утра / вечера (4000); analogWrite (HOUR_PIN, 237); // 237 - это выход, который соответствует задержке 11 утра / вечера (4000); analogWrite (HOUR_PIN, 255); // 255 - это результат, который соответствует 12 часам утра.

*/

}

void PWM4_init () {// Настраиваем ШИМ на Trinket GPIO # 4 (PB4, контакт 3), используя Таймер 1 TCCR1 = _BV (CS10); // без предделителя GTCCR = _BV (COM1B1) | _BV (PWM1B); // очищаем OC1B при сравнении OCR1B = 127; // инициализация рабочего цикла до 50% OCR1C = 255; // частота }

// Функция, разрешающая аналоговую запись на Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // долг может быть от 0 до 255 (от 0 до 100%)}

Шаг 6: Эскиз Arduino - Часы

// Аналоговые счетчики Adafruit Trinket

// Функции даты и времени с использованием DS1307 RTC, подключенного через I2C и TinyWireM lib

// Загрузите эти библиотеки из репозитория Adafruit Github и // установите в каталог библиотек Arduino #include #include

// Для отладки раскомментируйте серийный код, используйте FTDI Friend с его выводом RX, подключенным к выводу 3 // Вам понадобится терминальная программа (например, бесплатная PuTTY для Windows), настроенная на // порт USB друга FTDI по адресу 9600 бод. Раскомментируйте последовательные команды, чтобы узнать, что происходит // # define HOUR_PIN 1 // Отображение часов с помощью PWM на Trinket GPIO # 1 #define MINUTE_PIN 4 // Отображение минут с помощью PWM на Trinket GPIO # 4 (через вызовы таймера 1) // SendOnlySoftwareSerial Serial (3); // Последовательная передача на вывод 3 брелка RTC_DS1307 rtc; // Настраиваем часы реального времени

пустая настройка () {pinMode (HOUR_PIN, OUTPUT); // определяем выводы измерителя ШИМ как выходы pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Устанавливаем таймер 1 для работы ШИМ на выводе 4 брелка TinyWireM.begin (); // Начинаем I2C rtc.begin (); // Запускаем часы реального времени DS1307 //Serial.begin(9600); // Запуск последовательного монитора со скоростью 9600 бод if (! Rtc.isrunning ()) {//Serial.println("RTC НЕ работает! "); // следующая строка устанавливает RTC на дату и время компиляции этого скетча rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t значение часа, значение минуты; uint8_t часовое напряжение, минутное напряжение;

DateTime now = rtc.now (); // Получение информации RTC hourvalue = now.hour (); // Получить час if (hourvalue> 12) hourvalue - = 12; // Эти часы 12 часовая минутаvalue = now.minute (); // Получаем минуты

минутапряжение = карта (значение минуты, 1, 60, 57, 255); // Преобразование минут в рабочий цикл ШИМ

если (значение часа == 1) {analogWrite (HOUR_PIN, 57); } если (значение часа == 2) {analogWrite (HOUR_PIN, 75); // каждый час соответствует +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

если (значение часа == 4) {analogWrite (HOUR_PIN, 111); } если (значение часа == 5) {analogWrite (HOUR_PIN, 126); } если (значение часа == 6) {analogWrite (HOUR_PIN, 147); } если (значение часа == 7) {analogWrite (HOUR_PIN, 165); } если (значение часа == 8) {analogWrite (HOUR_PIN, 183); } если (значение часа == 9) {analogWrite (HOUR_PIN, 201); } если (значение часа == 10) {analogWrite (HOUR_PIN, 215); } если (значение часа == 11) {analogWrite (HOUR_PIN, 237); } если (значение часа == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (минутное напряжение); // минутная аналоговая запись может оставаться такой же, как работает отображение // код для перевода процессора в спящий режим может быть предпочтительнее - мы отложим delay (5000); // проверяем время каждые 5 секунд. Вы можете это изменить. }

void PWM4_init () {// Настраиваем ШИМ на Trinket GPIO # 4 (PB4, контакт 3), используя Таймер 1 TCCR1 = _BV (CS10); // без предделителя GTCCR = _BV (COM1B1) | _BV (PWM1B); // очищаем OC1B при сравнении OCR1B = 127; // инициализация рабочего цикла до 50% OCR1C = 255; // частота }

// Функция, разрешающая аналоговую запись на Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // долг может быть от 0 до 255 (от 0 до 100%)}

Рекомендуемые: