Ограничитель I из Arduino. Часть 2 (26.02.2025). |
![]() |
2025 - Февраль | |
26.02.2025 19:14 | |
Сразу в лоб схему, прям как спаяно. Совсем забыл заземлить пин PWM резистором 1.6кОм при переназначении контактов (для Nano - было бы 22кОм) - что может быть причиной помех, описываемых ниже. И предохранитель 0.1А тоже забыл. ТТХ: - измерение тока: до 11.67А с дискретом 0.012А; - максимально замеченное напряжение 18.54В на холостом ходу, минимальное напряжение 2.28В на холостом ходу. Под нагрузкой падает до 1.44В - что является не минусом, а плюсом: приближение или выход за минимальный диапазон LM2596S 1.25-1.5В (в интернете разные ТТХ попадаются); - 4 варианта вывода выходных данных: ЖК-экран, семисегментный индикатор, светодиод, COM-порт. Немного скринов более-менее работоспособности: плавное понижение U преобразователя напряжения, чтобы понизить I на нагрузке. Преобразователь напряжения управляется самодельным оптроном из красного светодиода, фоторезистора и спичечного коробка - являясь токоограничителем с малым тепловыделением. Контроль напряжения и тока осуществляется высокоомными и малоомными шунтами соответственно. У LM2596S легко разрушается потенциометр, извлекаются его штыри, припаиваются провода на освобождённые места. Семисегментный индикатор не установлен, но все исходники и настройки для него взяты из предыдущих успешных проектов. Неоптимизированный скетч для Arduino 2560: 8% памяти устройства, 12% динамической памяти. Для Arduino Nano тот же скетч: 62% памяти устройства, 48% динамической памяти - ещё есть место, чтобы добавить новые функции, помимо токоограничения. Также нужно понимать, что тут аж 4 метода вывода данных (один ЖК-экран требует 2 сторонних библиотеки и одну самописную); оставить 1-3 - исходники по объёму резко сдуются. Произошёл отказ от маломощного преобразователя напряжения в сторону условно-мощного LM2596S (пишут и 3А, и 4А - но хрен там плавал: 2А). Произошёл отказ от транзисторов, как ненадёжно приоткрывающихся элементов постоянным напряжением: из-за плохой крутизны передаточной характеристики. Не хватает диода Шоттки как защиты от переполюсовки: это не просто токоограничитель получился, а фактически ЗУ для АКБ ИБП уже. Или стабилизатор тока. Или стабилизатор напряжения. Или мультиметр, который никогда не спалишь превышением тока. Или и то, и другое вместе (4 выбираемых режима работы). В этом плане, Arduino Mega 2560 предпочтительнее, т.к. много каналов, - но её цена (1.1к и выше) и баги вызывают тошноту. Проблемы стенда: - высокое время стабилизации сопротивления фоторезистора после смены яркости светодиода (3с между 0 и 3 дискретами PWM). На скринах 1 и 2 видно: без такой задержки скачут номиналы. Придётся покупные оптроны изучать и макетировать - в надежде получить такой же результат (хотя светодиод в спичечном коробке - проще и дешевле для тех, кто курит); - помехи диктуют измерения для усреднения не 100, а 1000 раз, - что, в свою очередь, ещё временную задержку порождает. На скринах 1 и 2 видно: при 300 измерениях номиналы скачут в разные стороны. Это включает и естественные скачки на несколько единиц дискретов из 1024, которые ну совсем никак не уберёшь. С учётом, что 1 дискрет равен 1.07мВ (расчётные 11.6мА), - вроде, не так критично; - помехи ЖК-экрана влияют, приближение рук к проводам самодельного оптрона порождает дополнительные помехи; - измеряемые каналы влияют друг на друга - надо было разнести на A5 и A7, а не на соседние A6 и A7. Все эти помехи порождают неточность измерений 0.01-0.03В/А - что критично при низкоомной нагрузке и низких значениях тока; - нет осциллографа, чтобы убедиться на 100% в отсутствии помех в верхушке выходного напряжения; - пока снова нет поверенного дорогого мультиметра, чтобы сделать подстройку заземления входных каналов под нормальные значения; - схема собрана на омерзительно баганутой Arduino Mega 2560 - когда целью была Nano (эта схема и исходники будут меняться, т.к. нет совместимости). Но стажёр всё спалил - а платформы Nano так из Китая ещё и не приехали; - проблема с русским языком у ЖК-экрана. (добавлено 27.02.2025) Исходников, естественно, не размещал, т.к. неотлаженные. Подключение семисегментного индикатора прошло успешно. Добавление заземляющего резистора 1.6кОм привело к уменьшению максимума помехи с 0.03В/А до 0.02В/А. (добавлено 01.03.2025) Не должно быть помех на верхушке сигнала выходного напряжения. Не только светодиод инертен и гасит импульсы ШИМ, но и фоторезистор тоже. Исходники продолжают оптимизироваться - но пока это к уменьшению процентов загруженности платформы не приводит. (добавлено 03.03.2025) Похоже, данная схема будет являться итоговой - и останется лишь допилить исходники. Помехи на фоторезисторе и светодиоде не играют негативной роли: если убрать постоянный показ на экране информации - проверка корректного значения PWM происходит быстро. Значит, при возникновении помехи - исходники тупо скорректируют PWM на новое необходимое число. Пока проблема только в алгоритме: 1PWM/3с - как-то медленно. (добавлено 04.03.2025) Купленное оборудование, взамен сожжённому, - было украдено в ПВЗ пятёрочки (ПВЗ закрылся на ремонт, когда заказ там уже лежал). Удалось вернуть деньги - но перезаказывать заново; и хрен знает, сколько ещё времени ждать придётся. Долговременное тестирование токоограничителя с малыми токами нагрузки - успешно. Скоро будет тест с высоким током 1А - часов 9 (нагрузку придётся вентилятором охлаждать); вот и посмотрим, насколько сильно греется преобразователь. (добавлено 12.03.2025) Цифровой потенциометр - полный провал. (добавлено 17.03.2025) Долгое свечение светодиода в коробке - перегрева нет. Написал самоконтроль самодельного оптрона: сбор всех 255 значений, вывод в COM-порт, на экран и т.д. Почему-то поднимает напряжение до 12В вместо 18 с копейками. Это не ошибочный нефиксированный монтаж в корпус фоторезистора и светодиода (дёрнул рукой - расстояние между ними увеличилось). Спичечный коробок выдержал; а вот делитель напряжения для измерения напряжения - неверный: паразитные заземляющие 82кОм искажают результат. В итоге - использовал сам резистор 56кОм как и заземлитель канала, убрав 82кОм из схемы. Правда, появилась другая проблема: врёт в большую сторону на 0.5В. Однако, с учётом вероятности лжи неповеренного мультиметра, - перед внесением изменений в схему надо ещё раз найти поверенный: вероятно, выставлено на преобразователе не 19В, а 19.7В. Обнаружилась другая проблема: почему-то напряжение именно при PWM=0 больше, чем PWM=1. Иногда бывает так, что 0>1>2, а дальше идёт нормально 2<3<4... (добавлено 18.03.2025) Безопасность такого токоограничителя выше, чем у микросхем серии LM. Простая переменная на абсолютный максимум ампер в исходниках - защитит преобразователь от превышения тока (в то время, как микросхема тупо перегревается и дохнет). А если вдруг переменная установлена неверно (например, 2А для LM2596S - забыли поменять на что-то одноамперное, вида MH-Mini-360) - будет просадка выходного напряжения на преобразователе - и это можно персонально отслеживать: просадка, как правило, ну очень заметна (на примере XL6009 - улетает с 21.6В до 7В). Повышенное измерение выходного напряжения - баг входного канала + нужно было перерасчёт коэффициента делителя сделать, измеряя напряжение прямо в схеме. Неправильное напряжение при PWM=0 - очередной баг Arduino (люди вынуждены были полностью канал отключать); а т.к. это Mega, а не Nano, - получите такой же баг и на PWM=1 (а чтобы больше мозги пеклись - не всегда, а иногда). Формируются первые ТТХ токоограничителя: - диапазон выходное напряжение 2.48-18.54В; - дискретность диапазона напряжения: 253; - максимально допустимый ток: 2А; - погрешность измерений А и В: всё-таки 0.03; - частота считывания данных: а х его знает. Специально погнул спичечный коробок с фоторезистором. Он расстроился - стал показывать на последних значениях дельту 0.1В в разные стороны - самоконтроль это заметил. Пришлось гнуть его обратно - естественно, не восстановил прежнее состояние. Поэтому перенастроил потенциометр светодиода (написав функцию его настройки) - и всё снова заработало. (добавлено 19.03.2025) Ещё 3 плюса: - именно самодельный оптрон - возможность подстраивания под любой преобразователь. Захотел MH-Mini-360 поставить, с целью экономии места, - понял интервал номиналов резистора опытным путём - использовал необходимый фоторезистор и обычный резистор при необходимости; - именно у самодельного оптрона нет нагрева при любом значении PWM; - так как PWM занимает 1 канал, а сбор данных идёт всего с 2 шунтов, - остаются свободными около 4 PWM и 6 аналоговых каналов. Это означает, что исходники можно переписать не под одно устройство, а под 4 сразу - с индивидуальным контролем каждого. (добавлено 20.03.2025) И тут приходит неудача. Подключив цифровой вольтметр на выходное напряжение, выяснилось: реальная погрешность измерений аналоговых каналов составляет 0.3В вместо 0.02В - причём на разных номиналах оно разное. Каналы расстроены просто дико (максимальная погрешность - на меньших измерениях), хоть и погрешность самих измерений многократных составляют 0.03В. Вот тебе и 82кОм на аналоговые входы... И даже 56кОм много оказалось. Опять баг Arduino Mega? Скорее всего: ведь на Arduino Nano удавалось получать значения с точностью до сотых вольта (когда требовались околонулевые значения). Или это конкретно ЖК-экран балуется: ведь наводки от него описаны в интернете достаточно часто. Совокупность проблем: - время переключения напряжения 3с: фоторезистор инертен, медленно реагирует на изменение света; - переключение с 19В до 2В, по факту, занимает и происходит ну совсем постепенно - и не укладывается даже в указанные ранее 3с. Здесь вина и конденсаторов преобразователя: им некуда разряжаться, кроме как на цифровой вольтметр, - самоконтроль должен проходить по другой логике: реле, переключающее на 1кОм как специальный разряжающий конденсаторы паразит; - неисправимые проблемы с первыми 1-2-3PWM. 0 PWM - баг именно Arduino, последующие - медлительность фоторезистора и проблемы самоконтроля; - время считывания напряжения 1с: 1000 измерений. Согласно форумам, должны были составлять 100мс, - но по факту, в т.ч. математические операции с коэффициентами шунтов и опорного напряжения, - суммарно дают секунду или даже чуть больше. Значит, время реакции прибора на раздражители - больше секунды. В то время, как у микросхем-токоограничителей LM, наверно, оно чуть ли не наносекунды составляет (данные в даташите на эту тему отсутствуют); - с помощью фонарика смартфона в упор было доказано: свет проникает сквозь спичечный коробок (щели) - и минимальное напряжение с ночного 2.00В поднимается до 2.60В засвеченного. То есть, имеется зависимость от внешнего освещения (хотя писал ранее: корпус из коробка собирался на отстань). Не исключено, что и сам корпус коробка частично просвечивается; - смещение измерения Uвых 0.3В, погрешность измерения 0.02В во тьме (0.03В на свету); - продолжаю реализовывать программный самоконтроль: настройка подстроечного резистора светодиода самодельного оптрона, автоматический расчёт необходимого числа измерений (исходя из фактических помех, наводящихся на аналоговые каналы от всего спаянного в схеме), самоконтроль фоторезистора-светодиода-ШИМ и т.д. Если это реализовывать на Arduino Nano - есть вероятность, что не хватит места для исходников; а реализовывать что-то не на Arduino Nano - только через стажёрский труп; - получается - практически фаталити: прибор превращается в медленное убожество, годящееся только как ЗУ для АКБ (где все процессы протекают медленно). И места для переработки его во что-то большее - практически не остаётся. Последний шанс на спасение: - заземлить аналоговый канал 1кОм или вообще его на землю соединить напрямую через предохранитель 0.1А (уменьшить шумы до минимума - и попытаться обосновать даташитом этот номинал: как бы не оказался минимальным 10кОм); - подвесить между серединой шунта-делителя напряжения и аналоговым входом резистор 10МОм, изменяющий коэффициент измерения всего на 0.03%, - не разрушив его: сохранив возможность делить выходное напряжение в 19-20 раз; - молиться о внутреннем сопротивлении входного аналогового канала в 10-ки гигаом: тогда искажение напряжения составит менее 0.1% - что от 20В будет как раз желаемые 0.02В (впрочем, можно и коэффициент делителя напряжения для аналогового канала вывести). И хватит писать в этой статье дополнения. Надо схему довести до рабочего состояния - и выпустить часть 3 (ну как: и часть 1 считалась рабочей, и часть 2...). В конце-концов, исправил правильное измерение напряжения: хоть и с таким диким смещением 0.3В - всё равно лучше, чем было раньше. А прямая слева коричневой кривой - оптрон самодельный расстроен снова и насыщается светом раньше, чем надо. Уже продумываются технические детали, как его лучше грамотно сделать; чтобы можно было швырять, пинать и т.д. - без последствий. А с ручным измерением не совпало - не потому что на 0.3В в верхнюю сторону Arduino врёт. А потому что дешёвый вольтметр DT-830B искажал и напряжение в меньшую сторону, как и с амперами в прошлый раз: 0.24А показывал - а на самом деле 0.34А. (добавлено 27.03.2025) Именно изменение номиналов делителя напряжения с 1МОм+56кОм на 20кОм+1кОм (1кОм используется и как заземлитель аналогового канала) уменьшило помехи. Поведение было такое: "Для Arduino Mega: между 900 и 1000 - погрешность измерений 0.02В, между 800 и 1000 - 0.04В, далее - не стал смотреть: уже многовато показалось. Запустил цикл без изменения g_iMeasure_Count для 1000 - словил наводки от собственного тела 0.02В. То есть, реальная максимальная погрешность - сумма: 0.04В для 900, 0.06В для 800. То есть, казалось бы, от 1000 измерений никуда не деться. Но потом произошло чудо. Помеха 0.04В держалась вплоть до 400 измерений включительно (решил-таки до конца протестировать) - резко увеличившись до 0.053 на 300. То есть, 400 всё-таки можно использовать, если пожертвовать частью номинала точности 0.02В в пользу скорости". Смешно то, что накрытие самодельного оптрона металлической коробкой, с целью экранирования, - увеличило все помехи ещё на 0.02В (коробка была не заземлена). |
|
Обновлено ( 27.03.2025 11:16 ) |