Электрификация

Справочник домашнего мастера

Ардуино для аквариума

1.8. Простой аквариумный таймер

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

Одна из схем подобного назначения, воплотившая наиболее простое схемное решение, представлена на рис. 1.10.

Особенности устройства — в полуавтоматическом режиме работы. При наступлении рассвета (включении освещения в комнате, где установлены фотодатчики) электронное устройство издает кратковременный звуковой сигнал и включает слаботочное электромагнитное реле К2. Исполнительные контакты реле К2, в свою очередь, включают лампу аквариумного освещения вместе с компрессором-помпой (на схеме не показаны). Лампа освещения и компрессор остаются включенными в течение почти 4 ч (зависит от номиналов элементов R5C2). По окончании выдержки времени лампа освещения и компрессор отключаются. При новом рассвете (новом включении света в комнате после периода затемнения) цикл работы устройства повторяется — так происходит ежедневно.

В основе устройства таймер на популярной микросхеме КР1006ВИ1. Он собран по классической схеме в режиме автогенерации импульсов большой длительности. На выходе таймера включено электромагнитное реле К2, своими контактами К2.1 оно управляет подачей напряжения на компрессор аквариума и осветительную лампу. Лампа может быть как люминесцентной (с соответствующей схемой управления), так и лампой накаливания с мощностью до 15 Вт. Более большая мощность не желательна из-за возможности перегрева и оплавления верхней крышки аквариума, в которой установлена лампа освещения. Компрессор — любой промышленный для аквариумов.

В схему введен узел управления самой микросхемой КР1006ВИ1 в зависимости от внешнего освещения. Это сделано для того, чтобы таймер и соответственно лампа освещения аквариума и компрессор включались только в светлое время суток, а ночью были не активны. Данный фоточувствительный узел собран на однотипных транзисторах VT1, VT2, нагруженных на электромагнитное реле К1. Коммутирующие контакты реле К1.1 подают питание на (или отключают от питания) микросхему DA1. При слабой освещенности однотипных фоторезисторов СФ3-1 (включенных параллельно и обозначенных единым обозначением на схеме PR1) транзисторы VT1, VT2 закрыты, соответственно реле К1 обесточено, контакты реле К1.1 с номерами 3 и 5 (согласно схеме рис. 1.10) разомкнуты и на автогенератор, собранный на микросхеме DA1, напряжение не поступает. Соответственно контакты К2.1 разомкнуты и лампа освещения аквариума, а также компрессор обесточены.

Переменный резистор R1 введен в схему для удобства регулировки порога включения транзисторного каскада VT1, VT2. Резистор R1 определяет чувствительность данного узла к световому потоку.

Если освещение фоторезисторов достаточно, например днем, сопротивление фоторезисторов PR1 мало, транзисторы VT1, VT2 открыты, реле К1 включено, на микросхему DA1 подано напряжение питания, индикаторный светодиод HL2 (аналогичный по электрическим характеристикам HL1) светится. На узел звуковой индикации подано питание. Микросхема DA1, включенная в режиме отсчета выдержки времени в соответствии с номиналами элементов времязадающей цепи R5C2, начинает отсчет времени. Реле К2 включено, лампа освещения аквариума и компрессор включены.

По окончании выдержки времени, заданной номиналами элементов R5C2 (примерно 240 мин) на выводе 3 микросхемы DA1, появляется высокий уровень напряжения, реле отпускает и контакты К2.1 размыкаются, лампа освещения погаснет, компрессор выключится.

Теперь следующее включение произойдет после того, как контакты К1.1 разомкнутся (это произойдет при недостаточной освещенности, например, вечером и ночью), а затем снова замкнутся с наступлением нового дня или включением основного света в комнате, где установлены фотодатчики PR1.

Узел звукового сопровождения подключается непосредственно параллельно к контактам питания того устройства, включение которого он призван контролировать, в данном случае параллельно питанию микросхемы DA1.

В основе этого электронного узла популярная микросхема К561ЛА7. Благодаря применению одного из ее логических элементов, а также использования капсюля со встроенным генератором звуковой частоты (ЗЧ) HA1 в схему нет необходимости вводить какие-либо генераторы импульсов или усилители к ним. Такой же узел несложно собрать и на логических элементах других микросхем КМОП (например, К561ЛЕ5, К561ТЛ1), однако наиболее простое схемное решение показано на рис. 1.10.

Схема кратковременной звуковой сигнализации основана на одном логическом элементе DD1.1 микросхемы К561ЛА7, включенном как инвертор. При подаче питания на входе элемента (выводы 1 и 2 DD1.1) присутствует низкий уровень напряжения до тех пор, пока не зарядится оксидный конденсатор С1 через ограничительный резистор R2. Пока этого не произошло, на выходе элемента (вывод 3 элемента DD1.1) присутствует высокий уровень напряжения. Он поступает через ограничивающий ток резистор R6 в базу транзистора VT3, работающего в режиме усилителя тока. Транзистор VT3 открыт, сопротивление его перехода коллектор-эмиттер близко к нулю и на пьезоэлектрический капсюль со встроенным генератором звуковой частоты НА1 подано напряжение питания.

Когда постоянное напряжение на пьезоэлектрическом капсюле со встроенным генератором НА1 окажется почти равным напряжению питания устройства капсюль переходит в режим генерации колебаний звуковой частоты.

По мере заряда конденсатора С1 через резистор R2 и внутренний узел элемента DD1.1 происходит изменение состояния выхода микросхемы. Когда напряжение на обкладках конденсатора С1 достигнет уровня переключения микросхемы, она переключится и высокий уровень напряжения на выходе DD1.1 сменится низким. Транзистор VT1 закроется. Постоянное напряжение на пьезоэлектрическом капсюле со встроенным генератором НА1 окажется почти равным нулю, и капсюль перейдет в режим ожидания.

При указанных на схеме значениях элементов R2 и С1 задержка выключения звука составит около 3 сек. Ее можно увеличить, соответственно увеличив емкость конденсатора С1. В качестве конденсатора С1 лучше использовать оксидный типа К50-29, К50-35 и аналогичный с небольшим током утечки. В обратную сторону длительность временного интервала можно легко сократить, уменьшив сопротивление резистора R2. Если вместо него установить переменный резистор с линейной характеристикой, то получится устройство с регулируемой задержкой.

Функцию данного электронного узла можно поменять на обратную — т. е. сделать так, чтобы пьезоэлектрический капсюль НА1 молчал первые 3 секунды после подачи на устройство питания, а затем все остальное время работал. Для этого оксидный конденсатор С1 и времязадающий резистор R1 следует поменять местами (с соблюдением полярности включения оксидного конденсатора — положительной обкладкой к «плюсу» питания). При этом средняя точка их подключения к выводам 1 и 2 элемента DD1.1 сохраняется. В таком варианте устройство без особых изменений можно применять для звукового сигнализатора открытой (сверх меры) дверцы холодильника. Кроме того, вариантов применения данного простого и надежного устройства бесконечно много и они ограничены только фантазией радиолюбителя.

Данный текст является ознакомительным фрагментом.
Читать книгу целиком
Поделитесь на страничке

Следующая глава >

Содержание

Простой аквариумный контроллер

Идея максимально автоматизировать обслуживание аквариума зрела давно.

Просмотрев в сети множество конструкций, я остановился на одном из вариантов многофункционального акваконтроллера Виталия Шарапова. Существует несколько его модификаций. Вот схема автора, взятая мной за основу:

К сожалению, сейчас сайт автора не работает, сохранилась информация только на нескольких сторонних ресурсах. Я связался с автором, и он любезно предоставил мне всю информацию по своей разработке. Архив с его файлами можно скачать тут: https://sdelay.tv/sites/sdelay.tv/files/ot_avtora.rar

