Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Ненавязчивая автоматизация ректификационной установки

Форум самогонщиков Автоматика
1 ... 11 12 13 14 15 16 17 ... 132 14
OldBean Доцент Красноярск 1K 1.4K
Отв.260  10 Апр. 17, 04:10
под малинуmakh, 09 Апр. 17, 21:46
Конечно, такое "самообслуживание" было бы простейшим решением. Но, к сожалению, не все начинают с малинки. Хотя - avrdude из командной строки и в Африке выглядит также ;)
Dmi_D Кандидат наук Минск 393 138
Отв.261  10 Апр. 17, 04:19, через 10 мин
не все начинают с малинкиOldBean, 10 Апр. 17, 04:10
А наличие апельсинок и прочих фруктов только усложняет ситуацию...
OldBean Доцент Красноярск 1K 1.4K
Отв.262  11 Апр. 17, 11:43
17.1. Как "прошить" ардуинку при помощи USBasp программатора

В этом топике мы рассмотрим простейший вариант "прошивки" модульков на базе Arduino Pro Mini, которые не имеют USB-интерфейса. "Прошивка" - это жаргонное слово, обычно означающее загрузку (запись) подготовленного кода (программы) микроконтроллера в его флэш-память. Выложить файлы прошивок (hex-файлы) параллельно с соответствующими скетчами предложил коллега makh. В этом есть смысл. Действительно, когда первый раз в жизни "прошиваешь" микроконтроллер, часто возникают проблемы. Чтобы уменьшить вероятность их возникновения как раз и были написаны эти "прописи".

Первое, что нам нужно для прошивки, это программатор. Сейчас простой программатор USBasp можно очень недорого (буквально за две-три сотни рублей) купить в любом профильном магазине. Его также легко сделать самому на базе микроконтроллеров AVR. Несколько ссылок на статьи, в которых описано изготовление самодельного программатора USBasp, я привел в конце топика "Полезные ссылки". Здесь необходимо отметить один момент. Имея малинку с GPIO, в принципе, можно обойтись и без программатора. В этом случае ардуинка подключается к пинам GPIO и прошивается без промежуточного узла - программатора. В Сети есть много примеров таких решения. Тем не менее, стоимость USBasp программаторов настолько низка, что имеет смысл остановиться на более универсальном и безопасном способе - прошивка с программатором. Итак, полагаем, что USBasp программатор у нас есть.

Второе, что нам понадобится - это специально подготовленный "hex-файл". Hex-файл - это текстовый файл, в котором определенным образом закодирован двоичный исполняемый код микроконтроллера. Я подготовил hex-файлы для всех узлов "ненавязчивой автоматизации", содержащих ардуинки. Они находятся в архиве hexs.zip в приложении к данному топику. Для каждого кода есть два варианта: с загрузчиком и без. В данном контексте можно использовать любой из них.

Ну и третье - нам понадобится какой-нибудь компьютер (или микрокомпьютер), имеющий USB, в который можно установить консольное приложение для прошивки микроконтроллеров AVR - avrdude. В дальнейшем, при описании, я буду ориентироваться на малинку в качестве такого компьютера. Понятно, что все команды применимы для любой рабочей станции под Linux без каких либо изменений (за исключением, возможно, команды установки самого приложения - avrdude) и Windows (при работе из консоли). Последний вариант лично я не проверял, но говорят, что должно работать. Существует множество графических оболочек для avrdude. Тем не менее, для единообразия, первую прошивку микроконтроллера мы выполним в консольном варианте приложения.

Далее последовательно выполним следующие шаги.

