На этот раз я представляю проект часов на газоразрядных индикаторах и микроконтроллере PIC18F2550. Я выбрал этот проект, чтобы получить больше опыта в проектировании и отладке оборудования. Так же хотел попробовать реализовать импульсный источник питания(DC-DC), поэтому в этих часах использовал два DC-DC преобразователя. Один для формирования высокого напряжения 170 Вольт, собранный на MAX1771 и используемый для питания индикаторов ИН-12А, заполненными неоном, а второй собранный на TL2575, используется для питания остальных компонентов схемы напряжением 5 Вольт. В основе устройства микроконтроллер PIC18F2550. Основная коммуникационная шина в схеме - I2C, ее используют DS1307 - микросхема часов реального времени, а также два расширителя ввода/вывода MCP23017, которые управляют высоковольтными дешифраторами К155ИД1(аналог 74141). PIC также содержит устройство USB HID, используемое для связи с компьютером и установки времени/параметров.
Программное обеспечение для микроконтроллера
Я хотел добавить некоторые дополнительные функции к часам, и мне нужен был способ их установки. Поскольку у меня уже была поддержка USB в предыдущем проекте, я решил использовать тот же микроконтроллер (PIC18F2550) и для этого устройства. Но его использование накладывает некоторые ограничения. Я знал, что хочу добавить RGB-светодиоды в проект и иметь возможность регулировать яркость каждого цвета с помощью ШИМ. К сожалению, выбранный мной контроллер имеет только два аппаратных модуля PWM, и один уже используется для управления барграфом ИН-13. Поскольку используется высокая тактовая частота (Fosc = 48 МГц), я использовал второй модуль таймера для программной реализации ШИМ и вызывал ее из обработчика прерываний. Чтобы установить яркость отдельного цвета, установите предел яркости цвета от 0 до 255. Прерывание вызовет функцию достаточно быстро, поэтому светодиоды плавно тускнеют, не мерцая.
void Nixie_SoftwarePWM(void) { static unsigned char Tim0Ctr = 0; // Timer will increment from 0 -> 255 then roll over. Tim0Ctr++; // +---------------------------------------------------+ // | Software PWM. Counter will run from 0 to 255. Set | // | the color limits within the same range where | // | 0 = off, 255 = Always On. | // +---------------------------------------------------+ // Red LED control if (Tim0Ctr < RedLim) NIXIE_RED_LED_ON(); else NIXIE_RED_LED_OFF(); // Green LED control if (Tim0Ctr < GreenLim) NIXIE_GREEN_LED_ON(); else NIXIE_GREEN_LED_OFF(); // Blue LED control if (Tim0Ctr < BlueLim) NIXIE_BLUE_LED_ON(); else NIXIE_BLUE_LED_OFF(); }
Схема устройства
Печатная плата
После удачной тестовой прогонки часов я спроектировал печатную плату. Это двухслойная плата размером 24х11 см. В правом нижнем углу находятся оба источника питания. Я немного переборщил с шириной дорожек печатной платы, так как хотел убедиться, что не будет проблем с прохождением больших токов. Я также экспериментировал с полигоном в крайнем левом углу платы, чтобы попытаться защитить RTC от возможных помех. В самом центре платы находится держатель батарейки типа CR2032. Батарея будет поддерживать работу RTC и ход времени, если пропадет питание или будет сброшен микроконтроллер.
Фото готового устройства
Скриншот приложения для ПК
Видео работы устройства
Файлы к статье "Часы на PIC18F2550 и газоразрядных индикаторах ИН-12А" | |
Описание:
Исходный код, файл прошивки микроконтроллера, приложение для ПК, схема |
|
Размер файла: 815.98 KB Количество загрузок: 254 | Скачать |