Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Контроллер вакуумного люминесцентного дисплея

Компоненты и расходные материалы

Arduino UNO
... или любой другой 8-битный Arduino
× 1
Дисплей VFD
наш приятель
× 1
CD4094
Интегральная схема DIP
× 2
CD4017
Интегральная схема DIP
× 2
BC557
... или эквивалентный транзистор (2N3906, 2SA733, ecc) или транзисторы PNP с более высоким напряжением
× 17
BC547
... или аналогичный транзистор (2N3904, 2SC945, ecc)
× 2
PC817
оптопара, которую можно найти в большинстве коммутирующих блоков питания, нижняя часть
× 1
1N4007 - высоковольтный диод с высоким номинальным током
× 4
Электролитические конденсаторы
значения и напряжения см. на схеме
× 4
Конденсатор 470 нФ
любой подходящий тип
× 1
Perfboard
иначе:картон, protoboard или, в случае вашего предпочтительного решения для сборки
× 1
Резисторы 1/4 Вт
значения см. на схеме
× 24
Джамперы Dupont
... или ваши предпочтительные связи и сообщения
× 1
Провод
тонкие провода для обратной стороны схемы, а также для подключения дисплея, не используйте там разъемы, потому что контакт расстояние может меняться, и быстрая пайка просто проще
× 1

Необходимые инструменты и машины

Паяльник (общий)
Паяльная проволока
купите его в местном магазине, никаких дешевых вещей для этого, лучше 0,5 мм
Wire Clipper

Об этом проекте

Что толку?

Дисплеи VFD больше не пользуются популярностью по ряду очевидных причин, они сделаны из стекла («ох круто!»), Имеют нить накаливания («правда ??»), они в основном электронные лампы («интересно!»), Они делают такой яркий, иногда цветной, поверх него нужен темный пластик («ох, снова круто!»).

Обычно вам нужен специальный чип для управления ими, большинство модулей / устройств поставляются с этим чипом, которым вы можете управлять независимо через I2C или SPI (что намного лучше с точки зрения простоты), если вы покупаете или имеете один из этих дисплеев и не имеете с такой микросхемой не так-то просто «подключить и работать», идеальным вариантом было бы купить эту микросхему (которая обычно поставляется в формате SMD). Эта схема дает довольно приличный интерфейс, как у Arduino, и вполне может управлять любым VFD, включая громоздкие «ламповые» винтажные, но матричные дисплеи с большим количеством сегментов, кстати, не лучшая идея, вы можете расширить схему но ТЫСЯЧИ ... ммм, может, и нет.

Плюсы и минусы

Плюсы

  • почти нулевая цена (надеюсь)
  • легко найти запчасти
  • возможность высокого напряжения (до сотен вольт на анодах)
  • напряжения независимых сетей и анодов.
  • требуется всего 3 линии цифровых данных.
  • расширяемый (на всякий случай потребуется больше процессора)
  • код готов для каждого 8-битного Arduino

Минусы

  • требуется множество разных напряжений и источников питания (что не странно для частотно-регулируемых приводов).
  • без функции диммирования (кроме привода напряжения)
  • использует два ресурса Arduino, SPI и timer1.
  • нельзя вешать микроконтроллер, иначе сканирование зависнет на сетке
  • это не пара резисторов и светодиодов, это требует некоторой работы.

Принцип работы

ЧРП обычно работает в мультиплексном режиме, как 2D-матрица с осями X и Y, вам нужно нагреть нить накала (катод, вы видите тонкие провода перед ним), а также подключить землю к этой нити, положительное напряжение на сетку (управляющая сетка, одна точка оси X) и снова положительное напряжение на выводе сегмента (анод, одна точка оси Y), в этой точке загорается сегмент (только один). Чтобы осветить любой сегмент и любую комбинацию, и имея "несколько" проводов вокруг, мультиплексирование выбирает одну сетку за раз и в то же время настраивает аноды для освещения соответствующих сегментов под этой сеткой, через мгновение он выбирает другую сетку. и конфигурирует аноды на этот раз так, чтобы соответствующие сегменты правильно освещались под этой второй сеткой. Ускорение этого непрерывного повторяющегося сканирования приводит к тому, что движение становится настолько быстрым, что на наших глазах оно не выбирает одну сетку за раз, а сразу выглядит управляемым, это так называемая POV (постоянство зрения).

