Регулятор напряжения и тока на Arduino Pro Mini
m16
Модератор
Тамбов
1.9K 1K
Отв.380 25 Апр. 17, 22:39
woddy, совет без граблей - если измерение тока , то непосредственно с шунта, если измерение напряжения, то непосредственно с делителя напряжения (и пох что одна полуволна , точность приемлема). гальваническую развязку организовать по цепи управления. ацп запускать в режиме непрерывного преобразования с частотой не более 200кГц (13kSps на 10bit), sin-таблицы выкинуть нах, ту да же и ПИД.
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.381 26 Апр. 17, 08:18
ацп запускать в режиме непрерывного преобразования с частотой не более 200кГцm16, 25 Апр. 17, 22:39А почему 250Кгц не подойдет?
mak
Модератор
Екатеринбург
6.3K 1.8K
Отв.382 26 Апр. 17, 08:33, через 16 мин
By default, the successive approximation circuitry requires an input clock frequency between 50kHz and
200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency
to the ADC can be higher than 200kHz to get a higher sample rate.
200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency
to the ADC can be higher than 200kHz to get a higher sample rate.
woddy
Доцент
Новосиб
1.3K 489
Отв.383 26 Апр. 17, 08:33, через 1 мин
гальваническую развязку организовать по цепи управления.m16, 25 Апр. 17, 22:39Или не развязывать. Устройство если не предполагает внешней связи.
Следующая итерация будет всё-таки на hlw8012))))
mak
Модератор
Екатеринбург
6.3K 1.8K
Отв.384 26 Апр. 17, 08:49, через 16 мин
итерация будет всё-таки на hlw8012woddy, 26 Апр. 17, 08:33Я использую ADE7753, чем китайская поделка интереснее?
woddy
Доцент
Новосиб
1.3K 489
Отв.385 26 Апр. 17, 08:53, через 4 мин
думаю ничем, кроме наличия в ящике стола
mak
Модератор
Екатеринбург
6.3K 1.8K
Отв.386 26 Апр. 17, 09:02, через 9 мин
она данные как передаёт? хм, датчика температуры нет, даташита внятного не увидел, переход через 0 сама не ловит..
woddy
Доцент
Новосиб
1.3K 489
Отв.387 26 Апр. 17, 09:06, через 5 мин
она данные как передаёт?mak, 26 Апр. 17, 09:02частотой. 12ватт = 1гц, 120ватт = 10гц (зависит от выбора шунта)
не обратил внимания что у твоей еще zero cross есть. это плюс
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.388 26 Апр. 17, 09:07, через 1 мин
выкинуть нах, ту да же и ПИД.m16, 25 Апр. 17, 22:39А вот это не получится, ведь предложенная тобой схема это вырожденный ПИД, а точнее И-регулятор
sevpro
Доктор наук
Worldwide
769 281
Отв.389 26 Апр. 17, 09:12, через 6 мин
И-регуляторmsg31, 26 Апр. 17, 09:07А такие существуют?
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.390 26 Апр. 17, 09:21, через 9 мин
А такие существуют?sevpro, 26 Апр. 17, 09:12Точно, нету таких.
m16
Модератор
Тамбов
1.9K 1K
Отв.391 26 Апр. 17, 19:40
кто не помнит я РМ сделал на tiny13 и попал на грабли связанные с частотой внутреннего генератора которая варьировалась от 7,8 до 9,6мгц и как следствие - РМ не работал т.к максимальное значение ТОР для счётчика было фиксированным для паспортной частоты 9,6мгц. поначалу корректировал частоту внутреннего осциллятора , но это муторно оказалось. сделал крайнюю доработку прошивки простым алгоритмом в результате которого вычисляются три временных параметра привязанных к тактовой частоте проца : t_delay - время задержки запуска таймера относительно прихода синхроимпульса от сети (zero),
t_gate - длительность импульса включения симмистора, TOP - максимальное значение таймера .
алгоритм стартует при включении контроллера и формирует для дальнейшей работы вышеперечисленные переменные.
- переменная t_sync = 0
- опрашиваем порт INT0 ждём лог. 1
- ---//--- ждём лог. 0
- инкремент t_sync , опрашиваем порт INT0 ждём лог. 1 (в цикле)
- переменная t_sync имеет значение пропорциональное ширине импульса синхронизации. делим пополам двумя сдвигами вправо- t_delay = t_sync >> 2
- инициализация прерывания
- в цикле ждём прихода второго прерывания после инициализации - флаг Т
- по приходу первого прерывания запускаем таймер в режиме счёта
- по приходу второго прерывания останавливаем таймер сохраняем его значение в переменной ТОР_10ms, устанавливаем флаг Т
- далее простая арифметика сдвигами TOP = ТОР_10ms - (ТОР_10ms >> 4) ( что соответствует 9,375 ms )
- t_gate = t_off = ТОР_10ms >> 5 ( что соответствует 312,5 us )
всё это безобразие занимает чуть больше сотни байт .
t_gate - длительность импульса включения симмистора, TOP - максимальное значение таймера .
алгоритм стартует при включении контроллера и формирует для дальнейшей работы вышеперечисленные переменные.
- переменная t_sync = 0
- опрашиваем порт INT0 ждём лог. 1
- ---//--- ждём лог. 0
- инкремент t_sync , опрашиваем порт INT0 ждём лог. 1 (в цикле)
- переменная t_sync имеет значение пропорциональное ширине импульса синхронизации. делим пополам двумя сдвигами вправо- t_delay = t_sync >> 2
- инициализация прерывания
- в цикле ждём прихода второго прерывания после инициализации - флаг Т
- по приходу первого прерывания запускаем таймер в режиме счёта
- по приходу второго прерывания останавливаем таймер сохраняем его значение в переменной ТОР_10ms, устанавливаем флаг Т
- далее простая арифметика сдвигами TOP = ТОР_10ms - (ТОР_10ms >> 4) ( что соответствует 9,375 ms )
- t_gate = t_off = ТОР_10ms >> 5 ( что соответствует 312,5 us )
всё это безобразие занимает чуть больше сотни байт .
сообщения удалены (10)
Отв.392 03 Мая 17, 13:58
Так на будущее может кому пригодится. Способ временной переделки кнопочного узла, аналога кнопок LCD Shield
Значит я подпаиваю провод к кнопке LEFT, предварительно отпаяв резистор 1 ком. Это провод кидаю на PIN8. Провод который шёл на A0,к нему напрямую подсоединена кнопка RIGHT кидаю на PIN9, GND остается на месте, а VCC просто убираю с питания и временно изолирую.
Значит я подпаиваю провод к кнопке LEFT, предварительно отпаяв резистор 1 ком. Это провод кидаю на PIN8. Провод который шёл на A0,к нему напрямую подсоединена кнопка RIGHT кидаю на PIN9, GND остается на месте, а VCC просто убираю с питания и временно изолирую.
сообщения удалены (17)
gikrus
Кандидат наук
Пермь
388 401
Отв.393 23 Мая 17, 12:51
Сильно не пинайте, дайте аргументированный ответ.
Почему мы используем понижающий трансформатор?
Почему нельзя подать сетевое на диодный мост с запасом по напряжению, например на MB10S (максимальное обратное напряжение 1000 вольт), и с него на сопротивление например 160 кОм и переменник 1 кОм? Параллельно аналоговому входу поставить стабилитрон для защиты от перенапряжения. Просто трансформаторы то разные по качеству. И чем меньше его габариты, тем больше искажения. Опять же из за падения напряжения на диодном мосту порядка 0,5 Вольт получаем искажение в виде плоской крыши у полупериода. Кто то пробовал напрямую делать?
Почему мы используем понижающий трансформатор?
Почему нельзя подать сетевое на диодный мост с запасом по напряжению, например на MB10S (максимальное обратное напряжение 1000 вольт), и с него на сопротивление например 160 кОм и переменник 1 кОм? Параллельно аналоговому входу поставить стабилитрон для защиты от перенапряжения. Просто трансформаторы то разные по качеству. И чем меньше его габариты, тем больше искажения. Опять же из за падения напряжения на диодном мосту порядка 0,5 Вольт получаем искажение в виде плоской крыши у полупериода. Кто то пробовал напрямую делать?
сообщения удалены (2)
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.394 23 Мая 17, 13:32, через 41 мин
Почему мы используем понижающий трансформатор?Это чтобы пользователю не спалить комп и током не ударило при отладке и сборке.
Почему нельзя подать сетевое на диодный мост с запасом по напряжению, например на MB10S (максимальноеgikrus, 23 Мая 17, 12:51
сообщения удалены (3)
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.395 23 Мая 17, 13:48, через 17 мин
этот аргумент?gikrus, 23 Мая 17, 13:38Да, это основано на моей разработке, а я только из за этого так сделал.
qwest_ans
Бакалавр
Самара
63 4
Отв.396 23 Мая 17, 13:52, через 5 мин
К стати о трансформаторах, из старого принтера выковырял измерительный тр-р с коэф-том трансформации около 250, т.е. при входном 250 вольт на выходе 1 вольт, на х.х. такой подойдёт?
m16
Модератор
Тамбов
1.9K 1K
Отв.397 23 Мая 17, 14:46, через 54 мин
Почему нельзя подать сетевое на диодный мостgikrus, 23 Мая 17, 12:51не советую. мост вносит большую нелинейность ,помыкавшись, я отказался от этого в пользу резистивного делителя обсчитывая одну полуволну
сообщения удалены (25)
m16
Модератор
Тамбов
1.9K 1K
Отв.398 14 Июня 17, 10:04
Собрал 2 устройства на датчиках тока. Оба дают вспышки в случайном порядке.Chatterbox, 13 Июня 17, 22:42причина "вспышек" - симистор не запирается до прихода импульса от детектора ноля при условии что последний работает исправно.
баги:
- неправильно рассчитан ТОР таймера (завышен)
- напряжение с моськи нужно снимать не менее чем за 200мкС до прихода ноля сетевого напряжения
- у авра нет полноценной системы приоритетов прерываний посему эту проблему нужно разруливать ручками. у ADC должен быть самый низкий приоритет, т.е. по приходу прерывания от ADC нужно считать данные из ADCL ,ADCH и тут же разрешать прерывания дабы не тормозить процедуры прерываний от таймера и INT0
Это проблема в китайском энкодере. Заказывал 5 шт, и только один из них работает более-менее. попытался решить проблему программно, но результат все равно не стопроцентный.Chatterbox, 13 Июня 17, 22:42проблема программная - 100%. сам наступал на эти грабли. более десятка китайских энкодеров и 12-ти и 24-х тактовых работают без сбоев.
сообщения удалены (23)
woddy
Доцент
Новосиб
1.3K 489
Отв.399 17 Июля 17, 19:30
собрал детектор нуля по схеме от sevpro
[сообщение #13011692]
сравнил что на выходе
1) обычная схема с резистором на 75к
2) схема от sevpro на одном транзисторе (c1 1мкф , R3 120ком)
Ширина импульса одинаково плохая. относительно "настоящего" нуля смещены в разную сторону.
Замена стабилитрона с 24в на 12в позволяет уменьшить импульс с 750 до 500мкс
На третей картинке напряжение на стабилитроне
UPD
Поиграл номиналами. "настоящий" ноль гуляет относительно середины импульса в обе стороны. Еще несколько недочетов на схеме заметил, про это позже, когда разбирусь и "утрясу".
UPD2
получается самая годная схема детектора - на двух транзисторах
[сообщение #11844138]
[сообщение #12835706]
но её я ещё не испытывал
Заморачиваться с однотранзисторной схемой стоит только ради снижения нагрева, что редко нужно
[сообщение #13011692]
сравнил что на выходе
1) обычная схема с резистором на 75к
2) схема от sevpro на одном транзисторе (c1 1мкф , R3 120ком)
Ширина импульса одинаково плохая. относительно "настоящего" нуля смещены в разную сторону.
Замена стабилитрона с 24в на 12в позволяет уменьшить импульс с 750 до 500мкс
На третей картинке напряжение на стабилитроне
UPD
Поиграл номиналами. "настоящий" ноль гуляет относительно середины импульса в обе стороны. Еще несколько недочетов на схеме заметил, про это позже, когда разбирусь и "утрясу".
UPD2
получается самая годная схема детектора - на двух транзисторах
[сообщение #11844138]
[сообщение #12835706]
но её я ещё не испытывал
Заморачиваться с однотранзисторной схемой стоит только ради снижения нагрева, что редко нужно