КПК

Показати повну версію : Аквариумный контроллер на pic16f628a (3 канала + PWM)


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

IS1971
29.05.2015, 13:37
Яка ціна готового пристрою?

RozarioAgro
29.05.2015, 17:58
Поддерживаю вопрос IS1971.

cahek80
30.05.2015, 23:59
Если честно, то я даже не планировал делать их в количестве больше одного :)
Я не в курсе как заказывать заводское изготовление плат и прочие нюансы. Например, кому-то нужны только на 220-в управление, кому-то ещё и на 12-в.
Я сделал для себя, решил поделиться идеей.

IS1971
31.05.2015, 00:03
Ідея супер. Як на мене простий і без лишніх наворотів. І 220 і 12 вольт пригодяться майже кожному. Лишній груз не тягне. А те що немає іншої всячини мало б вплинути на ціну пристроя. Тож хоча б озвучте Вашу собівартість пристроя.

cahek80
31.05.2015, 00:53
Тож хоча б озвучте Вашу собівартість пристроя.
при текущих ценах:
- экранчик брался в Китае - 2.20$
- контроллер с панелькой, около 40-45 гривен.
- транзисторы irfz44n сейчас около 15 грн штука.
- BT136 - 5 грн штука
- moc3041 от 12 грн/шт. (moc3061 от 8 грн)
- lm7805 - от 5 грн.
- батарейка с креплением - около 10-15 грн.
плюс резисторы, конденсаторы в районе 10-15 гривен максимум. плюс печатка.
Блок питания - здесь выбор большой. У меня для питания контроллера просто стоит трансформатор на 5 ватт + диодный мост. Цена примерно 70-100 грн.

То-есть средняя себестоимость без корпуса и учета изготовления платы около 270-300 гривен.

Также в моем случае отдельно стоит блок питания для светодиодов, но, мне кажется, в этот перечень его включать не стоит.

IS1971
31.05.2015, 11:10
Дуже адекватна ціна. Якщо за Електроніка 21-10 (а це практично аналог) хотять 250-300 грн, то цей пристрій який має крім 220, ще й 12 в. - супер.

cahek80
31.05.2015, 22:18
пардон, забыл про ds1307, сейчас они от 34 грн в dip и около 10 грн в smd.

aleksey1983
03.10.2015, 11:57
Здраствуйте, понравился ваш таймер, решил повторить, при прошивке такая беда http://s020.radikal.ru/i706/1510/17/bb821dbc0a33.png

cahek80
04.10.2015, 13:29
Если честно то впервые вижу этот программатор. у меня другой, шьётся без проблем. А если сделать verify - падает ошибка?

aleksey1983
05.10.2015, 14:05
Выдает то же самое, проблем с программатором не было . Попробуйте перезалить прошивку.

cahek80
06.10.2015, 20:15
Перекомпилил полностью проект, прикрепил файл.
517138

PS
У меня через winpic800 контроллер PIC16F826A успешно прошился без всяких ошибок. Работает без замечаний с дня создания темы.
Если есть желание можете перекомпилить прошивку под себя, могу дать исходники (под МikroC) мне не жалко.

aleksey1983
07.10.2015, 17:17
Попробую залить, там посмотрим, у меня PIC16F628A, собирал мин с этого форума шил все норма, решил ваш повторить, для моего цихлидника с светодиодами запитанными от блока пк само то!

aleksey1983
09.10.2015, 16:46
Тоже самое, скинте исходник поковыряю .

Focke-Wulf
17.09.2016, 18:31
Добрый день! Спасибо за ваши труды, почти то что надо. А нельзя ли переделать чуть прошивку, и сделать контроль температурой вместо одного или если нужно двух каналов управления какой либо нагрузкой, оставит при этом управление светом посредством ШИМ?
Спасибо!

cahek80
20.09.2016, 16:05
Добрый день! Я отказался от этого вида контроллеров (PIC) ибо запарился в 2 килобайта вмещать всё то что хотелось. Постараюсь выложить исходники, может сделаете что хотите. Ещё у этой программы аква-контроллера мне не нравится, что не удалось обновление экрана вместить в прошивку и у меня иногда изображение на экранчике портится.
могу написать что-то подобное под такую плату https://raw.githubusercontent.com/ubogdan/STM32F103C8T6/master/jtag/STM32F103C8T6-1.jpg, в Китае её стоимость до 2-х долларов. Ну или под stm32f030f4, стоит копейки, но паять её и печатную плату делать многим будет не очень удобно. Но сроки сказать не могу, сейчас переделываю управление освещением дома.