Открытый проект универсального зарядника

Psw

Вот же блин, в моих длинных старательно написанных и подолгу обдуманных постах - смысл видимо теряется за обилием слов.
Кратко - ЛЦД уже заработал, а обмен с компом в начале (вроде бы) заработал а теперь снова нет. Я просто ход своих мыслей описывал.
А сейчас впаял все защитные диоды и резисторы во всех каналах АЦП - и прога перестала постоянно пищать, висит на надписи Универсальное Зарядное ЗУ, Oct 29 2007 35A7 - видимо ждёт нажатия кнопок, которых нету пока что. Музыка играется при включении 1 раз и затихает.
Обмен с компом - как уже говорил, если втыкаю перемыку в гнездо Меги между 14 и 15 ногами RXD и TXD то комп прекрасно видит эхо выдаваемых на платку символов - кабель/разъём/макс232/плата исправны. А вот читать состояние экрана не может, хотя какая-то инфа из Меги в ответ на команду начинает выливаться и в окне лога BP.EXE эта инфа мелькает.

R2D2:

От JTAG я программно защищался потом выкинул и так все работает.

Ну вот если бы не выкинулось, то от неправильно поставленной галки JTAGEN меня бы спасло.

R2D2:

Могу налобать какуюнибудь простенькую прогу, которая будет

Частоту проца я уже раньше понял как померять - длительность импульса Е на 28 ноге меги определяется переполнением таймера и должна быть 128 мкСек при 16 МГц тактовой - что мой игрушечный осц и намерял с точностью лучше 5% - я даже осциллограммы выше прикладывал.
А про написать прогу - ну давайте уже подумаем про минимально возможные изменения, что-бы гравиЦАПу приспособить для управления ТЛ и разрядными транзисторами. А если ног для этого не хватит - то кнопки на интерфейс ЛЦД перенесём.

R2D2

Связь с компом работает так:
И комп и ЗУ изначально настроены на 19200 скорость.
Со стороны компа просто выбирается в списке.
Со стороны ЗУ в main.cpp надо найти строку “UBRRL=51;” и поменять на че хотите в соответствии с шитом.

Далее:
Вы жмахаете кнопку дай экран ЖКИ.
Команда прилетает в ЗУ. (uart_in.cpp(строка case U_GiveMeScren:))
Если команда исказилась ЗУ переспрашивает а че хотели то?
Если она прилетела без искажений, то в ответ на нее
(uart_out(первые строки)) формируют пакет
0. Таже команда
1.-38. Видео буфер (32 символа и кой какие команды) на 38 место ставим адрес курсора моргающего
39. Контрольная сумма

Если большой комп высчитал контрольную сумму и она совпала, то он отражает ее на экране.
Кстати давно я этой хренью не пользовался в обед проверю.

Насчет ЦАПа.
Нужна инфа как его грузить? Это 1-3 свободных вечеров экспериментов.

Фильтр замечательно работает и настройки не требует. Если чесно мне не хотелось бы в этом направлении идти, но если будут вопросы по проге подскажу.

Тут обнаружен замечательный экран ЭлЭсДэ графический 133х64 точки с внешней подсветкой PCF8535 за 190 руб. Я его хотел на тотже разъем привесить.

Тут в недрах мордовии владыка саурон 30 лет и три года мастерит супер мега кольцо тьфу ты ЗУ.
Короче зародилась версия 2.0 HiEnd класса в ней все это предусмотрено и многое другое. Автор пока не готов высказаться поэтому и молчит.
А эта версия упрощенно попсовая. Я бы не трогал ЦАП лучше АЦП.
Вот АЦП хрен знает как плавает - его надо внешним делать и штуки 4 бита добавить еще.
И это тоже во 2 версии учтено.

R2D2

У меня Кнопки в ручном управлении работают.

Надо проверять скорости, конденсаторы и провода.

Psw

Пара дней паузы на гульки, однако - продолжим. Кстати, перечитал статью и если вдруг я спрашиваю что-то, что там уже описано - нет смысла здесь это цитировать, а надо сразу отсылать меня к нужной странице (или глава/раздел) в статье - мне так кажется правильнее.

R2D2:

Связь с компом работает так <>Вы жмахаете кнопку дай экран ЖКИ <>Если она прилетела без искажений, то <> формируют пакет
0. Таже команда+1.-38. Видео буфер <> 39. Контрольная сумма

