Регулятор напряжения и тока на Arduino Pro Mini
IlyaSPb
Студент
Санкт-Петербург
20 18
Отв.520 07 Дек. 17, 23:01
Выкладываю обновленную версию прошивки "Регулятор тока на acs712 с предустановками и записью в память" с внешним управлением, с учётом доработок в прошивке sebra на 06.12.17.
sevpro
Доктор наук
Worldwide
769 281
Отв.521 08 Дек. 17, 08:59
sechevoy, навскидку у тебя дорожка от ножки 1 рс814 куда-то не туда идет. Еще поменяй местами подключение 4 и 6 ног оптотиристора - не будет необходимости под корпусом несколько дорог разводить. И еще, монтаж высоковольтной части очень плотный, не факт что детали нужной мощности и напряжения туда влезут, для отверстия крепления место неудачное - коротнуть крепежом можно низковольтный разъем с резистором в высоковольтной части
sechevoy
Специалист
Запорожье
148 26
Отв.522 08 Дек. 17, 17:01
Ещё немного доработанная версия разводки платы по регулятору напряжения с трансформатором. Увеличены посадочные места под конденсатор снаббера и резистор 82к. Немного разнесены силовые площадки. На резистор 82к рекомендую одевать термоусадку при вертикальном монтаже. Всё-таки 220В.
В качестве диодного моста W10M
В качестве диодного моста W10M
gikrus
Кандидат наук
Пермь
388 401
Отв.523 09 Дек. 17, 17:23
Всем привет. Сегодня собрал стабилизатор напряжения по новой схеме и решил сделать замеры, как и обещал Sebre. Для измерений использовался осциллограф Rigol DS1054. Замер выполнялся начиная с 220 В вниз с шагом один вольт. Печатать результаты не стал, просто сфотографировал листочки. На напряжении 180 вольт понял, что надо подстроить, рассогласование было стабильно 1,5 В. Дальше результаты были один в один. На напряжениях ниже 90 вольт показания на осциллографе колебались с большей амплитудой - до двух вольт. Думаю это связано с ограниченными возможностями осциллографа по измерению. Среднеквадратичное он считает по картинке на экране. При этом изображение стояло, как вкопанное. Конечно наблюдались небольшие колебания в пределах 1 Вольта, но у меня плохая сеть и входное напряжение колебалось в пределах 208 - 225 вольт. Замеры выше 200 вольт делал, когда входное было больше 220 вольт. В колонках первая цифра - задаваемое напряжение, вторая - показания на осциллографе.
Я был шокирован результатом. Всё работает чётко, без сбоев и морганий. Похоже пора ставить жирную точку в этой теме. Sebra -огромное спасибо.
Я был шокирован результатом. Всё работает чётко, без сбоев и морганий. Похоже пора ставить жирную точку в этой теме. Sebra -огромное спасибо.
сообщения удалены (4)
Chatterbox
Специалист
Калуга
123 60
Отв.524 13 Дек. 17, 18:49
[сообщение #13000957]
Кто пользуется версией с энкодером. Внес исправления в библиотеку обслуживающую кнопки и энкодер. Исправил баги в работе с китайскими энкодерами в плане непроизвольной смены равщения.
Кто пользуется версией с энкодером. Внес исправления в библиотеку обслуживающую кнопки и энкодер. Исправил баги в работе с китайскими энкодерами в плане непроизвольной смены равщения.
сообщение удалено
sebra
Куратор
Республика Коми
147 85
Отв.525 14 Дек. 17, 14:55
как я понял это есть вольт контроль то есть если низкое напряжения или высокое срабатывает вольт контроль?Art123, 13 Дек. 17, 20:44
Напряжение на выходе равно установленному, вне зависимости от входного, если установленное не больше входного.
сообщение удалено
dranenkov
Студент
Санкт-Петербург
19 4
Отв.526 14 Дек. 17, 22:31
Трансформатор для измерения можно использовать любой и от зарядки? через него же нагрузка особо никакая не идет?
Отв.527 16 Дек. 17, 10:24
любой и от зарядки?dranenkov, 14 Дек. 17, 22:31От современных импульсных зарядников не подойдёт.
сообщения удалены (3)
PavelSaratov
Доктор наук
Саратов
622 80
Отв.528 19 Дек. 17, 18:49
То есть я так понимаю что в какой то момент записи числа в регистр оно совпадает со счетчиком и вызывает прерывание.
Честно говоря копать еще дальше у меня пока нет желания, вариант с проверкой на тесте показал себя хорошо.
sevpro ты проверь у себя значение регистра, просто ради интереса, отсутствие вспышек не говорит об отсутствии проблемы, может там такое значение при котором триак не может открыться.
Просто вспомнил. Вот тут круто описано чего и как и почему. Ну решение собственно правильное - отключить прерывания ибо не атомарная операция.
http://easyelectronics.ru/...e-operacii.html
m16
Модератор
Тамбов
1.9K 1K
Отв.529 19 Дек. 17, 20:35
То есть я так понимаю что в какой то момент записи числа в регистр оно совпадает со счетчиком и вызывает прерывание.вывод не правильный , извините , но это издержки говнокода или говно алгоритма . без обид сам когда то был таким, но ассемблер дисциплинирует и заставляет лишний раз подумать.
извините-2. новоявленные си-шники в большинстве своём думать не хотят - это их бич. готовые либы ищем , сами разбираться не хотим как работает ядро , периферия , прерывания берём готовый индусский говнокод и вперёд на мины. да , ещё и плавучку впендюривают спрашивается - нахера, когда целочисленка работает быстрее. а код не работает начинаем выдвигать более нелепые причины (цитата выше) чем их код.
Ну решение собственно правильное - отключить прерыванияPavelSaratov, 19 Дек. 17, 18:49не верное решение.
PavelSaratov
Доктор наук
Саратов
622 80
Отв.530 19 Дек. 17, 22:47
Правильное это переписать гамнокод с нуля я так понимаю?
m16
Модератор
Тамбов
1.9K 1K
Отв.531 19 Дек. 17, 23:23, через 36 мин
не совсем. нужно читать и разбираться с контроллером , если трудности с английским в аттаче переводная книга по контроллерам атмел. хоть она и старовата , но принципы работы не изменились. может быть регистры периферии будут немного отличаться в названии. первоисточники от производителя - даташиты и апноты.
ну к языку нужно усилия приложить . из литературы - классика жанра Керниган, Ричи. Язык C.
ну к языку нужно усилия приложить . из литературы - классика жанра Керниган, Ричи. Язык C.
sevpro
Доктор наук
Worldwide
769 281
Отв.532 20 Дек. 17, 07:16
Добавлю свои пять копеек. Не поленитесь открыть и посмотреть ассемблерный код чтобы увидеть, что вам там gcc накомпилировал, особенно если задачи критичны к скорости работы. Бывают сюрпризы.
PavelSaratov
Доктор наук
Саратов
622 80
Отв.533 20 Дек. 17, 21:54
Коллеги,
1. Пост изначально был не мой - я прокомментировал пост другого участника форума. И таки да - отключение прерываний при неатомарных операциях - распространненое явление. И оно работает.
2. За книги спасибо - кому то будут интересны.
3. Сейчас скажу крамолу - я вообще предпочитаю C через HAL для stm32. И то потому, что ничего внятного из разряда языков IEC 61131/3 и рантайммашины примитивнейшей под него нет и не предвидится. Вернее что-то вроде народ делает в части LAD для AVR а для ARM все тухло.
1. Пост изначально был не мой - я прокомментировал пост другого участника форума. И таки да - отключение прерываний при неатомарных операциях - распространненое явление. И оно работает.
2. За книги спасибо - кому то будут интересны.
3. Сейчас скажу крамолу - я вообще предпочитаю C через HAL для stm32. И то потому, что ничего внятного из разряда языков IEC 61131/3 и рантайммашины примитивнейшей под него нет и не предвидится. Вернее что-то вроде народ делает в части LAD для AVR а для ARM все тухло.
m16
Модератор
Тамбов
1.9K 1K
Отв.534 20 Дек. 17, 23:11
я вообще предпочитаю C через HAL для stm32PavelSaratov, 20 Дек. 17, 21:54ну и зря. это из области доступного индусского говнокода о котором писал выше. один из каментов с сахары
Скрытый текст
бл..ть, е...ный куб. Короче уже 3 бага за две недели, и главное система предназначенная для быстрого старта писец сколько времени отнимает на поиск багов. Один - USB на F2, второй - LPTIM на L0, третий - запись во внутреннюю флэш на L0. Ладно если первые два очевидные (типа тактирование не включают), запись в итоге переписал с нуля, быстрее получилось, чем разбираться что накрутили.
PavelSaratov
Доктор наук
Саратов
622 80
Отв.535 21 Дек. 17, 01:18
Угу. Есть такое. Только багов ничуть не больше чем в любом другом говнокоде, а ускоряет кардинально.
Поддержка HAL - целая корпорация с бюджетами. За ним будущее. Хал он для инициализации и типовых действий.
У него есть куча плюсов, и не признавать это недальновидно.
Он кстати не описал что за баг нашел в третьем случае. В первом сказал - не включается тактирование. Бля.. Ну так тактирование везде выключено в STM32 по умолчанию! Даже несчастной ногой дернуть через хал - тактирование надо явно APB включить. А уж как это делать через флаги регистров или понятной функцией с целовеческим названием APBчетоттамEnable () - выбирай какой хочешь. ХАЛ внезапно еще и самодокументируется в отличии от кода ассемблера, который надо комментировать.
В той же теме на Сахаре
Можно все херачить на ассемблере и говорят даже это круто.
За ассемблер с указателями там где можно было обойтись языкром уровня повыше и соответственно проще для понимания и последующего трекинга/анализа наоборот руки отрывают в некоторых местах, но это специфика наверное.
Резюмируя - ассемблер посмотреть иногда полезно, но упираться в него рогом- ну его нафиг.
Поддержка HAL - целая корпорация с бюджетами. За ним будущее. Хал он для инициализации и типовых действий.
У него есть куча плюсов, и не признавать это недальновидно.
Он кстати не описал что за баг нашел в третьем случае. В первом сказал - не включается тактирование. Бля.. Ну так тактирование везде выключено в STM32 по умолчанию! Даже несчастной ногой дернуть через хал - тактирование надо явно APB включить. А уж как это делать через флаги регистров или понятной функцией с целовеческим названием APBчетоттамEnable () - выбирай какой хочешь. ХАЛ внезапно еще и самодокументируется в отличии от кода ассемблера, который надо комментировать.
В той же теме на Сахаре
Скрытый текст
в целом да, действительно сильно ускоряет процесс, особенно на тяжелых вещах типа USB/TCP/RTOS и стараюсь использовать LL вариант. Еще бы разобраться как сделать свой шаблон - цены бы не было. Я обычно использую TNKernel/TNeo, оно пошустрееМожно все херачить на ассемблере и говорят даже это круто.
За ассемблер с указателями там где можно было обойтись языкром уровня повыше и соответственно проще для понимания и последующего трекинга/анализа наоборот руки отрывают в некоторых местах, но это специфика наверное.
Резюмируя - ассемблер посмотреть иногда полезно, но упираться в него рогом- ну его нафиг.
m16
Модератор
Тамбов
1.9K 1K
Отв.536 21 Дек. 17, 08:21
но упираться в него рогом- ну его нафиг.PavelSaratov, 21 Дек. 17, 01:18просто вы не умеете его готовить ))). что касаемо стм , базару нет - здесь С рулит ввиду сложности камня.
Резюмируя - ассемблер посмотреть иногда полезноPavelSaratov, 21 Дек. 17, 01:18уточню - это дизассемблерный лист, и в него нужно смотреть регулярно чтобы оценить генерируемый код. при работе с асмом нужно активно пользовать макросы , и тогда рога не понадобятся ))).
вот маленький пример для авра - полином 3-го порядка S - (k1 + k2*spt + k4*spt^3/kp1 - k3*spt^2 )*( temper - kt ) / kp2. используется 32-х и 48-ми разрядная знаковая целочисленка
Скрытый текст
calc_sprt: clr_w D0..........................................
; k1
ldi_d dE, k1
mov_d dC, dE // summary= k1
..........................................
; k2*spt
ldi_d dH, k2
lds_w E0, spt_curr
mul_d_w // G0 : dF = dH * E0
summary G0, dF // summary= k1 + k2*sprt
..........................................
; sprt^2
mov_w E1, E0
mul_w // dF = E1 * E0
push_d dF // story sprt^2
..........................................
; sprt^3
mov_d dH, dF
mul_d_w // G0 : dF = dH * E0// G0:dF = sprt^3
..........................................
; sprt^3*k4
ldi tmpA, k4
mov_d dH, dF
mul_d_b // G0 : dF = dH * tmpA
..........................................
; sprt^3*k4/kp1
ldi tmpA, kp1
div_wd_b // G0 : dF = G0 : dF / E0l
summary G0, dF // summary = k1 + k2*spt + sprt^3*k4/kp1
..........................................
; k3*spt^2
ldi_w E0, k3
pop_d dH // dH = sprt^2
mul_d_w // G0 : dF = dH * E0
sub_d dC, dF
sbc_w D0, G0 // summary = k1 + k2*spt + sprt^3*k4/kp1 - k3*spt^2
..........................................
; temper - kt
lds_w E0, temper
ldi_w E1, kt
sub_w E0, E1
..........................................
; (k1 + k2*spt + k4*spt^3/kp1 - k3*spt^2 )*( temper - kt )
mov_d dF, dC
muls_d_w // H0 : dG = dF * E0
..........................................
; (k1 + k2*spt + k4*spt^3/kp1 - k3*spt^2 )*( temper - kt ) / kp2
ldi_d dE, kp2
mov_d dF, dG
mov_w G0, H0
divs_wd_d // G0 : dF = G0 : dF / dE (signed)
..........................................
; S - (k1 + k2*spt + k4*spt^3/kp1 - k3*spt^2 )*( temper - kt ) / kp2
lds_w E0, spt_curr
sub_w E0, F0
sts_w spt_20, E0 // store result
ret
ладно, здесь это оффтоп
sebra
Куратор
Республика Коми
147 85
Отв.537 21 Дек. 17, 12:12
Просто вспомнил. Вот тут круто описано чего и как и почему.PavelSaratov, 19 Дек. 17, 18:49
К чему выдергивать сообщение о проблеме месячной давности которая уже решена?
Название ветки подразумевает говнокод, Си и Ардуино, в шапке все это изложено более развернуто.
Добавлено через 1ч. 58мин.:
На днях почищу ветку от старых сообщений и корявых своих мыслей. И вроде как пора ставить точку.
PavelSaratov, спасибо за ссылку, сделал закладку, может когда нибудь пригодиться.
gikrus
Кандидат наук
Пермь
388 401
Отв.538 21 Дек. 17, 22:37
Sebra. Не бери в голову. Похоже новогоднее обострение началось.))) Есть проблемка по стабилизатору напряжения, которую надо обсудить. Ну а МЭТРЫ, после новогодних праздников отойдут, добрее станут.
baton
Доктор наук
Санкт-Петербург
648 230
Отв.539 24 Дек. 17, 20:48
Друзья, есть схема "Димер для arduino"
и есть такой модуль (STK0046 - Оптосимисторный ключ)
Так как модуль уже есть, то была мысль приделать к нему "детектор нуля" с первой схемы, но обратил внимание, что опторазвязка на модуле совсем другая, с "zero crossing circuit". Пытался нарыть в интернете информацию, "чем это грозит", но так как почти ничего в электронике не понимаю... Короче, понял, что выводы я сделаю не скоро.
На форуме в теме [Ненавязчивая автоматизация ректификационной установки] есть схема модуля для ТЭН на ардуино и там как раз силовой ключ с MOC3083
но детектор нуля в этой схеме в отличии от "моей" более сложный и мне кажется, что для моих целей избыточен.
Можно ли к ключу (модуль STK0046) просто "приделать" детектор нуля из схемы "Регулятора..." с duino.ru? Или его (детектор) как-то нужно изменить?
Добавлено через 19мин.:
Почитал ещё в интернете. Насколько понял, с помощью MOC3083 силовой ключ в простом виде можно использовать только для включения/выключения, а не для регулировки. Видимо поэтому схема из темы [Ненавязчивая автоматизация ректификационной установки] более сложная, чем та, что в начале моего сообщения.
и есть такой модуль (STK0046 - Оптосимисторный ключ)
Так как модуль уже есть, то была мысль приделать к нему "детектор нуля" с первой схемы, но обратил внимание, что опторазвязка на модуле совсем другая, с "zero crossing circuit". Пытался нарыть в интернете информацию, "чем это грозит", но так как почти ничего в электронике не понимаю... Короче, понял, что выводы я сделаю не скоро.
На форуме в теме [Ненавязчивая автоматизация ректификационной установки] есть схема модуля для ТЭН на ардуино и там как раз силовой ключ с MOC3083
но детектор нуля в этой схеме в отличии от "моей" более сложный и мне кажется, что для моих целей избыточен.
Можно ли к ключу (модуль STK0046) просто "приделать" детектор нуля из схемы "Регулятора..." с duino.ru? Или его (детектор) как-то нужно изменить?
Добавлено через 19мин.:
Почитал ещё в интернете. Насколько понял, с помощью MOC3083 силовой ключ в простом виде можно использовать только для включения/выключения, а не для регулировки. Видимо поэтому схема из темы [Ненавязчивая автоматизация ректификационной установки] более сложная, чем та, что в начале моего сообщения.