Акваконтроллер Ардуино... без Ардуино!


Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Акваконтроллер Ардуино... без Ардуино!
Добрый день, уважаемые любители автоматизации аквариумной жизни. На нашем форуме есть множество тем, посвященных контроллерам на базе Ардуино. В том числе очень познавательная тема ZORS. Ваш покорный слуга тоже не избежал подвига ардуиностроения, о чем честно выложил всю информацию и результаты. Эту тему можно считать прододлжением упомянутой предыдущей.
Поэкспериментировав с разными Ардуино, о чем сообщил в той своей теме, я подумал о нескольких вещах, направленных на упрощение и миниатюризацию конструкции управления ЛЭД-светом, в частности для наноаквариумов, которыми я увлекаюсь.
1. А нужен ли экран? Ну, показывает он время, так на это есть наручные или настенные часы. Или температуру - так есть же достаточно стильные нано-термометры. Или индикация режима освещения: автоматический или ручной? Упростим. Долой экран, заменим его тремя светодиодами: зеленый (автоматический режим), желтый (ручное включание света) и красный (ручное отключение света). Дешевле и места меньше занимает.
2. Сколько нужно кнопок для управления? В моих предыдущих конструкциях было от 3 до 5 кнопок. А может быть, хватит всего одной: опять экономия места и программы контроллера.
3. А нужен ли вообще сам ардуино? Что такое ардуино? Это плата, на которой расположена микросхема ATMEGA с обвязкой. А может нам хватит самой микрухи без обвязки? Да конечно - хватит. И дешевле, опять таки.
Практическому решению этих вопросов и посвящена эта тема.
2015-06-16 добавлено 16/06/2015 22:04:49#2099812

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Итак, чем чайника (и меня в том же числе чайников) привлекает ардуино? Да простотой создания программ (скетчей) и простотой их загрузки в память контроллера - включил в USB нажал кнопку. Но мы же знаем, что такое ардуино - это просто микруха Atmega. Можно ли как-то с ней работать, причем в привычной для чайников-ардуинистов программе Arduino-IDE? Можно и очень просто. Но для начала нам все-таки потребуется плата ардуино, причем любая. К меня была свободной ардуино-нано, вот на ее примере и начнем.
Открываем программу ArduinoIDE, вкладку "файл - примеры - ArduinoISP". Откроется скетч, который представляет из себя программу, позволяющую использовать ардуину в качестве загрузчика для других контроллеров, в т.ч и Atmega. Жмем кнопочку загрузить - и через несколько секунд ардуино становится платой-загрузчиком.
2015-06-16 добавлено 16/06/2015 22:39:14#2099831

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Теперь нужно доработать напильником саму программу ArduinoIDE, чтобы с помощью нее можно было программировать микросхемы Atmega. Для примера я покажу доработки для микрух Atmega8 и Atmega32, с которыми работал сам. Если вам нужно что-то другое, то прочитав тему до конца, вы сможете вполне во всем разобраться. Но вы прекрасно понимаете, что делаете все на свой страх и риск.
Итак, нам нужно пройти путь /arduino/hardware/arduino Он расположен или в папке Program Files в винде или по пути /usr/share/arduino/hardware/arduino для поклонников linux, который стоит и у меня.
Далее находим файл boards.txt и заменяем его на этот файл. Это слегка подредактированный вариант файла, отвечающий за меню кнопки сервис в программе ArduinoIDE. Нажав на Сервис-Плата, теперь вы увидите, что в списке доступных плат появились атмеги 8 и 32 для работы с внешним кристаллом 16 МГц.
2015-06-17 добавлено 17/06/2015 00:28:32#2099856

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Но это еще не все. Необходимо загрузить .hex файл для работы с определенной микросхемой. Можно воспользоваться моими готовыми файлами для atmega8 16 Mhz и atmega32 16 Mhz.
Также можно самостоятельно сконфигурировать .hex по этой ссылке, там же можно корригировать и board.txt
ПОлученный .hex файл необходимо вставить в папку по пути /usr/share/arduino/hardware/arduino/bootloaders/optiboot (это в linux, в винде нечто похожее в папке Programm Files/Arduino и т.д.).
Теперь ваша программа ArduinoIDE готова работать с микрухами а платой ардуина в качестве загрузчика для микрух.
2015-06-17 добавлено 17/06/2015 17:45:14#2100147

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Поехали дальше. Как присобачить микросхему к плате ардуино? Оказалось, это элементарно. Посмотрим на распиновку любой atmega8, 16, 32. Она одинаковая для всех