Итак, что может этот прибор? Вот выдержки из авторского описания, полный вариант находиться в архиве.

  1. Отсчет реального времени в часах и минутах;
  2. Управление 3-мя нагрузками (Свет, Нагрузка1, Нагрузка2) по времени;
  3. 6 независимых программируемых таймеров (времён включения-выключения), каждый может управлять любой из нагрузок, дискретность – 15 мин.;
  4. Измерение температуры воды каждые 10 секунд с точностью до 1°C (диапазон 0…99°C);
  5. Управление нагревателем и охладителем (вентилятор или аппарат на основе модуля Пельтье) с точностью +-1°C (диапазон 20…39°C), работа охладителя на пониженной мощности при превышении допустимой температуры менее чем на 3°C (для снижения шума);
  6. Индикация состояния нагрузок (включено или выключено);
  7. Ручная коррекция времени (по сигналам точного времени);
  8. Автоматическая ежедневная коррекция времени на заданную величину (от -59 до +59 секунд в сутки);
  9. Сохранение хода часов (при наличии резервной батареи) при отсутствии напряжения в сети до 2-7 суток (зависит от используемой батареи);
  10. Сохранение настроек пользователя в энергонезависимой памяти при полном отключении питания, восстановление при включении.

Вот так всё начиналось:

Плату процессора я повторил почти полностью, изменения не большие и не принципиальные.

Прошивка тоже авторская. А вот силовой блок я переделал.

Исходил прежде всего из наличия у меня деталей и следовательно удешевления всей конструкции. Этим же обусловлен выбор индикатора МТ-10Т7. Он самый недорогой среди доступных, есть вариант без подсветки. Конечно, у такого выбора есть и минусы. Например, сложность отображения букв с помощью семи сегментов. Уже после сборки я переделал схему питания индикатора. Считаю, что питать индикатор от батареи ни к чему, её задача сохранить питание микроконтроллера и тратить её на индикацию не стоит. Индикатор работает только при питании от сети, при переходе на питании от батареи, индикации нет. К сожалению, к тому моменту плата уже была спаяна, поэтому новые дорожки проложены навесным монтажем. Печатного варианта для такого подключения я не разрабатывал. Вот расположение навесного монтажа:

Вот мой вариант схемы:

И плата силового блока.

Резистор R6 есть смысл ставить при использовании аккумулятора в качестве резервного источника питания. Резисторы R9-R13 ставятся при необходимости и подбираются под конструкцию силового блока. Изначально в качестве корпуса был выбран сломанный сетевой фильтр. Опять же потому, что он у меня уже был. Так как я не планирую использовать нагрузку 220 вольт более 150 ватт, то тиристоры установлены без радиаторов. Для основной массы аквариумных приборов это более чем достаточно. Транзисторы, управляющие нагрузкой 12 вольт так же без радиаторов. Следовательно, учитывая это, и мощность трансформатора, нагрузка на оба 12в канала должна быть не более 2 вт. Для вентилятора-охладителя и светодиодной подсветки этого вполне достаточно. Единственный радиатор будет на КРЕНке, и то скорее для подстраховки.

В настоящее время таймер управляет освещением в аквариуме и продолжается работа над завершением корпуса.

Каких-либо проблем и ошибок в процессе изготовления и эксплуатации до настоящего момента не выявлено. В одном месте пришлость поработать надфилем, благо место позволило: отверстия крепления индикатора на плате не совпали с отверстиями на самом индикаторе-примерно на 0,5-1 мм.

Наличие шести таймеров дает широкие возможности для автоматизации аквариумного хозяйства. Конструкция достаточно проста, работоспособна и доступна для повторения. Архив с моим вариантом схемы, печатными платами и прошивкой: https://sdelay.tv/…/timer.rar Алгоритм работы таймеров в описан в авторском архиве.

P.S. К сожалению, архив с моими файлами(схема в .lay и платы в .spl7) перестал быть доступен на этом сайте. Если у Вас есть интерес к ним, пишите личное сообщение или postroad@mail.ru, вышлю на почту.

Система автоматического управления аквариумом на Arduino

Хотелось бы поделиться своим первым опытом создания такой штуки, как Arduino аквариум. Ранее я вообще не работал с электроникой, и, тем более, не знал как программируются микроконтроллеры. Но все-же решил попробовать свои силы и хотел бы поделиться результатами.

Возникновение идеи создания аквариума

Так уж получилось, что я в основном занимался .NET программированием и изучил его в обход C++. Наверное, поэтому я так и не встретился с микросхемотехникой и микроконтроллерами, хотя желание познакомится с ними росло практически каждый год. Особенно, последние годы, когда я узнал про Arduino. Но надо было придумать ему практическое применение. И этот вопрос быстро решился.
В нашей комнате стоит аквариум, и каждый день нужно было лезть под стол и выключать рыбкам свет, а потом утром включать. Дополнительно рыбкам надо было включать обогреватель, когда им холодно, а выключать, когда им тепло. Иногда моя забывчивость приводила к гибели рыбок в аквариуме и приходилось покупать новых. Еще рыбкам нужно было периодически менять 2/3 воды. И для нашего аквариума эта процедура была очень долгой и неприятной.
Первым делом я посмотрел готовые решения по аквариумам. Их достаточно много. В основном это видеоролики на youtube. Также есть достаточно интересных статей на geektimes. Но для моей цели — изучение и знакомство с миром микросхемотехники, — это было слишком сложно, а подробного руководства «с нуля» в интернете не нашлось. Идею разработки аквариумного контроллера пришлось отложить до тех пор пока не будут изучены азы самой микроэлектроники.

Знакомство с микроэлектроникой

Я начал свой путь с готового набора для изучения Arduino. Наверное, каждый собирал нечто подобное, когда знакомился с данной платформой:
Обычная лампочка (светодиод), резистор на 220 Ом. Arduino управляет лампочкой по алгоритму на C++. Сразу оговорюсь, что купив любой готовый набор Arduino или его аналога нельзя собрать более-менее полезную вещь. Ну кроме пищалки или, скажем, домашнего термометра. Изучить саму платформу посредством уроков можно, но не более. Для полезных вещей придется мне пришлось освоить пайку, печатные платы, проектирование печатных плат и прочие прелести электроники.

Постройка своего первого прототипа аквариума

Итак, первое с чего я начал свой прототип аквариума — сформировал на бумаге требования к этому устройству.
Аквариум должен:

  1. Светиться утром, днем, вечером и ночью разными цветами;
  2. Включать рыбкам утром белый свет, днем яркость белого света увеличивать, вечером уменьшать (имитация дневного света) и ночью его выключать;
  3. Пузырьки воздуха(аквариумный компрессор) для рыбок должны появляться только вечером и выключаться ночью;
  4. Если рыбкам холодно, аквариум должен гореть синим цветом, если жарко то красным;
  5. Диапазоны температуры при выходе из которых должна срабатывать «световая сигнализация» должны быть настраиваемыми
  6. Аквариум должен всегда отображать дату и время;
  7. Время начала и конца промежутков дня должны быть настраиваемыми. К примеру, утро не всегда начинается в 9:00 AM;
  8. Аквариум должен отображать сведения о влажности воздуха и его температуре вне аквариума, а также выводить температуру воды внутри аквариума;
  9. Аквариум должен управляться с пульта.
  10. Экран с датой при нажатии на кнопку пульта должен подсвечиваться. Если в течении 5 секунд ничего не нажато, то гаснуть.

Я решил начать с изучения работы LCD и Arduino.

Создание главного меню. Работа с LCD

Для LCD я решил использовать библиотеку LiquidCrystal. Так совпало, что у меня в наборе помимо Arduino присутствовал LCD экран. Он мог выводить текст, цифры. Этого было достаточно и я приступил к изучению подключения данного экрана к Arduino. Основную информацию по подключению я брал отсюда. Там же есть примеры кода для вывода «Hello World».
Немного разобравшись с экраном я решил создать главное меню контроллера. Меню состояло из следующих пунктов:

  1. Основная информация;
  2. Настройка времени;
  3. Настройка даты;
  4. Температура;
  5. Климат;
  6. Подсветка;
  7. Устройства;