В этой схеме используются два типа интегральных схем из одного семейства, два CD4094 и два CD4017, вместо этого 4094 управляет анодами, а 4017 управляет сетками, 4094 может сохранять конфигурацию высокого / низкого уровня на своих выходах и хороши для анодов. Со стороны, 4017 - это классические микросхемы с 10 секвенсорными выходами, идеально подходящие для сетей. Как только в 4094 загружена конфигурация моментных анодов, сигнал «ok» (стробоскоп) применяет эту настройку и в то же время переключает 4017 на один шаг, обеспечивая автоматическую последовательность.

Силовая часть - это в основном только некоторые транзисторы BC557 (или эквивалентные), которые допускают более широкий диапазон напряжения на анодах, потому что для этих дисплеев требуется более высокое напряжение, чем 5 В на Arduino. Сети управляются напрямую от 4017, оптопара PC817 допускает большее напряжение, чем 5 В около 4017, а также другой уровень напряжения, чем у CD4094, это ОЧЕНЬ упрощает все.

Arduino должен обеспечивать всю оркестровку, это означает, что он должен хранить все конфигурации сегментов и загружать схему с настройкой анода на каждом переключателе сетки, это означает, что действительно требуется умный код, чтобы делать это, помимо действий пользователя. Код, который я сделал, устанавливает прерывание на основе таймера, которое повторно загружает микросхемы 4094 на каждом шаге, фактически около 1000 раз в секунду, поэтому для 10 сеток он дает частоту обновления 100 Гц, это хорошо. Существует массив данных, в котором хранится конфигурация сегментов и который может быть изменен в коде, без определенных процедур или последующих действий, процедура прерывания сама загрузит данные.

Источники питания

Напряжение сети на микросхемах 4017 может составлять от 5 до 18 В постоянного тока и иметь ток не менее 50 мА, его не нужно регулировать. Обычно (насколько я видел) 12 В достаточно для любой ситуации, увеличение яркости не приводит к значительному увеличению яркости (если это электронная лампа, сеть не требует больших напряжений).

Напряжение на анодах может быть буквально от 0 В до того, что могут выдержать ваши транзисторы (50 В постоянного тока для BC557), обычно, если дисплей идеален, 20-30 В постоянного тока отлично справятся с этой задачей, а отсутствие регулирования - хорошо. Для нормальной настройки 50 мА более чем достаточно.

Цифровое питание может составлять 5 В постоянного тока или также 3,3 В постоянного тока в случае этих типов Arduinos или MCU (еще не пробовали), для этого требуется примерно 100 мА мощности (надеюсь, меньше), в случае, если CD4094 станет вялым, вы можете уменьшить тактовую частоту SPI в коде. и \ или используйте вывод Q'S из первого 4094 для более согласованного взаимодействия.

Источник питания нити накала должен обеспечивать ток не менее 5 В 200-300 мА. Если у вас уже есть источник постоянного тока, вы можете избежать использования мостового выпрямителя и конденсатора 1000 мкФ, но НЕЛЬЗЯ использовать тот же цифровой источник питания для Arduino. Фактическая нить накала в случае небольшого дисплея прибора работает от 3 В и может потреблять 150 мА.