Подключение питания: +5В на вывод 7 (VCC), а -5В на вывод 8 или 22 (Ground). Далее подключение выводов микрухи к ардуине следующее
1 (Reset) к D10
19 (SCK) к D13
18 (MISO) к D12
17 (MOSI) к D11
Понятно, что подключаем до подсоединения питания.
Затем очень важно подключить внешний кварц, я использую 16 МГц. В принципе, микросхемы имеют и свой внутренний кварц, если не ошибаюсь - 1 МГц, но, во-первых, на нем микруха работает медленнее, а во-вторых он менее стабильно держит частоту, поэтому для стабильной работы нужен внешний кварц, он стоит копейки, продается на киллограммы (шутка). Кварц подключается к выводам 9 и 10, а для стабильной работы эти выводы через конденсаторы 22 пФ подключаются к земле (т.е. на -5В).
Все это можно проделать и на монтажной плате, но если есть время/навык/терпение, но можно соорудить и постоянный программатор на печатной плате

Изменено 17.6.15 автор Дядька-рыбомор
2015-06-17 добавлено 17/06/2015 18:02:28#2100156

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Вот, к примеру, мой программатор, в котором ардуино нано присоединена к микрухе указанным выше способом (вы тоже можете сделать нечто подобное, печатной платы не привожу, ибо рисую их карандашиком по-старинке, да она и не важна, главное принцип)

Микросхема, естесственно, на панельке. Да и ардуино тоже, чтоб не впаивать/выпаивать.
На снимке хорошо виден кварц, а также красный диод, подключенный к выводу 19 (аналог D13 у ардуино) для загрузки любимого всеми ардуинщиками скетча blink13 и проверки работоспособности atmega.
Кроме того, есть кнопка Reset (но можно и без нее), а также 10-пиновый интерфейс "папа" для стандартного 10-пинового шлейфа. Он нужен для подключения программатора USBasp (полезная штука, может пригодиться) а также для отладки микросхем непосредственно на плате готового контроллера (потом поймете, почему это удобно) через 10-пиновый шлейф.
Такжы вы видите и 8-пиновый разъем "папа". А он зачем? А вот зачем

Через него подключаются часики и монитор. Тоже полезная фича, например, для установки времени на часы. Подключение часов и монитора (через интерфейс I2C) такое
28 вывод - SCL
27 вывод - SDA
Ну а VCC и GROUND, надеюсь, понятно, куда цеплять.
Конечно, вы можете собрать любую нужную вам схему программатора, тут главное принцип, а не слепое копирование. Лично мне удобно так.
2015-06-17 добавлено 17/06/2015 18:28:23#2100167

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Итак, мы приготовили программу ArduinoIDE и подключили ардуино к микрухе, а саму ардуину - к компу через USB. (Предварительно не забываем загрузить скечт ArduinoISP на саму ардуину, превратив ее в программатор) Что делаем дальше?
А дальше нужно загрузить программу-загрузчик на микросхему. Делается это так: на вкладке "сервис" выбираем "программатор Arduino as ISP", потом выбираем плату, которую вы используете (atmega 8, 32 или другую) и жмем кнопочку "записать загрузчик". Все, ваша микруха готова для приема скетчей и работы с внешним кварцем.
Как загрузить скетч на микруху? Выбираем скетч, затем в "сервис" выбираем свою микросхему в разделе "плата", задаем "Arduino as ISP", а потом жмем в разделе "файл" кнопочку "загрузить с помощью программатора". Это важно, т.к. если вы нажмете просто "загрузить", то скетч пойдет не на микруху, а на ардуину.
2015-06-17 добавлено 17/06/2015 18:45:39#2100174

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
А вот для примера я собрал упрощенный контроллер на монтажной плате и пока гоняю его в тестовом режиме.