1. Устанавливаем avrdude на малинку консольной командой:
sudo apt-get install avrdude
2. Копируем hex-файлы в малинку. Конкретная команда зависит от ситуации, но если, например, мы связаны с малинкой по ssh из рабочей станции под LInux и папка с hex-файлами (hexs) находится у нас в текущеей директории, то команда в консоли рабочей станции может выглядеть следующим образом:
scp -r hexs pi@192.168.1.52:~
Здесь scp - команда копирования файлов по защищенному протоколу ssh, -r означает, что нужно копировать директорию со всеми вложенными поддиректориями, pi - имя пользователя малинки, 192.168.1.52 - адрес малинки в локальной сети (поставьте свой), ~ означает корень домашней директории пользователя (в данном случае - pi).

3. Поключаем Arduino Pro Mini к USBASP программатору. Это зависит от варианта разводки платы Arduino Pro Mini и разъема программатора. На платах, в которых слева выведено 2 ряда пинов, группа из 6 пинов как раз образует стандартный ISP-6-разъем. Такие платы показаны на рисунке ниже. Именно поэтому они удобны для программирования при помощи программаторов.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Для других разводок Arduino Pro Mini, пины ардуинки, необходимые для ISP (In-System Programming - внутрисхемное программирование, когда микроконтроллер можно программировать уже впаянным в плату), нужно соединить с соответствующими контактами разъема USBASP программатора. Обычно разобраться с этим несложно: пин ардуинки MOSI - к пину программатора MOSI, MISO - к MISO, SCK - к SCK, RESET - к RESET. Ну и, естественно, земля GND и питание VCC. Во время внутрисхемного программирования, на пине RESET устанавливается низкий уровень. В результате все порты микроконтроллера переводятся в высокоимпедансное состояние (Z-состояние). Т.е. микроконтроллер как бы "отключается" от платы, куда он впаян, и его можно программировать. В данном случае - по протоколу SPI, использующему шины MOSI (передача данных от ведущего к ведомому), MISO (передача от ведомого к ведущему) и SCK (синхроимпульсы).

4. Подключаем USB-разъем программатора к любому USB разъему малинки. Здесь вариантов немного ;)

5. И, наконец, в консоли малинки подаем команду для "прошивки":
sudo avrdude -c usbasp -p m328p -U flash:w:/home/pi/hexs/leddd05/leddd05.ino.with_bootloader.eightanaloginputs.hex
Здесь параметр -c задает тип программатора, -p - тип микроконтроллера. Параметр -U задает тип памяти, операцию и имя файла. В данном случае это запись во флэш-память микроконтроллера hex-файла с тестовой программой (leddd05), которую мы использовали при изготовлении и отладке модулька, содержащего ардуинку и семисегментный индикатор.

Смотрим на консоль. Avrdude - довольно "разговорчивое" приложение - много чего расскажет. После того, как все закончится - мы увидим работу тестового скетча - возрастающие в цикле числа на дисплее ардуинки. Все. Прошивка прошла успешно - можно прошивать модульки рабочими скетчами (контроллера ТЭНа, клапана отбора и датчика RMS питающей сети). Нужные hex-файлы находятся в соответствующих папках. Естественно, последнюю команду нужно скорректировать с учетом пути и имени hex-файла.

Вот и все. Как видим, прошивать микроконтроллеры - это не очень сложное занятие ;)

======================================

Предыдущий топик  Вернуться к оглавлению  Следующий топик

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

Рассмотрим конкретный пример.

Мы хотим посмотреть содержимое hex-файла с "монстроподобным" именем. Тот самый, при помощи которого мы прошивали ардуинку выше. Для этого мы должны ввести команду:
cat /home/pi/hexs/leddd05/leddd05.ino.with_bootloader.eightanaloginputs.hex
Согласитесь, что просто тупо вводить такую команду - довольно скучно, утомительно и чревато ошибками. Но мы воспользуемся функцией автозавершения. Итак, в папке /home/pi/hexs/leddd05/ у нас три файла (команда ls /home/pi/hexs/leddd05):
leddd05.ino
leddd05.ino.eightanaloginputs.hex
leddd05.ino.with_bootloader.eightanaloginputs.hex

