Форум самогонщиков Сайт Барахолка Дабы не отвыкнуть

Аппаратная платформа Arduino для автоматизации наших процессов

Форум самогонщиков, пивоваров, виноделов Оборудование Автоматика
1 2 3 4 ... 63 1
KD Научный сотрудник Танкоград 1365 619
08 Февр. 11, 19:36
Содержание/путеводитель по теме
Подключаем LCD
Подключаем DS18B20
Клавиатура
Первый девайс в сборе
Силовая часть
Первая программа для варки
(затирания) пива
Программа дистилляции
Схема контроля нуля
KD Научный сотрудник Танкоград 1365 619
Отв.1  08 Февр. 11, 19:36, через 1 мин
Из вики
Arduino — аппаратная вычислительная платформа, основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wiring. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере
Заказал себе клон Arduino Duemilanove на ATmega328. ( http://freeduino.ru/arduino/freeduino2009.html )
Хочу сделать автоматику для пивоварения, но попутно, наверное, захвачу и ректификацию.
Я ленив, плюс самогонные (и пивные) дела немного отошли на второй план потому быстро о достижениях рассказывать не смогу. И главный вопрос - надо ли? Потому как многие ждут автоматику от Руди, кто-то юзает аналоговый ОВЕН, кто-то доволен NM8036. Если надо и кто-то готов повторять (творить свое) то буду рассказывать по порядку.

ЗЫ
добавил голосование
 vote1.png
ЗЫЫ
По результатам голосования выяснилось, что большинство "вообще не в курсе".
Посему немного расскажу, что есть и что планируется.
Уже приводил цитату "Arduino — аппаратная вычислительная платформа". Представляет собой микроконтроллер Atmel AVR (от Меги8 до Меги256) с некоторой обвязкой (USB-UART конвертер, кварц, стабилизатор питания).
Себе я заказал Freeduino 2009 (аналог Arduino Duemilanove) c Mega328 на борту. Имеется 14 цифровых входов/выходов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов.
Т.е. это просто микроконтроллер в удобной обвязке.
Что мы можем с этим сделать?
Например подключить DS18B20 и получать температуру через виртуальный COM порт в компьютер. Или присоединить ЖК экран и выводить температуру на него. Можно запрограммировать какой-либо выход на включение нагрузки при превышении или понижении температуры (естественно потребуется силовая обвязка). Получится простейший контроллер для выключения нагрева при дистилляции. А можем подключить 2 датчика температуры, вычислять разность их показаний и управлять клапаном отбора дабы не пропустить хвосты при ректификации.
KD Научный сотрудник Танкоград 1365 619
Отв.2  08 Февр. 11, 19:36, через 1 мин
Немного цен:
Freeduino 2009 (Mega328) - 950  руб, + пересылка 170 р.
LCD дисплей - 290 руб.
Датчик DS18B20 - 85 руб/шт.
Блок питания - зарядка от сотика (была).
Корпус - коробка распределительная 190х140 - 213 руб.
Симисторы BTA16 - 40 руб шт.
Остальную мелочевку не считаю ибо неинтересно. Что-то около 200 руб.

Итак, железка у меня в руках. Ставим софт с прилагаемого диска или скачиваем с инета (http://arduino.cc/en/Main/Software ).
Дрова для конвертера USB-RS232 W7 у меня нашла сама. Для любителей других версий "ОС В" есть дрова в комплекте (папка /drivers в скачанном пакете).
Я не буду рассказывать про работу с софтом (Arduino IDE), гугл вам поможет. Стандартный Blink пропустим, надо что-то более информативное чем светодиод.
Подключаем LCD дисплей.
я купил Winstar WH1602B-YGK-CTK, собственно других (с другим интерфейсом) особо и нет
хорошая информация есть тут http://www.pobot.ru/topic/show/118/
соединяем arduino с LCD согласно схеме в вышеприведенной ссылке. (ВНИМАНИЕ, в последующих версиях пины на которые повешен дисплей будут изменены)
вот что получилось:

скетч (программа) в аттаче
homedis.zip 583.0 б
KD Научный сотрудник Танкоград 1365 619
Отв.3  08 Февр. 11, 19:37, через 1 мин
подключение датчика DS18B20

собираем такую схему (ВНИМАНИЕ, в дальнейшем пин на котором висит DS будет изменен):

LCD у нас уже подключен Подмигивающий, потому осталось только прицепить DS18B20
Можно соединить по 2-м проводам, у меня работает. Подтягивающий резистор обязателен.

Еще понадобится библиотека для работы с 1Wire. Есть в аттаче, распаковать в папку \libraries в папке с установленной Arduino IDE.
Загружаем скетч из аттача, прошиваем его в ардуину. Проверяем.
Вот что получилось у меня:
 

homedis.zip 1.1 Кб
OneWire.zip 8.5 Кб
сообщения удалены (2)
KD Научный сотрудник Танкоград 1365 619
Отв.4  08 Февр. 11, 20:33, через 56 мин
Подключаем клавиатуру
схема будет такая (ВНИМАНИЕ, сейчас она изменена):
 
все резисторы кроме самого правого - 2,2 кОм, самый правый - 220кОм. (Может вызвать путаницу подключение кнопок. Просто надо учесть, что выводы у них парные, т.е. верхние (по схеме) соединены вместе, также и нижние)
Т.е. собираем резистивный делитель, и нажимая кнопку, подаем поделенное напряжение на аналоговый вход проца (0 аналоговый вход). По нашей схеме - чем правее кнопка - тем меньшее напряжение будет формироваться.
Дальше будем его декодировать и определять нажатую кнопку.
Для калибровки клавиатуры напишем простую програмку (calibrate.zip в аттаче)
Она выводит на LCD значение АЦП. Нажимая кнопки можно наблюдать изменение этого значения. Запишите их. У меня получилось 1023, 813, 607, 405, 203. Они понадобятся в следующей программе. Отнимая и прибавляя к ним например 20 получим диапазон значений АЦП соответствующее нажатой кнопке. Например для первой > 1003, для второй между 793 и 833 и т.д.
Программа выводящая код нажатой кнопки в аттаче (keys.zip), там есть комментарии в т.ч. в нормальном txt для "ОС В".
Фото своей клавиатуры не привожу ибо она совсем сейчас не фотогенична. В ближайшее время постараюсь все красиво собрать на печатной плате.
Собрал на печатной плате (pcb2.jpg) в аттаче. Это черновой вариант, оригинал к сожалению похерен. Заливка полигонов в реале делалась цапон лаком а на картинке в граф. редакторе (потому и артефакты).
Засунул девайс в корпус от Dlink DIR100 (IMG_2579_sm.jpg), однако не нравится мне. Буду собирать вместе с силовой обвязкой в бОльшем корпусе. От печатной платы наверное откажусь, лишь для клавиатуры меленькую сделаю
pcb2.jpg
IMG_2579_sm.jpg


calibrate.zip 1.5 Кб
keys.zip 1.9 Кб
сообщение удалено
KD Научный сотрудник Танкоград 1365 619
Отв.5  08 Февр. 11, 21:10, через 38 мин
Как обещал собрал все в кучу в распредкоробке 190х140 вместе с силовой обвязкой (2 канала с BTA16)
 




  
сообщение удалено
m16 Модератор Тамбов 1804 970
Отв.6  09 Февр. 11, 23:24
анонсподключение датчика DS18B20KD, 08 Февр. 11, 19:37
открой тайну ,сколько эта программа съела флэши и рамы?
да , и зачем ты дельные замечания потёр?
KD Научный сотрудник Танкоград 1365 619
Отв.7  10 Февр. 11, 07:20
открой тайну ,сколько эта программа съела флэши и рамы?m16, 10 Февр. 11, 01:24
зачем ты такими словами с дилетантом (со мной) разговариваешь? Улыбающийся
скажи как посмотреть объем занятой памяти? у меня есть только Arduino IDE.
По общему размеру кода (тот что с датчиком)- "Binary sketch size: 5212 bytes (of a 30720 byte maximum)"

Про замечания согласен, немного поторопился. Хотел шапку себе освободить.
Для тех кто не прочитал - замечания были в основном касательно слабости выбранного проца, а также хаянье Протеуса и CodeVision:
поторопился. программируя на сях нужно быть виртуозом чтобы вписаться в 2к рам , как я понял там компилятор на уровне codevision который память жрёт немерянно. нуно было Arduino Mega заказывать под сей софт.m16, 08 Февр. 11, 22:17
ничего личного , лишь трезво оцениваю девайс. в меге328 RAM=2к это я вот к чему. протеусом пользоваться не советую и забыть как страшный сон . отлаживаться нужно в живом камне а не виртуальном. многие вещи исправно работающие в протеусе в железке висят. в Arduino Mega камень стоит пожирнее мега1280 от того и совет.и ещё , программируя на сях нужно анализировать генерируемый код , и там где компилятор начинает дурить пытаться оптимизировать код и пользовать ассемблерные вставки.удачи.m16, 08 Февр. 11, 22:48
Барахло, ресурса не хватит, нужна минимум Мега64, лучше 128 или что-то подобное. А протеус - полное ..., выкинуть и забыть, как и CodeVision.Rudy, 09 Февр. 11, 02:21
m16 Модератор Тамбов 1804 970
Отв.8  10 Февр. 11, 08:40
По общему размеру кода (тот что с датчиком)- "Binary sketch size: 5212 bytes (of a 30720 byte maximum)"KD, 10 Февр. 11, 07:20
итак , эта "небольшая" програмка делает следующее : в первую строку жк индикатора выводит строку homedistiler.ru , опрашивает термодатчик , преобразовывает полученные данные в привычную форму и выводит сие во вторую строку индикатора. занимает этот алгоритм в памяти программ (флэш память) 5212 байт или 16% от общего объёма.
так вот , аналогичная программа на ассемблере занимает около 500 байт. это я к тому о чём говорил выше - покупать нужно было платку с жирным процем так как компилятор тухловат в плане оптимизации кода . в приципе с этим начать работать можно но вы ближайшее время столкнётесь с нехваткой памяти.
удачи

Candell Студент Москва 22 1
Отв.9  19 Марта 11, 00:46
Я также использовал плату Arduino для управления сервоприводом игольчатого клапана регулировки флегмового числа . Очень удобно. Правда, у меня проц помощнее.
garry1964 Специалист Ростов на Дону 139 63
Отв.10  19 Марта 11, 11:52
на ебее я купил у этого продовца
http://shop.ebay.com/...om=&_ipg=25
15 пустых плат 30$
http://cgi.ebay.com/...=item3f02d4cac7


всю остальную обьвязку здесь
ATMEGA328-AU 196 руб.
http://www.kontest.ru/
ft232 самая дорогая вещ, можно ставить на первую плату.
цена модуля тогда будет ~300р

предполагается модульность, на нескольких процессорах

KD Научный сотрудник Танкоград 1365 619
Отв.11  21 Марта 11, 07:16
Я где-то в китайском онлайн-магазине находил клон Arduino mega за 19 баксов, правда ссылки не оставил и сейчас найти не могу.
Много дороже Ардуины получается обвязка (датчики, коробка, бп, LCD, клавиатура, клапан), посему просто выбирал где удобнее купить.
Candell, было бы интересно посмотреть.
garry1964, а для чего модульность? имхо один проц с нашими задачами вполне справится.
Candell Студент Москва 22 1
Отв.12  21 Марта 11, 22:19
Для KD
[сообщение #1109048]
Отлично работает до сих пор !
Pavel07041 Новичок Нефтеюганск 6
Отв.13  30 Марта 11, 11:24
KD можно в студию схемку силовой обвязки?(ответ 5)
KD Научный сотрудник Танкоград 1365 619
Отв.14  30 Марта 11, 20:08
KD можно в студию схемку силовой обвязки?(ответ 5)
Pavel07041, 30 Марта 11, 11:24
схема из даташита на MOC3063
moc3063_3.gif
на первый пин подаем сигнал с ардуины (Rin я поставил 360 Ом), второй на землю, с 4-го и 6-го к анодам симистора, резистор на 39 Ом и кондер не ставил.
сделал под управление симисторами маленькую платку (если найдутся желающие повторить то переделаю ее немного: надо поменять выходные контакты местами, удлинить контактные площадки под планарный корпус MOC):

Симисторы у меня BTA16 (только подсунули какое-то г... у них корпус не не изолирован, ладно что я сразу с расчетом на это конструктив делал)
Жалею, что не сделал индикацию включенного состояния выхода, очень неудобно без нее.
еще немного фоток:




KD Научный сотрудник Танкоград 1365 619
Отв.15  03 Апр. 11, 08:23
Хочу сделать автоматику для пивоваренияKD, 08 Февр. 11, 21:36
Написал вчера программу для затирания пива (мда, прошло почти 2 месяца). Правда ужасно страшная (код не оптимальный), что поделать - не программер я. Программа заняла в памяти 11672 байт.
Что умеет:
Затирать пиво Улыбающийся
Запоминает 4 температуры (T1....T4) и 4 длительности пауз (P1....P4). Умеет измерять температуру. Далее идет по алгоритму "Греем до T1", "Поддерживая T1 ждем P1 минут", "Греем до T2", и т.д. По окончании пищит. Естественно паузы и температуры можно менять. Причем прямо по ходу программы (могут быть неожиданности Улыбающийся ). Выдавать текущую температуру через USB (правда пока с глюками).
Что не умеет:
Все, что не указано в предыдущем пункте.
Какие планы:
Надо бы оптимизировать код. Сделать некоторые косметические улучшения. Добавить поддержку 2-х и более датчиков чтобы можно было попутно контролировать температуру промывочной воды, а лучше сразу управлять ее нагревом. Сделать отключаемым звук клавиш. Добавить возможность калибровки клавиатуры. Добавить выход на мешалку, возможно с реверсом. Прикрутить labView или что-то другое (посоветуйте) для рисования графиков.
Уважаемые пивовары, убедительная просьба: напишите что вам бы еще хотелось видеть в списке возможностей.

фотки чуть ниже

В аттач со временем буду добавлять новые версии этой программы
v0.91 (05/04/2011) - добавлена калибровка клавиатуры. Для этого при подаче питания удерживаем любую кнопку нажатой. Потом появляется приглашение нажать кнопку 1 (вверх). Нажимаем, отпускаем - появляется значение АЦП на 1 сек и переход к следующей кнопке (матрица кнопок такая - 1 - вверх, 2 - влево, 3 - ОК (энтер, средняя кнопка), 4 - вправо, 5 - вниз. Добавлена настройка диапазона АЦП для кнопок. При уменьшении будет меньше ложных срабатываний (при дефолтных 20 ед. у меня их совсем нет), но совсем уменьшать нельзя, могут перестать работать кнопки. Вообще эту настройку лучше не трогать. Добавлена возможность убрать звук кнопок.
Pavel07041 Новичок Нефтеюганск 6
Отв.16  03 Апр. 11, 10:00
KD а данная силовая обвязка коннектится с ВМ8036 ?
KD Научный сотрудник Танкоград 1365 619
Отв.17  03 Апр. 11, 13:24
в 8036 уже стоят оптосимисторы, потому схема должна быть еще проще. На досуге обмозгую - напишу точнее.

фотки экранов программы для варки пива
стартовый экран, нагреватель выключен, процесс остановлен
 
устанавливаем температуру первой паузы
 
устанавливаем длительность первой паузы. Аналогично для других пауз.
 
процесс запущен
 
основной экран в процессе работы. Температура 26,87, нагрев включен, шаг программы - нагрев до 52, оставшееся время не индицируется.
 
нагрели до 52, запускается таймер, видно что осталось до конца паузы 19 мин 25 сек. Температура выше нормы, нагреватель выключен.
 
То же, только температура ниже нормы, нагрев включен

Pavel07041 Новичок Нефтеюганск 6
Отв.18  03 Апр. 11, 14:16, через 52 мин
Ну да есть,но они на нагрузку не более двух ампер а BTA16 около 15А.
alekslug Научный сотрудник винокур, Лобня. 4939 1623
Отв.19  03 Апр. 11, 14:48, через 32 мин
 в 8036 уже стоят оптосимисторы, потому схема  прощеmaster_kit_4_ei_4_06.gif