Я обязательно постепенно буду выкладывать этапы постройки этого упрощенного контроллера, так что потерпите. Вверху, кстати, виден самопальный блок питания, который будет не лишним в лаборатории любого аквариумиста-ардуиниста.
2015-06-17 добавлено 17/06/2015 18:50:30#2100175

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Есть еще одно важное свойство микросхем atmega. Это соответствие их выводов (ножек) входам и выходам платы ардуино. Привожу подробно, начиная с первого вывода Atmega.
1 - Reset
2 - цифровой выход D0
3 - цифровой выход D1
4 - цифровой выход D2
5 - цифровой выход D3
6 - цифровой выход D4
7 - VCC (+5V)
8 - Ground (-5V)
9 и 10 - служат для подключения внешнего кварца (может для чего-то еще - я не знаю)
11 - цифровой выход D5
12 - цифровой выход D6
13 - цифровой выход D7
14 - цифровой выход D8
15 - цифровой выход D9 с диммированием
16 - цифровой выход D10 с диммированием
17 - цифровой выход D11 с диммированием, он же MOSI
18 - цифровой выход D12 с диммированием, он же MISO
19 - цифровой выход D13
20 - AVCC ("аналоговое питание")
21 - AREF для чего - не знаю
22 - Ground (-5V)
23 - аналоговый вход А0
24 - аналоговый вход А1
25 - аналоговый вход А2
26 - аналоговый вход А3
27 - аналоговый вход А4 (он же SDA)
28 - аналоговый вход А5 (он же SCL)
2015-06-20 добавлено 20/06/2015 08:02:54#2101128

Кандидат в Советники





1685 456
Москва
16 час. назад
AREF - опорное напряжение аналоговых входов.
т.е. если надо мерить напряжение не от 0 до 5в, а к примеру 0-2,5, то на AREF нужно подать 2,5в и тогда в цифре при 2.5в будет значение 1023.
Но могу ошибаться, сам не пользовался им, просто было интересно для чего он.
Вот про него.
2015-06-20 добавлено 20/06/2015 08:13:34#2101129

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
DrFr

Спасибо. Я тоже о нечто подобном читал, но не пользовался.
2015-06-20 добавлено 20/06/2015 08:20:30#2101132

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Кстати, вот интересная тема про стабилизацию микросхем Atmel клик
Итак, приступаем у проектированию контроллера. Начнем с чего-то простенького, например - управление светодиодным освещением со ступенчатыми закатами и рассветами. Экран нам не нужен, индикация режима контроллера (авто/ручное) будет по светодиодным индикаторам: красный, желтый, зеленый. Переключение режимов одной кнопкой. При возникновении программных сбоев во избежании несанкционированного включения света ночью (вполне возможно при потере PWM-сигнала) страхуемся гальванической развязкой питания драйвера через реле.
Питание всей схемы от 12В импульсника, причем на драйвер светодиодов идет 12В, а на схему управления - только 5В через DC/DC-конвертер. В его качестве можно использовать стандартные схемы на основе 7805 или LM317, но они довольно сильно греются и требуют радиаторов, а мы хотим компактный прибор. На этот раз я использую готовый конвертер на основе LM 2596, его можно купитть на e-bay, да и в радиомагазинах тоже, но дороже.
2015-06-20 добавлено 20/06/2015 20:38:11#2101276

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Итак, собираем комплектующие.
Источник питания: импульсный AC/DC Feron LB005-30W на 12В.
DC/DC конвертер на стабилизаторе LM2596
Драйвер для светодиодов MW LDD-700H, диммируемый, мощность 700 мА. Мне для 10 литрового наноаквариума хватит. Диоды - два или три Cree MX-6.
Реле любое малогабаритное, управляющее напряжение 5 В. Я не буду покупать готовую релейную плату, т.к. это дороже и она занимает довольно много места. У меня есть реле Tianbo 05VDC TRKM-S-Z.
Для управления реле нам нужен один транзистор DC337 или ему подобный n-p-n, хоть КТ315, только нужно будет подобрать значение сопротивления в схеме и ток коллектора.
Также нужен один диод 1N4007 или ему подобный.
4 светодиода маломощных для индикации: два красных, желтый и зеленый.
Резисторы: 10 ком - 1 шт; 2,2 ком - 1 шт; 1 ком - 4 шт;
Конденсаторы: 22 пФ - 2 шт; 0,1 мкФ - 1 шт; электролит 4,7 мкФ.
Индуктивность 47 мкГн
1 кнопка
Резонатор 16 МГц
Часы DS3231, они довольно точные, и программа написана под библиотеку этих часов. Кстати, библиотек под них несколько, если не найдете работоспособную с этим скетчем, я выложу. Обратите внимание, что в скетче я не писал строк загрузки времени в часики, предполагается, что это сделано заранее. Я так и поступаю при помощи приведеннрого выше программатора. Если нужно, я скину программку для загрузки часов.
Можно собирать схему. Она выложена тут.
Скетч для работы можно скачать тут.
ЗЫ. На монтажной плате несколькими постами выше собран именно этот контроллер. Пока тестируется. Затем рисуем печатную плату, тщем подходящий коробок - и наслаждаемся.