BP.EXE не позволяет копировать в буфер содержимое вкладки лога - но и так видно, что в ответ на команду [84] прилетает длинная строка, первый байт которой [28] и далее 3A 08 6C D7 E8 E2 E5 F0 F1 E0 EB и далее - лень цитировать. Понятно, что 84 <> 28, НО - на ОСЦ асинхронный байт 0х84 выглядит как Провал Стартовый интервал и первая единица - Пик Четыре Нуля - Провал Единица - Пик Два Нуля - Пик стоповый интервал. Это когда я перемыку вместо меги ставлю и сигнал на ней гляжу ОСЦ, BP.EXE начинает передавать и принимать 0x84 циклически и отражать это в окне лога. А в числе 0х28 битики стоят совершенно по другому - после первых 3х нулей - одна единица, один ноль и снова одна единица, потом опять три нуля. Чего-то не вяжется. Если бы скорость процика была ± 10% от необходимых 16 МГц, то 0х84 могло приниматься как какое либо другое число, в центре которого одна либо две единицы ПОДРЯД, и много нулей. Так что если игра с параллельными кварецу 22 пик не поможет, сделаю в проге “перемыку” - что-бы она эхо выдавала, быть может какие другие мысли будут. Или есть под руками много кварецев 12 МГц и 20 МГц. Вад64 говорил как-то, что меги гонятся без проблемофф. Как она отнесётся к 20 МГц кварецу от старой сетевой карты ?

R2D2:

Фильтр замечательно работает и настройки не требует.

Ок, запаяю его, заодно и его выходные пульсации промеряю, что-то мне кажется, что далеко там до размаха пульсаций 5V/2^16=МикроВольтики.
Что-то мне кажется, что пульсации будут в лучшем случае МиллиВольтики=10 Бит точность Фильтра ШИМа=нет смысла программировать 244 Гц 16 бит ШИМ, а выгоднее по пульсациям будет примерно 10 бит 15 КГц фильтровать тем же фильтриком - больше октав фильтроваться будет. Кстати, частоту проца можно измерить, меряя частоту ШИМа - там же аппаратный делитель с известным коэффициентом.

R2D2:

мне не хотелось бы в этом направлении идти

Согласен, гравиЦАПа есть не в каждой деревне, да и пользы от неё - только в быстроте установки задатчиков разрядного/зарядного токов.

R2D2:

АЦП хрен знает как плавает - его надо внешним делать и штуки 4 бита добавить еще.

Блажен кто верует. Иными словами, это на бумаге или в С++ проге легко переделать вычисления с 8 бит на 16 или 24 или 32 бита. А в реальной природе несколько по другому - шумы и неточности на каждом шагу. И если у меня есть к примеру AD внешний 24 бита сигма-дэльта АЦП от весов, то реальное его разрешение - примерно 16-18 разрядиков, и те - тонут в шумах внешних схем. А реальная ПОГРЕШНОСТЬ измерителя веса в котором используется этот АЦП - ваапще - 0.5%, и при эксплуатации ухудшается.
А у нас - Анал оговая земля меги через R64 (я вместо него тоже индуктивность впаял) присоединена к другим землям в точке платы, далёкой от аналогового источника сигнала для меги - ЛМ324 в смысле. Надо будет перемыку к ЛМ кинуть и поглядеть, будет ли с этого толк по шумам/пульсациям.
Кроме того, 10 бит - это 0.1% от полной шкалы точность. А чем её поверять/калибровать в сельской местности ? ЖёЦким Китайцем с точностью 10% ?
Да и разница между 4.2 и 4.25 вольтами - это 1%. В наи худшем случае (зарядка 1 банки лития и полная шкала 10 бит 1024=30 Вольт делитель) вес младшего разряда будет 30/1024=0.03 вольтика - тоже лучше требований к точности зарядки лития 4.2-4.25 вольта. А когда более одной банки лития заряжать - то это уже балансир раскидает итоговую погрешность уставки по банкам равномерно. А у балансира режим более выгодный - он же побаночно меряет, соответственно делитель 5 Вольт=Полная Шкала, вес младшего разряда при 10 битах=0,005 Вольтиков - более чем достаточно по точности и трудно достижимо при калибровке.
Кстати, про термо стабильность резисторных делителей в статье - не совсем согласен. Если оба резистора делителя сделаны по одинаковой технологии ( например оба угольные или оба металло плёночные из одинакового материала) то при одинаковой температуре резисторов делителя коэфф деления не должен меняться с температурой.
Так что про применение внешнего 16 бит АЦП в подобном проектике - на мой взгляд он просто покажет картину окружающего нас шума более подробно. Однако итоговую погрешность измерений снизит не значительно. Если ваапще снизит.