Пишем в консоли (мы можем находиться в любой директории файловой системы малинки; это неважно):
1. cat /h и жмем Tab - получаем cat/home/
2. далее пишем p и опять жмем Tab - получаем cat /home/pi/
3. далее пишем h и жмем Tab - получаем cat /home/pi/hexs/
4. продолжаем - пишем l и опять жмем Tab - получаем cat /home/pi/hexs/leddd05/
5. дальше опять пишем l и опять жмем Tab - получаем cat /home/pi/hexs/leddd05/leddd05.ino
6. файлов, начинающихся с leddd05.ino в этой папке три поэтому пишем дальше .w и опять жмем Tab - наконец мы получаем полный текст команды: cat /home/pi/hexs/leddd05/leddd05.ino.with_bootloader.eightanaloginputs.hex
Жмем Enter и получаем текст hex-файла. Удобно, не правда ли?
hexs.zip 54.2 Кб
сообщение удалено
OldBean Доцент Красноярск 1K 1.4K
Отв.263  11 Апр. 17, 15:00
Вот Вы про этот вагон с тележкой интерфейсов (которые, в подавляющем большинстве, являются просто надстройками над той же консольной avrdude) и будете рассказывать новичку, у которого что-то заклинило в глубине непонятно какого вагона и какой тележки.
Моя же задача - рассказать новичку как гарантированно прошить микроконтроллер готовой прошивкой, независимо от того, за каким компом он сидит и какая ось у него крутится. Особенно - если он делает это в первый и последний раз. А религиозные споры о "человеческих" интерфейсах - это, пожалуйста, без меня.  
Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.



PS
Существует множество графических оболочек для avrdude. Тем не менее, для единообразия, первую прошивку микроконтроллера мы выполним в консольном варианте приложения.OldBean, 11 Апр. 17, 11:43
сообщение удалено
OldBean Доцент Красноярск 1K 1.4K
Отв.264  11 Апр. 17, 16:14
Мне что? Пересказать топик еще раз "своими словами"? Может проще прочитать хоть раз? Но внимательно.
нам понадобится какой-нибудь компьютер (или микрокомпьютер), имеющий USB, в который можно установить консольное приложение для прошивки микроконтроллеров AVR - avrdude. В дальнейшем, при описании, я буду ориентироваться на малинку в качестве такого компьютера. Понятно, что все команды применимы для любой рабочей станции под Linux без каких либо изменений (за исключением, возможно, команды установки самого приложения - avrdude) и Windows (при работе из консоли).OldBean, 11 Апр. 17, 11:43


PS
sevpro, пока реконструировал оглавление - обратил внимание на Вашу фразу:
Да все проще немного (STK500+AVR Studio+пару кликов мышкой), но речь не про это была.sevpro, 11 Апр. 17, 15:31
Представил как будет ржать над ней (если прочитает) какой-нибудь линуксоид или пользователь планшета под Android-ом.
brig62 Профессор Казань 2.4K 720
Отв.265  11 Апр. 17, 21:21
мы рассмотрим "гибридные" регуляторы, использующие методику старт-стоп в сочетании с методом регулирования скорости отбора по температуре в кубеOldBean, 02 Апр. 17, 05:06
Ждем с нетерпением уже вторую неделю.
makh Профессор Sаmara 2.1K 1.1K
Отв.266  11 Апр. 17, 22:09, через 48 мин
будет ржать над ней (если прочитает) какой-нибудь линуксоид или пользователь планшетаOldBean, 11 Апр. 17, 16:14
Виндузятник тоже поржот, особенно на слове "проще". А на слове "STK500" васче всем можно смеяться.

