Например TDA7294

РадиоКот > Схемы > Цифровые устройства > Автоматика

Контроллер для аквариума

Автор: Voldemar
Опубликовано 07.08.2013.
Создано при помощи КотоРед.

Привет Всем!

Хотелось бы Вами поделиться одной из своих разработок.

Из истории. С Котами, вообще, не все понятно. Они по большей части ленивые. Жрут вискас. Спят сутками. Редкий Кот отказывается от рыбы. Бывают исключения. Ну и т.д... Но остановимся на рыбе… Появился в моем доме аквариум. И завелись в нем рыбки. Не важно как, не важно сколько, не важно какие. Да вот беда, лениво мне стало каждый раз втыкать в вытыкать вилки из розеток (поскольку кнопок не было предусмотрено) дабы включить (да и выключить тоже) какое-нибудь из устройств , а еще и делать это вовремя… И вот появилась идея создать устройство для управления всем оборудованием аквариума: нагревателем, фильтром, компрессором, освещением, вентилятором, ну и еще какой-нить дополнительной штуковиной… Вот что получилось.

Технические характеристики

Питается:      внешнее ~220В, внутри +5Вольт;
Управляет:    Шесть устройств 220В х 1.0А (макс) (реле TRB-5VDC);
ШИМ выход:  0…5Вольт (0.2А макс);
Датчики:       2 шт, контактные (например геркон), без развязки по питанию;
Дисплей:       4х знаковый, 8ми сегментный (FYQ-3641Ag);
Индикация:   16 светодиодов (индикация режимов работы);
Время:           часы реального времени (DS1338Z-33);
Температура: 1 или 2 цифровых датчика (DS18B20), один для воды (обязательный), один для воздуха;
Контроллер:  PIC18F25K22;
Звук:             HCM1205F;
Режимы:        автоматический, ручной, полуавтоматический (можно выбрать устройства, которые будут управляться автоматически или в ручную);

Что умеет делать:

1. Автоматически управлять:

- нагревателем : отслеживает температуру в аквариуме и включает/выключает нагреватель по необходимости и в зависимости от времени суток.
- основным светом: включает/выключает основное освещение в аквариуме в зависимости от времени суток, времени года, внешнего освещения (запланировано, но модуль измерения освещения пока не установлен).
- дополнительным светом: я использовал ШИМ выход для подключения синего сверх яркого светодиода для имитации лунного освещения. Ночью смотрится красиво. Соответственно можно менять яркость в зависимости от времени суток. Яркость меняется плавно, плавность также регулируется.
- фильтром: вообще он должен работать всегда, но по желанию его можно автоматически отключать на ночь и во время кормежки.
- вентилятором: вентилятор встроен в верхнюю крышку аквариума на выдув воздуха и позволяет охлаждать воду на 1-2 градуса (если очень уж жарко), да и просто для воздухообмена. Вентилятор может работать как по времени (периодически), так и по превышению температуры воды.
- компрессором: периодически включать на заданное время компрессор подачи воздуха.
- дополнительным устройством: любое дополнительное устройство по вашему желанию мощностью до 250Вт. Предусмотрено много режимов работы: ручной, периодический, по заданному интервалу времени, по температуре, по срабатыванию внешних датчиков, по времени суток. Я использую его для разных целей, например, включаю компрессор для аквариума с мальками (для реального Кота – практически бесполезное блюдо).

2. Контролировать:

- температуру воды. Кроме управления нагревателем и вентилятором, сообщает о тревоге звуком и светом, как при превышении выше,  так и понижение температуры ниже заданного. Если температура приближается к критически высокой, то устройство вырубает свет, включает вентилятор и компрессор.
- внешние датчики: кроме управления доп. устройством сообщает о срабатывании звуком и светом. Датчики можно настроить как на нормально замкнутое, так и на нормально разомкнутое состояние.
- необходимость обслуживания аквариума: (звук, свет) напоминает, что надо проверить уровень воды, заменить (почистить) соответствующий фильтр, подменить воду, батарейку, итд.

3. Показывать:

- на дисплее: текущее время, дату, температуру воды и воздуха, состояние датчиков, ошибки (аварии системы), необходимость обслуживания, меню настроек.
- индикация работы каждого из управляемых устройств (6 светодиодов).
- индикация времени суток (4 светодиода: день, ночь, утро, вечер). Особого смысла не имеет, так, для наглядности.
- индикация режима работа (2 светодиода: стоп, пауза).
- индикация срабатывания датчиков (2 светодиода).
- индикация аварий и необходимости обслуживания (2 светодиода).

Общая схема

Общая схема устройства выглядит следующим образом.

Схема устройства состоит из 4х блоков:
- Блок питания +5Вольт. Выпилил из зарядки для телефона. У меня: +5В, 2.4А (такой вот был телефон!), но БП рассчитанного на ток до 750мА будет вполне достаточно, максимальное потребление всей схемы не превышает 600мА. Схема БП не приводится.
- Блок контроллера. Сам PIC, часы с батарейкой, куча разъемов.
- Блок индикации и кнопок (фронт-панель). Все кнопки, дисплей, светодиоды, пищалка.
- Блок управления. Микросхема (MCP23008) расширителя портов (связана по I2C с контроллером), «силовые» реле (6 шт.), разъемы к ним, «усилитель» ШИМ сигнала с разъемом, разъемы для внешних датчиков и внешнего термодатчика.