Psw

Кстати ещё один косячок увидел. На 15 ноге Меги TXD когда не передаются байтики должно быть 5 вольт. А на ней - 0 вольт. И при передаче первого байта из пакета на ОСЦ виден супер кратко временный пичок к состоянию IDLE линии, а потом уже - снова вниз. Хде покопать ? А заодно и - как поменять инициализацию ШИМов, что-бы они при надписи на экране “Универсальное ЗУ …” генерили 50% заполнения ?

Psw

Для борьбы с косячком изменил в
void InitAll(void)
PORTD=0x02; // В порту D все нули кроме TXD 0000 0010 и
UCSRB=(1<<RXEN)|(0<<TXEN)|(1<<RXCIE)|(1<<TXCIE);// Разрешаем работу приемника
// (передатчика разрешим когда надо будет отправлять)
SETBIT(UCSRB, TXEN); // Разрешаем работу передатчика - сейчас и навсегда
и закоментил все установки битов разрешения передатчика в Uart_Out.Cpp
Поведение изменилось. Теперь как минимум один раз успешно обновляет экран в BP.EXE наблюдаю верное содержимое ЛЦД экрана, после нажатия любой кнопки в BP.EXE - мега пищит и более на команды по УСАРТ не реагирует, БП.ЕХЕ сладко мпит после этого, хотя на ЛЦД экране видны последствия обработки нажатия кнопки - строки смещаются к примеру.
То есть кварец не виноват оказался. Однако пока не заработало. Чего дальше поковырять ?

Psw

Во время второй пива вспомнил, что не нашёл где осуществляется запрет УСАРТ модуля, и подумал, что его выгодно в прерывании запрещать, гляжу - и точно, в модуле Int.CPP поменял строчку
// CLEARBIT(UCSRB, TXEN); // Запрещаем работу передатчика - не запрещаем - НАФИГА ?
и после пере компиляции - управляется с компа вместо аппаратных кнопок/енкодера, которые не впаяны до сих пор.
Буду фильтр ШИМа паять. Однако краем глаза глядел в ДатаШит - и где там в меге 16 бит ШИМ ? Или я не дочитал ? Ну ладно, напаяю фильтр и пульсации буду мерять, благо, что связь с компом есть и ручной режим я так полагаю тоже есть (когда задаёшь уставку 1/2 по какому-либо из каналов)

Psw

Режима ручного управления (когда значения ШИМ канала руками на компе указываешь) не нашёл.
Зато когда искал, BP.EXE свалился вот в такой экран

R2D2

“0х84” - означает “непонял” это значит что ЗУ чтото получило но не одину из 10 известных команд.
Это значит, что с большого компа в ЗУ инфа передается неверно, а в обратную сторону хотябы судя по 84 стабильно.
Вообще в ответ на каждую команду компа (первый байт в последовательности) ЗУ отвечает такойже командой но с параметрами.

  1. Можно попробовать поменять частоту и там и там на другую.
  2. Может быть винда в компорт вмешивается
  3. Может быть у вас ноутбук?
  4. Может быть линия КОМП-ЗУ с залипом.
  5. Может 232 микруха както непропаяна
  6. Шнурок слишком длинный или ломаный
  7. Можно в ЗУ прошивку добавить пару строк для отображения команды модуль uart_in.cpp найти слово default: и добавить
    после него PrnHex(1, 0, 2, InBuf[0]); тогда во второй строке жки высветится полученный код.

Да Вы правы, что разводка платы, шумы внешние, шумы меги, ФНЧ+ТЛ, мало конденсаторов на выходе и т.д. могут не дать ни какого улучшения в измерении напряжения. Уже в 2-3 младших битах шумы еще 4 бита и подавно будут шуметь. Но рассматривая все как цепь факторов влияющих, можно стараться еще одно звено улучшить. Вот с разводкой обещают еще помочь. И внешний АЦП можно обвесить конденсаторами, а нутри меги конденсаторов не добавишь.

“Ручной режим управления” это я имел ввиду вторую закладку, где кнопки вверх вниз ентер кансел.

