Исправления в регуляторе

easyeda.com/speed/AC-speed-control-for-grinder

В прошлый раз писал, что в регуляторе концы с концами слегка не сошлись. Бывает. Для тех кто не занимается профессиональным проектированием приводов, ниже подробности. Возможно кому-то они будут полезны.

АЦП

Не учел импеданс цепочки, через которую меряется входная синусоида. В итоге измерялку слегка перекосило. Выпилил резистор между делителем и входом АЦП, не нужен он. Заодно, на всякий случай, поставил защитную сборку из диодов шодки. В основном от отрицательного напряжения, чтобы не юзать внутренние защитные диоды микросхемы (меньше шансов, что отрицательной напругой перекосит мультиплексор АЦП). Не уверен, что в такой защите есть смысл, но сборка копеечная, места почти не занимает.

Если делаете высокоомные делители и АЦП работает на максимальной частоте - загляните в datasheet, чтобы избежать сюрпризов. АЦП в микроконтроллерах очень хорошие, но все-таки не “идеальные шарообразные” с бесконечным импедансом.

Triac

Не знаю, что там временами прошибает, сам ключ или симистор оптрона, но мелкий снаббер решает проблему с периодическим открыванием на полный период. Обычно для расчета используют app note от Fairchild, но мне больше понравился Panasonic Application Note 030, Driving Triacs with Phototriacs. Очень просто и доходчиво. Хватило всего 1нФ, чтобы убрать косяки. Так что можно спокойно делать снаббер из smd компонентов.

Сам оптрон заменил с MOC3023 на MOC3052 - у него рабочее напряжение до 600 вольт. Ну и не забываем, что резисторы 0805 имеют рабочее напряжение 150 вольт (кратковременно до 300), поэтому их надо ставить по 2 штуки последовательно.

В принципе все эти правки можно сделать и на старой плате.

Zero cross detector

В софте считалась длина положительного и отрицательного полупериода независимо, поэтому поэтому из-за перекоса АЦП получался не симметричный результат, и симистор рулился криво. Надо считать положительную волну + полный период, а дальше вычислять коррекцию (полуразность положительной и отрицательной части). Хотя после исправления цепочки АЦП это не особо актуально. Сейчас разбег в пределах 1 тика (при частоте 17 килогерц).

Софт

Стыдно признаться, но софт по структуре стал больше похож на ардуину. То есть, когда в main делается бесконечный цикл с кучей логики. Вообще, так обычно пишут либо полные бакланы, либо профессионалы, которые очень хорошо понимают зачем они так поступают 😃. Надеюсь что тут второй случай 😃.

Я никогда не скрывал, что не люблю С и что текущий код делается “на скорую руку”, пока Rust не станет готов для эмбедов. Поэтому не стали втаскивать сюда RTOS ради одного единственного места с отправкой сообщений. Сделали по рабоче-крестьянски.

Раньше прерывания шли после каждого отсчета АЦП, и это было накладно. Теперь сделали иначе - прерывания идут после накопления 8 отсчетов, и дальше запускается обработка. То есть, АЦП тактирует и основную логику, вместо таймера. Не очень красиво, но для конкретного примитивного проекта сойдет. Кому интересно - в коде навалом комментариев с пояснениями.

По ресурсам нагрузка получилась около 50%, так что кроить с экономией питания особого смысла нет.

Что еще

Судя по чудесам с симистором, всё-таки стоит поставить фильтрующий конденсатор на сетевое питание. Только на плате для него с местом не очень. В оригинале конденсатор висит на мягких выводах над потенциометром. Наверное пока сделаю так же. Не буду рисовать на схеме, просто напишу в инструкции чтобы выпаяли со старой платы и припаяли к точкам, куда приходят провода питания.

Еще нашел на али плоские штыри и клеммы шириной 2.6мм (как на моторе), чтобы подключить через них питание. Если делать один регулятор, то проще припаять провода напрямую. А если пачку, и надо быстро переткнуть платы для проверки, то с разъемами удобнее. Все подробности добавил на гитхаб в инструкцию по сборке.

Посмотрели где что греется. Больше всего - микросхема сетевого стабилизатора. Ради интереса заменил LNK302DN на LNK306DN (обычно у более мощных микросхем ключи получше). Посмотрим, уменьшит это нагрев или нет. В любом случае, все сделано по спецификации, работать точно будет.

Еще на отладочный разъем добавил пины nRST и SWO. Это очень специфичная вещь, только для отладки. Но контакты ничего не стоят, и пусть лучше болтаются без дела, чем если для какого-то особо хитрого случая понадобится еще раз переделывать плату.

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

Сегодня знакомый обещал зафиксить измерялку тока (который из-за операционника никогда не падает ровно до нуля), и есть шансы что стабилизатор оборотов оживет. Там еще под вопросом ограничитель мощности, но он по большому счету нафик не нужен - делали больше для себя, чтобы понять как лепить составной ПИД. Возможно и правда вместо мощности лучше ток ограничивать - потом разберемся. Но в любом случае, регуль будет нормально работать и без этого блока.

  • 454