new
1. Вариант LITE v. 0.4.1.3 Документация по аппаратному и программному обеспечению.
2. О визуальном программировании в ненавязчивой автоматике
3. I2C-сеть. Тестирование репитеров P82B715
4. Одноранговая (пиринговая) i2c-сеть. Работа малинки в режиме i2c-slave
5. Про микроконтроллер ATMega32U4
6. Вариант LEGO. Плата расширения малинки (модуль RPiExp)
old
1. Введение
1.1. Почему ненавязчивая?
1.2. Тестирование системы
1.3. Мотивация
2. Общее описание установки
3. Подготовительные операции
3.1. Доработка платы Arduino Pro Mini 5V/16MHz
3.2. Доработка "железа"
4. Контроллер ТЭНа
5. Первый шаг ненавязчивой автоматизации
6. Контроллер электромагнитного клапана отбора
7. Немного о концепте
8. Датчик RMS (среднеквадратичного напряжения сети)
9. Датчик атмосферного давления
10. Классы-обертки
10.1. Классы-обертки для датчиков - модуль sens
10.2. Классы-обертки для контроллеров (исполнительных устройств) - модуль contr
11. Еще немного о концепте
12. О пользовательском интерфейсе
13. Испытание нового софта в "боевых условиях"
13.1. Первый этап испытаний - запуск колонны
13.2. Второй этап испытаний - отбор хвостов и пропарка колонны
13.3. Скрипт автоматизации - подробности
14. Технические вопросы
14.1. Вариант организации работы с малинкой
14.2. Подготовка Raspberry Pi к работе
14.2.1. На рабочей станции под Ubuntu
14.2.2. На рабочей станции под Mac (от коллеги ram78)
14.2.3. На рабочей станции под Windows
14.2.4. Настройка статического IP малинки в локальной сети (от коллеги C-Bell)
14.2.5. Еще вариант подготовки малинки к работе + Samba (от коллеги U-M)
14.3. Как "прошить" ардуинку при помощи USBasp программатора
14.4. Особенности реализации протокола i2c на малинках
14.5. Некоторые рекомендации по шине 1-Wire
14.6. Реализация передачи данных с контрольной суммой от gindos
15. Простейшие критерии отбора основной фракции (тела)
15.1. Коррекция температурной уставки при изменении атмосферного давления
15.2. Импульсный регулятор скорости отбора тела (aka "старт-стоп")
15.3. Позиционный (релейный) регулятор скорости отбора тела
15.4. Регулирование скорости отбора по температуре в кубе. Теория
15.5. Регулирование скорости отбора по температуре в кубе. Практика
15.6. Гибридные методы
15.7. Заключение
15.8. В качестве эпилога к первому варианту автоматизации: учет дифференциальной составляющей
16. Ревизия софта после года эксплуатации системы
16.1. Подготовка к работе малинки, снабженной монитором, клавиатурой и мышкой
16.1.1. Часть 1. Установка и настройка ОС Raspbian
16.1.2. Часть 2. Установка и настройка дополнительного ПО, необходимого для программирования
17. Вариант Lite
17.1. Блок-схема, крейт и общая компоновка
17.2. Датчик RMS с детектором нуля
17.2.1. Макет
17.2.2. Плата. Варианты разводки и реализации
17.2.3. Прошивки
17.3. Контроллеры исполнительных устройств
17.3.1. Силовые модули. Макет
17.3.2. Силовые модули. Печатная плата. Варианты разводки и реализации
17.3.3. Контроллер контактора. Прошивка
17.3.4. Контроллер ТЭНа. Прошивка
17.3.5. Контроллер клапана отбора. Прошивка
17.3.6. Контроллер сервомашинки MG90S
17.4. Цифровой модуль и адаптер 1-Wire для аналоговых датчиков
17.4.5. Датчик кубового давления с интерфейсом 1-Wire
17.5. Классы-обертки
17.5.1. Датчики и цифровые модули. Создание и работа с объектами классов Sensor, DM, BMP180
17.5.2. Класс RMS
17.5.3. Исполнительные устройства. Классы PM, PWM и HTR
17.5.4. Краткая документация по классам модуля nna
17.6. Логическая схема ПО варианта LITE
17.7. Модуль lsync
17.7.1. Установка сервера redis и redis-py
17.7.2. Новые версии прошивок модулей
17.7.3. Модуль lsync
17.7.4. Текущие версии прошивок и синхронизатора lsync
17.7.5. lsync v.0.3.x.x
17.7.6. Текущее состояние "железа" варианта LITE и софта v. 0.3.0.1
17.8. Клиенты redis для решения разных задач
17.8.1. Простой клиент для классической кубовой ректификации (v.0.0.1.4)
17.8.2. Утилита записи калибровочных данных в EEPROM - calibr.py
17.9. Вопросы безопасности варианта LITE
17.10. Библиотека lite v.0.4.x.x
17.10.1. Пример "ручной" работы с установкой
17.10.2. Библиотека lite 0.4.0.0. Пример автоматизации
17.10.3. Библиотека lite 0.4.0.1. Пример скрипта для реальной ректификации
17.10.4. Библиотека lite 0.4.0.1. Подробный разбор скрипта для ректификации
17.11. Исполнительные устройства и датчики
17.11.1 Фракционник
17.X. Тупиковые варианты
17.X.1. Температурный сервер
17.X.2. Реализация I2C для связи малинки (master) с МК ATtiny85 (slave)
17.X.3. Силовой модуль
17.X.4. Контроллер контактора. Firmware
20. Разные эксперименты
20.1. Температура ТСА как простой индикатор окончания отбора голов
20.1.1. "Прикидочный" эксперимент
20.2. Простой датчик скорости отбора
---------------------------------------------------
Полезные ссылки и заметки (обновлено 30.09.2019)
===================================================
1. Введение
1.1. Почему ненавязчивая?
По нескольким причинам.
Во-первых, процесс изготовления этой системы получился на удивление легким и приятным. Потому что система модульная. Я разрабатывал ее последовательно по отдельным модулям. Каждый модуль представлял собой законченное функциональное устройство на основе микроконтроллера, которое могло работать как совершенно независимо (в том числе и в "ручном" режиме), так и в различных сочетаниях друг с другом "под чутким руководством" управляющего микрокомпьютера Raspberry Pi (ака "малинка").
Во-вторых, движущим мотивом всегда было некоторое раздражение, вызываемое той или иной операцией, которую необходимо было выполнять в процессе "ручной" ректификации. Для автоматизации этой раздражающей операции как раз и изготавливался соответствующий модуль. После этого работать на установке становилось все приятнее и приятнее.
И в-третьих, я хотел сделать более-менее универсальный экспериментальный стенд для изучения разных режимов ректификации (в том числе и существенно нестационарных). Поэтому, для достижения максимальной гибкости, система задумывалась иерархической. Иерархия пока двухуровневая. Функции управления процессом ректификации отделены (на аппаратном уровне) от рутинных низкоуровневых операций типа дерганья клапана отбора, модуляции сетевого напряжения симистором для регулировки мощности ТЭНа, измерения первичных параметров и т.п.
Из базовых операций одна пока не автоматизирована - менять приемные емкости приходится вручную. Просто потому, что меня это пока никак не раздражает. Даже нравится - как-то сразу чувствуется польза от установки :)))
Системой можно управлять (в том числе и удаленно) с любого компьютера (под Linux, Windows, Android и т.п.) поддерживающего защищенный протокол SSH. Интерфейс пока аскетичный (старая привычка работать с консолью неистребима). Но, в принципе, можно по SSH работать и с рабочим столом малинки в графике. Просто еще не уверен нужен ли мне GUI или нет. Пока устраивает консоль. Зато работать можно хоть по телефонным проводам и модему с парой сотен бит в секунду :))) С малинкой легко и веб интерфейс организовать. Но пока это просто не интересно.
1.2. Тестирование системы
С помощью этой системы (в уже в полном объеме) было проведено около 10 полноценных ректификации сахарного сырца, две из которых двойные. Каждая ректификация продолжалась в среднем порядка 20-25 часов (с перерывами на ночь и дополнительными циклами разгона утром). За это время произошел один единственный сбой автоматики в процессе работы установки - устойчивая ошибка ввода-вывода по шине i2c, вызванный некачественной распайкой разъема (один проводочек шины был плохо пропаян и тайно "отлепился" под термоусадкой). Система тихо выключилась (естественно, притушив все, до чего дотянулись руки малинки) и сообщила об ошибке. Благодаря модульной структуре и полной независимости всех модулей неисправность была быстро найдена и ликвидирована.
Пару раз (не во время работы, а ночью во время перерывов в работе) малинка полностью "теряла" все датчики температуры (DS18B20). С причиной этого я еще не разобрался. Возможно какой-нибудь датчик как-то пакостит на шине. Лечится легко перезагрузкой температурных датчиков - отключаем шину 1 wire (питание) от малинки, пауза несколько секунд и опять подключаем шину. Далее все работает штатно. Этот косяк происходил когда система простаивала. Высокое в это время снято, все низковольтное остается включенным, вода охлаждения отключена и система остывает естественным образом. Но в процессе работа такого еще ни разу не было.
1.3. Мотивация
Итак, с моей точки зрения система получилась приятной, гибкой, расширяемой и достаточно надежной. Вот я и подумал, что может быть имеет смысл описать ее поподробнее на форуме? В виде своеобразных "прописей". Чтобы ее можно было легко повторить или позаимствовать какие-то решения, если кому понравятся такой ненавязчивый подход. Это, конечно, не самая дешевая автоматизация, но все равно она получается существенно дешевле, чем если покупать что-нибудь готовое с такой же функциональностью. Для ее изготовления не требуется шибко высокая квалификация ни в электронике, ни в программировании. Средненького (любительского) уровня вполне хватит. Я сам берусь за паяльник только когда очень сильно припрет, но никаких трудностей с разработкой, изготовлением и наладкой этой системы я не испытывал.
Естественно, система будет развиваться дальше. Поэтому в процессе написания прописей что-то будет добавляться, выкидываться или изменяться.
Ну и, конечно, буду очень признателен за любые конструктивные замечания или советы.
2. Общее описание установки
Общая схема установки представлена на рисунке ниже
фотографии общего вида железа
и электроники
Железо достаточно стандартное, покупное. От Добровара. В последнее время они научились делать белее-менее причное железо, которое можно купить практически в любом профильном магазине. После небольших модификаций это железо можно заставить стабильно работать. О железе и некоторых его доработках расскажу позже в отдельном топике.
К железу пристроены четыре датчика температуры: в кубе, в нижней трети колонны, на входе дефлегматора (чуть выше входного фланца) и на выходной трубке хлаждения дефлегматора. Последний датчик выполняет только защитную функцию. Данные с датчиков температуры считываются неперерывно с интервалом приблизительно 3.5 сек непосредственно управляющим микрокомпьютером (Raspberry Pi) по шине 1 Wire.
В стандартный куб от Добровара емкостью 23 л врезан ТЭН на 1.5 кВт. Мощность нагрева ТЭНа регулируется отдельным микроконтроллером за счет пропуска/непропуска целых полупериодов сетевого напряжения к нагревателю. Используется модифицированный алгоритм регулировки, основанный на диффузии ошибки дискретизации (ака Брезенхем). Модификация алгоритма заключается в компенсации постоянной составляющей за счет выравнивании количеств отрицательных и положительных полупериодов, пропускаемых к ТЭНу. Всеми этими хлопотами занят контроллер ТЭНа. От управляющего микрокомпьютера (по шине i2c) он получает только команду какой процент от номинальной мощности нагрева нужно обеспечить. Остальное все он делает сам независимо от других узлов системы. Если нужно, контроллер может работать и совершенно автономно. В этом случае мощность нагрева устанавливается двумя кнопками ("+" и "-"), установленными на плате контроллера.
Для регулирования отбора спирта из узла отбора дефлегматора используется электромагнитный клапан AR-HX-3 MSQ, выполненный из нержавеющей стали, с силиконовым кляпом. В переходнике непосредственно перед входом в клапан установлен жиклер. Отверстие в жиклере выполнено таким образом, чтобы максимальная скорость отбора клапана была приблизительно 1000 мл/час. Для плавной регулировки средней скорости отбора используется ШИМ (широтно-импульсная модуляция) с периодом следования импульсов 10 сек. Непосредственной работой с клапаном заниматся тоже отдельный контроллер. От управляющего компьютера (по шине i2c) он получает только команду какую скорость отбора нужно обеспечить. Все остальное - уже его забота. Контроллер электромагнитного клапана (естественно, с клапаном) может работать тоже совершенно автономно. В этом случае скорость отбора регулируется вручную кнопками, установленными на плате контроллера.
На случай существенных колебаний напряжения в сети в системе предусмотрен датчик среднеквадратичного напряжения, подключенный к шине i2c. Информация о напряжении в сети поступает в управляющий микрокомпьютер Raspberry Pi, который корректирует (если необходимо стабилизировать мощность) процент от номинальной мощности ТЭНа, подаваемый в команде контроллеру ТЭНа.
На случай сильных колебаний атмосферного давления предусмотрен датчик атмосферного давления BMP180, подключенный к управляющему микрокомпьютеру по шине i2c. В настоящее время данные этого датчика не используются непосредственно в процессе автоматического управления (это - в планах) и носят справочный характер. Но следить за атмосферным давлением, как показали тестовые ректификации, очень полезно. Сразу снимает целый ряд вопросов.
Сам управляющий компьютер (штатно работает Raspberry Pi 2, но иногда экспериментирую и с версией 3) подключен к внешней сети через Wi-Fi. Общение с ним (с ПК) ведется по защищенному протоколу SSH. Можно работать с любого места на земле, где есть TCP/IP, и с любого компьютера, поддерживающего эти протоколы. В принципе, к Raspberry легко подключается и монитор, и клавиатура, и мышка, но с рабочей станции по SSH получается как-то удобнее.
Ну вот и все из общей информации об установке и ее составных частях. Далее, по мере наличия времени и возможностей, попробую рассказать о каждом узле подробнее. Может быть кому-нибудь и пригодится. В любом случае рассказывать кому-нибудь подробно о своих поделках - очень полезное занятие еще и для себя. Начинаешь лучше понимать все плюсы-минусы того, что наваял, появляются новые идеи и т.п.
------------------------------------------------
С Новым годом, коллеги!
================================================
Предыдущий топик Вернуться к оглавлению Следующий топик