Спасибо за найденные косяки:

  1. На TxD должен быть “1” всегда кроме передачи.
  2. Передатчик надо разрешать только на время передачи.
    Щас пофиксю и выложу.

Скорость порта на компе ставится перед открытием его на первой закладке.
Скорость порта на ЗУ вибирается по даташиту в зависимости от частоты кварца и требуемой частоты кома (там таблички стр.166)
Тамже находится ответ на вопрос почему я выбрал 19200, а не 38400 (экспериментом проверял много ошибок), но с учетом найденных багов перепроверю.

Насчет экрана это при занятом порте ком, который завис при выходе из подпрограммы по эксцепшину, а прога в этот момент пыталась еще и еще раз туда чтото послать. При успешной настройке ком соединения все это не проявляется.
Соединение я проверял на стационарном компе и на нотебуке DELL LATITUDE (в статье есть фотка сгоревшего, но это не мой, и не по этой причине 😒 )

Psw

Вот бы мне научится быть лаконичным и при этом изъясняться без неоднозначно толкуемых выражений. Просто опять вижу последствия беглого прочтения моих длинных старательно накорябанных постов.
Вкратце - управление с компа заработало, однако сваливание BP.EXE в экран как на фотке - сиськимасисеськи. Это если выбрать к зарядке предлагаемый первым свинец (нажать Ок или Вниз). Если выбираю зарядку 1S лития, то можно запустить канал, однако он сразу пишет что АКБ заряжен за 1 сек. Чего мне сделать ? Вых напряжение подать 3.5 вольта, что-бы прога думала, что литий есть ? Или проще где-либо в проге заткнуть, что-бы можно было руками ШИМом управлять ? Я просто хотел пульсации замерять/уменьшить.

R2D2:

что разводка платы, шумы внешние, шумы меги, ФНЧ+ТЛ, мало конденсаторов на выходе и т.д. могут не дать ни какого улучшения <> можно обвесить конденсаторами

Вот и у меня вопрос - какова разница в цене между СМД керамикой 0.1 мкф и 1 мкф и 10 мкф. Просто если все блокировочные питание конденсаторы по плате вместо 0.1 поставить 10 мкф (которые я по совету ХайВольтика нашёл на матерях П4 под процом в немалых количествах - жаль что много брак матерей выкинул с этими кондёрами - для борьбы с шумами/помехами в моделизме - очень милая вещь) - то это два порядка разницы. Которые существенно уменьшат шумы на водку. Я кстати эти 10 мкф запаял около питания меги с обоих сторон вместо 0.1 мкф ну и ещё в парочку подозрительных мест на платке. Собственный шум моего Веллемана - примерно 0.1 миллиВольта при макс чутье 5 милливольт/деление.
Запаял вот фильтры ШИМа, а проверить пульсации на выходе фильтра не могу. R29=8К=4К7+3К3, R35=13К7=7К5+6К4 - вот тока домик из двух СМД резисторов паять в место R35 где вокруг прочие элементы - цирк ещё тот. Аднака справился с какой-то матерью.
Как мне сделать ШИМ 50%, что-бы пульсации мерять не спеша ну и прочие эксперименты производить ? Ну то есть - как бы сделать прямое управление коэфф ШИМа канала из меню зарядника или с компа по спец команде ? Типа для тестов ? (лучше с компа - у меня кнопок и енкодера пока нету, да и ЛЦД я не всегда подключаю - и без него нормально работает)
И кстати - я вместо подстроечника делителя V12 постоянные СМД резисторы запаял - в свете Политики Партии по борьбе с Шелудивыми Угольными Полосками. Теперь у меня вместо 12 вольт показывает 11.8 вольт. Программная калибровка этого и прочих делителей будет или нет ?
Я кстати не глядел как обрабатываются замеры усреднённых АЦП преобразований, но по уму - для отсутствия неравномерностей пересчёта при цифровой калибровке делителей (это когда коэфф калибровки будет 1.002 или 0.998 к примеру) - надо к примеру накапливать 64 измерения по 10 бит в 16 бит накопителе и потом работать с ним как с 16 разрядов результатом АЦП. Умножать к примеру на 16 бит калибровочный коэфф, а потом просто использовать в дальнейших вычислениях старшие 10-16 битов от 32 бита результата умножения. И если в текущей версии платы шумят 2-3 младших разряда от 10 бит АЦП - то дальнейший рост разрядности АЦП вряд ли к чему-то приведёт. Вот когда шумы станут около единиц младшего разряда - тогда да, есть над чем подумать.