OldBean, ИМХО также можно упомянуть про возможность использования в какчестве програматора собственно ардуины. Малина все-таки штука совсем беззащитная, можно пальцем ткнувшись в разъем GPIO убить процессор. AVR камень в этом смысле существенно покрепче будет, а в IDE ардуины в примерах есть готовая прошивка. 
OldBean Доцент Красноярск 1K 1.4K
Отв.267  12 Апр. 17, 08:06
makh, конечно, ардуинка с USB - это фактически готовый программатор. Причем, в отличие от малинки, без проблемы согласования 3.3-вольтовой и 5-вольтовой логик (и соответствущих рисков). Но, боюсь, мы итак уже сильно отклонились от темы (автоматизация процесса ректификации) и погрузились в детали.

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

Одно такое "пожарное" решение, связанное с прошивкой, для новичков, попавших в "трудную жизненную ситуацию", мы с Вами совместными усилиями уже соорудили. Думаю, на этом можно и остановиться. Пора, действительно, возвращаться к алгоритмам ректификации, как совершенно справедливо отмечает brig62 ;)

сообщение удалено
OldBean Доцент Красноярск 1K 1.4K
Отв.268  12 Апр. 17, 12:13
юмористы собрались, которые не знают, что с AVRами напрямую можно работать с GCC, не отлавливая глюки Arduino IDE. Для этого иногда AVR Studio и ставят, и программы в ней пишут, и отлаживают...sevpro, 12 Апр. 17, 11:06
sevpro, ну опять Вы "пульнули куда-то в молоко". Здесь речь не идет о разработке приложений. Речь идет о внутрисхемной прошивке AVR-ки уже подготовленной "прошивкой". Т.е. задача заключается всего лишь в в чтении готового hex-файла и записи его во флэш-память МК. И все!

Именно поэтому Ваше предложение (шутка) выглядит действительно смешно. Во-первых, Atmel делает свою IDE (AVR Studio) исключительно для Windows. Чтобы воспользоваться ею под Linux-ом, приходится предварительно выполнять определенные танцы с бубном. Я уже не говорю о пользователях Android. Во-вторых, использование достаточно серьезной среды разработки (IDE) только для прошивки тоже выглядит не очень-то серьезно. Тем более, когда есть специализированные, кроссплатформенные и простые утилиты типа avrdude. Ну и в-третьих, стоимость программатора STK500 как минимум на порядок больше стоимости USBasp программатора. Согласитесь, что предложение купить его только для того, чтобы один раз прошить МК, тоже воспринимается как шутка. Поэтому давайте посмеемся над этим вместе, как над шуткой и пойдем дальше.

U-M Магистр MSK 210 39
Отв.269  12 Апр. 17, 14:55
А нет-ли в ближайших планах мыслей по отдельной "железке" для датчиков температуры и может какой-нибудь "железки" по боезопасности протечек, например?
dth Бакалавр Арти 98 39
Отв.270  12 Апр. 17, 14:56, через 2 мин
Собрал примерно как на фото.

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

Дисплеи пока не пришли, но испытания на лампочек провёл. Работает нормально.

Я так понял для калибровки RMS нужен ЛАТР и дисплей на датчике, или можно этот код напряжения читать по i2c?

Если нет ЛАТРа, как быть?

Добавлено через 7мин.:

