cahek80
29.05.2015, 00:30
Доброго времени суток!
Сначала немного скучной предыстории:
Данный контроллер основан на идее контроллера "Sokol_And". Но мне не хватало некоторых функций, которые я бы мог настроить под себя. Поэтому было решено сделать свой акваконтроллер (с преферансом и библиотекаршами), основанный на pic16f628a (впоследствии я конечно же пожалел, что не начал делать хотя-бы на stm32f030f4, но, уже спаянную плату выбрасывать не хотелось).
Аквариумный контроллер оснащён микропроцессором PIC16F628A.
Экран:
- жидкокристаллический (16х2);
- подсветка экрана.
Две кнопки для настройки меню.
Часы реального времени DS1307.
Батарейка для непрерывного хода часов.
Энергонезависимая память данных.
Три выхода на 220 В (BT136-800).
Два выхода на 12 В (IRFZ44N).
Один из выходов на 12 В может работать в режиме PWM (IRFZ44N).
Контроллер может управлять по времени тремя нагрузками и одним PWM (светодиодной лентой, например). Частота PWM равна 1 Кгц. Нагрузки могут быть как на 220 вольт, так и на 12 (с некоторыми ограничениями по каналам 12 вольт).
К сожалению температурой управлять данный контроллер не может, не хватило памяти (это и есть та причина, по которой я пожалел о выборе контроллера).
При включении питания отрисовывается главный экран, на котором отображается текущее время и состояние каналов.
500099
При нажатии кнопки "S2" в главном меню контроллера на 20 минут принудительно включаются выбранные заранее каналы. При этом в нижнем правом углу пишется буква "М"
500121
Всего в контроллере можно настроить 10 таймеров (от 0 до 9) Теоретически количество каналов можно увеличить, но свободной памяти осталось несколько байт и это будет сделать непросто.
500100
Каждый таймер настраивается на нужный канал, устанавливается время его включения и выключения.
500101
Во второй строке первая цифра отвечает за номер канала, которым управляет данный таймер.
При выборе канала №4 таймер управляет каналом PWM. Время перехода от 0 до 255 и обратно составляет также 20 минут. К сожалению из-за нехватки памяти не реализован алгоритм, обеспечивающий равномерность загорания и погасания светодиодов. Хотя при таком длительном изменении это не заметно.
Время установки таймеров изменяется с шагом в 10 минут.
После выбора пункта "Y" новое значение записывается в память.
Для настройки существует 2 кнопки, одна для переключения режимов, вторая для изменения значения.
Если не трогать кнопки, то через пару минут контроллер автоматически переключается на главный экран.
Также при переключении по пунктам меню после таймеров идёт настройка выходов, которые будут включаться при нажатии кнопки "S2" в главном меню.
500130
На плате включена возможность управления как 12 вольтовой нагрузкой, так и нагрузкой 220-вольт.
В случае 12-и вольт управление идёт через транзисторы. Нагрузка 220 вольт включается через тиристоры. При управлении индуктивной нагрузкой необходимо будет добавление цепи из резистора и конденсатора.
На плате есть 2 перемычки, J1 и J2. Через них можно подключить один из транзисторов (T1) для управления 12 вольтовой нагрузкой. При подключении перемычки J1 управление дублируется с каналом 2.
При подключении перемычки J2, транзистор подключается к каналу 4 (PWM).
Транзистор T2 подключен к каналу 1.
Вот краткое описание контроллера. По возможности фотографии собранного устройства выложу на выходных.
Плата размерами получилась чуть больше платы экранчика.
Экранчик используется китайский, поэтому надписи выполнены латиницей. При желании надписи можно русифицировать, все значения записаны в EEPROM, при необходимости укажу адреса и длину надписей.
Изначально таймеры настроены неправильно. После сборки необходимо настроить их под свои нужды.
PS
Контроллер собран и работает уже неделю. Управления подсветкой экранчика нет, мне это было не актуально, да и памяти в контроллере не хватит уже.
В моем случае один канал (канал 3) идёт на включение основного освещения на лампах. Канал PWM используется для управления 30 ватт диодами светодиодной подсветки, которые реализуют рассвет-закат и доп. освещение аквариума.
Канал 2 используется для включения блока питания для светодиодного освещения.
Канал 1 - включается досветка красными светодиодами (светодиодная лента), а также работает как ночник.
Схема:
500119
Печатная плата (нарисовано не оптимально, при желании можно нарисовать красивее конечно):
500120
Во вложении схема, плата, прошивка, проект под Протеус(8) и картинка с некой схемой, описывающей логику работы с меню.
500127
PPS
Следующий мой контроллер будет уж точно не на контроллерах PIC. Скорее всего это будет STM32 с графическим дисплеем 2.2" или 3" (возможно с тачем), несколько PWM, 2 датчика температуры, секундными таймерами и прочим.
Внимание! В процессе доработки плата немного менялась. Я её проверял, но мог пропустить некоторые мелочи.
В архиве в файле lay есть и первая версия платы (под названием Плата+), в которой был предусмотрен выход на термодатчик, который впоследствии пришлось вырезать.
UPD
всё, включая исходники.
562595
Сначала немного скучной предыстории:
Данный контроллер основан на идее контроллера "Sokol_And". Но мне не хватало некоторых функций, которые я бы мог настроить под себя. Поэтому было решено сделать свой акваконтроллер (с преферансом и библиотекаршами), основанный на pic16f628a (впоследствии я конечно же пожалел, что не начал делать хотя-бы на stm32f030f4, но, уже спаянную плату выбрасывать не хотелось).
Аквариумный контроллер оснащён микропроцессором PIC16F628A.
Экран:
- жидкокристаллический (16х2);
- подсветка экрана.
Две кнопки для настройки меню.
Часы реального времени DS1307.
Батарейка для непрерывного хода часов.
Энергонезависимая память данных.
Три выхода на 220 В (BT136-800).
Два выхода на 12 В (IRFZ44N).
Один из выходов на 12 В может работать в режиме PWM (IRFZ44N).
Контроллер может управлять по времени тремя нагрузками и одним PWM (светодиодной лентой, например). Частота PWM равна 1 Кгц. Нагрузки могут быть как на 220 вольт, так и на 12 (с некоторыми ограничениями по каналам 12 вольт).
К сожалению температурой управлять данный контроллер не может, не хватило памяти (это и есть та причина, по которой я пожалел о выборе контроллера).
При включении питания отрисовывается главный экран, на котором отображается текущее время и состояние каналов.
500099
При нажатии кнопки "S2" в главном меню контроллера на 20 минут принудительно включаются выбранные заранее каналы. При этом в нижнем правом углу пишется буква "М"
500121
Всего в контроллере можно настроить 10 таймеров (от 0 до 9) Теоретически количество каналов можно увеличить, но свободной памяти осталось несколько байт и это будет сделать непросто.
500100
Каждый таймер настраивается на нужный канал, устанавливается время его включения и выключения.
500101
Во второй строке первая цифра отвечает за номер канала, которым управляет данный таймер.
При выборе канала №4 таймер управляет каналом PWM. Время перехода от 0 до 255 и обратно составляет также 20 минут. К сожалению из-за нехватки памяти не реализован алгоритм, обеспечивающий равномерность загорания и погасания светодиодов. Хотя при таком длительном изменении это не заметно.
Время установки таймеров изменяется с шагом в 10 минут.
После выбора пункта "Y" новое значение записывается в память.
Для настройки существует 2 кнопки, одна для переключения режимов, вторая для изменения значения.
Если не трогать кнопки, то через пару минут контроллер автоматически переключается на главный экран.
Также при переключении по пунктам меню после таймеров идёт настройка выходов, которые будут включаться при нажатии кнопки "S2" в главном меню.
500130
На плате включена возможность управления как 12 вольтовой нагрузкой, так и нагрузкой 220-вольт.
В случае 12-и вольт управление идёт через транзисторы. Нагрузка 220 вольт включается через тиристоры. При управлении индуктивной нагрузкой необходимо будет добавление цепи из резистора и конденсатора.
На плате есть 2 перемычки, J1 и J2. Через них можно подключить один из транзисторов (T1) для управления 12 вольтовой нагрузкой. При подключении перемычки J1 управление дублируется с каналом 2.
При подключении перемычки J2, транзистор подключается к каналу 4 (PWM).
Транзистор T2 подключен к каналу 1.
Вот краткое описание контроллера. По возможности фотографии собранного устройства выложу на выходных.
Плата размерами получилась чуть больше платы экранчика.
Экранчик используется китайский, поэтому надписи выполнены латиницей. При желании надписи можно русифицировать, все значения записаны в EEPROM, при необходимости укажу адреса и длину надписей.
Изначально таймеры настроены неправильно. После сборки необходимо настроить их под свои нужды.
PS
Контроллер собран и работает уже неделю. Управления подсветкой экранчика нет, мне это было не актуально, да и памяти в контроллере не хватит уже.
В моем случае один канал (канал 3) идёт на включение основного освещения на лампах. Канал PWM используется для управления 30 ватт диодами светодиодной подсветки, которые реализуют рассвет-закат и доп. освещение аквариума.
Канал 2 используется для включения блока питания для светодиодного освещения.
Канал 1 - включается досветка красными светодиодами (светодиодная лента), а также работает как ночник.
Схема:
500119
Печатная плата (нарисовано не оптимально, при желании можно нарисовать красивее конечно):
500120
Во вложении схема, плата, прошивка, проект под Протеус(8) и картинка с некой схемой, описывающей логику работы с меню.
500127
PPS
Следующий мой контроллер будет уж точно не на контроллерах PIC. Скорее всего это будет STM32 с графическим дисплеем 2.2" или 3" (возможно с тачем), несколько PWM, 2 датчика температуры, секундными таймерами и прочим.
Внимание! В процессе доработки плата немного менялась. Я её проверял, но мог пропустить некоторые мелочи.
В архиве в файле lay есть и первая версия платы (под названием Плата+), в которой был предусмотрен выход на термодатчик, который впоследствии пришлось вырезать.
UPD
всё, включая исходники.
562595