R2D2

Я щас типа на работе и по роду деятельности “помогать всем” задергали потому наверное читал поверхностно и пропустил чего.
Дома ночью в спокойной обстановке постараюсь найти причину “экрана” и заткнуть я уже догадываюсь. Кстати у меня он не проявлялся.
Глюки бывают при отсоединении шнурка в момент передачи, но отэтого тоже защитюсь.

Для регулировки ШИМА нужно заделать шоб нормально работал КОМ. Тогда вы сможете забраться глубже в меню и там есть настройка ШИМ.
7.Настройки => 7.8 Настройки схемы => I1 или V1 там кнопкой вверх накручиваете шим и смотрите что получилось в этот момент вместо акка можно прицепить лампочку.

Силовую можно собрать на стандартных катушках с сердечником 100-200 мкГн. L1<L2 номиналы пофиг. Это ограничит ток.

При попытке заряда без силовой части LIPO прога видит что тока нет и вырубается.

СМД конденсаторы 0805 (от 0-1мкф) все стоят одинаково приблизительно от количества по 5-30 копеек.
Замену угольных полосок приветствую.
Насчет усреднения да именно так и делаю но до 32 измерений. В общем пришлось подсократить в целях экономии скорости и переменных, но это тоже можно решить. Программную подстройку на V приделаю.

На температуре и токе она есть.

AlexN
Psw:

А у балансира режим более выгодный - он же побаночно меряет, соответственно делитель 5 Вольт=Полная Шкала, вес младшего разряда при 10 битах=0,005 Вольтиков - более чем достаточно по точности и трудно достижимо при калибровке.

Это что за идеальный балансир такой? С дифференциальными входами?

Psw

По другим пунктам меню перемещаюсь легко, BP.EXE сваливается тока при попытке зарядить свинец, в других местах меню всё Ок.

R2D2:

Для регулировки ШИМА <>7.Настройки => 7.8 Настройки схемы => I1 или V1 там кнопкой вверх накручиваете шим и смотрите что получилось

Ну - накрутил, спасибо за подсказку. Пульсации на выходе фильтра при значении 5000 - 8+ милли вольтиков, что как раз и говорит про хуже чем 10 бит итоговую точность. Не зачем там 16 бит ШИМ, будет лучше 12-13 бит с пропорци анальным увеличением частоты модуляции. Это же быстро подправить ?

R2D2:

Силовую можно собрать

Силовой пока нету. Надо вначале ТЛ по управлять без обратной связи, а там поглядим, какая будет силовая.

R2D2:

усреднения да именно так и делаю но до 32 измерений.

Не суть важно скока брать усреднений, главное, что их больше одного и что в вычислениях участвуют все разряды накопителя. Каждое удвоение количества усреднений - теоретически ведёт к добавлению одного бита точности - оптимум делать 8-64 измерения в зависимости от требуемой оперативности принятия решений.
Кстати, программатор тоже запаял и даже прошил им разочек - медленно конечно но работает. Жалко что статья не в ХТМЛ и в ней нету ссылочек на PonyProg к примеру. Да и отсюда можно было бы к разделам статьи напрямую отсылать, если бы она была в ХТМЛ с разделами и опубликована где-либо.

AlexN:

Это что за идеальный балансир такой? С дифференциальными входами?

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

R2D2

Без обратной связи ТЛ рулиться не будет. Будет зашкаливать в крайности.

Для SEPIC максимальный шим 0xffff * 33% = 0x5555

Насчет усреднения все правильно: Сначала все складываем, потом переводим в число с плавающей потом масштабируем и делим на 32.

AlexN
Psw:

Просто если все блокировочные питание конденсаторы по плате вместо 0.1 поставить 10 мкф … - то это два порядка разницы. Которые существенно уменьшат шумы на водку.

Неверно.
Бесполезно заменять фильтрующие конденсаторы емкостью 0.1 мкФ на более ёмкие.
Если хочется хорошего подавления помех во всем диапазоне частот - ставьте параллельно три конденастора: 0.01, 0.1 и 1 мкФ (или 10 мкФ вместо последнего, если так хочется).
Искал оригинал статьи на эту тему, пока не нашел - объяснение “на пальцах”: каждый конденсатор имеет резкий минимум своего импеданса на вполне определенной частоте (собственная резонансная частота конденсатора, зависит от емкости).
Соответственно, заменяя конденсатор 0,1 мкФ на 10 мкФ мы сдвигаем максимально эффективный диапазон подавления помех в более низкочастотную область, а ВЧ шумы - увеличиваются.

