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

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

ЗЫ
добавил голосование
 
ЗЫЫ
По результатам голосования выяснилось, что большинство "вообще не в курсе".
Посему немного расскажу, что есть и что планируется.
Уже приводил цитату "Arduino — аппаратная вычислительная платформа". Представляет собой микроконтроллер Atmel AVR (от Меги8 до Меги256) с некоторой обвязкой (USB-UART конвертер, кварц, стабилизатор питания).
Себе я заказал Freeduino 2009 (аналог Arduino Duemilanove) c Mega328 на борту. Имеется 14 цифровых входов/выходов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов.
Т.е. это просто микроконтроллер в удобной обвязке.
Что мы можем с этим сделать?
Например подключить DS18B20 и получать температуру через виртуальный COM порт в компьютер. Или присоединить ЖК экран и выводить температуру на него. Можно запрограммировать какой-либо выход на включение нагрузки при превышении или понижении температуры (естественно потребуется силовая обвязка). Получится простейший контроллер для выключения нагрева при дистилляции. А можем подключить 2 датчика температуры, вычислять разность их показаний и управлять клапаном отбора дабы не пропустить хвосты при ректификации.
KD Научный сотрудник Танкоград 1395 443
Ответ #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 (1Кб - загружено 481 раз)
KD Научный сотрудник Танкоград 1395 443
Ответ #3: 08 Фев 11, 19:37, через 1 мин
подключение датчика DS18B20

собираем такую схему (ВНИМАНИЕ, в дальнейшем пин на котором висит DS будет изменен):
sketch_bb.png
LCD у нас уже подключен Подмигивающий, потому осталось только прицепить DS18B20
Можно соединить по 2-м проводам, у меня работает. Подтягивающий резистор обязателен.

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

homedis.zip (1Кб - загружено 838 раз)
OneWire.zip (9Кб - загружено 545 раз)
сообщения удалены (2)
KD Научный сотрудник Танкоград 1395 443
Ответ #4: 08 Фев 11, 20:33, через 56 мин
Подключаем клавиатуру
схема будет такая (ВНИМАНИЕ, сейчас она изменена):
 keys.png
все резисторы кроме самого правого - 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), однако не нравится мне. Буду собирать вместе с силовой обвязкой в бОльшем корпусе. От печатной платы наверное откажусь, лишь для клавиатуры меленькую сделаю
IMG_2579_sm.jpg
516x496 41Кб
pcb2.jpg
897x655 81Кб
calibrate.zip (1Кб - загружено 461 раз)
keys.zip (2Кб - загружено 434 раз)
сообщение удалено
KD Научный сотрудник Танкоград 1395 443
Ответ #5: 08 Фев 11, 21:10, через 38 мин
Как обещал собрал все в кучу в распредкоробке 190х140 вместе с силовой обвязкой (2 канала с BTA16)
img_2603.jpg  

img_2605.jpg

img_2607.jpg
  
img_2610.jpg
сообщение удалено
m16 Модератор Тамбов 1310 617
Ответ #6: 09 Фев 11, 23:24
анонсподключение датчика DS18B20KD, 08 Фев 11, 19:37
открой тайну ,сколько эта программа съела флэши и рамы?
да , и зачем ты дельные замечания потёр?
KD Научный сотрудник Танкоград 1395 443
Ответ #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 Модератор Тамбов 1310 617
Ответ #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 Специалист Ростов на Дону 129 53
Ответ #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 Научный сотрудник Танкоград 1395 443
Ответ #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 Научный сотрудник Танкоград 1395 443
Ответ #14: 30 Мар 11, 20:08
KD можно в студию схемку силовой обвязки?(ответ 5)
Pavel07041, 30 Мар 11, 11:24
схема из даташита на MOC3063

на первый пин подаем сигнал с ардуины (Rin я поставил 360 Ом), второй на землю, с 4-го и 6-го к анодам симистора, резистор на 39 Ом и кондер не ставил.
сделал под управление симисторами маленькую платку (если найдутся желающие повторить то переделаю ее немного: надо поменять выходные контакты местами, удлинить контактные площадки под планарный корпус MOC):

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

triac_02.jpg

triac_03.jpg
KD Научный сотрудник Танкоград 1395 443
Ответ #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 ед. у меня их совсем нет), но совсем уменьшать нельзя, могут перестать работать кнопки. Вообще эту настройку лучше не трогать. Добавлена возможность убрать звук кнопок.
less06_beer.zip (5Кб - загружено 365 раз)
less06_beer_v0.91.zip (6Кб - загружено 425 раз)
Pavel07041 Новичок Нефтеюганск 6
Ответ #16: 03 Апр 11, 10:00
KD а данная силовая обвязка коннектится с ВМ8036 ?
KD Научный сотрудник Танкоград 1395 443
Ответ #17: 03 Апр 11, 13:24
в 8036 уже стоят оптосимисторы, потому схема должна быть еще проще. На досуге обмозгую - напишу точнее.

фотки экранов программы для варки пива
стартовый экран, нагреватель выключен, процесс остановлен
img_2612.jpg  
устанавливаем температуру первой паузы
img_2613.jpg  
устанавливаем длительность первой паузы. Аналогично для других пауз.
img_2614.jpg  
процесс запущен
img_2615.jpg  
основной экран в процессе работы. Температура 26,87, нагрев включен, шаг программы - нагрев до 52, оставшееся время не индицируется.
img_2616.jpg  
нагрели до 52, запускается таймер, видно что осталось до конца паузы 19 мин 25 сек. Температура выше нормы, нагреватель выключен.
img_2617.jpg  
То же, только температура ниже нормы, нагрев включен
img_2618.jpg
Pavel07041 Новичок Нефтеюганск 6
Ответ #18: 03 Апр 11, 14:16, через 52 мин
Ну да есть,но они на нагрузку не более двух ампер а BTA16 около 15А.
alekslug Научный сотрудник Мариуполь 3956 986
Ответ #19: 03 Апр 11, 14:48, через 32 мин
 в 8036 уже стоят оптосимисторы, потому схема  проще