27 МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин 27 МОСКОВСКАЯ ВСТРЕЧА

Регулятор напряжения и тока на Arduino Pro Mini

Форум самогонщиков Автоматика
1 ... 24 25 26 27 28 29 30 ... 58 27
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
RMS.JPG
RMS.JPG Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

RMS.zip 11.0 Кб
gikrus Кандидат наук Пермь 388 401
Отв.523  09 Дек. 17, 17:23
Всем привет. Сегодня собрал стабилизатор напряжения по новой схеме и решил сделать замеры, как и обещал Sebre. Для измерений использовался осциллограф Rigol DS1054. Замер выполнялся начиная с 220 В вниз с шагом один вольт. Печатать результаты не стал, просто сфотографировал листочки. На напряжении 180 вольт понял, что надо подстроить, рассогласование было стабильно 1,5 В. Дальше результаты были один в один. На напряжениях ниже 90 вольт показания на осциллографе колебались с большей амплитудой - до двух вольт. Думаю это связано с ограниченными возможностями осциллографа по измерению. Среднеквадратичное он считает по картинке на экране. При этом изображение стояло, как вкопанное. Конечно наблюдались небольшие колебания в пределах 1 Вольта, но у меня плохая сеть и входное напряжение колебалось в пределах 208 - 225 вольт. Замеры выше 200 вольт делал, когда входное было больше 220 вольт. В колонках первая цифра - задаваемое напряжение, вторая - показания на осциллографе.
Я был шокирован результатом. Всё работает чётко, без сбоев и морганий. Похоже пора ставить жирную точку в этой теме. Sebra -огромное спасибо.
20171209_142455.jpg
20171209_142455.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
20171209_142502.jpg
20171209_142502.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
20171209_185759.jpg
20171209_185759.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
20171209_185810.jpg
20171209_185810.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
20171209_185820.jpg
20171209_185820.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
сообщения удалены (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
Трансформатор для измерения можно использовать любой и от зарядки? через него же нагрузка особо никакая не идет?
ant73 Бакалавр Мелекесс 52 30
Отв.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.
atЫmel.pdf 2.5 Мб
K_R.ZIP 174.1 Кб
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 все тухло. 
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 () - выбирай какой хочешь. ХАЛ внезапно еще и самодокументируется в отличии от кода ассемблера, который надо комментировать.
В той же теме на Сахаре

Скрытый текств целом да, действительно сильно ускоряет процесс, особенно на тяжелых вещах типа 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"
2366_2.jpg
2366_2. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.


и есть такой модуль (STK0046 - Оптосимисторный ключ)
stk0045-sch.gif
Stk0045-sch. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.


Так как модуль уже есть, то была мысль приделать к нему "детектор нуля" с первой схемы, но обратил внимание, что опторазвязка на модуле совсем другая, с "zero crossing circuit". Пытался нарыть в интернете информацию, "чем это грозит", но так как почти ничего в электронике не понимаю... Короче, понял, что выводы я сделаю не скоро.
На форуме в теме [Ненавязчивая автоматизация ректификационной установки] есть схема модуля для ТЭН на ардуино и там как раз силовой ключ с MOC3083
171655.jpg
171655. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

но детектор нуля в этой схеме в отличии от "моей" более сложный и мне кажется, что для моих целей избыточен.
Можно ли к ключу (модуль STK0046) просто "приделать" детектор нуля из схемы "Регулятора..." с duino.ru? Или его (детектор) как-то нужно изменить?


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

Почитал ещё в интернете. Насколько понял, с помощью MOC3083 силовой ключ в простом виде можно использовать только для включения/выключения, а не для регулировки. Видимо поэтому схема из темы [Ненавязчивая автоматизация ректификационной установки] более сложная, чем та, что в начале моего сообщения.