Psw:

Жалко что статья не в ХТМЛ и в ней нету ссылочек на PonyProg к примеру.

А что мешает вставить ссылочки в статью PDF? Пусть автор добавит.

P.S. Надо будет на досуге подумать про дифференциальные входы для балансира - ибо очень хочется иметь нормальный балансир.

Psw
R2D2:

Без обратной связи ТЛ рулиться не будет. Будет зашкаливать в крайности.

Ну а мы её заставим - либо симуляцией обратной связи либо прямым управлением выходной скважностью по 3 ноге ТЛ - нету проблемофф.

R2D2:

Для SEPIC максимальный шим 0xffff * 33% = 0x5555

Понял, ограничения чисто программное.

R2D2:

Сначала все складываем, потом переводим в число с плавающей потом масштабируем и делим на 32.

А здесь не понял - зачем плавающая точка, что-бы код длиннее стал от флоат библиотек ? И так уже 2/3 из 32к насколько я заметил использовано. Или я не туда поглядел ?
Фиксированная точка более чем достаточна. И алгоритмик я уже выше описал - там нету флоат представления чисел. И потери точности - тоже нету.
Кстати, при значении ШИМа 0D30 на выходе фильтрика наблюдается максимальный размах пульсаций более 60 милли вольтиков, 20 милли вольтиков средне квадратичного - фото прилагается. Частоту ШИМа надо повышать однозначно ценой снижения разрядности.

AVK

Насколько мне представляется симулировать обратную связь для TLки крайне затруднительно.
Как вы себе это представляеете?

Psw
AlexN:

каждый конденсатор имеет резкий минимум своего импеданса на вполне определенной частоте (собственная резонансная частота конденсатора, зависит от емкости).

Согласен, но в немного другой формулировке - “Зависит от технологии изготовления конденсатора”.
А я и не предлагал ставить электролиты 10 мкф. Я предлагаю ставить керамику, кстати которая специально расчитана что-бы ГИГА герцовые шумы питания под 100А гасить в П4 матерях. (это я говорю из предположения, что наибольшая мощность шума цифровой схемы будет где-то рядом с её тактовой частотой, а ток питания ядрышка П4 легко представить, зная его напряжение чуть более вольта и мощность нередко более 100 Вт).

Psw

Сижу вот и думаю что делать дальше.

AVK:

симулировать обратную связь для TLки

мне кажется достаточно просто - учитывая 300 КГц на выходе генератора ТЛ - интегрируем выход ТЛ или ЛИ1 простой RC цепью с постоянной к примеру 1 милли секунда, результат интегрирования подаём на ТЛ как результат замера тока. Поведение схемы при такой маленькой добавке (RC цепочка) должно быть похоже на поведение схемы при напаянном/исправном преобразователе/измерителе тока/резистивной нагрузке.
Но вот чего-то мне опять кажется, что управлять неизвестным преобразователем через стабилизатор с неизвестным коэфф усиления - нету особого смысла, результат будет похож на прямое управление выходной скважностью ТЛ через 3 ногу - всё-равно прога осторожничает и набавляет жару постепенно.
Если говорить про программное ограничение величины выхода ШИМа 1/3, определённое опытным путём - то опять - путаем причину со следствием, даже дважды.
На мой взгляд правильнее (раз уж так хочется) разделить на 3 резисторным делителем сигнал с 18/19 ног меги. Ну а делитель конечно посчитать с вых сопротивлением 8К06 раз уж этого требует фильтр. Ну а диапазон регулировки ШИМа оставить 0-100%. Или выходной делитель всё-таки оставить.
Второй момент - на преобразователь действует выход ТЛ, а не её вход. В итоге вопрос - раз уж для СЕПИКА так важно не превышать максимальный коэфф заполнения генератора, почему на 4 ноге ТЛ нулевой потенциал ? Там надо скока-то выше нуля (думаю что 1.5-2 вольтика), что-бы сама ТЛ не могла при ЛЮБОМ входном управляющем сигнале сделать выходной коэфф заполнения более чем максимально допустимый исходя из особенностей силового преобразователя.
Ну и про силу. Я пока скорее всего пойду лёгким путём - возьму 350 Вт БП от компа, в нём ТЛ уже есть, и подведу к ней потенциал управления от внешнего мозга, а обратные связи по току/напряжению заведу обратно в мозг. В итоге - смогу баловаться далее без изготовления силы. Правда не смогу выдать более 16 вольт выходного напряжения - но енто пока что и не нужно.
Убить банку лития с логами на компе можно и 5 вольтами.