Изменено 20.6.15 автор Дядька-рыбомор
2015-06-20 добавлено 20/06/2015 21:06:57#2101288

Свой на Aqa.ru




3481 679
Санкт-Петербург
2
3 час. назад
Дядька-рыбомор
Честно сказать не понимаю зачем здесь Ардуинка вообще?В качестве програматора-неразумно.Атмеловские микры можно зашить и на обычном програматоре.Ну а если самому софт писать на Си,то ещё и компелятор потребуется.Вообще контроллеры очень хорошие,простые,надёжные и очень удобные в использовании.
2015-06-21 добавлено 21/06/2015 09:40:57#2101365

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
сообщение Андрей финн
Честно сказать не понимаю зачем здесь Ардуинка вообще?В качестве програматора-неразумно.Атмеловские микры можно зашить и на обычном програматоре.

Это ключевое слово - "обычном программаторе". Не имея никакого, даже отдаленного отношения к электронике и программированию, я не держу дома ни "обычного", ни какого другого программатора. А вот лишняя ардуинка - имеется. И языкам программирования я не обучен, только в прошлом годе занялся контроллерами ардуино. Так что с точки зрения профи - тема очень даже критикабельная. А для чайноков, которых на форуме больше, надеюсь - полезная.

Изменено 21.6.15 автор Daxel
2015-06-21 добавлено 21/06/2015 12:02:52#2101400

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Андрей.
Хотя программатор USBasp для работы в ArduinoIDE у меня есть (и даже предусмотрен стандартный разъем под его шлейф на моем так сказать "программаторе"), но я им пользуюсь редко, т.к. LINUX его почему-то не видит даже после бубна, а в винде 7 и 8 он работает с переменным успехом.
А потом ведь смысл этой темы не научить программированию AVR-контроллеров (я и сам не умею), а показать, что можно довольно дешево построить акваконтроллер почти любой сложности.
Мне кстати форумчане прислали ссылку в которой используется название "iAQUA", придуманное лично мной и несколько раньше, чем выходит по этой ссылке. Жаль, надо было зарегистрировать товарный знак .
2015-06-21 добавлено 21/06/2015 15:33:41#2101450

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад

Все комплектующие собраны, схема обкатана в течение нескольких дней на макетке, работала без сбоя во всех режимах. Сегодня развел печатную плату в layout-6, нашел подходящую коробочку и планирую за неделю собрать и запустить контроллер.
Есть пара вопросов к знатокам.
1. На плате драйвер MW LDD будет довольно близко расположен по отношению к реле. Возможно ли их взаимное электромагнитное влияние?
2. И такой же вопрос по отношению к конвертеру на LM2596 и драйверу (в конвертере есть индуктивности).
2015-06-21 добавлено 21/06/2015 21:07:32#2101550