Комментарии к общей схеме:
- все устройства подключаются к стандартным розеткам рассчитанным на 220В и >3A;
- устройства назначаются на силовой выход контроллером, всегда можно это изменить и настроить, поэтому на схеме обозначения подключенных нагрузок условное.
-но (!) для подавления помех желательно подключить X2 конденсатор (>250V) непосредственно к розетке к тем устройствам, которые имеют в своем «составе» двигатель (фильтр, помпа). Емкость выбирайте сами. Чем больше, тем лучше. В моем случае я был ограничен конденсаторами имеющимся в наличии. Вовсе не X2.
- сопротивление R1 подбирается индивидуально для используемого светодиода, так, чтобы максимальный ток не зашкаливал, да и яркость на максимуме не слепила бедных рыбок. У меня светодиод 3 мм яркий синий, прозрачный, 1400 мКд, 30° (3AB4UC).
- корпус, если не пластмассовый, то обязательно заземлить. В одной точке, по крайней мере подключить к «общему» схемы. Желательно поставить металлический экран между CPU и всем остальным «внутренним» миром устройства.
- провода шины I2C и на термодатчик – в экранированной оплетке, заземлены, максимально короткие.
- термодатчик DS18B20. Для работы в воде герметично «запаян» в пластиковый (или металлический - нержавейка) корпус.

Схема блока контроллера (CPU)

Комментарии:
- J1 используется для программирования (PIC Kit 2, например).
- J5 исключительно дополнительный разъем для датчика температуры, можно убрать.
- J13 разъем для подключения что-нибудь дополнительного. Планировалось для датчика освещения, кормушки, ну и т.д… Можно пофантазировать, если есть желание и время. Только, к сожалению, памяти в контроллере осталось не особо много… Вообщем, пока не используется.
- J7, J12 – два больших разъема для связи с дисплеем. Ничего страшного. Дисплей и CPU расположены друг над другом как бутерброд и разъемы просто втыкаются друг в друга. Очень удобно. Когда все работает. Разъемы папа PLS-10, мама PBS-10.
- часы DS1338Z-33, подойдет и DS1307N (может пины другие?).
- батарейку для часов можно использовать другую меньше по размеру на напряжение 3В. Ток потребления очень маленький…
- почти все компоненты CMD.

Схема блока индикации (Display & Keyboard)

Комментарии:
- использовал кнопки KAN0611-1301B (Кнопка тактовая, DIP, 6.0х6.0, h=13 мм).
- 8ми сегментный зеленый (FYQ-3641Ag). Вообще можно любой с общим катодом.
- светодиоды 3мм, обычные. Синий – яркий 1400 мКд, 30° (3AB4UC).
- кнопки подключены к делителю на сопротивлениях и подключены к ADC входу контроллера, который измеряет напряжение и т.о. определяет код нажатой кнопки.
- пищалка HCM1205F. Резистор R3 можно уменьшить – будет громче.

Схема блока управления (MCU)

Комментарии:
- выход на термодатчик: стандартный 3.5mm audio-jack (CKX3-3.5-30).
- выходы датчиков: штыревой разъем питания на плату, 5.5 x 2.5 мм (7-0088).
- выход ШИМ: Штыревой разъем питания на плату, 2.5 x 0.7 мм (DC-011).
- «огород» на транзисторах Q5, Q7 не припаян. Даже не спрашивайте зачем он нужен.
- J13, J16, J19 – контакты для jumper.
- предполагалось, что ШИМ может управлять устройством питающимся от 12 вольт, от этого есть разъем J18 и jumper J19.
- транзисторы 2N5191 – это конечно перебор, но их у меня горсть. Можно что-нить гораздо легче, типа 2N5551.
- смысл J3 и J20: приходит ~220V с включателя устройства, выходит на блок питания +5В.
- R11 нужен чтобы не происходило замыкания массы и питания при «внимании/вынимании» датчика температуры.
- U9 – тоже с запасом, можно что-нибудь попроще.

Софт:
Использовал PICC v4.130 (демо версия!). Текущая версия 1.20. Общая статистика: RAM=28%, ROM=97%.
Код написан и отлажен (на 90%) на PC с использованием MS Visual Studio 11 (скажем, тоже демо!). Это стало возможно после написания некой библиотеки симуляции PIC кода. По сути, используется  тот же код, что работает на PIC, но с соответствующими callbacks & wrappers для использования в среде PC. Симуляция прерываний таймера, задержек и прочего поддерживается. Поэтому, все, что не требует задержек <1ms и обращения в внешним устройствам можно легко проверить и отладить. Работу драйверов (в данном случае: часы, расширитель портов, датчик температуры) отладить, конечно, не удастся, поскольку эмулировать протокол работы с этими устройствами весьма сложная задача (да и не нужно это). Поэтому в симуляторе они отключены, используется  только конечные данные. Программу Симулятор прикладываю. Это два файла: exe & dll. Требуется положить в один каталог в любое место на вашем ПК. Важно иметь каталог с:temp. Там симулятор  хранить настройки, содержание EEPROM и пишет логи. Чтобы не тратить время на начальные настройки, текущий cfg прикладываю. Положите его в c:temp.

Что касается настроек на реальном устройстве: при первом запуске потребуется установить часы (время-дату). Остальные параметры по умолчанию вполне пригодны для жизни. Возможно, придется переопределить пины, к которым подключены устройства. Описание "Дерева" меню с некоторыми пояснениями в процессе редактирования.

Что касается работы: система запущена в эксплуатацию с начала апреля 2013, с тех пор исправлено несколько багов и добавлено несколько фич для удобства и из этих же соображений. Рыбки счастливы.

Конструкция:
Все уместилось в корпус из металла 240х155х55. На фотографиях можно рассмотреть детали. После изобретения и изготовления устройства, были обнаружены и поправлены некоторые ошибки, в том числе на печатных платах. Схемы все исправлены, а вот PBC-шки не переделывал. Поэтому на общий обзор не предлагаю.




Вот пока и все. Симулятор, прошивку прилагаю.

 


Файлы:
Симулятор
Прошивка


Все вопросы в Форум.


ID: 1595