R2D2

Psw не ищет легких путей, но идеалогически правильные! (это про управление компутерным БП )

Надо не забыть в V1.1 поставить ограничитель на максимальную скваженность. Я просто пока до максимума не доводил. Может ктонибудь из экстремалов это сделает. После 6 перепаянных транзисторов решил пока прогу по совершенствовать в том числе и защита по току и напряжению уже добавлена.

Не успеваю переписывать прогу за полетом мыслей Psw.

  1. Передатчик УСАРТ постоянно включен.
  2. Частота КОМ повышена
  3. +5 на линии TXD
  4. подстройка напряжения в каналах и +12 кой чего оптимизировалось поэтому.
  5. Дописать статью про это все и ссылку.
  6. Заткнуты дыры в БП.ЕХЕ от зависаний. Правда могут появиться другие последствия. Разрешено копирование в буфер лога.
  7. Повышена частота ШИМ в 2 раза и приделана возможность изменения ее только меняя одну константу.

Выложу во вторник.

Psw

Не поленился сфотать специально для R2D2 мегу с той самой 10 мкф керамикой на борту 3 штуки -

R2D2:

разводка платы, шумы внешние, шумы меги, ФНЧ+ТЛ <> а внутри меги конденсаторов не добавишь.

паять не сложнее, чем домик из СМД резисторов. Паразитная Индуктивность - она погонная, чем длиннее провода, тем выше. Соответственно, чем ближе к ядрышку керамика, тем лучше. (Не зря Интел на дно своих проциков керамику паяет - а мы чем хуже ?). Высоко частотный шум должна резать - сильнее уже некуда.
Собрал конструктив из комп БП в качестве силы и выносного мозга. БП дежурного режима оказался стабилизированным +5 и +12 вольт источником - красота. Отрезал от ТЛ лишние цепи, на её внутреннем ОУ сделал инвертирующий усилитель с близким к 1 коэфф усиления - это что-бы не пришлось в проге чего-либо менять, ну и на 4 ногу на всяк пожарный подал 1 вольтик.
Из-за плохого поведения фильтра на ЛМ при входе выше 3.7 вольта (питаю ЛМ от 5 вольт - паять второй стабилизатор пока лень) - Пересчитал делитель 0,7 после 18/19 ног - но обложался, на память расчитал 18К06, подобрал и запаял 3 резистора 24К+1К5 и 62К, а потом в схеме увидел, что нужно было 8К06 посчитать - завтра пере паяю резисторы. Думаю что из-за слишком высокого на входе начинает открывать ТЛ при значении ШИМ 0х5000 примерно - но что хотел я всё-таки увидел - пульсации сигнала управления 250 Гц, которые проходят через фильтр на вход ТЛ - всё так же и присутствуют на выходе, если преобразователь лампочкой пригрузить - как и следовало ожидать. Размах конечно не высокий - около 50 милли вольтиков, но у меня нету усиления самой ТЛ. А в случае если ТЛ будет стабилизатором тока, пульсации сигнала управления могут усиливаться на выходе, раскачивая схемку. И ещё один программный способ борьбы за точные измерения такого пульсирующего напряжения - синхронизация. Ну то есть в целое число периодов ШИМа ( с частотой к примеру 250 Гц) должно укладываться всегда одинаковое число АЦП преобразований по этому каналу. Тогда мы будем видеть среднее этих пульсаций, и младшие разрядики будуть меньше бегать. А если к примеру пойти сразу двумя путями - сделать частоту ШИМа около 8 КилоГерц, которые как раз и есть предельная скорость АЦП меги - и запуск/обработку АЦП преобразования делать в прерывании ШИМа - тогда уже точно всё будет синхронно. Ну или промежуточные решения возможны разумеется, когда соотношение частот ШИМа и АЦП могет быть 1:8 к примеру.
Вторая фотка - это как раз пульсации на выходе БП с нагрузкой 35 вт лампа - как раз видно что повторяются колебания сигнала, который управляет ТЛ.
P.S. Пойду погульбаню немного, без фанатизьма - экспериментировал целый день. Полёт мыслей надо залить как следует.