U-M, про датчики уже спрашивали, вроде-как автор за. А вот про модуль датчиков протечек я тоже думал, но так и не спросил. ИМХО вещь нужная. Очевидный плюс - это расширяемость системы. Просто дополнительно подключить модуль по i2c и все!
1491997708665-437053926.jpg
1491997708665-437053926.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.271  12 Апр. 17, 17:43
А нет-ли в ближайших планах мыслей по отдельной "железке" для датчиков температуры и может какой-нибудь "железки" по боезопасности протечекU-M, 12 Апр. 17, 14:55
Температурный "серверок" ;) на базе ардуинки уже давно был задуман, но, к сожалению, концептуально еще просто "не вылежался". Дело не в подключении датчиков к ардуинке. Если делать без независимой индикации, то можно просто взять готовые решения. Их много в Сети. Например, - у коллеги makh здесь. В скетч нужно внести небольшие правки и добавить фрагментик кода для общения с малинкой по i2c и все. Но, если делать независимый модуль с цифровым дисплейчиком на семисегментных индикаторах, которым можно было бы пользоваться и автономно (без малинки, ну это - если стараться не нарушать концепт ;) , то возникает довольно мучительная проблема выбора вариантов. Дисплей один, датчиков много, разрядов мало. Поэтому нужно предусмотреть кнопочки для переключения датчика, температура которого будет выводится на дисплей в данный момент. Для DS18B20 реально нужно показывать как минимум 6 разрядов (три десятичных разряда - целые градусы и еще 3 разряда - дробная часть). Можно влепить два 3-разрядных индикатора, можно поставить один 10-разрядный, можно оставить один 3-4 разрядный индикатор, но предусмотреть кнопочку для "плавающей точки" и т.д. Т.е. как говорят чиновники - "вопрос еще не готов". Поскольку сейчас температурными датчиками занимается сама малинка, то проблема не стоИт остро. Поэтому вопрос с температурным "серверком" так до сих пор и "висит". Если есть какие-нибудь интересные идеи по UI - можем обсудить. Глядишь - на чем-нибудь остановимся и сделаем.

По датчику протечек никаких действий пока не планировалось.

Я так понял для калибровки RMS нужен ЛАТР и дисплей на датчике,dth, 12 Апр. 17, 14:56
В принципе, в данных приложениях, для датчика RMS абсолютной калибровки не требуется. Оставьте коэффициенты в скетче как они есть. Скорее всего, Вы все равно будете определять рабочую мощность установки (при ректификации) экспериментально. Просто Ватты, которыми Вы будете оперировать в программе будут несколько отличаться от реальных Ваттов. Но ничего страшного в этом нет - все будет работать ничуть не хуже. Но, просто не забывайте об этом.
или можно этот код напряжения читать по i2c?dth, 12 Апр. 17, 14:56
Можно. Измеряемое датчиком RMS действующее напряжение в сети Вы в любой момент можете считывать по i2c (только не забудьте про поправку - посмотрите комментарий в конце скетча для датчика RMS - в функции sendData()).
.....
Если малинка подготовлена, Вы можете начинать работать и без индикаторов. Всю информацию можно смотреть на экране рабочей станции, с которой будете управлять малинкой. Или на самой малинке, если к ней подцепить дисплей, клавиатуру и мышь. Удачи!
dth Бакалавр Арти 98 39
Отв.272  12 Апр. 17, 17:55, через 13 мин
OldBean, Спасибо. Сегодня во время пробного запуска и тестирования устройств i2c я считывал показания RMS. Это и есть измеренное напряжение? Просто вращая подстроечник максимум добился цифры 178, что как-то маловато для сети.

Код завтра посмотрю, перепроверю всё.
capsolo Профессор Зелик 5.3K 1.6K
Отв.273  12 Апр. 17, 17:58, через 4 мин
Если есть какие-нибудь интересные идеи по UI - можем обсудить. Глядишь - на чем-нибудь остановимся и сделаем.OldBean, 12 Апр. 17, 17:43
По кругу с таймаутом гоняются название градусника и снятая температура. К примеру с периодом 10 сек: 3 сек название датчика - 7 сек значение датчика. Кнопы не нужны. Два семисегментника на градусы, два на сотые. Так сделано в популярных контроллерах STH0024
makh Профессор Sаmara 2.1K 1.1K
Отв.274  12 Апр. 17, 18:39, через 41 мин
Если неприменно хардварить дисплей хочеццо -- матрицу, или две, или более, и бегущей строкой любой вывод. Китайца их продает уже распаянные с MAX7219 за полтора бакса, так что, вопсчем-то, даже не надо к градусник-серверу прикручивать, сразу к малине по TWI SPI в рамках общего концепта -- дисплей системы, и разрулить вывод любой нужной фигни .)