Каждый пункт это определенный режим вывода информации на текстовый экран LCD. Я хотел допустить возможность создания многоуровневого меню, где в каждом подуровне будут свои реализации вывода на экран.
Собственно, был написан базовый класс на C++, от которого будут наследоваться все остальные подменю.
class qQuariumMode { protected: LiquidCrystal* LcdLink; public: // Чтобы экран не мерцал, была предусмотрена bool переменная isLcdUpdated. bool isLcdUpdated = false; // Выход из подменю или меню. void exit(); // Метод loop в каждом варианте подменю будет свой. Собственно, он и отвечает за вывод // текста на экран. Он будет вызываться из главного цикла программы контроллера. virtual void loop(); // Методы, которые помечены как virtual, будут переопределяться индивидуально в каждом // меню. virtual void OkClick(); virtual void CancelClick(); virtual void LeftClick(); virtual void RightClick(); };
К примеру, для меню «Устройства» реализация базового класса qQuariumMode будет выглядеть так:
#include «qQuariumMode.h» class qQuariumDevicesMode : public qQuariumMode { private: int deviceCategoryLastIndex = 4; //Варианты подменю в меню Устройства enum DeviceCategory { MainLight, // управление основным светом Aeration, // управление аэратором Compressor, // управление компрессором Vulcanius, // Управление вулканом Pump // Управление помпой }; DeviceCategory CurrentDeviceCategory = MainLight; char* headerDeviceCategoryText = NULL; // Ссылка на «драйвер», с помощью которого осуществляется управление устройством BaseOnOfDeviceHelper* GetDeviceHelper(); public: void loop(); void OkClick(); void CancelClick(); void LeftClick(); void RightClick(); };
Вот что получилось в результате реализации первого уровня меню:

Аппаратная часть. Нюансы подключения компонентов

Несколько слов хочется сказать про аппаратную часть аквариумного контроллера. Для нормальной работы контроллера мне пришлось приобрести:

  1. 1 x Arduino Uno/Mega. В последствии решил работать с Mego’ой;
  2. 1 x Часы реального времени, к примеру DS1307;
  3. 2 x Реле типа RTD14005, нужны для управления компрессором и аэрацией, т.к. оба работают от 220В переменного тока;
  4. 1 x Пьезопищалка;
  5. 1 x ИК приемник;
  6. 5 x Транзисторов IRF-530 MOSFET с N каналом. (3 для RGB ленты, 1 для белой ленты, 1 для водяной помпы);
  7. 1 x RGB светодиодная лента. Если планируется погружать светодиодную ленту в воду, то нужно ее изолировать от воды. У меня лента находится внутри силиконовой трубки и залита прозрачным герметиком;
  8. 1 x White светодиодная лента;
  9. 1 x LCD экран;
  10. 1 x Датчик температуры герметичный для измерения температуры воды. Я использовал DS18B20;
  11. 1 x Датчик температуры и влажности. Я использовал DHT11;

У каждого компонента свой тип подключения и свои драйверы для работы. Я не буду описывать нюансы подключения всех компонентов, так как их можно найти на сайте производителя или на форумах. Если вы планируете использовать те же компоненты, что и я — то менять исходный код вам не придется.

Порча компонентов

Будьте внимательны. Старайтесь сначала почитать про подключаемый компонент. Он должен эксплуатироваться именно в том диапазоне напряжения, для которого он был создан. Обычно это указано на сайте производителя. Пока я разрабатывал аквариумный контроллер, я уничтожил 2 герметичных датчика температуры и часы реального времени. Датчики вышли из строя из-за того, что я их подключил к 12В, а нужно было к 5В. Часы реального времени погибли из-за «случайного» короткого замыкания в цепи по моей вине.

Светодиодная лента RGB

Особые затруднения возникли со светодиодной лентов. Я попытался реализовать следующую схему:

При подключении к Arduino я использовал пины, которые поддерживают ШИМ (широтно-импульсную модуляцию). При одновременном включении на максимум напряжения всех 3 пинов у меня сильно грелась лента. В итоге, если оставить ее на час-другой, некоторые светодиоды переставали светиться. Я полагаю, что это происходило из-за выхода из строя некоторых резисторов. Еще один минус данной схемы — разная яркость светодиодной ленты для каждого из цветов. К примеру, если я ставлю максимальное напряжение на красном компоненте ленты, то я получаю условную яркость красной ленты в 255 единиц. Если я включаю одновременно красный и синий компоненты на максимум напряжения, то яркость будет равна 255+255 = 510 единиц, а цвет будет фиолетовым. В общем, такой вариант решения меня не устроил.
Было решено реализовать следующий алгоритм:
void LedRgbHelper::Show(RGBColorHelper colorToShow) { // RGBColorHelper класс содержит сведения о доли каждого компонента в цвете. // Кроме того, содержит информацию о яркости цвета int sumColorParts = colorToShow.RedPart + colorToShow.GreenPart + colorToShow.BluePart; // доля каждого компонента в общем цвете float rK = 0; float gK = 0; float bK = 0; if (sumColorParts != 0) { float redPartAsFloat = (float)colorToShow.RedPart; float greenPartAsFloat = (float)colorToShow.GreenPart; float bluePartAsFloat = (float)colorToShow.BluePart; float sumColorPartsAsFloat = (float)sumColorParts; int brightness = colorToShow.Brightness; // определяем относительную яркость каждого компонента в цвете. rK = redPartAsFloat / sumColorPartsAsFloat; gK = greenPartAsFloat / sumColorPartsAsFloat; bK = bluePartAsFloat / sumColorPartsAsFloat; // определяем абсолютное значение компонента в цвете rK = rK*brightness; gK = gK*brightness; bK = bK*brightness; } uint8_t totalCParts = (uint8_t)rK + (uint8_t)gK + (uint8_t)bK; if (totalCParts <= 255){ // подаем напряжение на каждый компонент цвета. в сумме мы должны получить не более 255 единиц. analogWrite(RedPinNum, (uint8_t)rK); analogWrite(GreenPinNum, (uint8_t)gK); analogWrite(BluePinNum, (uint8_t)bK); } }
В таком варианте исполнения красный цвет и фиолетовый цвет имели одинаковую яркость. Т.е. красные светодиоды в первом случае светили с яркостью 255 единиц, а при фиолетовом цвете красный был с яркостью 127 единиц и синий с яркостью 127 единиц, что в итоге было приблизительно равно 255 единиц:

Светодиодная лента белая

Со светодиодной лентой наверное было проще всего. Единственный сложный момент — это обеспечение плавной смены яркости при смене времени суток.
Для реализации данной задумки я применил линейный алгоритм изменения яркости белой светодиодной ленты.
void MainLightHelper::HandleState() { if (!IsFadeWasComplete) { unsigned long currentMillis = millis(); if (currentMillis — previousMillis > 50) { previousMillis = currentMillis; switch (CurrentLevel) { case MainLightHelper::Off: { // Если заявлено выключенное состояние, то снижаем яркость белого света на одну единицу за цикл. if (currentBright != 0) { if (currentBright > 0) { currentBright—; } else { currentBright++; } } else { // В случае полного выключения, останавливаем анимацию затухания белого цвета. currentBright = 0; IsFadeWasComplete = true; } break; } case MainLightHelper::Low: case MainLightHelper::Medium: case MainLightHelper::High: { // В случае установки уровня белого света, постепенно увеличиваем или уменьшаем яркость за один шаг цикла if (currentBright != CurrentLevel) { if (currentBright > CurrentLevel) { currentBright—; } else { currentBright++; } } else { currentBright = CurrentLevel; IsFadeWasComplete = true; } } break; } // подаем напряжение нужной величины для установки яркости белого цвета. analogWrite(PinNum, currentBright); } } }

Пульсация «вулкана»

Идея реализации пришла мне случайно. Я хотел просто включать и выключать декоративный вулкан с помощью подачи низкого напряжения и высокого напряжения на транзистор. В магазине для рыбок я присмотрел хороший вулкан с выводной трубкой для компрессора и светодиодом, изолированном от воды.
Он поставлялся с адаптером, на выходе которого 12В постоянного тока, а на входе — 220 В переменного. Адаптер мне оказался не нужен, так как управление питанием и яркостью вулкана я реализовал через Arduino.
Сама пульсация вулкана была реализована следующим образом:
long time = 0; int periode = 10000; void VulcanusHelper::HandleState() { if (IsActive){ // time — аргумент cos в связке с указанным периодом. // остальные коэффициенты — деформация функции и смещение по оси ординат time = millis(); int value = 160 + 95 * cos(2 * PI / periode*time); analogWrite(PinNum, value); } else { analogWrite(PinNum, 0); } }
Вулкан отлично подсвечивает аквариум в вечернее время, а сама пульсация смотрится очень красиво:

Помпа. Замена воды в аквариуме

Водяная помпа помагает быстро поменять воду в аквариуме. Я приобрел помпу, которая работает от постоянного тока 12В. Управление помпой осуществляется через полевой транзистор. Сам драйвер для устройства умеет две вещи: включить помпу, выключить помпу. При реализации драйвера я просто унаследовался от базового класса BaseOnOfDeviceHelper и ничего дополнительно в драйвере не определял. Весь алгоритм работы устройства вполне может реализовать базовый класс.
Помпу протестировал на стенде:

Хотя помпа работала нормально, я наткнулся на одну неочевидную вещь. Если выкачивать воду в другой резервуар, то начнет действовать закон сообщающихся сосудов. В результате я стал виновником потопа в комнате, потому как если выключить помпу — вода все равно будет идти в другой резервуар, в случае если его уровень воды находится ниже уровня воды в аквариуме. В моем случае именно так и было.

Инфракрасный порт и желание его заменить

Управление аквариумом через инфракрасный порт я осуществил по примеру предварительного обучения. Суть примера в следующем: при включении контроллера в сеть я опрашиваю поочередно действия left, right, up, down, ok. Пользователь сам выбирает, какие кнопки пульта он привязывает к каждому из действий. Плюс данной реализации — возможность привязать любой ненужный пульт дистанционного управления.
Обучается аквариум через метод Learn, суть которого отображена ниже:
void ButtonHandler::Learn(IRrecv* irrecvLink, LiquidCrystal* lcdLink) { // Инициализируем прием инфракрасного сигнала с датчика irrecvLink->enableIRIn(); // В эту переменную помещаются результаты декодирования сигнала decode_results irDecodeResults; … … while (true) { // Если пришли результаты и их можно декодировать if (irrecvLink->decode(&irDecodeResults)) { // продолжаем принимать сигналы irrecvLink->resume(); // Пробуем декодировать сигнал с пульта. if (irDecodeResults.bits >= 16 && irDecodeResults.value != 0xC53A9966// fix for Pioneer DVD ) { lcdLink->setCursor(0, 1); // Выводим на экран декодированное значение в формате HEX lcdLink->print(irDecodeResults.value, HEX); // Запоминаем в оперативной памяти Arduino полученный сигнал irRemoteButtonId = irDecodeResults.value; … …
В дальнейшем я пришел к выводу, что пульт дистанционного управления это неудобно. Просто потому что его надо искать и это лишнее устройство в доме. Лучше управление реализовать посредством мобильного телефона или планшета. У меня зародилась идея использовать микрокомпьютер Raspberry PI, поднять на ней ASP.NET MVC 5 веб-приложение через Mono и NancyFX. Далее использовать фреймворк jquery mobile для кроссплатформенности веб-приложения. Через Raspberry общаться с Arduino посредством WiFi, или LAN. В этом случае можно даже отказаться от LCD экрана, ведь всю нужную информацию можно посмотреть на смартфоне или планшете. Но этот проект пока только в голове.

Печатная плата и ее изготовление

Так или иначе я пришел к тому, что надо изготавливать печатную плату. Произошло это после того, как на моем стенде появилось такое количество проводов, что при сборке готового устройства часть из них стала отключаться от случайного надавливания других проводов. Это происходит незаметно для глаз и может привести к непонятным результатам. Да и внешний вид такого устройства оставлял желать лучшего.
Сборка на монтажных платах(используется Arduino Uno):
Я разработал однослойную печатную плату в программе Fritzing. Получилось следующее(используется Arduino Mega):

Самое противное при изготовлении печатной платы это было сверление. Особенно когда я старался создать печатную плату типа Shield, т.е. она одевалась на Arduino. Просверлить тонким сверлом больше 50 отверстий — это очень нудное занятие. А самое сложное — это забрать у жены ее новый утюг и уговорить купить лазерный принтер.
Кстати, если кто боится лазерно-утюжной технологии, то сразу скажу — это очень просто. У меня получилось с первого раза:
Сама сборка тоже оказалось простой — достаточно было припаять основные компоненты на плату:
Но не смотря на это, я первый и последний раз создавал печатную плату в домашних условиях. В дальнейшем буду заказывать только на заводе. И скорее всего придется освоить что-то потяжелее чем Fritzing.

Заключение

Проект прошивки аквариума выложен на GitHub. Адаптирован он для Arduino Mega. При использовании Uno приходится избавляться от части функционала. Банально не хватает памяти, производительности и свободных пинов для подключения всех модулей.

Arduino – микроконтроллер, использующийся в качестве конструктора и платформы для самостоятельной разработки электроники. Устройство подходит как новичкам, так и профессионалом в техническом строении. Ардуино заслужило популярность среди разработчиков благодаря удобному и легкому языку, на котором пишут программный код для МК.

Кроме того, этот микроконтроллер обладает открытой архитектурой. Достаточно подсоединить устройство к компьютеру и записать получившийся код с помощью usb-кабеля. Приборы, в основе которых находится микроконтроллер, получают сведения из окружающей среды посредством датчиков и управляют исполнительными частями сконструированных инструментов. В этой статье подробно расписаны задачи для МК Arduino, которые помогут автоматизировать работу аквариума и избавить пользователя от лишних хлопот.

1. Определение задач для микроконтроллера Arduino при автоматизации аквариума

Первое, о чем должен позаботиться пользователь, – формулировка задач для работы аквариума. По-другому, за что должен отвечать программный код на Arduino для аквариума. Список задач представлен в списке ниже:

  • подача подсветки в разных тонах в утреннее, дневное, вечернее и ночное время;
  • включение света белого оттенка утром, в дневное время яркость увеличивается, а в вечернее, наоборот, уменьшается, ночью запрещается включать свет вообще;
  • синий оттенок включается, когда рыбам становится «холодно»;
  • красный оттенок подается, когда рыбам «жарко»;
  • на аквариуме устанавливается датчик, который всегда отображает точное время;
  • компрессор в аквариуме регулируется: пузыри с воздухом пускаются строго вечером, на ночь компрессор прекращает работу;
  • пользователь создает пульт управления устройством;
  • сигнальный свет регулируется строго с переходом температуры воды, пользователь настраивает данные диапазоны;
  • регулируется утреннее и вечернее время;
  • дополнительная функция – отображение данных о показателе влажности воздуха и температуры вне аквариумной зоны, вывод температуры воды обязателен при этом;
  • подсвечивание даты, когда пользователь нажимает соответствующую кнопку на пульте управления, если дополнительных действий не последовало, экран меркнет.

2. Необходимая периферия и способы ее подключения к Arduino

Для собрания аппаратной части потребуются следующие компоненты:

  • микроконтроллер Arduino Uno (можно и с Мегой);
  • пьезо сигналка;
  • светодиодная лента RGB для подачи света, при погружении в емкость ее следует поместить в силиконовый шланг, чтобы вода не проникала внутрь;
  • белая светодиодная лента;
  • датчик, отслеживающий температурный режим и влажность, наиболее оптимальный вариант – DHT11;
  • небольшой LCD экран;
  • часы, отображающие реальное время, оптимальный вариант – DS1307;
  • 2 штуки реле, один управляет работой компрессора, другой регулирует аэрацию, причем оба работают только при 220;
  • ик-приемник;
  • транзисторы в количестве 5 штук, 3 штуки для rgb-ленты, 1 для помпы и последний для работы белой ленты.

Перечисленные компоненты обладают собственным типом подключения. Кроме того, потребуются драйверы для работы. После покупки пользователь должен зайти на официальный сайт производителя и скачать драйвера.

Одна из возможных схем:

На просторах интернета найдена была еще одна возможная схема для сборки стеклянного друга:

3. Программирование на Arduino для автоматизации аквариума

При программировании Ардуино для аквариума стоит быть внимательным. Перед подключением любого компонента необходимо ознакомиться с прилагаемой инструкцией. Обычно в памятке и на официальном сайте производителя указывается информация насчет равномерного напряжения. Если пренебречь условиями напряжения, можно испортить оборудование – произойдет замыкание. Обычно такая ситуация наблюдается при неаккуратном подключении датчика температуры и часов.

3.1 Меню и ЖК-Дисплей

Для ЖК-дисплея чаще всего используют библиотеку LiquidCrystal. Вы можете её увидеть во многих проектах, где фигурирует дисплей.

Например, для вывода «Hello World» нам нужен такой код:

// Подключаем стандартную библиотеку LiquidCrystal #include <LiquidCrystal.h> // Инициализируем объект-экран, передаём использованные // для подключения контакты на Arduino в порядке: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() { // устанавливаем размер (количество столбцов и строк) экрана lcd.begin(16, 2); // печатаем первую строку lcd.print(«Hello world!»); // устанавливаем курсор в колонку 0, строку 1. То есть на // самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(0, 1); // печатаем вторую строку lcd.print(«Second row»); } void loop() { }

Для нашего урока базовый класс может выглядеть так:

class qQuariumMode { protected: LiquidCrystal* LcdLink; public: // Чтобы экран не мерцал, была предусмотрена bool переменная isLcdUpdated. bool isLcdUpdated = false; // Выход из подменю или меню. void exit(); // Метод loop в каждом варианте подменю будет свой. Собственно, он и отвечает за вывод // текста на экран. Он будет вызываться из главного цикла программы контроллера. virtual void loop(); // Методы, которые помечены как virtual, будут переопределяться индивидуально в каждом // меню. virtual void OkClick(); virtual void CancelClick(); virtual void LeftClick(); virtual void RightClick(); };

Ну и как пример с одним из пунктов меню (позаимствовано на просторах интернета):

#include «qQuariumMode.h» class qQuariumDevicesMode : public qQuariumMode { private: int deviceCategoryLastIndex = 4; //Варианты подменю в меню Устройства enum DeviceCategory { MainLight, // управление основным светом Aeration, // управление аэратором Compressor, // управление компрессором Vulcanius, // Управление вулканом Pump // Управление помпой }; DeviceCategory CurrentDeviceCategory = MainLight; char* headerDeviceCategoryText = NULL; // Ссылка на «драйвер», с помощью которого осуществляется управление устройством BaseOnOfDeviceHelper* GetDeviceHelper(); public: void loop(); void OkClick(); void CancelClick(); void LeftClick(); void RightClick(); };

Все датчики и светодиодные ленты к платформе Ардуино подключаются с помощью контактов, у которых действительно есть возможность поддержания широтно-импульсной модуляции. Нельзя подключать сразу 3 контакта при максимальном напряжении, так как лента может перегореть: не сразу, но в течение 50 минут светодиоды прекращают мерцать. Такая ситуация возникает, когда резисторы выходят из строя.

Недостаток вышеизложенной конструкции состоит в том, что каждый цвет на ленте имеет разную яркость. Если включить максимум напряжение на светодиоде красного оттенка, получится условная яркость красной ленты, равная 255 единицам.

А если одновременно подключить синий и красный фонарик на максимальном напряжении, показатель яркости установится на 510 единицах. В итоге получится фиолетовый цвет, что неприемлемо.

3.2 Код для работы цветной ленты

//Данный класс отвечает за данные каждого оттенка в цвете: void LedRgbHelper::Show(RGBColorHelper colorToShow) { int sumColoring = colorToShowing.RedPart + colorToShowing.GreenPart + colorToShowing.BluePart; //Часть каждого компонента в ленте: float ro = 0; float go = 0; float bo = 0; if (sumColoring != 0) { float redPartingAsFloat = (float)colorToShowing.RedPart; float greenPartingAsFloat = (float)colorToShowing.GreenPart; float bluePartingAsFloat = (float)colorToShowing.BluePart; float sumColoringPartsAsFloat = (float)sumColoringParts; int brighttt = colorToShow.Brightness; //Определяем долю каждого цвета в общем объеме: ro = redPartingAsFloat / sumColoringPartsAsFloat; go = greenPartingAsFloat / sumColoringPartsAsFloat; bo = bluePartingAsFloat / sumColoringPartsAsFloat; //Вычисляем абсолютное значение каждого элемента: ro = ro*brighttt; go = go*brighttt; bo = bo*brighttt; } uint8_t totalCParts = (uint8_t)ro + (uint8_t)go + (uint8_t)bo; if (totalCParts <= 255){ //Вызываем напряжение на каждый элемент, в сумме должно получиться 255 единиц: analogingWrite(RedPinNuming, (uint8_t)ro); analogingWrite(GreenPinNuming, (uint8_t)go); analogingWrite(BluePinNuming, (uint8_t)bo); } }

Отрегулируем яркость белой ленты с помощью кода:

void MainLightingHelper::HandleState() { if (!IsFadeWasiComplete) { unsigned long currentMillisis = millis(); if (currentMillisis — previousMillisis > 50) { previousMillisis = currentMillisis; switch (CurrentLeveling) { case MainLightHelper::Off: { //Если выключен весь свет на ночь, снижаем яркость белого цвета: if (currentBrighting != 0) { if (currentBrighting > 0) { currentBrighting—; } else { currentBrighting++; } } else { //Если делаем выключение полностью, включаем затухание: currentBrighting = 0; IsFadeWasiComplete = true; } break; } case MainLightingHelper::Low: case MainLightingHelper::Medium: case MainLightingHelper::High: { //Если подаем белый цвет, то делаем это в медленном темпе, постоянно цикл – циклом: if (currentBrighting != CurrentLeveling) { if (currentBrighting > CurrentLeveling) { currentBrighting—; } else { currentBrighting++; } } else { currentBrighting = CurrentLeveling; IsFadeWasComplete = true; } } break; } //Подаем определенную яркость белого цвета: analogingWrite(PinNum, currentBrighting); } } }

На этом пока всё. Желаем вам дальнейших успехов с проектами на разных микроконтроллерах.

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

Теги статьи: Добавить тег

Аквариумный контроллер «Аквамарин»

zhu4er
Опубликовано 29.07.2014
Создано при помощи КотоРед.

Здравствуйте, уважаемые коты! Рыбкой побаловаться не хотите? Вы же так обожаете этих вкусных, сочных рыбок ;))) Вот и я люблю их, но предпочитаю ими любоваться через стекло:

Пока фоткал, охранник Кеша Мозгоклюев начал на меня шипеть, пришлось его тоже запечатлеть малёха:

Вообще жизнь рыбок и товарища Мозгоклюева была бы спокойней, если бы я не был электронщиком до мозга костей. Поэтому они периодически подвергаются моим опытам. Вот и один из них — аквариумный контроллер «Аквамарин».

Встречаем схему (в конце статьи в архиве оригинал):

Как видите ничего архисложного в этой схеме нет. Микроконтроллер ATMega16 отвечает за сбор и выдачу информации и принимает соответствующие решения, управляя релюшками и полевиками. Теперь всё по порядку. Сбор информации идёт от датчика температуры U2 DS18b20, от U3 DS1307 — часов реального времени, и естественно от кнопок управления. Выдача информации осуществляется на LCD1 типа Star0802А восемь символов по две строки. Дисплей русифицирован — знания английского не требуется 😉 У контроллера есть три режима работы «Автоматический», «Ручной режим» и режим настроек. При ручном режиме, вход в который осуществляется нажатием кнопки «Режим/Ввод»

Внешний вид:

Лицевая сторона

Под крышечкой 🙂

Сюда подключаем нагрузки

Вид на эти розетки изнутри

Ну что, заглянем, посмотрим на внутренности?

Вид на разъёмы подключения датчика температуры(слева) и подключения светодиодных модулей синего и белого света(справа)

С одного бока

С другого бока

Режимы работы:

В ручном режиме можно включить или выключить подачу воздуха и фильтрацию, нажав на кнопки «+Л/Воздух», «Фильтр». О том, что включёны фильтр и воздушный компрессор, сигнализируют светодиоды «Воздух» и «Фильтр».

«Ручной режим» удобен для кормления рыбок и при чистке аквариума. Выход в автоматический режим кнопкой «Режим/Ввод».

В автоматическом режиме на дисплее выводится информация о времени, дате и температуре в аквариуме.

В автоматическом режиме контролируются параметры температуры и времени суток. По заданным параметрам температуры можно управлять нагревом воды в аквариуме, если аквариум в холодном помещении ИЛИ охлаждением, если аквариум находится в тёплом помещении.

По параметру времени суток контроллер отрабатывает программу Рассвет/Закат.

К контроллеру подключены светодиодные модули белого и синего цвета через полевые транзисторы IRFL024, и управляются методом ШИМ. Закат происходит в заданное время в течении полутора часов. Белый свет начинает угасать, а синий прибавляет яркость. В итоге имеем синее освещение аквариума ночью. Очень приятно глазам при походе ночью в туалет :)). Ночничок, так сказать :)) Утром же наоборот, при заданном времени начала рассвета происходит угасание синего и увеличение яркости белого света. Процесс этот происходит тоже в течении полутора часов. В приложенных исходниках это можно поменять как ваша душа пожелает. Так же в контроллер заложена функция восстановления режимов работы после сбоя в электросети. Если вы уехали на целый день на шашлычок, и в это время был выключен свет, а потом включен(ну всякое бывает), то контроллер автоматом включит фильтрацию, воздух и подогрев/охлаждение так, как это было задано Вами! Вообще я делюсь с Вами, дорогие мои котофеи, всем проектом с исходниками, что хотите с ним, то и делайте — мне не жалко 🙂

А на последок предлагаю глянуть видеоролик:

Надеюсь Вам понравилась моя реализация акваконтроллера. На Ваш суд предоставляю всё, что у меня есть по этому контроллеру. В последствии я хочу усовершенствовать сей девайс, добавив измерение Ph воды, управление кормушками, клапаном с углекислотой, добавить пару таймеров для автоматики. Но это уже другая история. И я не обижусь, если всё это сделаете Вы, усовершенствуя моё творение.

Кто хочет помурлыкать на эту тему все вопросы на форум. Создаём тему, меня оповещаем и общаемся 🙂

Держите хвост пистолетом! Удачи!

Файлы:
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Схема и печатка
Проект в CVAVR

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

Как вам эта статья?

Заработало ли это устройство у вас?

46 2 0
4 1 1

Акваконтроллер Юсупова

1. Общие сведения. Основные функции

2. Инструкция по эксплуатации. Программирование таймеров, термостата и т.д.

3. Схемы, печатные платы, список необходимых деталей

4. Программирование микроконтроллера

5. Новые версии программного обеспечения

Форумы

Акваконтроллер предназначен для управления электрооборудованием аквариума и поддержания на заданном уровне температуры, pH и редокс-потенциала. Содержит восемь каналов для подключения нагрузок которые могут управляться как в ручном режиме, так и в автоматическом режимах. Имеет гибкую систему настройки. Любой выход можно подключить к любому таймеру или температурному датчику. Также можно запрограммировать на один выход несколько таймеров или термодатчиков.

Плата основного блока с ЖК-дисплеем Плата усилителя для измерения pH и редокс-потенциала

Акваконтроллер А.Юсупова это достаточно интересное устройство для всех кто интересуется темой акваконтроллеров и хочет сделать себе акваконтроллер самостоятельно. Фактически эта конструкция стала базовой моделью и отправной точкой для большинства других моделей акваконтроллеров. Хотелось бы сказать «для всех», но есть и другие интересные и перспективные решения.

Чем же он интересен?

Здесь надо отметить несколько аспектов, которые сделали акваконтроллер Юсупова очень популярным. А популярность его видна из пользовательских запросов, которые аквариумисты вводят в поисковые системы. Я, например, знаю ники и имена нескольких человек, которые разместили информацию о своих конструкциях в интернете, но вместе со словом «акваконтроллер» вводится только фамилия Юсупов.

Эта популярность возникла не просто так, ей способствовало несколько факторов:

  1. Юсупов, пожалуй одним из первых разместил полное описание своей конструкции в интернете, да к тому же не просто рассказал о ней, а выложил для всеобщего доступа принципиальную схему, рисунок печатной платы и программное обеспечение. Это дало возможность большому числу самодельщиков повторить эту конструкцию.
  2. Не стал скромничать и назвал прибор своей фамилией, а фамилия достаточно запоминающаяся. Уж не знаю по чему, но я запомнил сразу.
  3. Акваконтроллер выполнен по модульной схеме и состоит из следующих блоков: процессорный блок, блок управления мощной нагрузкой (совмещён с блоком питания), блок усилителей для pH и ORP электродов, дисплейный блок, клавиатурный блок. При использовании последней версии прошивки дисплейный и клавиатурные блоки можно не подключать, а все функции настройки и индикации возложить на ПК.
    • Деление на отдельные функционально законченные блоки позволяет во первых упростить изготовление устройства, так как несколько простых блоков сделать проще, чем один сложный, а во вторых, если вам не нужен какой то из блоков (например блок усилителей для электродов), то вы можете его не изготавливать.
  4. Схема акваконтроллера Юсупова достаточно простая и понятная, поэтому если вы хоть не много понимаете в электронике и микроконтроллерах, то все схемные решения выглядят вполне логичными и разумными.
  5. Схема акваконтроллера сделана с использование микроконтроллера ATmega32 фирмы Atmel. А микроконтроллеры серий «mega» и «tiny» этой фирмы пользуются заслуженной любовью у самодельщиков.
  6. Использование в конструкции микроконтроллера в DIP корпусе позволяет повторить эту конструкцию практически любому кто может держать в руках паяльник.
  7. Юсупову удалось создать достаточно универсальный акваконтроллер, подходящий для решения большинства задач стоящих перед аквариумистами.
  8. Наличие модуля для измерения pH и ORP сделало эту конструкцию привлекательной для опытных аквариумистов.

Возможности акваконтроллера Юсупова

Акваконтроллер Юсупова рассчитан на управление двумя аквариумами. Хотя аквариумов может быть от одного до восьми.

Возможности:

  • 2 канала для подключения измерительных электродов. На каждый канал можно подключить два электрода. Это могут быть электроды для измерения pH, редокс-потенциала (ORP) и ион-селективные электроды (при подключении ион-селективных электродов будет выводится значение в милливольтах. Для перевода этого значения в концентрацию ионов необходимо использовать переводные таблицы).
  • 8 выходных линий (любой линии может быть назначена любая функция). Из них две линии с широтно-импульсной модуляцией для управления мощностью на нагрузке (только в последней версии прошивки микроконтроллера). В приведённой здесь схеме блока управления мощной нагрузкой функция ШИМ не реализована. Как аппаратно реализовать ШИМ смотрите либо во второй версии акваконтроллера Юсупова, либо в вариациях первой версии.
  • Возможно подключение до 8 цифровых датчиков температуры типа DS18B20.
  • Датчик уровня воды, подключенный к звуковому излучателю.
  • Программа для ПК. Позволяет настраивать параметры акваконтроллера, причём некоторые из них недоступны для настройки со встроенной клавиатуры и ЖК-дисплея. Также позволяет отображать графики изменения контролируемых параметров.

Недостатки

К сожалению акваконтроллер Юсупова имеет и недостатки. Они довольно подробно описаны на форумах.

Основные недостатки:

  1. Связь с персональным компьютером организована по протоколу RS-232 (COM-порт). Для нашего времени, когда в компьютерах уже нет COM-портов, это анахронизм – придётся покупать дополнительный переходник COM-USB или специальную плату с COM-портом. И то и другое это дополнительные расходы и проблемы с настройкой оборудования.
  2. Акваконтроллер Юсупова не имеет отдельных энергонезависимых часов. Часы организованы на основном микроконтроллере (МК). Такое схемное решение удешевляет конструкцию, но в случае сбоев и перезагрузке МК, часы будут обнуляться. Примечание: проблема перебоев с электропитанием решена за счёт использования аккумулятора.
  3. Акваконтроллер Юсупова рассчитан на применение микроконтроллера ATmega32 в DIP корпусе. В настоящее время найти этот контроллер в DIP корпусе весьма проблематично.
  4. В своей схеме Юсупов для согласования микроконтроллера с мощной нагрузкой применяет оптроны. В схеме их 9 штук, цена каждого примерно доллар. Вместо оптронов можно было использовать обычные транзисторы и их суммарная цена врят ли превысить доллар.
  5. В конструкции применён звуковой сигнализатор об изменении уровня воды в аквариуме. Интересно, кому он нужен? Лучше бы реализовал схему автодолива.
  6. В блоке усилителей для pH и ORP электродов применены довольно дорогие и дефицитные операционные усилители (ОУ) — CA3140. Не буду здесь обсуждать насколько оправдано применение таких ОУ, но во второй версии акваконтроллера, Юсупов применил ОУ TL062, которые более распространены, стоят в 3 раза дешевле и в одном корпусе находится 2 ОУ. Т.е. экономия в 6!!! раз.
  7. Блок управления мощной нагрузкой выполнен одной платой. Было бы логично разделить это устройство на 2 платы, что бы аквариумист с одним аквариумом, которому не требуется 8 выходов, смог съэкономит.
  8. Плату клавиатуры и светодиодных индикаторов включения нагрузки было бы логично разделить на 2 платы — отдельно клавиатура, отдельно светодиоды. Ведь, если пользователь решит отказаться от дисплея и клавиатуры в пользу ПК, совсем не факт, что он решит отказаться и от LED индикаторов. А ещё логичнее было бы объединить плату ЖК-дисплея с платой клавиатуры. Решили управлять своим акваконтроллером от ПК — убрали плату ЖК-дисплея и клавиатуры, и всё.

Выводы

  1. Отличная базовая идея, несомненные достоинства, подробное описание, но в тоже время и наличие отдельных недостатков подтолкнули самодельщиков к доработкам конструкции акваконтроллера Юсупова, разработке своих собственных моделей. В том числе и Юсупов разработал новую конструкцию акваконтроллера.
  2. Стоит ли повторять эту конструкцию? Я думаю, что лучше сделать одну из последующих модификаций этого акваконтроллера, в которой устранены недостатки первой модели. В тоже время это рабочая конструкция, и если она вам нравится, можете смело её повторять, тем более что этот акваконтроллер сделан с использованием микросхем в DIP корпусах, и его можно спаять обычным паяльником.
  3. Схемные решения, применённые Юсуповым, стоит изучить всем, кто разрабатывает свою модель акваконтроллера. Хотя эти решения можно назвать стандартными, но они собраны все в одном месте, и не надо перерывать горы литературы, что бы узнать, как подключить к микроконтроллеру силовое реле или какой усилитель должен быть у pH-электрода.

Функции аква-контроллера:
Часы. Индикация времени, даты, дня недели.
8 каналов управления устройствами с выбором управления как вручную, так и автоматически (по программам таймера, термостата, рН-электрода и т.д.). Максимальная мощность на один канал зависит от типа используемых реле или симисторов и может достигать 2 кВт.
20 программ таймера с возможностью выбора канала нагрузки и программирования по дням недели.
4 программы секундного таймера от 1 до 999 сек. с выбором канала нагрузки для подключения дозаторов удобрений и других дозирующих устройств.
Точность выдерживания интервалов не хуже 0,02 сек.
Поддержка двух электродов рН и управление клапаном СО2. Точность измерения РН +/- 0,02.
Поддержка двух электродов в режиме ‘мВ’ в диапазоне +/- 1000мВ для контроля редокс-потенциала и подключения ион-селективных электродов.
Возможность управления исполнительными устройствами (УФ, озонаторы и т.п.), точность измерения +/- 2мВ.
Настройка и калибровка электродов в цифровом виде по двум точкам (ввод поправочных коэффициентов).
Поддержка 8 цифровых датчиков температуры (DS18B20) на одной 2-х или 3-х проводной шине. Измерение температуры в пределах -25…+85 градусов.
Точность измерения 0,50. Возможность управления нагрузкой (обогревателем/охладителем) на любом из 8 каналов выхода.
Прекращение выполнения программы термостата при неисправности датчика.
Точность удержания значений РН, редокс-потенциала и температуры определяется пользователем при программировании.
Минимальный гистерезис для РН составляет 0,05, для редокс-потенциала – 5 мВ, для температуры – 0,50С.
Аккумулятор для работы МК с контролем заряда и автоматической подзарядкой.
Сохранение хода часов и полное слежение за программами таймера в течение 6-8 часов.
Автоматическое сохранение в энергонезависимой памяти всех настроек (кроме хода часов) при полном отключении питания и разряде аккумулятора.
Клавиатура на 6 кнопок по типу «джойстика» – «вверх/вниз», «вправо/влево», «ОК» и кнопка «отмена».
Может использоваться любая клавиатура с кнопками на замыкание, в том числе и с токопроводящей резиной сопротивлением до 500 Ом.
Быстрый повтор кнопок при удержании для комфортного программирования. Функция доступна в режимах, где требуется быстро изменить значение параметров.
Вывод информации на знакосинтезирующий ЖК-дисплей 20*4 с минимальными сокращениями, интуитивно-понятный интерфейс.
Автоматическое управление подсветкой дисплея (работает со светодиодной подсветкой, максимальный ток – 50 мА).
Связь с персональным компьютером по протоколу RS-232 (COM-порт). Дополнительное программное обеспечение для быстрого программирования таймеров,
термостата, РН и редокса, синхронизации времени, полуавтоматической калибровки электродов и для настройки дополнительных функций (программа Aqua Control)
Функция слежения за отклонением показаний датчиков от среднего установленного значения со звуковым оповещением и индикацией аварийного датчика.
Датчик уровня воды со звуковым оповещением.
Звуковое оповещение при аварийном состоянии с индикацией неисправного датчика.
Отключение нагрузки на произвольном выходе при срабатывании датчика уровня воды.*
Инвертирование выходов (для совместимости с некоторыми силовыми блоками)*
Отключение нагрузки (фильтра) на произвольном выходе при нажатии одной кнопки на 5-30 минут.*
* — функции программируются с персонального компьютера.

Таймер для аквариума — это полезное дополне

ние к остальному оборудованию. Дает возможность его запуска в отсутствии человека в заданное время с определенной периодичностью. Используя таймер можно регулировать включение и выключение освещения, подачу кислорода и углекислого газа.

Разновидности

По принципу работы таймеры разделяются на две группы — механические и электронные.

Электромеханический для света и освещения

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

Между собой различаются наличием регулятора, который позволяет таймеру работать простой электрической розеткой. Подключённый прибор может работать напрямую, в обход установленной программы. Использование таких таймеров гораздо удобнее. Нет необходимости иметь отдельное место для подключения оборудования и не придется переключать вилку из одной розетки в другую.

Важно! После окончания использования таймера в качестве обычной розетки, необходимо вернуть рычажок в обратное положение. В противном случае оборудование будет работать круглосуточно.

Программирование большинства электромеханических таймеров проводят практически одинаково. На каждом из них есть круглый циферблат с временной шкалой и рычажками для выставления включения-выключения. Программирование проводят так:

  1. отгибают рычажки вниз, и выставляют период времени для работы;
  2. настраивают часы поворачивая диск, пока треугольная метка не укажет на текущее время;
  3. включают таймер в розетку и в него включают необходимый прибор. При этом регулятор работы должен быть установлен в режим таймера.

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

Из недостатков отмечают:

  • без перенастройки каждый день будет повторятся один и тот же цикл работы;
  • сбой программы при отсутствии электропитания;
  • в некоторых моделях достаточно громкий тикающий звук;
  • выход из строя, чаще чем у электронных, из-за высокой изнашиваемости механических элементов.

Важно! При отсутствии питания в запрограммированный период времени программа собьется на то время, на которое оно было отключено.

Электронный — розетка

Эти приборы в несколько раз дороже более простых механических устройств. Информация выводится на жидкокристаллический экран. Для предотвращения сбоев в программе имеют свой собственный резервный аккумулятор. Позволяют запрограммировать включение-выключение оборудование на протяжении семи дней.

Между собой различаются наличием функции автоматического перехода на летнее и зимнее время, датчика движения. Каждый имеет переключатель для работы подключенного оборудования напрямую.

Из достоинств стоит отметить:

  • возможность отдельной настройки на каждый день в зависимости от необходимости;
  • повторение цикла можно выставлять на необходимое количество дней;
  • возможность включения программы с однодневной задержкой;
  • возможность выставить программу на день недели по выбору;
  • отсутствие на лицевой панели механических элементов;
  • минимальный временной промежуток настройки равен минуте;
  • бесшумность работы.

Основным недостатком считают конечный ресурс работы аккумулятора. Во многих моделях используется разработанный именно для них элемент питания. И заменить его может быть достаточно сложно или вовсе невозможно. В таком случае прибор придется заменить на новый.

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

Самодельный или своими руками

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

Советы и предупреждения

  1. к таймерам можно подключать любые приборы, но при этом нужно учитывать разрешенную мощность;
  2. не рекомендуется подключать фильтры и нагреватели. Температура воды должна регулироваться только датчиком нагревателя, а процесс фильтрации должен быть непрерывен;
  3. при необходимости подключения нескольких приборов лучше использовать один многоканальный таймер.

Как настроить это чудо техники?

Проблем с настройкой быть не может, все таймеры идут с подробными инструкциями. Главное соблюдать технику безопасности как при работе с любым электрическим прибором. Ниже видео настройки механического:

Использование таймеров для аквариума значительно упростит процесс ухода за его обитателями. К примеру можно добиться условий освещения полностью имитирующих дневной цикл в определенное время года, что будет очень полезно для растений и рыб. Это позволит избежать появления водорослей и помутнения воды, что снизит количество подмен воды.

Выбор типа таймера зависит от потребностей хозяина аквариума. Механические более простые и за ними желателен ежедневный контроль. Электронные больше подойдут людям, оставляющим аквариум без присмотра на несколько дней.

Таймер для аквариума: описание,фото,видео,обзор

  • Таймер можно использовать для любой бытовой техники, соблюдая ограничения мощности.
  • Не подключайте фильтры и нагреватели к таймерам!
  • Не оставляйте выключенный фильтр в аквариуме.

Таймер для аквариума (своими руками)

В аквариуме постоянно нужно поддерживать определенные параметры, обеспечивающие благоприятное существование рыб. Такие показатели, как температура воды и освещенность можно регулировать при помощи фотореле и термостатов. Но, для обеспечения периодичности кормления рыб в аквариуме и насыщения воды кислородом при помощи аэратора требуется таймер. Кроме того, требуется кормушка специальной конструкции, позволяющей автоматически точно дозировать количество корма в аквариуме.
Кинематическая схема кормушки аквариума приводится на рисунке 1. Контейнер, в который засыпается некоторый запас корма представляет собой трубу, установленную на коробчатом основании. В противоположных стенках этого основания сделаны круглые отверстия по диаметру трубы — контейнера. Отверстия смещены относительно друг друга на величину собственного диаметра трубы.
Внутри коробчатого основания с минимальным зазором размещен дозатор корма (или плашка), способная перемещаться в продольном направлении. В ней сделано отверстие по диаметру трубы-контейнера. Толщина плашки (а так же и толщина внутреннего пространства коробчатого основания) выбрана так, чтобы объем цилиндрической емкости (камеры), образованной отверстием в дозаторе был равен объему одноразовой порции корма, — суточной норме для рыб в аквариуме.
Работает кормушка следующим образом. В исходном состоянии дозатор находится в таком положении, как показано на рис. 1. То есть, его камера находится непосредственно под контейнером для заполнения сыпающимся вниз кормом. Теперь, если привести плашку в движение согласно направлению, показанному на рис. 1 стрелкой, то заполненное кормом камера переместиться влево и окажется над отверстием для выхода корма, которое сделано в нижней стенке коробчатого основания, через которое содержимое камеры высыпается в аквариум.
Затем, дозатор перемещается обратно и её уже пустая камера снова заполняется кормом. Таким образом, получается своеобразная шлюзовая система, в которой роль шлюзовой камеры выполняет камера в дозаторе.
Теперь о «сопутствующих деталях» таймера.
Для перемещения дозатора используется электромагнит с рычагом — толкателем. Положение опоры выбрано так, чтобы хода нижнего конца толкателя было достаточно для необходимого перемещения плашки, при котором камера в дозаторе перемещается от отверстия под контейнером и становится над отверстием для выхода корма. Для возврата плашки в исходное положение, после выключения электромагнита, служит возвратная пружина, действующая на сжатие.

Принципиальная схема таймера показана на рисунке 2.
Таймер управляет кормушкой и аэратором аквариума. Периодичность кормления рыб в аквариуме выбрана 24 часа, а периодичность работы аэратора — 2,5 часа. Эти параметры заданы «жесткой логикой» и в процессе эксплуатации не регулируются.
Таймер выполнен по цифровой схеме из тактового мультивибратора и многоразрядного двоичного счетчика. Частота тактового генератора 32768 Гц стабилизирована часовым кварцевым резонатором Q1. Конденсаторы С1 и С2 служат для подстройки частоты этого мультивибратоpa в небольших пределах с целью калибровки точности хода таймера.
Импульсы с выхода мультивибратора на микросхеме D1 поступают на счетчик, составленный из трех микросхем К561ИЕ16. На микросхеме D3 выполнен предварительный делитель на 16384, на выходе которого (выв. 3) образуются импульсы с периодом в 0,5 секунды.

Далее следует схема из последовательно включенных счетчиков D4 и D5, счет которых схемой «монтажное ИЛИ» на диодах VD3-VD7 ограничен до 172800. Что соответствует 24-м часам. То есть, через 24 часа после начала работы на резисторе R3 возникает импульс, который устанавливает все счетчики таймера на нулевую отметку.
Этот же импульс устанавливает RS-триггер D2.3-D2.4 в единичное состояние. Высокий логический уровень с выхода D2.3 поступает на ключ на VT1, который включает реле К1. А это реле, в свою очередь, подает питание на электромагнит автоматической кормушки. Спустя полсекунды на выводе 9 D4 возникает единица, которая возвращает триггер в нулевое положение и, тем самым, выключает электромагнит кормушки.
Так повторяется каждые 24 часа. Для периодического включения аэратора используются импульсы с вывода 7 D5 следующие с периодом около 2,5 часа. Эти импульсы периодически открывают ключ на VT2, а он посредством К2 включает питание аэратора.
Питается схема таймера аквариума от универсального источника. В гнездо Х1 включается источник постоянного тока напряжением 12-14V (можно использовать сетевой адаптер от старого принтера или сканера). А резервная батарея G1 служит на случай отключения электричества. В этом случае, от неё питаются только микросхемы, но не обмотки реле. Разделяют цепи питания диоды VD1 и VD2.
Происходит это так: в нормальном режиме напряжение на Х1 поступает от источника и составляет 12-14V, что больше номинального напряжения батареи G1. Поэтому диод VD1 закрыт, a VD2 открыт и питание происходит только от сетевого источника. Если сетевой источник таймера отключить (или отключилась электросеть), то напряжение на конденсаторах С3 и С4 начинает медленно падать и спустя некоторое время становится ниже чем напряжение G1. Диод VD2 закрывается, a VD1 открывается и начинается питание микросхем от G1.
Кнопка S1 служит для сброса таймера на начало отсчета. Её рекомендуется нажать после включения таймера. А включить таймер нужно в то время, когда обычно происходит кормление рыб в аквариуме. После этого каждые сутки кормление будет происходить именно в это время.
В таймере в качестве электромагнитных реле К1 и К2 используются реле КУЦ-1 от систем дистанционного управления старых отечественных телевизоров. Можно использовать и другие реле с обмоткой на 12V.
Электромагнит кормушки сделан из тягового реле стартера автомобиля ВАЗ. Катушка электромагнита перемотана. Вся старая обмотка, выполненная толстым проводом удалена, а вместо неё намотана новая, тонким проводом ПЭВ 0,12 до заполнения каркаса.
Электромагнит питается непосредственно от электросети. При намотке катушки нужно если не мотать виток к витку, то хотя бы равномерно распределяя намоточный провод. Концы обмотки нужно вывести с разных сторон каркаса и обеспечить надлежащее изолирование.
Рычаг-толкатель и опору можно так же использовать от этого же тягового реле. Недостаток такого электромагнита в его большой массе и избыточной силе, а так же необходимости перемотки. Поэтому его можно заменить каким-то более подходящим, если это возможно. Корпус основания выполнен из фанеры,
дозатор — ламинированная ДСП,
трубчатый контейнер можно сделать из отрезка пластиковой водопроводной трубы.
Все размеры зависят от объема одноразовой порции корма. Пружина от тягового реле стартера.

НАГРЕВАТЕЛЬ ДЛЯ АКВАРИУМА И ВСЕ ,ЧТО НУЖНО О НЕМ ЗНАТЬ.

КОМПРЕССОР ДЛЯ АКВАРИУМА: ОПИСАНИЕ,ВИДЫ,ФОТО,ВИДЕО,ТОП — 5.

КАК ПРАВИЛЬНО НУЖНО ЗАПУСТИТЬ АКВАРИУМ В ПЕРВЫЙ РАЗ?

ГРУНТ ДЛЯ АКВАРИУМА:ВИДЫ,НАТУРАЛЬНЫЙ,НЕЙТРАЛЬНЫЙ ИССКУCТВЕНЫЙ

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх