по умолчанию фузы Atmega328 прошиты на тактирование от внутреннего генератора 8мгц. также запрограммирован фуз CKDIV8=0. в результате тактовая частота проца = 1мгц. частота программирования по isp должна быть менее 1/4 тактовой проца т.е менее 250кгц.
при первом программировании частоту isp у avrdude нужно снижать ниже 250кгц. сбросить фуз CKDIV8 = 1. обязательно программировать фуз CKOUT=0
Ненавязчивая автоматизация ректификационной установки
m16
Модератор
Тамбов
1.9K 1K
Отв.1400 08 Мая 18, 10:46
gol_avto
Доцент
Москва - Серпухов - Анапа
1.3K 458
Отв.1401 08 Мая 18, 11:46
Спасибо! Действительно, восстановил заводские фьюзы - перестал МК читаться. Добавил в команду параметр -B 5 - период тактовой частоты в мкс и все читается с заводскими фьюзами
pi@raspberrypi:~ $ sudo avrdude -B 5 -c usbasp -p m328p
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
avrdude done. Thank you.
Записал в шпоргалку. Думаю инфа будет полезна новичкам в МК, таким как я.
pi@raspberrypi:~ $ sudo avrdude -B 5 -c usbasp -p m328p
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
avrdude done. Thank you.
Записал в шпоргалку. Думаю инфа будет полезна новичкам в МК, таким как я.
m16
Модератор
Тамбов
1.9K 1K
Отв.1402 08 Мая 18, 12:30, через 44 мин
есть хорошая книга по аврам, рекомендую.
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL
Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1403 09 Мая 18, 05:54
Ну и еще копеечка... ;) для пользователей USBasp-программаторов
В USBasp-программаторах, обычно предусмотрен специальный джампер для снижения скорости тактирования при программирования микроконтроллеров с низкой тактовой частотой.
В USBasp-программаторах, обычно предусмотрен специальный джампер для снижения скорости тактирования при программирования микроконтроллеров с низкой тактовой частотой.
BogAD
Кандидат наук
Красногорск - Белово
403 184
Отв.1404 09 Мая 18, 07:30
Всех с праздником Великой победы! С 9 МАЯ!!!
Я на днях CRATE залипил. Тормознул пока, последнее сверло на 0,8 заломал...
Поизголялся над CRATE, цифровой изолятор поставил, линию на PWR-OFF добавил. А тут после поста SergeyMak задумался...
По плану у меня попробовать BMP-280 (там подтяжка на 10к), а т.к. своим вариантом поделюсь со всеми, думаю не каждый будет ставить BMP280, решил предусмотреть установку и BMP180.
Глянул, ... мать моя! Вариантов BMP-х80 на рынок Китай предоставил всяки-разные! На любой вкус.
Кстати, SergeyMak, твоя схема (если она от твоего модуля) и плата не сходится. На плате с 4 пинами нет стабилизатора 3,3.
Скорей всего у тебя 5pin.
Ну да ладно. Внес изменения в CRATE (свою переделывать не буду пока). Можно и 180, и 280 модуль ставить.
Убрал лишнюю подтяжку по 3,3 в. На стороне 5 В оставил.
Да...
Испытал UPS своей конструкции. Я доволен. Минут 30 Малинка спокойно работает. Единственно, еще не впаял и не проверил узел по контролю питания на 3,08в.
Описание готовлю. Будет отдельным постом.
Я на днях CRATE залипил. Тормознул пока, последнее сверло на 0,8 заломал...
Поизголялся над CRATE, цифровой изолятор поставил, линию на PWR-OFF добавил. А тут после поста SergeyMak задумался...
Хочу добавить на плату этого модуля датчик атмосферного давления BMP180 в виде готового модулька GY-68. Смотрю там на платке подтяжки I2C уже распаяны и стабилизатор на 3.3 вольт. Подтяжки надо выпаять наверное, ведь на малинке шина подтянута уже? В этой ветке про это не нашел, может плохо смотрел...SergeyMak, 07 Мая 18, 12:59
По плану у меня попробовать BMP-280 (там подтяжка на 10к), а т.к. своим вариантом поделюсь со всеми, думаю не каждый будет ставить BMP280, решил предусмотреть установку и BMP180.
Глянул, ... мать моя! Вариантов BMP-х80 на рынок Китай предоставил всяки-разные! На любой вкус.
Кстати, SergeyMak, твоя схема (если она от твоего модуля) и плата не сходится. На плате с 4 пинами нет стабилизатора 3,3.
Скорей всего у тебя 5pin.
Ну да ладно. Внес изменения в CRATE (свою переделывать не буду пока). Можно и 180, и 280 модуль ставить.
Убрал лишнюю подтяжку по 3,3 в. На стороне 5 В оставил.
Да...
Испытал UPS своей конструкции. Я доволен. Минут 30 Малинка спокойно работает. Единственно, еще не впаял и не проверил узел по контролю питания на 3,08в.
Описание готовлю. Будет отдельным постом.
сообщение удалено
BogAD
Кандидат наук
Красногорск - Белово
403 184
Отв.1405 09 Мая 18, 10:17
И замена отборного клапана микронасосом с ШИМ от дельты.Asus, 09 Мая 18, 09:51Это как? А разве микронасосы смогут подпор продукта удержать?
Думаю что возможна замена только на перистальтический...
По мне бы,... нужно добавить переключатель отбора, типа как
https://cdn.homedistil.ru/fs/1509/20/21231.255298.jpg
на сервоприводе.
Поаккуратней реализовать, управление по I2C и, можно не посещать установку на всём этапе "производства".
nic2015
Магистр
Феодосия
219 56
Отв.1406 09 Мая 18, 10:23, через 7 мин
Модуль управления насосами вырисовывается? Тогда и шим управление перистальтикой в зависимости от давления в колонне нбк не плохо бы.
ab57
Новичок
Barnaul
7 1
Отв.1407 09 Мая 18, 12:49
Коллеги, всех с праздником!
Раз заговорили о модуле управления насосом мб будет интересно такое решение:
У меня охлаждение дефлегматора сделано китайским шестеренчатым насосиком из буферной емкости. Ну давление у меня в системе скачет и совсем бывает пропадает до 15-30 минут.
Для этого в ведро был установлен клапан от сливного бачка, оттуда и выпивает китаец.
Схема управления один в один повторяет раннюю схему Контроллера клапана отбора собранного вместе с индикатором и кнопками. Вместо оптрона на выход установил полевик IRLU2904.
Сам движок включил между +12 и стоком, параллельно ему диод шоттки.
Проблем было две, скетч для клапана управляет клапаном программно,быстрее 10 Гц, не разгоняется. Что движку категорически не понравилось + хотелось сохранить совместимость уже с вариантом Lite по протоколу обмена с Малинкой.
Для этого на основе родного скетча и нового от варианта Lite создан гибрид, который работает как клапан отбора и как контроллер насоса. Для этого добавлен аппаратный PWM, с разрешением 1024 (почти 1000 Lite) с частотой 15625 гц. Двигателю оч понравилось.
Переключатель клапан/насос в скетче. Раз контроллер клапана был ранее сделан, индикатор и кнопки оставил.
Клапан отбора работает по прерываниям от таймера!
Адрес на шине 14 (пока одинаковый для клапана и насоса)
PS Программисты над скетчем сильно не смейтесь, сумел переделать
благодаря действительно подробным комментариям Сергея Владимировича и обчитавшись интернету. Замечания приветствуются!
И замена отборного клапана микронасосом с ШИМ от дельтыAsus, 09 Мая 18, 09:51
Модуль управления насосами вырисовывается? Тогда и шим управление перистальтикой в зависимости от давления в колонне нбк не плохо бы.nic2015, 09 Мая 18, 10:23
Раз заговорили о модуле управления насосом мб будет интересно такое решение:
У меня охлаждение дефлегматора сделано китайским шестеренчатым насосиком из буферной емкости. Ну давление у меня в системе скачет и совсем бывает пропадает до 15-30 минут.
Для этого в ведро был установлен клапан от сливного бачка, оттуда и выпивает китаец.
Схема управления один в один повторяет раннюю схему Контроллера клапана отбора собранного вместе с индикатором и кнопками. Вместо оптрона на выход установил полевик IRLU2904.
Сам движок включил между +12 и стоком, параллельно ему диод шоттки.
Проблем было две, скетч для клапана управляет клапаном программно,быстрее 10 Гц, не разгоняется. Что движку категорически не понравилось + хотелось сохранить совместимость уже с вариантом Lite по протоколу обмена с Малинкой.
Для этого на основе родного скетча и нового от варианта Lite создан гибрид, который работает как клапан отбора и как контроллер насоса. Для этого добавлен аппаратный PWM, с разрешением 1024 (почти 1000 Lite) с частотой 15625 гц. Двигателю оч понравилось.
Переключатель клапан/насос в скетче. Раз контроллер клапана был ранее сделан, индикатор и кнопки оставил.
Клапан отбора работает по прерываниям от таймера!
Адрес на шине 14 (пока одинаковый для клапана и насоса)
PS Программисты над скетчем сильно не смейтесь, сумел переделать
благодаря действительно подробным комментариям Сергея Владимировича и обчитавшись интернету. Замечания приветствуются!
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1408 09 Мая 18, 13:17, через 29 мин
Глянул, ... мать моя!BogAD, 09 Мая 18, 07:30Вот об этом и речь... Была в свое время ;). Поэтому все такие устройства (BMP, часы реального времени и прочие мелочи) лучше втыкать в штатные разъемы крейта через соответствующие переходники, а не разводить на самой плате крейта или какого-нибудь модуля. Пример переходника для BMP180 на снимке в приложении к топику.
а всё таки будет реализована плавающая от атм.давления опорная уставка температуры при отборе?Asus, 09 Мая 18, 09:51Для процессов ректификации, при нормальном (атмосферном) давлении, коррекция уставки уже давно реализована (еще в первом варианте системы). Вот пример работы такой корреции в реальном процессе ректификации, который был как раз на прошлой неделе (в работе пока использую еще первый вариант автоматизации). Датчик - BMP180. Атмосферное давление вечером и ночью заметно выросло (см. нижнюю диаграмму), система соответственно корректировало уставку (в сумме на 0.2°C, см.вторую сверху диаграмму). Как видно по красной кривой на этой же диаграмме (это температура в нижней части колонны) процесс отбора тела прошел мягко, безо всяких "залетов". Кстати, обратите внимание, как изменяется давление и температура в дефлегматоре (зелененькая кривая на этой же диаграмме). Поэтому, если регулятор отбора отбора работает достаточно жестко (на уровне кванта датчика DS18B20), коррекция уставки в зависимости от атмосферного давления - опция очень даже нужная и полезная.
По поводу других устройств и режимов работы (типа разных режимов дистилляции и пр.). Коллеги, вполне естественно, что я ориентируюсь в первую очередь на свои задачи и то оборудование, которое я сам использую. Но я с удовольствием поучаствую и помогу, чем смогу, если кто-то будет разрабатывать свои собственные модули в рамках данного концепта для более широкого спектра задач. Только большая просьба - если разработка закончена - выкладывайте (конечно, по возможности) полное описание (со схемами, фотографиями, примерами работы). Т.е. описание, достаточное для повторения. Желательно с гиперссылкой в конце топика "Вернуться в оглавление". Тогда я смогу корректировать оглавление ветки, чтобы данная разработка не затерялась.
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1409 13 Мая 18, 08:47
Возможно, кого-нибудь может заинтересовать алгоритм регулятора отбора, используемого в данной автоматизации, пример работы которого приведен в предыдущем топике. Вот решил оформить в виде отдельного фрагмента с подробными комментариями. Текст - ниже.
Скрытый текст
# Фрагмент кода регулятора текущей скорости отбора (curQ) в зависимости от
# текущего значения уставки (Tset) и скорости изменения температуры в колонне
# (maTcDeriv). Базовые критерии выглядят так:
# 1. Если отбор включен (состояние "старт") и текущее значение температуры в
# колонне (cTc) превышает нижний порог температуры (Tset - qT,
# где qT - квант датчика) и производная температуры в колонне положительна
# (maTcDeriv > 0), то выполняется критерий для выключения отбора ("стоп")
# 2. Если отбор выключен (состояние "стоп") и текущее значение температуры в
# колонне ниже верхнего порога (Tset + qT) и производная температуры в
# колонне отрицательна (maTcDeriv < 0), то выполняется критерий для
# включения отбора ("старт")
# Поскольку используются цифровые датчики, то в регулятор добавлена компенсация
# цифрового "дребезга" температуры на уровне кванта датчика. Для этого вводятся
# счетчики событий 1 и 2, перечисленных выше, ctrp и ctrm соответственно. Если
# критерии 1 или 2 выполняются 3 и более раз подряд, то отбор реально
# выключается (для 1) или включается (для 2). В противном случае выполнение
# критериев для "стоп" или "старт" считаются "цифровым дребезгом" датчиков и
# счетчики ctrp и ctrm сбрасываются.
#
# Во время паузы ("стоп") производится "взвешенная" коррекция базовой скорости
# отбора (bQ) в зависимости от текущего ее значения и температуры в кубе.
# Оптимальное значение веса (wt = 0.8) определяется экспериментально и задается
# при инициализации системы.
...
if not stopFlag: # В данный момент отбор производится
if cTc >= Tset - qT and maTcDeriv > 0 : ctrp += 1 # Выполнен критерий 1
elif ctrp > 0: ctrp -= 1 # Увы, это - "дребезг" температуры - сброс счетчика
if ctrp > 2: # Порог превышен более 2 раз подряд, значит реальный "стоп"
curQ = Qmin # Выключаем отбор
stopFlag = True # Флаг состояния "стоп"
ctrp = 0 # Сбросим счетчик выполнения критерия
else: # В противном случае сохраняем текущую скорость отбора
curQ = bQ
else: # Сейчас - пауза в отборе (т.е. "стоп")
if cTc < Tset + qT and maTcDeriv <= 0 : ctrm += 1 # Выполнен критерий 2
elif ctrm > 0: ctrm -= 1 # Увы, это dct-nfrb "дребезг" температуры
if modes[mode].reg == 1: # В этом режиме работы базовая скорость отбора
# корректируется с учетом веса wt старого
# значения (bQ) и рассчитанного по температуре
# в кубе (cQ)
cQ = cR*(100.0 - Ts[hid]) # Скорость отбора, рассчитанная по т-ре в кубе
bQ = bQ*wt + cQ*(1.0 - wt)
if ctrm > 2: # Критерий 2 выполнен более 2 раз подряд - значит "старт"
curQ = bQ # Старт
stopFlag = False
ctrm = 0 # Сброс счетчика
sd.Q = curQ # Установка скорости отбора в контроллере клапана отбора
...
сообщение удалено
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1410 13 Мая 18, 15:00
Данный алгоритм вводит дифференциальную составляющую ("упреждение") в алгоритм старт-стопа. Чтобы избежать "залета" температуры выше уставки в нижней части колонны. Если сравнить его с "идеальным регулятором" (когда отбор плавно регулируется так, чтобы температура всегда в точности была равна уставке), то такой старт-стоп приводит лишь к некоторому уменьшению производительности, но никак не приводит к ухудшению качества продукта (т.к флегмовое число никогда не становится меньше заданного уставкой). Кстати, "старт" тоже делается с упреждением. Чтобы избежать "инерционной" раскачки колебаний в колонне.
К сожалению, сделать "идеальный регулятор" (т.е. поддержание равенства температуры и уставки с точностью до кванта за счет плавного регулирования отбора) пока никак не получается... :(( Тем не менее, "старт-стоп" с дифференциальной компонентой - это небольшой шажок в этом направлении. Но, поскольку данный алгоритм - это, все-таки, вариант "старт-стопа", то у него, конечно, есть характерное "старт-стопное родимое пятно" - нестационарность процессов тепло-массообмена в колонне. Но кто сказал, что нестационарность это всегда плохо? Или хуже квазистационарности, характерной для кубовой ректификации? ИМХО, если "без залетов", то это всего лишь некоторое снижение производительности по сравнению с "идеалом" ;)
PS
Еще раз хотелось бы подчеркнуть, что здесь речь идет о классической кубовой ректификационной установке (с кубом, однородной насадочной колонной постоянного сечения, одним дефлегматором и узлом отбора в нем).
К сожалению, сделать "идеальный регулятор" (т.е. поддержание равенства температуры и уставки с точностью до кванта за счет плавного регулирования отбора) пока никак не получается... :(( Тем не менее, "старт-стоп" с дифференциальной компонентой - это небольшой шажок в этом направлении. Но, поскольку данный алгоритм - это, все-таки, вариант "старт-стопа", то у него, конечно, есть характерное "старт-стопное родимое пятно" - нестационарность процессов тепло-массообмена в колонне. Но кто сказал, что нестационарность это всегда плохо? Или хуже квазистационарности, характерной для кубовой ректификации? ИМХО, если "без залетов", то это всего лишь некоторое снижение производительности по сравнению с "идеалом" ;)
PS
Еще раз хотелось бы подчеркнуть, что здесь речь идет о классической кубовой ректификационной установке (с кубом, однородной насадочной колонной постоянного сечения, одним дефлегматором и узлом отбора в нем).
сообщения удалены (9)
Merlin62
Новичок
Гиперборея
3
Отв.1411 10 Июня 18, 19:11
OldBean имею вопрос по контроллеру ТЭНа: хотелось бы применить в качестве Pro Mini , Arduino Nano.Но т.к. только в начально участке изучения данного девайса., то и возникла проблема, как заменить заменить с скетче подачу сигналов на индикатор.
У Вас по схеме B-A2,D3-A1,D2-A0,F-D13,A-D12,D1-D11. На Nano индикатор становится на пины B-A6,D3-A5,D2-A4,F-A3,A-A2,D1-A1. вторая сторона ножек индикатора полностью совпадает по пинам, посему я ее и не рассматриваю.
С уважением
У Вас по схеме B-A2,D3-A1,D2-A0,F-D13,A-D12,D1-D11. На Nano индикатор становится на пины B-A6,D3-A5,D2-A4,F-A3,A-A2,D1-A1. вторая сторона ножек индикатора полностью совпадает по пинам, посему я ее и не рассматриваю.
С уважением
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1412 11 Июня 18, 13:00
как заменить заменить с скетче подачу сигналов на индикатор.Merlin62, 10 Июня 18, 19:11В скетче есть два массива segPins и digPins. См. их объявление и инициализацию в строках 48 и 50 соответственно. В инициализации (это то, что в фигурных скобках) как раз и записаны номера цифровых пинов ардуинки к которым подключены соответствующие сегменты индикатора (элементы массива segPins) и номера общих катодов,анодов цифр индикатора (элементы массива digPins). Естественно, пины порта C (аналоговые) тоже используются как цифровые со сквозной ардуиновской нумерацией. Вам нужно только откорректировать эти (ардуиновские) номера портов (которые в фигурных скобках) в соответствии с номерами портов в нано. Больше ничего менять не нужно.
Merlin62
Новичок
Гиперборея
3
Отв.1413 11 Июня 18, 20:05
нужно только откорректировать эти (ардуиновские) номера портов (которые в фигурных скобках) в соответствии с номерами портов в наноOldBean, 11 Июня 18, 13:00OldBean Порядок или последовательность имеет значение...или все равно в каком порядке стоят номера пинов?
Я так и предполагал, что именно эти две строчки необходимо править...но решил перестраховаться..
С уважением
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1414 12 Июня 18, 03:10
Порядок или последовательность имеет значение...или все равно в каком порядке стоят номера пинов?Merlin62, 11 Июня 18, 20:05Порядок важен. Элементы массива segPins идут в порядке нумерации сегментов индикатора A, B, C, D и т.д. Т.е. segPins[0] - соответствует сегменту A, segPins[1] - сегменту B и т.д. А ежели конкретно, то:
static uint8_t segPins[7] = {12, 16, 5, 7, 8, 13, 4};
Аналогично и для массива digPins. Вам нужно прописать свои номера портов, согласно разводке наны.
Тут уж ничего не поделаешь. Разработчики индикаторов выводили свои ножки (у индикаторов) как попало (точнее - согласно своей логике), а разработчики ардуинок тоже. Как им попало. Естественно, они и не думали о том, что индикатор можно просто "воткнуть" напрямую в ардуинку. Поэтому, к сожалению, здесь приходится немножечко мозг "морщить" ;) Для физического согласования этих устройств.
Merlin62
Новичок
Гиперборея
3
Отв.1415 12 Июня 18, 08:35
Порядок важен.OldBean, 12 Июня 18, 03:10Премного благодарен за разъяснение.
С уважением
Добавлено через 10мин.:
Заменил (12,16,5,7,8,13,4)на (15,19,5,7,8,16,4) и (15,14,11) на (18,17,14)
Все согласно Вашим рекомендациям.
Премного благодарен.
С уважением
Airon
Новичок
Обнинск
1
Отв.1416 18 Июня 18, 16:14
Всем здравствуйте. Подскажите пожалуйста есть у кого нибудь программа для термо-сервера под управление PRO mini, так как предлагал BogAD с кнопкой и с четырёх-цыфравым индикатором?
nic2015
Магистр
Феодосия
219 56
Отв.1417 19 Июля 18, 09:41
Сергей! Все с нетерпением ждём когда Вы появитесь. Очень интересная разработка, хотелось бы продолжения.
gindos
Студент
Южно-Сахалинск
39 12
Отв.1418 19 Июля 18, 15:04
"Пять копеек" к [сообщение #12917509]
Собрал в цепь контроллер клапана отбора, контроллер ТЭНа, датчик RMS, подключил их по i2c к малинке. Контроллеры сами по себе, в рукопашном режиме, работают (время открытия клапана регулируется, подаваемая мощность на ТЭН изменяется, датчик RMS так же, в свою очередь работает стабильно, индикаторы отображают информацию корректно), но вот малинка их по i2c не видит... Проблема оказалась в том, что использовал для питания ардуинок блок питания 5V, 350mAh, видать для работы i2c этого не хватало. Как только заменил на 5V, 1.5Ah (другого в наличии не было), то малинка тут же увидела контроллеры и датчик RMS на шине i2c
Собрал в цепь контроллер клапана отбора, контроллер ТЭНа, датчик RMS, подключил их по i2c к малинке. Контроллеры сами по себе, в рукопашном режиме, работают (время открытия клапана регулируется, подаваемая мощность на ТЭН изменяется, датчик RMS так же, в свою очередь работает стабильно, индикаторы отображают информацию корректно), но вот малинка их по i2c не видит... Проблема оказалась в том, что использовал для питания ардуинок блок питания 5V, 350mAh, видать для работы i2c этого не хватало. Как только заменил на 5V, 1.5Ah (другого в наличии не было), то малинка тут же увидела контроллеры и датчик RMS на шине i2c
Asus
Доцент
Москва
1.4K 691
Отв.1419 19 Июля 18, 16:34
Как только заменил на 5V, 1.5Ahgindos, 19 Июля 18, 15:04Т.е. была просадка напряжения по цепи 5В из-за большого тока потребления?
Или пульсации и помехи от ИП?