Советник

Модератор
Модератор



2395 485
Рыбинск
17 час. назад
Дядька-рыбомор
Это ключевое слово - "обычном программаторе". Не имея никакого, даже отдаленного отношения к электронике и программированию, я не держу дома ни "обычного", ни какого другого программатора.

Всё гораздо проще... В качестве программатора используется компьютерная программа. Наберите в поисковике "Внутрисхемное программирование ATMega". Панелька в этом случае для проца тоже не нужна.
2015-06-29 добавлено 29/06/2015 23:23:57#2103779

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
Уважаемые коллеги-аквариумисты. Я продолжаю свой небольшой отчет о постройке простейшего контроллера лед-освещения с функцией диммирования на 1 канал. Ранее не позволяла работа и отсутствие времени выбраться на радиорынок кой-чего прикупить.
Итак, плата протравлена и распаяна. В итоге имеем следующее

На плате имеется стандартный 10-пиновый разъем для подключен программатора. К самой плате подключены часики ds3231 и dc/dc конвертер. Он нужен для питания самой платы напругой 5 В, т.к. в контроллер поступает 12В для лед-драйвера.
Программируем плату при помощи того программатора, что я собрал (или любым вам угодным - не суть)

Подключаем светильник, и УРА!!! Заработало!!!

Упаковываем в коробочку, часики и конвертер заворачиваем в маленькие пакетики (места в коробочка мало, изоляция чтоб не коротнуло ничего)

Контроллер для непрофессионала получился довольно компактным. Завтра буду тестировать и определю, нужен ли радиатор на драйвер, если сто - приклею термопроводящим клеем.


Изменено 12.7.15 автор Дядька-рыбомор
2015-07-11 добавлено 11/07/2015 22:53:25#2107395
Нравится Volcan0

Свой на Aqa.ru




1149 188
Ростов-на-Дону
3 дн. назад
сообщение e99
... "Внутрисхемное программирование ATMega"...

Спасибо. Я читал об этом раньше, но мне это дело показалось сложным, поэтому, пообщавшись на форумах ардуинщиков, пошел по пути adruino-as-ISP. Одновременно с конструированием программатора, прикупил на e-bay еще и USBasp программатор, благо стоит недорого. Последний не показал стабильной работы в винде, а в линуксе вообще не заработал. На форумах линуксоидов можно, конечно, найти решение этой проблемы, но как-то руки не дошли.
Мой путь представляется проще для меня, т.к. позволяет работать в уже изученной проге arduinoIde, а учиться работать в pony или других подобных просто нет времени. Хотя, я прекрасно понимаю, что мой путь есть некий суррогат с точки зрения настоящего программиста.
ЗЫ. А все-таки аквариум замечательное хобби! Никогда не думал, что после возвращения в ряды аквариумистов в 2008 году (после 18-ти летнего перерыва!) мой кругозор расширится до физиологии растений (спасибо Диме "Sebbb"), дизайна (спасибо Наташе Романович из Минска за ее статьи), электроники и программирования (спасибо ZORS) и вообще кучи приятных собеседников на форуме и на птичьем рынке. Это ж какая гимнастика для ума! И дома красотень. Жена сначала приняла аквариумы со скепсисом, а теперь это неплохое украшение интерьера, и гостям всегда интересно (основная реакция на растения - А ОНИ ВСЕ НАСТОЯЩИЕ?!).
2015-07-14 добавлено 14/07/2015 16:01:31#2108055
Нравится Volcan0

Посетитель




151 23
Москва
5 дн. назад
сообщение Дядька-рыбомор
Долой экран, заменим его тремя светодиодами: зеленый (автоматический режим), желтый (ручное включание света) и красный (ручное отключение света).
Поясните, пожалуйста, алгоритм работы этих режимов.
2015-08-26 добавлено 26/08/2015 15:45:37#2120740

Создать новую темуБыстрый ответ