по умолчанию фузы Atmega328 прошиты на тактирование от внутреннего генератора 8мгц. также запрограммирован фуз CKDIV8=0. в результате тактовая частота проца = 1мгц. частота программирования по isp должна быть менее 1/4 тактовой проца т.е менее 250кгц.
при первом программировании частоту isp у avrdude нужно снижать ниже 250кгц. сбросить фуз CKDIV8 = 1. обязательно программировать фуз CKOUT=0
gol_avto
Доцент
Москва-Серпухов-Анапа
1.4K 473
Отв.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. Записал в шпоргалку. Думаю инфа будет полезна новичкам в МК, таким как я.
m16Модератор
Тамбов
1.9K 1K
Отв.1402 08 Мая 18, 12:30, через 44 мин
есть хорошая книга по аврам, рекомендую. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL
Ну и еще копеечка... ;) для пользователей USBasp-программаторов В USBasp-программаторах, обычно предусмотрен специальный джампер для снижения скорости тактирования при программирования микроконтроллеров с низкой тактовой частотой.
BogAD
Кандидат наук
Красногорск - Белово
403 184
Отв.1404 09 Мая 18, 07:30
Всех с праздником Великой победы! С 9 МАЯ!!! Ненавязчивая автоматизация ректификационной установки. Автоматика.
Я на днях 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. Ненавязчивая автоматизация ректификационной установки. Автоматика.
И замена отборного клапана микронасосом с ШИМ от дельты.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
Коллеги, всех с праздником!
И замена отборного клапана микронасосом с ШИМ от дельтыAsus, 09 Мая 18, 09:51
Модуль управления насосами вырисовывается? Тогда и шим управление перистальтикой в зависимости от давления в колонне нбк не плохо бы.nic2015, 09 Мая 18, 10:23
Раз заговорили о модуле управления насосом мб будет интересно такое решение:
У меня охлаждение дефлегматора сделано китайским шестеренчатым насосиком из буферной емкости. Ну давление у меня в системе скачет и совсем бывает пропадает до 15-30 минут. Для этого в ведро был установлен клапан от сливного бачка, оттуда и выпивает китаец.
Схема управления один в один повторяет раннюю схему Контроллера клапана отбора собранного вместе с индикатором и кнопками. Вместо оптрона на выход установил полевик IRLU2904. Сам движок включил между +12 и стоком, параллельно ему диод шоттки.
Проблем было две, скетч для клапана управляет клапаном программно,быстрее 10 Гц, не разгоняется. Что движку категорически не понравилось + хотелось сохранить совместимость уже с вариантом Lite по протоколу обмена с Малинкой.
Для этого на основе родного скетча и нового от варианта Lite создан гибрид, который работает как клапан отбора и как контроллер насоса. Для этого добавлен аппаратный PWM, с разрешением 1024 (почти 1000 Lite) с частотой 15625 гц. Двигателю оч понравилось. Переключатель клапан/насос в скетче. Раз контроллер клапана был ранее сделан, индикатор и кнопки оставил. Клапан отбора работает по прерываниям от таймера! Адрес на шине 14 (пока одинаковый для клапана и насоса)
PS Программисты над скетчем сильно не смейтесь, сумел переделать благодаря действительно подробным комментариям Сергея Владимировича и обчитавшись интернету. Замечания приветствуются!
Вот об этом и речь... Была в свое время ;). Поэтому все такие устройства (BMP, часы реального времени и прочие мелочи) лучше втыкать в штатные разъемы крейта через соответствующие переходники, а не разводить на самой плате крейта или какого-нибудь модуля. Пример переходника для BMP180 на снимке в приложении к топику.
а всё таки будет реализована плавающая от атм.давления опорная уставка температуры при отборе?Asus, 09 Мая 18, 09:51
Для процессов ректификации, при нормальном (атмосферном) давлении, коррекция уставки уже давно реализована (еще в первом варианте системы). Вот пример работы такой корреции в реальном процессе ректификации, который был как раз на прошлой неделе (в работе пока использую еще первый вариант автоматизации). Датчик - BMP180. Атмосферное давление вечером и ночью заметно выросло (см. нижнюю диаграмму), система соответственно корректировало уставку (в сумме на 0.2°C, см.вторую сверху диаграмму). Как видно по красной кривой на этой же диаграмме (это температура в нижней части колонны) процесс отбора тела прошел мягко, безо всяких "залетов". Кстати, обратите внимание, как изменяется давление и температура в дефлегматоре (зелененькая кривая на этой же диаграмме). Поэтому, если регулятор отбора отбора работает достаточно жестко (на уровне кванта датчика DS18B20), коррекция уставки в зависимости от атмосферного давления - опция очень даже нужная и полезная.
По поводу других устройств и режимов работы (типа разных режимов дистилляции и пр.). Коллеги, вполне естественно, что я ориентируюсь в первую очередь на свои задачи и то оборудование, которое я сам использую. Но я с удовольствием поучаствую и помогу, чем смогу, если кто-то будет разрабатывать свои собственные модули в рамках данного концепта для более широкого спектра задач. Только большая просьба - если разработка закончена - выкладывайте (конечно, по возможности) полное описание (со схемами, фотографиями, примерами работы). Т.е. описание, достаточное для повторения. Желательно с гиперссылкой в конце топика "Вернуться в оглавление". Тогда я смогу корректировать оглавление ветки, чтобы данная разработка не затерялась.
Возможно, кого-нибудь может заинтересовать алгоритм регулятора отбора, используемого в данной автоматизации, пример работы которого приведен в предыдущем топике. Вот решил оформить в виде отдельного фрагмента с подробными комментариями. Текст - ниже. Скрытый текст
# Фрагмент кода регулятора текущей скорости отбора (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 Еще раз хотелось бы подчеркнуть, что здесь речь идет о классической кубовой ректификационной установке (с кубом, однородной насадочной колонной постоянного сечения, одним дефлегматором и узлом отбора в нем).
сообщения удалены (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. вторая сторона ножек индикатора полностью совпадает по пинам, посему я ее и не рассматриваю. С уважением
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:00
OldBean Порядок или последовательность имеет значение...или все равно в каком порядке стоят номера пинов? Я так и предполагал, что именно эти две строчки необходимо править...но решил перестраховаться.. С уважением
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 и т.д. А ежели конкретно, то:
означает, что сегмент A индикатора подключен к порту 12 ардуинки, сегмент B - к 16-ому, сегмент C - к 5-ому и т.д. Аналогично и для массива 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
Asus
Доцент
Москва
1.4K 692
Отв.1419 19 Июля 18, 16:34
Как только заменил на 5V, 1.5Ahgindos, 19 Июля 18, 15:04
Т.е. была просадка напряжения по цепи 5В из-за большого тока потребления? Или пульсации и помехи от ИП?