Советы и примечания

  • перед подключением проводов, если вы не знаете, какой контакт для чего предназначен, лучше сначала попробовать дисплей, обычно пара батареек AA, соединенных последовательно, подходит для нити накала (обычно это боковые контакты), в то время как пара последовательно подключенных батарей на 9 В обеспечит положительную поляризацию как решеток, так и анодов; решетки и аноды часто сгруппированы. Хорошая идея - найти фактический «нулевой анод», потому что это, скорее всего, первый сегмент числовой или буквенно-цифровой части, часто одинаковый и с одинаковым порядком для всех сеток. случайный обратный порядок делает программу более неуклюжей в конце, сетки вместо этого, по-видимому, следуют порядку контактов
  • воздержитесь от питания нити накала, понемногу увеличивайте ток, оставайтесь в темноте, и в тот момент, когда вы увидите, что нити слегка накаливаются, просто немного уменьшитесь, и все готово, потенциометр мощности идеален, вы иногда находите их в старые телевизоры, но сейчас это сложно.
  • разумно увеличивать напряжение на сетках и анодах, люминофоры могут сгореть безвозвратно, схема также работает в режиме сканирования, поэтому, если система зависнет, вы будете постоянно обеспечивать слишком большую мощность на одном участке сети.
  • поиграйте с компромиссом в отношении напряжений сетей \ анодов, помните, что сети могут потреблять некоторый ток, не стоит на этом настаивать, лучше помните об анодах.
  • использование одного трансформатора для всего вашего проекта \ установки идеально, также можно использовать некоторые смешанные решения, но переключение блоков питания и особенно заземленных может сыграть вам плохую шутку, поэтому для экспериментов ВСЕГДА хорошая идея использовать классический трансформаторные блоки
  • вы можете расширить этот драйвер, добавив несколько CD4094 и \ или CD4017, конечно, если вам нужно 8 анодов или меньше, вы можете избавиться от второго 4094, тот же сценарий для 4017, но если вы хотите, чтобы драйвер был под рукой, просто соберите это максимально полно
  • как вы можете видеть, на основаниях анодных транзисторов нет резисторов, это дает сверхбыстрый привод и сужает список деталей, но заставляет CD4094 потреблять некоторую мощность, они почти не нагреваются, но некоторые образцы микросхем могут иметь слишком сильный выход, проверьте потребление тока на случай, если микросхемы не взорвутся, потому что рассеиваемая мощность ВНУТРИ максимально допустимой, ток может быть в диапазоне 4 мА на вывод при питании 5 В
  • старые уставшие дисплеи могут быть заменены некоторыми электрическими ударами по нити, если тусклый весь дисплей, а не только сгоревший сегмент, они говорят, что вы подводите провода явно раскаленными (желтыми) пять раз подряд на пару секунд каждый раз, никогда не пробовал, но это может потребовать вдвое больше номинального напряжения нити накала, это очищает их, но, видимо, это более полезно для очень старых \ антикварных ... и это рискованно, это не лампочки, вы можете защелкнуть провода

Код

  • Код Arduino с рабочим распорядком
Код Arduino с рабочей программой Arduino
 / * Универсальный интерфейс аппаратного обеспечения дисплея VFD Программа Arduino Авторские права (C) 2019 Genny A. Carogna Эта программа является бесплатным программным обеспечением:вы можете распространять и / или изменять ее в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии. Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Подробнее см. Стандартную общественную лицензию GNU. Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если нет, см. . * // * этот код использует ресурсы из Arduino «за кулисами», модули timer1 и SPI используются и заняты * , поэтому у вас могут возникнуть большие проблемы с использованием SPI, контактов SPI и некоторых функций, основанных на таймере1 ... предлагаемая схема * не имеет встроенной памяти, поэтому настройку сегмента необходимо постоянно "сканировать", каждую сетку, 100 раз в секунду *, из массива сегментов Arduino, это также относится к так называемой "чрезмерной" работе ЦП, которая, к вашему сведению, * не более чем обычное использование микроконтроллера в конце, может достигать около 3 % работы ЦП с точки зрения занятого времени, вы также можете попробовать * использовать обычные инструменты SPI Arduino, но для этого требуется углубленный анализ вывода и процедуры * * этот код работает с любым 8-битным Arduino, также должно работать 3,3 В хорошо, может быть, уменьшите частоту SCK, учитывая, что CD4094 * питаются от него и могут "понизить напряжение" (да, именно принципы разгона, чтобы поджарить вашего любимого PC) * / # define ledLed 13 // это вывод светодиода, который светит на светодиод, вы знаете, что светодиод означает что-то, связанное со светодиодами (конечно, ученый) #define strobePin 4 // вывод Arduino, предназначенный для строка "строба" # define strobeHold 10 // микросекунд // время удержания для переключения оптрона ... не мегагерцовый, но приемлемый // данные для моих дисплеев (видеокассетный магнитофон, устройство для чтения компакт-дисков с аудиоаппаратурой и компактная стереосистема) ... не возражайте, удалите и просто определите "gridAmount" и "anodeAmount" #define JVC # define mitsubishiGrids 10 # define mitsubishiAnodes 9 # define marantzGrids 9 # define marantzAnodes 14 #define JVCGrids 11 # определите JVCAnodes 19 # если определено mitsubishi # define gridAmount mitsubishiGrids # define anodeAmount mitsubishiAnodes # elif defined marantz # define gridAmount marantzGrids # define anodeAmount marantzAnodes # elif defined JVC # define gridAmount JVCGrids # define anodeAmount JVCAnodes # endif // сегменты, сегменты x [0] означает ноль сетки, d наименее значимый бит - это нулевой сегмент в этой сетке // вы можете получить доступ к этому массиву и изменить его по своему усмотрению, откуда угодно, не делая ничего другого, эффект немедленно виден // на дисплее и остается на экране, пока вы его не используете. Не меняйте биты, для отображения более 8 сегментов на сетку вам нужен // 16- или 32-битный контейнер на сетку, это управляется автоматически из #define (s) выше # if anodeAmount> 16volatile uint32_t сегменты [gridAmount] ={0}; // более 16 сегментов на сетку (требуется 32 бита) #elif anodeAmount> 8volatile uint16_t сегменты [gridAmount] ={0}; // более 8 сегментов на сетку (16 бит, двойная передача) #elsevolatile uint8_t сегменты [gridAmount] ={0}; // 8 или меньше сегментов на сетку (8 бит) #endifvoid setup () {// быстро / напрямую переключает выводы SPI и некоторые функциональные на вывод * portModeRegister (digitalPinToPort (PIN_SPI_SS)) | =digitalPinToBitMask (PIN_SPI_SS); * portModeRegister (digitalPinToPort (PIN_SPI_MOSI)) | =digitalPinToBitMask (PIN_SPI_MOSI); * portModeRegister (digitalPinToPort (PIN_SPI_SCK)) | =digitalPinToBitMask (PIN_SPI_SCK); * portModeRegister (digitalPinToPort (strobePin)) | =digitalPinToBitMask (strobePin); * portOutputRegister (digitalPinToPort (strobePin)) &=~ digitalPinToBitMask (strobePin); // установить низкий уровень * portModeRegister (digitalPinToPort (ledLed)) | =digitalPinToBitMask (ledLed); * portOutputRegister (digitalPinToPort (ledLed)) &=~ digitalPinToBitMask (ledLed); // ставим малую задержку (800); // некоторая задержка для ожидания завершения сброса CD4017 (вам нужно запустить код ПОСЛЕ включения питания 4017, это сделает его автоматическим, если вы включите все сразу) cli (); // отключает прерывания, чтобы позволить нам настраивать некоторые вещи, не позволяя кошкам и собакам убегать отовсюду // конфигурация таймера 1, это заставляет прерывание происходить "сетка умноженная на 100" в секунду ... это дает общее обновление 100 Гц, что нормально TCCR1A =0; TCCR1B =0; TCNT1 =0; OCR1A =160000 / gridAmount; TCCR1B | =(1 < 24 SPDR =~ uint8_t (сегменты [поворот]>> 24); // нам нужны инвертированные биты на CD4094 (cos схемы транзисторов) while (! (SPSR &(1 < 16 SPDR =~ uint8_t (сегменты [поворот]>> 16); // нам нужны инвертированные биты на CD4094 (cos схемы транзисторов) while (! (SPSR &(1 < 8 SPDR =~ uint8_t (сегменты [поворот]>> 8); // нам нужны инвертированные биты на CD4094 (cos схемы транзисторов) while (! (SPSR &(1 < 2) pos ++; uint16_t mask =0xFF80; числа uint8_t [] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; переключатель (pos) {case 0:case 1:case 4:case 5:case 6:case 7:case 8:segment [pos] &=mask; сегменты [pos] | =числа [val]; ломать; случай 2:если (val ==1) сегменты [1] | =(1 <<8); иначе сегменты [1] &=~ (uint16_t (1) <<8); ломать; случай 9:сегменты [9] &=0xFFF0; если (val ==1) сегменты [9] | =3; иначе, если (val ==2) сегменты [9] | =B1101; }} // простая визуализация семи сегментных номеровvoid marantzPrintNum (uint8_t val, uint8_t pos) {if (pos> 5) return; pos ++; pos ++; uint16_t mask =0xFF80; // битовая маска для удаления цифр uint8_t numbers [] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; сегменты [позиция] &=маска; // удаляем любые сегменты цифр [pos] | =numbers [val]; // установить цифру} // легко визуализировать семисегментный номерvoid JVCPrintNum (uint8_t val, uint8_t pos) {// прийти (вам действительно все равно)} // 

Схема

Я избегал рисовать ВСЕ транзисторы BC557, потому что они все равно подключены ко всем выходам CD4094.

На микросхемах 4017 вы должны настроить переключатель перемычек (на красной линии), он сбрасывает два 4017 по завершении сканирования сеток, вы должны подключить (или припаять) летающую перемычку на выходном контакте ПОСЛЕ последней сетки , поэтому, если на вашем дисплее 10 сеток, перемычка перейдет на 11-й выход.

Соединения Arduino обведены красным, вы можете использовать для них питание от USB, но настоятельно рекомендуется использовать обычный трансформатор старого образца для оставшихся источников питания, если у вас уже есть заземленный источник питания, такой как ваш компьютер. Эти источники должны быть полностью постоянного тока, за исключением, возможно, источника питания нити накала. Я добавил несколько диодов, потому что, вероятно, вам понадобится отдельный трансформатор с вторичной обмоткой низкого напряжения. Мощность накала обычно составляет около 3 В 150 мА, трансформатора 5 В переменного тока будет достаточно. «Балластом» может быть потенциометр мощности с проводным подключением, например, 100 Ом, или фиксированный резистор, или также диоды 1N4007 для понижения напряжения.

Транзисторы BC557 подтягивают аноды до анодного напряжения, а резисторы 100 кОм позволяют упасть напряжению привода, когда сегмент выключен, в то время как CD4094 обычно остается при 5 В.

CD4017 будут питаться от сетевого напряжения и не потребуют дополнительных транзисторов. Для 4017 есть схема сброса "гетто", которая длится примерно одну десятую секунды, вы должны дождаться, пока она установится, прежде чем запускать код.
«Исходная» схема для каскадирования некоторых CD4017 требовала других микросхем логических вентилей, вместо этого я использовал NPN-транзистор и саму оптопару для репликации логического элемента И, он достаточно быстро закрывается, поэтому идеально подходит для задачи, при отпускании он вместо этого немного медленнее но нас это не волнует, тем более что тактовые входы на 4017 срабатывают по Шмитту и требуемая скорость там не «страшна».

Есть разные основания для фишек и прочего, как видите, присмотритесь.

Производственный процесс

  1. Сборка Squid Games Doll с использованием Arduino UNO
  2. Растровая анимация на сенсорном экране TFT ILI9341
  3. Веб-контроллер DMX
  4. Игра Arduino Pong - OLED-дисплей
  5. Игровой контроллер Arduino
  6. Unopad - MIDI-контроллер Arduino с Ableton
  7. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  8. Игра с дисплеем Nextion
  9. DIY вольтметр с Arduino и дисплеем Nokia 5110
  10. BME280 Температура, влажность и давление на дисплее Nextion