Добавлено через 1мин.:

http://www.ebay.com/...W-/222263146269
U-M Магистр MSK 210 39
Отв.275  12 Апр. 17, 19:31, через 53 мин
Не, не, у ТС концепт системы - каждая "железка" самодостаточна. Если нет дисплея, то смысла мерить отдельным модулем нету-без малинки ничего не увидеть.
Как вариант - работа с 5-6 датчиками. Каждый на свою ногу, автоопределение того какие подключены, какие нет. Если подключен и барахлит-сообщение ошибки. Температура с точкой в формате xxx.xx (вдруг больше 100 градусов кому надо). Общее отображение в цикле в формате: n.xxx.xx? где n-номер датчика. Если датчика нет, то номер просто пропускается (или прочерки вместо температуры ?), чтобы не загромождать потоком ненужных данных, если ошибка, то вместо температуры error.
По идее кнопки и не нужны?
OldBean Доцент Красноярск 1K 1.4K
Отв.276  12 Апр. 17, 19:43, через 12 мин
Это и есть измеренное напряжение?dth, 12 Апр. 17, 17:55
На сотню меньше. Так что крутите подстроечник обратно.

По кругу с таймаутом гоняются название градусника и снятая температура. К примеру с периодом 10 сек: 3 сек название датчика - 7 сек значение датчика. Кнопы не нужны. Два семисегментника на градусы, два на сотые. Так сделано в популярных контроллерах STH0024capsolo, 12 Апр. 17, 17:58
Ну в принципе, до сотни градусов себя можно ограничить. Температура редко выходит за сотню. А когда сравнивается или превышает (например, при пропарке колонны) - следить в общем-то уже не сильно нужно. Хорошо.

Далее. Три дробных разряда можно сократить до 2. Хотя, для DS18B20, визуально следить за трендом температуры становится менее удобно. Да, да. Несмотря на то, что квант равен 0.0625. Сам с этим удивительным фактом столкнулся. Переход с двух дробных разрядов на три существенно облегчил визуальное восприятие тренда температуры (именно по цифрам, не по графику). Но ладно. Не до хорошего. Ко всему можно привыкнуть.

Итак, остановимся на 4 разрядном индикаторе. Они есть в виде единых блоков и нужной высоты. Это удобно.

Теперь с показом "по кругу". Если в системе 4 датчика, то показания какого-то конкретного датчика мы будем видеть один раз в 40 сек. Это все-таки много. Тренд уже не почувствуешь (придется тупо писать на бумажке ;) . Поэтому хоть одну кнопку предусмотреть нужно. Нажал на нее - перешел от сканирования датчиков по кругу к непрерывному показу температуры одного датчика (который показывался в момент нажатия). Нажал второй раз - опять поехали по кругу.

Ну вот может быть как-то так?

U-M Магистр MSK 210 39
Отв.277  12 Апр. 17, 19:45, через 2 мин
А как понять от какого датчика какая температура показывается?
OldBean Доцент Красноярск 1K 1.4K
Отв.278  12 Апр. 17, 19:52, через 8 мин
А как понять от какого датчика какая температура показывается?U-M, 12 Апр. 17, 19:45
Мда. Действительно не очень красиво. Несмотря на то, что показания разных датчиков достаточно "характерны", думаю, что вопрос "а что это за датчик" будет возникать.

Ну что? Еще одну кнопку ставить? Держишь кнопку - показывается номер датчика, отпускаешь - температура.

Или коротенько (на секунду или доли) показывать номер датчика? Но в этом случае мы опять будем "терять" переключение дробных разрядов при отслеживании тренда. Лучше все-таки кнопка.
makh Профессор Sаmara 2.1K 1.1K
Отв.279  12 Апр. 17, 20:02, через 11 мин
А на матрицу можно и тренды вывести... Пиктограмками-стрелочками, например.