Pull to refresh

Comments 157

2--Если повысить частоту PWM то появляется высокая инерционность. Длинный переходной процесс установки желаемого напряжения.

Странно утверждение. Переходной процесс определяется постоянной времени фильтра.

Получается можно PWM хоть 2 GHz подать и результат будет тот же. Так?

Инерционность, длина переходного процесса, постоянная времени - это все характеристики цепи, а не сигнала. Даже 3 ГГц будут работать так же.

Если не верите, и так топите за пределы с лопиталем, то найдите предел постоянной времени по частоте. Какова его величина?

Высокая частота PWM не желательна потому, что период будет меньше. Из-за этого будет сложнее выставлять скважность с большим разрешением.

Получится, например, 30 тиков таймера на период. И скважность можно будет ставить только с шагом 3%. Мало.

Разрешение - да, качество регулирования - возможно, но при чём здесь инерционность из процитированного утверждения?

Как видите, чтобы понять и собрать такую простецкую с аппаратной точки зрения вещь как PWM-DAC пришлось вспомнить ЦОС, интегралы, комплексные числа, тригонометрию, пределы, правило Лопиталя, преобразование Фурье, ТАУ, делители напряжения, законы Кирхгофа, RC фильтры и прочее.

Ну не знаю. Когда я лет пять назад решал подобную задачу (получить из PWM постоянное напряжение для управления частотником), никаких формул сложнее 1/(2*Pi*R*C) мне не понадобилось. Прикинул входные-выходные сопротивления, посчитал R и С, поигрался со временем отклика в LTSpice, вырезал печатную плату, спаял, подключил, до сих пор работает.

Не, в качестве курсового проекта это отлично. А для решения практической задачи мне бы даже в голову не пришло считать спектры с гармониками и вспоминать, кто такой Лопиталь.

никаких формул сложнее 1/(2*Pi*R*C) мне не понадобилось.

Как говорил отец советской атомной бомбы академик, физик-ядерщик Юлий Борисович Харитон

>>>Мы должны знать в области, где работаем сегодня, в пять, десять раз больше того, чем то, что нужно для конкретной задачи. <<<

>>>Мы должны знать в области, где работаем сегодня, в пять, десять раз больше того, чем то, что нужно для конкретной задачи. <<<

Мудрая мысль. Но увы, я не академик, так что далеко не для всех задач, с которыми приходится сталкиваться, у меня есть десятикратный запас мозгов.

О, вся документация, которая осталась от того преобразователя - рисунок печатной платы. Операционный усилитель и RC-фильтр второго порядка.

Hidden text

Респект за ПИД регулятор

Там только И.

У Вас почти типовая схема стабилизатора напряжения на ШИМ контроллере. Только вместо биполярного транзистора надо поставить полевик и фильтрующую цепочку передвинуть за него. В схеме с биполярным транзистором на нём будет рассеиваться мощность пропорциональная квадрату потребляемого тока, а с полевым - нет, так как полевик будет работать в ключевом режиме (либо полностью открыт, либо полностью закрыт).

И еще. Аналогичным образом можно изготовить не только ЦАП, но и АЦП - добавить в схему компаратор и его выход завестив обратно в контроллер на GPIO. Далее ПО на контроллере методом последовательной апроксимации (SAR) находит текущий уровень напряжения на входе компаратора подбирая выходной ШИМ. Это называется All-Digital ADC и применяется в полностью цифровых схема (например с ПЛИС) там где установить отдельный АЦП нет возможности. В ПЛИС в качества компаратора может выступать пара выводов LVDS, схема АЦП получается очень простой, но логика внутри ПЛИС - весьма забористой.

LVDS входы в качестве компаратора? 🤔

Надо будет попробовать...

в плис используя дифф вход в качестве компаратора можно можно даже не перебором через sar, а напрямую "сэмплируя" напряжение на входе, через TDC.

https://www.bothonce.com/10.1145/3431920.3439287

Интересная статья, спасибо.

У Lattice была app. note.

появилась нужда эмитировать аналоговые датчики на проводах

Прошу прощения за самый глупый комментарий, но: "эмитировать" - это "имитировать" + "эмулировать"? Русский язык позволяет такие неологизмы, но термин "эмитировать", кажется, уже занят другим значением

...чтобы понять и собрать такую простецкую с аппаратной точки зрения вещь как PWM-DAC пришлось вспомнить ЦОС, интегралы, комплексные числа, тригонометрию, пределы, правило Лопиталя, преобразование Фурье, ТАУ, делители напряжения, законы Кирхгофа, RC фильтры и прочее.

"Все не так уж сумрачно вблизи.."

Нет надобности вспоминать все перечисленное, особенно, если этого никогда и не знали.

Достаточно понимать как заряжается конденсатор через резистор и как аппроксимировать функции ступеньками.

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

Похоже на PDM модуляцию.

Это как можно при помощи пассивных компонентов преобразовать PDM модуляцию в аналоговое напряжение?

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

Pwm при нуле заполнения даёт ноль.

А pdm при модуляции нуля даёт максимальную частоту.

Чтобы работал аналоговый фильтр с pdm потребуются отрицательные напряжения, а их на pcb взять не от куда .

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

Ну и наверное если PDM модулятор - где-то рядом есть и демодулятор, не нужно его изобретать.

А кто мешает взять за ноль уровень напряжения 1/2 от максимального ? Но правильней будет выбрать более менее линейный участок и выбрать ноль в его центре.

спектре наверное можно увидеть сигнал и выделить его ФНЧ

ключевое слово тут : "наверное"

Вот цифровые коды DeltaSigma модулятора (периоды PDM сигнала) для разных напряжений
Set 3.1 :Code: 011111111111111111111111111111111
Set 1.5 :Code: 11011101110
Set 0.0 :Code: 10
Set -1.5 :Code: 10001000100
Set -3.1 :Code: 100000000000000000000000000000000

Как видно, при желании установить 0 вольт на RC цепочке получится, по сути, PWM с заполнением 50%. Что превратится в 1.65V

Получается для PDM сигнала RC фильтр не годится.

На пол шкалы одноплярные напряжения сдвинуть забыли, отсюда и 1.65В. вместо 0.

А разница с pwm в частоте, которая у сигма-дельта модуляции в этом случае будет в 2^N раз выше и перенесёт ошибку ("шум квантования") на более высокие частоты (noise shaping), что требования к НЧ фильтру несколько снижает.

Оставив за кадром всю математику, физический смысл схемы можно понять таким образом: подавая лог "1" Вы постепенно заряжаете конденсатор, а подавая лог "0" - разряжаете его. Чем дольше конденсатор заряжается, тем выше его напряжения, которое стремиться к уровно лог "1", и на оборот. Зная функцию заряда (переходную функцию фильтра) можно сформировать любое напряжение (в пределах 0 - 3.3В) на выходе такого ЦАП. Нагрузку разумеется следует подключать через буферный ОУ, дабы она не влияла на функцию заряда.

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

Частота следования битов при таком кодировании должна быть в десятки (и даже в сотни) раз выше частоты формируемого сигнала. В DSD частота битрейта ровно в 64 раза выше частоты сэмплирования.

Ну и еще. DSD поток нельзя математически преобразовать в PCM без потери качества (без апроксимации), его можно только преобразовать в аналоговый сигнал, либо обрабатывать как есть. По этому настоящие аудиофилы признают цифровые записи только в DSD. :)

Попробуйте решить Вашу задачу с помощью DSD/PDM, это должно быть интересно.

Вот у меня MCU программно на GPIO пин генерит PDM для напряжения 1,8V.

Что мне надо подключить к GPIO пину, чтобы на выходе было напряжение 1,8V?

Используй Силу усилитель, Люк! :) Сразу класса D, чтобы 2 раза не вставать.

Пользователь @nikolz уже продемонстрировал Вам схему - необходимо последовательно подключить резистор известного номинала и параллельно конденсатор известной ёмкости. Чтобы получить напряжение на выходе ЦАП выше чем напряжение лог "1", требуется усилитель. Пользователь @randomsimplenumber предлагает Вам сразу класс D, но в простейшем случае можно использовать биполярный транзистор работающий в режиме усилителя класса А. И не забываем, что через базу-эмиттер у биполярного транзистора протекает существенный ток, который будет оказывать влияние на функцию заряда/разряда конденсатора. Также учитывайте, что функция нелинейна, особенно в вехней её части, стоит выбрать рабочий участок пониже (в половину напряжения лог "1").

Почему все мировые производители микроконтроллеров не делают периферию для аппаратного генерирования PDM (DeltaSigma модуляцию) сигнала?

При этом всегда и везде присутствует возможность аппаратного сгенерирования PWM?

Управляли бы яркостью LEDов PDM сигналом.

Не совсем понятно как это должно работать.

Вот надо установить 1.8 вольт и держать его.

Какую последовательность должны генерииь эти 2 пина?

Если нужно установить и держать - pwm прекрасно подходит. 1 раз записал настройки в таймер, дальше все автоматически. Если нужно получить переменное напряжение - 2-битый dac может оказаться качественнее, но нужно будет привлекать проц, dma, или ещё какую то магию ;)

Поправка. За время, равное постоянной интегрирующей RC-цепи, выходной сигнал достигает не 1/2 , а чуть более 2/3.

Кто тут управляет ключом? И по какому алгоритму?

По какому алгоритму формируется битовый поток на пине this bit?

Мне не переменное напряжение надо устанавливать, а постоянное напряжение.

Какой получится переходной процесс в этом случае?

А почему бы просто не использовать микроконтроллер со встроенным DAC (и встроенным в него операционником), вроде STM32F103RC?

У стмок обычно один-два цапика (не знаю, бывает ли больше), но иногда может потребоваться больше.

У стмок обычно один-два цапика (не знаю, бывает ли больше), но иногда может потребоваться больше.

  1. Автор приводит в статье совершенно иной довод к созданию DAC при помощи PWM и конденсатора. И нигде не упоминает, что ему потребовалось более одного ЦАП.

  2. Лично вам требовалось когда-нибудь "больше ЦАП", и при этом условия задачи позволяли их сделать на PWM и конденсаторах?

  3. Если нет, способны ли вы привести пусть умозрительный, но не надуманный пример такой задачи?

  1. Комментировал безотносительно доводов автора. Я вообще не понял, чем вызваны его восторги от описываемого способа.

  2. Да, была пара задач, когда требовалось сразу несколько регулируемых напряжений (3 и 4 канала). И были задействованы как штатные цапы, так и на базе шим. Собственно, что может не "позволить" использовать шим и конденсаторы?

  3. Моя не понимать, почему это должно быть так тяжело найти задачи, где может потребоваться более двух напряжений, возможно невысокой точности, но всё же, чтобы приводить "надуманные" примеры.

была пара задач

Секретных? :) Если - нет, хотелось бы узнать их суть.

А смысл? Вы полагаете, такого не могло быть и я придумываю?

Генерились синусоиды с разными фазами, и опоры, значения которых менялись исходя из обстановки (да, особой прецизионности не требовалось). Секретного ничего нет, но и упоминать конкретные приборы я не вижу необходимости. Можете верить, можете нет.

Вы полагаете, такого не могло быть и я придумываю?

Нет. Я не могу понять, что за задача вызвала столь необычное гетерогенное техническое решение. ЦАП на основе PWM либо имеет посредственную точность и отвратительнейший семплрейт, либо наоборот.

При этом, 4-канальный ЦАП BH2227 в корпусе TSSOP-14 продаётся сейчас в Чип-и-Дипе за 120 рублей (кстати, у него есть старший 6-канальный брат в том же корпусе).

Если это было мелкосерийное устройство, то почему было не взять этот ЦАП? Типа, это лишняя микросхема? Но у BH2227 выходы хоть как-то тянут, а после PWM-ЦАПа и так и эдак придётся ставить микросхему операционного усилителя.

Если это был уникальный стенд, то чего он не был сделан на чем-то типа PXIe-5413, а делалось наколеночное решение на STM32? Мало денег? Но так это и лопнувшую ременную передачу можно начать заменять брючным ремнём, накинутым на валы. Это, в общем, порочная практика.

Массовое устройство? А какому массовому устройству могут пригодиться четыре низкочастотные синусоиды?

Опять же, в статье идёт речь именно про ЦАП - он может выдавать и синусоиду и не-синусоидалтный периодический сигнал и апериодический сигнал. В вашей задаче - только синусоиды. А чего было не выпустить из выходов меандры и не прихлопнуть высшие гармоники? Или опорная частота каждого канала должна была меняться в разы/на порядки?

В общем, мне, конечно, любопытны подробности.

Если вас интересует, то могу рассказать про свой случай использования нескольких каналов ШИМ-ЦАП. Нужно было управлять несколькими внешними DC источниками сразу по нескольким каналам (ток, напряжени, мощность), при этом нужно было организовать гальваническую развязку всех источников и платы управления. Поставил изоляторы, RC фильтр второго порядка, буферы. Работает нормально, все в пределах ТЗ. В контроллере ШИМ с таймеров, все было очень просто и удобно.

Хочу, чтобы меня правильно пояли. Я не сомневаюсь, что есть задачи, требующие значительного количества линий аналогового управления. Я не сомневаюсь, что на PWM возможно сделать ЦАП. Я не сомневаюсь, что есть инженеры, которые так делают. Но. Как по мне, тезис "работает нормально, всё в рамках ТЗ" очень-очень отдалённо напоминает логику другого тезиса: "Гомеопатия - лженаука? Ну не знаю, а мне - помогло".

Упоминавшийся 4-канальный ЦАП BH2227 с управлением через SPI имеет, согласно документации, нагрузочную способность в ±1 мА. Это то же ток, что течёт через 5 кОм при напряжении в 5 В - числа вполне сопоставимые с рекомендуемыми параметрами петли обратной связи всевозможных DC-DC и LDO. То есть я бы предположил, что BH2227 вполне мог бы рулить вашими источниками напрямую, без буферов.

Также я осознаю, что условия разработки могут накладывать широкий спектр ограничений на инженера (ну например, вам разрешено было разрабатывать только цифровую часть). Однако в общем случае, при использования BH2227 вам пришлось бы развязывать только линии DI, CK и CS (CS - по одной линии на каждые 4-6 ЦАПов). При использовании же PWM каждый PWM требовал у вас развязку.

Достоинством ШИМ-ЦАП заявляется низкая стоимость. Вопрос: можете ли вы грубо оценить стоимость развязок и буферов, потребовавшихся в вашем проекте и сравнить их со стоимостью гипотетического альтернативного применения многоканальных ЦАП с управлением через SPI?

Стоимость значения не имела вообще. Вы забыли упомянуть удобство управления. Для работы по SPI просто число в регистр не запишешь.

развязывать только линии DI, CK и CS

Для каждой группы выходов.

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

Вы забыли упомянуть удобство управления

Ммм. Вы передаёте в BH2227 по SPI два байта. Верхний байт - номер ЦАП, нижний байт - значение для этого ЦАП. Всё. Больше никаких внутренних регистров там нет. С этим могут возникнуть какие-то проблемы?

в итоге все выливается в месяц потому что, то нужной микросхемы оказывается нет в наличии, то с библиотекой SPI какие-то танцы с бубном

Смотрите. Тут вопрос подхода.

Есть подход, когда, условно, текущий проект делается на микроконтроллере ST10 с ядром C166, следующий на DSP Sitara от Texas Instruments, послеследующий - на чём-то там с ядром RISC-V от Renesas. Можно сказать, что такой режим работы, он для Настоящих Суровых и Опытных Инженеров. А можно сказать, что подобные метания - признак незрелости компании. И такой "бег на месте", по сути, является отапливание Вселенной за свой счёт.

Возможен и подход, когда компания (или конкретный инженер) вырабатывает некий внутренний стандарт. Например - пользуется только микроконтроллерами STM32F1. Тогда трассировщик делает потихоньку для каждого корпуса сниппеты. Программист "разучивает все танцы с бубном" вокруг библиотек. Отдел закупки подгадывает момент и заполняет склад фирмы данными чипами по выгодной цене. Вышла серия STM32F4? Принимается решение переползти на неё. Да, что-то придётся поменять, но в целом будет определённый уровень преемственности. Разонравится ST в целом? Можно будет задуматься о переходе на NXP. Хотя про инженеров этой фирмы кто-то возможно скажет, что они слабаки и "жизни не нюхали".

Возвращаясь к вашему примеру. Если организация работает во второй парадигме, то я решительно не вижу, откуда начнутся "пляски с бубном" вокруг SPI. Не может быть, чтобы этот протокол не использовался никогда ранее. И проблемы с отсутствием микросхем также маловероятны.

Если же работа происходит в первой парадигме, в парадигме превозмогания, то я не вижу куда перечисленные вами проблемы могут деться. Ну не будет плясок вокруг SPI - могут начаться пляски вокруг таймеров. Станет недоступным BH2227? Так и ваши буферы могут стать недоступными. И управляющий микроконтроллер - тоже.

вместо того, что бы сделать за 1-2 для по простому для проверки

Вот тоже важный момент. Если это был некий единичный тестовый стенд, почему вы его делали на микроконтроллере, а не, скажем, на NI PXI/NI Rio с модулями-генераторами сигналов произвольной формы? Вот уж для чего LabVIEW классно подходит, так это для "сделать за 1-2 для по простому для проверки". Хотя, конечно, Моральный Кодекс Настоящего Инженера строго запрещает программирование мышкой )))

Не понял к чему вся эта портянка, что вы хотите донести? Можно так, а можно иначе.

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

Пару лет назад покупали PXI рэк с набором плат (не сильно дорогой, где-то 20к), поставка заняла примерно полгода. Это при том, что мы работаем в европе.

Не понял к чему вся эта портянка, что вы хотите донести?

Предельно упрощу. Почему вы считаете, что с SPI "танцы с бубном" могут возникнуть с куда большей вероятностью, чем с таймерами?

Если по управлению, то хотя бы потому, что транзакция SPI требует некоторых подготовительных действий, которые обычно на себя берет библиотека, а в таймер можно записать одной командой прямо в регистр TIM1_CCR1 = 0xFF. Сделать это можно хоть из прерывания, хоть откуда. Тогда как отправка пакета по SPI потребует более сложных манипуляций, конечных автоматов или ртос и т.п. Мне кажется что с таймером тут все гораздо проще и прозрачней.

отправка пакета по SPI потребует более сложных манипуляций, конечных автоматов или ртос

Ага. Так гораздо яснее, так всё становится на свои места.

ЦАП на основе PWM либо имеет посредственную точность и отвратительнейший семплрейт, либо наоборот.

Ну, то есть в мире существуют только крайности, да?

Типа, это лишняя микросхема?

Да. Серийное устройство. Операционники ставить в любом случае, хоть с цапом, хоть с шимом.

Массовое устройство? А какому массовому устройству могут пригодиться четыре низкочастотные синусоиды?

Я написал - синусоиды AND опоры. У первого, помимо частоты и фазы, есть и амплитуда (к вопросу о меандре и "прихлопывании" высших гармоник). Второе - псевдопостоянное значение, которое подстраивается исходя из меняющихся условий работы.

В общем, мне, конечно, любопытны подробности.

Какие подробности нужны для удовлетворения вашего досужего любопытства? Вы по-прежнему утверждаете, что вот прям вообще не бывает не "высосанных из пальца" случаев, когда нужно более двух изменяемых напряжений, и когда достаточно воткнуть несколько шимов с фильтрами?

Ну, то есть в мире существуют только крайности, да?

Предположим, тактовая частота таймеров составляет 16,384 МГц и потребная частота среза фильтров - 0,1 от несущей.

Несущая частота ШИМ на 8-битном таймере - 64 кГц, частота среза фильтра - 6,4 кГц. Отсюда - макс. частота аналогового сигнала (sample rate) - около 6,4 кГц.

При 16-битном ШИМ, соответственно, - 250 Гц, 25 Гц и 25 Гц.

Задание уровней входов лог анализатора на каждый вход, если в системе лог анализатор сделан на fpga. просто на вход надр добавить быстродействующие компараторы какой нибудь LTC и опору,создаваемую вот такими цвпаси. В попсовых дешевых лог анализаторвх типа dslogic так сделано, но на всю группу пинов, что не всегда удобно

У серъёзных парней, вроде Teradyne или National Instruments, подобное (тестеры микросхем) делается при помощи специальных драйверов, которые называются Pin Electronics или Pin Drivers. Производят подобные микросхемы Analog Devices и ElevATE Semiconductor. Вот так выглядит схема пин-драйвера ADATE320:

У неё не один, а два входных компаратора - отдельно для Vol и Voh. А также возможность работать по линии DUT (та самая линия, которую как бы обслуживает вся микросхема) как на вход, так и на выход, переводить её в HiZ, подключать её к внутренней регулируемой нагрузке и тому подобное.

С противоположной, скажем так, стороны от линии DUT расположены выходы компараторов, вход сигнала, вход HiZ, линии SPI для конфигурирования и так далее.

Как вы можете видеть, в микросхему уже встроены два 16-битных ЦАП, задающих как раз уровни для встроенных компараторов.

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

если у вам нет задач на много простых цапов это не значит то их нет.

Да это понятно, что отсутствие примеров не является доказательством отсутствия явления.

Мой тезис - ШИМ-ЦАП, в принципе, не нужны, они проигрывают альтернативным решениям всегда и во всём. В том числе, в задачах, где требуется большое количество аналоговых сигналов. Подтвердить этот тезис нельзя, опровергнуть можно одним примером. Их уже целых три:

  1. ШИМ-ЦАП лучше, чем многоканальный дискретный ЦАП с SPI потому, что в библиотеке SPI могут быть ошибки, а в библиотеке таймеров - не могут.

  2. ШИМ-ЦАП лучше, чем многоканальные генераторы сигнала произвольной формы, потому, что в конкретной компании не задумываются о том, что можно было бы купить в лабораторию многоканальные генераторы сигнала произвольной формы.

  3. ШИМ-ЦАП лучше, чем многоканальный дискретный ЦАП с SPI в случае ультрабюджетной (и работающей, максимум, на нескольких килосемплах) имитации пин-драйверов, потому, что при всех недостатках позволяют сэкономить рублей 10-15 на каждую линию.

В целом, я вполне удовлетворён пояснениями и считаю свой тезис опровергнутым.

  1. Если нет, способны ли вы привести пусть умозрительный, но не надуманный пример такой задачи?


2x DAC видимо для того чтобы на осциллографе в режиме XY можно было графику рисовать. Для отладки прошивки.

  1. Если нет, способны ли вы привести пусть умозрительный, но не надуманный пример такой задачи?

Если прошивка делает ЦОС, то 2 DACа позволят на осциллографе в режиме XY рисовать сигнальное созвездие I/Q.

Это очень помогает в отладке.

2 DAC видимо для того чтобы на осциллографе в режиме XY можно было графику рисовать.

2 DAC видимо для того чтобы на осциллографе в режиме XY можно было графику рисовать

Нет, конечно же не для этого. Пара ЦАП со встроенным операционником нужна, чтобы использовать её для наушников в режиме "стерео".

Нам было нужно организовать DAC одновременно на 4 пина. А Artery MCU содержит на SoC(е) только 2x 12bit DAC.

Материал +-неплох для лабораторной работы первых курсов какого нибудь ВУЗа. С практической точки зрения - пустая трата времени. Без ОУ такая концепция бесполезна, а с ОУ сразу напрашивается фильтр 2 порядка.

Не согласен: для лабораторной работы по применению ШИМ материал плох, потому что "учит плохому". Получив после RC цепочки сигнал прямо пропорциональный коэффициенту заполнения, подавать его на заведомо нелинейный управляющий элемент в виде биполярного транзистора, да ещё и сильно зависящего от температуры, и потом исправлять всё это безобразие с использованием АЦП - это чистой воды троллинг! Но, да, выглядит вполне "научно".

Ну никто же не говорит о прямой копипасте писанины в методичку) Я скорее о стиле написания, когда напустили много "тумана" и страшных слов

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

Согласен, такое ощущение что автор как бе говорит нам "смотрите какой я умный, могу приплетать тонны математики по поводу и без"

В этом тексте математика нужна была только для того чтобы доказать, что между заполнением PWM и напряжением линейная зависимость.
Только и всего.

Не совсем понятно, зачем потребовалось доказывать то, что и так написано в любом учебнике для техникума даже, не ВУЗа. Как пример: Прянишников В.А. Электроника. Полный курс лекций – СПб, 2015. «Изменение длительности импульса приводит к … пропорциональному изменению выходного напряжения» (с.351).

Разумеется, сверление отверстия можно начать с математического доказательства того, что отношение длины окружности к диаметру равно pi. Опять же, не совсем понятно, зачем.

Ну, один раз доказал - дальше спокоен. Я, вот, не могу пользоваться формулой, если не знаю, как она выведена. У меня внутренний запрет на это (очень мешало в институте).

И эта искусственная сакрализация через математику, по моему субъективному мнению, - бич электротехнического комьюнити

У него есть и противоположный бич: полное игнорирование математики. Вплоть до неспособности рассчитать балластный резистор для светодиода по закону Ома.

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

Автор в своём профиле указывает, что он:

Программист-микроконтроллеров с 2012 года. Написал firmware более чем для 60+ электронных плат.

Автор серии актуальных инструкций и действенных методичек по программированию микроконтроллеров, созданию документации и отладке. <...>

Изобретатель технологии cross-detect для контроля качества пайки в цифровых электронных цепях.

Поэтому лично меня лично в своё время насторожила статья автора Load-Detect для Проверки Качества Пайки, в которой автор предложил хитроумную авторскую систему, дублирующую, по сути, функционал JTAG-тестирование монтажа (то есть того, зачем JTAG, собственно, и был создан).

На вопрос "но зачем?" автор ответил:

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

Когда делают тестовую партию плат (3-5 шт) на стадии EVT никто не будет для этого писать JTAG тестирование утилитой на PC. Это будет на фазе MP.

На EVT проще как раз сделать Cross-Dectct
https://habr.com/ru/articles/762142/comments/
прямо внутри тестировочной прошивки.

Когда делают тестовую партию плат (3-5 шт) на стадии EVT никто не будет для этого писать JTAG тестирование утилитой на PC.

Конечно, никто не будет "писать JTAG тестирование утилитой" ни на каком этапе, потому, что JTAG-тесты генерятся автоматически по нет-листу из EDA.

Говоря проще: если у вас есть произведённая плата, у вас должен быть нет-лист. Если у вас есть нет-лист, считаете, что у вас есть готовый JTAG-тест. Ну, если вы, конечно, не в Sprint Layout платы разводите.

Что такое ЕDA?

Что такое ЕDA?

Скажите, что вы сейчас пошутили. Пожалуйста.

что JTAG-тесты генерятся автоматически по нет-листу из EDA.

Говоря проще: если у вас есть произведённая плата, у вас должен быть нет-лист. Если у вас есть нет-лист, считаете, что у вас есть готовый JTAG-тест

Вот сколько я ни работал в разных ведущих российских электронных предприятиях ну никто так, к сожалению, не делал. Даже в яндексе.

Вот сколько я ни работал в <...> яндексе.

Странно, что вы тогда спрашиваете, что такое EDA. Ведь Яндекс активно развивает свою. Они её так и назвали: YandexEDA.

есть и противоположный бич: полное игнорирование математики. Вплоть до неспособности рассчитать балластный резистор для светодиода по закону Ома.

У нас на работе в прошлом году как раз уволили с испытательного срока схемотехника (40+ лет человеку), который не умел рассчитат делитель напряжения на 2х резисторах.

Хотя в данном проекте явный перебор с математикой, причем в ущерб схемотехнике.

В этом тексте математика нужна была только для того чтобы доказать, что между заполнением PWM и напряжением линейная зависимость.
Только и всего.

Достаточно было школьной математики, с площадью под графиком. Но тут появился нелинейный усилитель, нелинейность подперли pid регулятором.. Дальше как в тумане;)

Достаточно было школьной математики, с площадью под графиком.

Где гарантии, что площадь линейно превратится в напряжение?

Ну, если доказывать, что интегрирующая цепочка действительно интегрирует, то все сложно. Но вроде как эта часть у вас работала как ожидается, проблемы возникли с усилителем?

RC фильтр интегрирует только в первом приближении. До насыщения.
Если нужен настоящий интегратор, то его надо делать на OAPе.

Если действительно нужен интегратор - почему бы и не поставить операционный усилитель, все же не 1974 год.

Ну, если доказывать, что интегрирующая цепочка действительно интегрирует, то все сложно.

Элементарно. Сначала докажем лемму о том, что сопротивление действительно сопротивляется...

Как можно что-то сакрализовать через математику? Математика - это что, что-то непосильное?

Как можно что-то сакрализовать через математику?

-Папа, папа, как выглядит цифра "восемь"?
-Как знак бесконечности, повёрнутый на  π/2, сынок
.

Примерно так.

Математика - это что, что-то непосильное?

Далеко не всем посильное даже на уровне данной статьи. Я вот даже под дулом пистолета не вычислю интеграл прямоугольного импульса и не "вспомню", как выглядит sin(x) в комплексном виде.

Не надо ничего вспоминать. В математике все уравнения можно вывести при помощи доказательств из определений.

В математике все уравнения можно вывести при помощи доказательств из определений.

А в легкой атлетике все дистанции можно преодолеть при помощи ног, но почему-то марафон способны пробежать далеко не все умеющие ходить.

А в легкой атлетике все дистанции можно преодолеть при помощи ног

Я бы развил аналогию. Предположим, вы живёте в области, а работаете в мегаполисе. И каждое утро едете туда на автобусе. Но тут вам говорят: "а зачем ты едешь на автобусе, когда мог бы бежать бегом?" То есть оно не просто тяжело, но ещё и бесполезно.

Проблема математических пуристов в том, что они подтягивают математику не к месту. Получается, как на этой комичной иллюстрации:

Всё ровно наоборот. Запоминать формулы наизусть - это марафон. Выводить их - неспешный шаг. Посмотреть в справочнике - автобус.

Чтобы пробежать марафон - нужно долго тренироваться. Чтобы пройти ту же дистанцию - нужно иметь много времени. Но автобус удобнее.

  даже под дулом пистолета не "вспомню", как выглядит sin(x) в комплексном виде.

Вот весь вывод комплексного синуса.
1--Берём два уравнения Эйлера.
2--Из первого выражаем cos(x) ,
3--подставляем во второе,
4--упрощаем и получаем комплексны sin(x).

не вычислю интеграл прямоугольного импульса и не "вспомню", как выглядит sin(x) в комплекс

Кто-то не понимает математику, а я не понимаю музыку Рахманинова.
Надеюсь, что это нормально.

Мне порой кажется, что некоторые люди потратили столько времени и усилий на усвоение матана в универе, что в последующей жизни как бы постоянно оправдывают перед собой эти траты, запихивая матан везде, где нужно и не совсем. Обычно, сочетая с непомерным снобизмом в отношении тех, кто так не поступает (или вообще, о ужас, в универе не учился / сдал матан на тройку).

Это не кажется, это оно так и есть :) Есть честные люди, которые вполне откровенно признают за собой такое вслух :)

Я потихоньку подбираюсь к некоторому социологическому исследованию данного феномена. И когда сочту, что собрался достаточно интересный материал, опубликую на Хабре статью :)

Это не так работает. Просто когда знаешь матан - рефлекторно его применяешь.

Некоторые всю жизнь говорят прозой, и ничего.

А некоторые - и читать не умеют. И тоже живут как-то.

дадада, такие же мысли промелькнули. Вместо решения задачи концентрируется на выведении формул. Даже тут человек написал, что ему эта математика до одного места и он никогда не вспомнит "как выглядит sin(x) в комплексном виде", но автор все равно скинул ему эти математические выкладки, потому что это его звездный час. Потраченное время ранее теперь не настолько зря потраченное.

Материал +-неплох для лабораторной работы первых курсов какого нибудь ВУЗа.

Спасибо!

Что это было, Хоровиц с Хиллом мне в бороду?

А Covox выйдет?

I2S DAC Decoder GY-PCM5102

Берем готовый троллейбус, прикручиваем к нему дисплей, чтобы можно было смотреть на дисплей, пока смотришь дисплей;)

К вам вопросов нет ;) У вас была цель - воспроизвести звук - и вы ее достигли. А автор статьи изобрел достаточно сложную вещь с непонятными характеристиками и неясной областью применения.

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

Область применения - авто тесты для формирования напряжений для имитации аналоговых датчиков

Область применения - авто тесты для формирования напряжений для имитации аналоговых датчиков

Автотесты чего?

Правильности работы прототипа? Для этого у вас в качестве стенда в лаборатории должен стоять NI PXI с модулями PXIe-5413. Ну или что-то похожее.

Правильности работы серийных изделий? А что вы собираетесь проверять? Не пробит ли вход АЦП у микроконтроллера? Так переключите его в Push-Pull/Digital Input и проверьте без всех этих PWM. Или что?

 Для этого у вас в качестве стенда в лаборатории должен стоять NI PXI с модулями PXIe-5413. 

Вся продукция компании National Instruments это санкционка, и на нее в России рассчитывать не стоит.

Ну Информтест специализируется на импортозамещении модулей NI. И свой генератор сигналов произвольной формы у них уже есть.

Конкретный производитель модулей для тестового стенда в данном случае не принципиален - я вам говорю про принцип.

Модули от Информтест обладают интерфейсом командной строки для управления DAC выходами?

А есть такой же но с перламутровыми пуговицами? (ц)

При этом нам ведь не только аналоговые порты проверять надо.
Надо чтобы в тестировочном устройстве был ещё CAN-FD, LIN, RS232, RS485, 100Base-T1, SD-карта, 100Base-TX, микрофон, спикер, целая рояль из релюшек.

И что нам под каждый интерфейc покупать стойку от Информтест и собирать серверную размером с однокомнатную квартиру?

Никто кроме вас не знает, что вам нужно тестировать и как.

Кстати, про Covox. При наличии у МК нескольких (хотя бы двух) свободных пинов, подключив к ним цепочку R-2R, можно значительно улучшить динамические характеристики ЦАПа.

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

Например, в случае ШИМ, если цифровой выход МК может переключаться с максимальной частотой 8 МГц, то с его помощью мы можем формировать 2 уровня сигнала (0 или 1) с частотой 8 МГц; либо 3 уровня (00, 10, 11) с частотой 4 МГц; либо 5 уровней (0000, 1000, 1100, 1110, 1111) с частотой 2 МГц; либо 9 уровней (00000000, 10000000, ... 11111111) с частотой 1 МГц; и так далее.

При уменьшении частоты ШИМ информационная ценность сигнала не увеличивается, но повышается уровень пульсаций основной гармоники после RC фильтра. Следовательно, для снижения уровня шума частота ШИМ должна быть максимально большой, насколько позволяет вычислительная мощность МК (ошибку квантования можно распределять с помощью дизеринга). В пределе она превращается в 1-битную дельта-сигма модуляцию на 8 МГц, которая даёт минимально возможный в этих условиях уровень шума.

Если же мы располагаем 2 цифровыми выходами, то с помощью R-2R цепочки мы можем "присвоить" двум выходам разные веса (Vout/2, Vout/4) и таким образом получить 4 уровня сигнала за 1 такт. При 3 цифровых выходах мы можем получить 8 уровней сигнала, при 4 выходах - 16 уровней, и так далее. Выводя 4-битный сигнал на частоте 2 МГц с помощью R-2R, мы получим гораздо большее разрешение, чем с помощью ШИМ на той же частоте. С дельта-сигма модуляцией добиться такого же разрешения мы сможем только на частоте 32 МГц.

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

Возможно, меня сейчас побьют, но однажды подобную задачу я совершенно случайно решил на PC817. При частоте PWM свыше 20КГц и высокоомной нагрузке он у меня сам превращался в ЦАП.

Боюсь что линейность у него была не очень предсказуемая.

Как и у RC цепочки. Как и ТС, через обратную связь и ЦАП пришлось делать.

У rc цепочки все хорошо с предсказуемостью. А у оптрона, работающего в нештатном режиме.. как повезет.

Во-первых, зачем подменять тему? Вы писали про линейность, с которой у RC цепочки плохо по определению. А сейчас вдруг откуда-то взялась предсказуемость, которую на RC цепочке без прецизионных элементов и термостата получить тоже не просто.

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

А можно подробнее про непредсказуемость rc цепочки? Ну, детали неидеальные, ну, частота среза у этого ФНЧ может гулять. Что может случиться с постоянной составляющей, что требуется прецизионные детали и термостат?

А светодиоды, говорят, деградируют с течением времени. Без обратной связи тут действительно никак нельзя.

Что может случиться с постоянной составляющей, что требуется прецизионные детали и термостат?

Вы сами ответили на этот вопрос в предыдущем предложении:

Ну, детали неидеальные, ну, частота среза у этого ФНЧ может гулять.

И вместе с частотой среза будет гулять количество реактивной энергии, тупо сливаемой на источник питания. Это даже не считая того, что Uout зависит не только от R1. R2 и C, но так же от входного сопротивления нагрузки.

А светодиоды, говорят, деградируют с течением времени.

А Вы меньше слушайте, что говорят. Темп деградации компонентов зависит, обычно, от рассеиваемой на них мощности. И если на мощных светодиодах он заметен, то на маломощных - практически нет.

Как и ТС, через обратную связь и ЦАП пришлось делать.

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

Темп деградации компонентов зависит, обычно, от рассеиваемой на них мощности. И если на мощных светодиодах он заметен, то на маломощных - практически нет.

И в этих тоже. В (некоторых?) оптронах Sharp оговаривается 50% деградация светодиода в течении 5 лет. С другой стороны, Broadcom (Avago, HP) заявляет 10% на 1000 лет.

Предполагаю, что вполне можно измыслить линейную городушку из нескольких резисторов и одного конденсатора

Ну так попробуйте и убедитесь, что "вместе с частотой среза будет гулять количество реактивной энергии, тупо сливаемой на источник питания. Это даже не считая того, что Uout зависит не только от R1. R2 и C, но так же от входного сопротивления нагрузки."

50% деградация светодиода в течении 5 лет

Дайте ссылку на даташит

При чём тут количество реактивной энергии переливаемой через источник питания? У автора не силовой выход, а управляющий. Тем более, что пока в цепи не появятся нелинейные сопротивления (транзистор у автора и т.п.) - линейность интегрирования ШИМ RC-цепочкой не нарушится.

Вот пример деградации применительно к "классическому 817" - раздел Degradation.

При чём тут количество реактивной энергии переливаемой через источник питания?

Потому что через конденсатор на корпус по определению реактивная энергия переливается через источник питания, если только на конденсаторе не постоянное напряжение.

Вот пример деградации применительно к "классическому 817"

А Вы читали, что я писал? "Темп деградации компонентов зависит, обычно, от рассеиваемой на них мощности." В даташит даются параметры для максимума - 50 мА. Тогда как PC817 замечательно работает на 5 мА, а минимум начинается с 1 мА. Вот и получите 50-250 лет до 50% деградации.

Потому что через конденсатор на корпус по определению реактивная энергия переливается .....

Мне не понятно, какое влияние имеет перелив реактивной энергии на выполнение преобразования коэффициента заполнения входного ШИМ в постоянный уровень на выходе. Да - переливается. Но как влияет-то? На постоянную составляющую - никак. Влияет только на пульсации. Вы это имели в виду?

В даташит даются параметры для максимума - 50 мА.

С чего Вы взяли, что какие-то данные даются с привязкой к предельно допустимым параметрам (Absolute Maximum Ratings)?

Тогда как PC817 замечательно работает на 5 мА, а минимум начинается с 1 мА.

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

Мне не понятно, какое влияние имеет перелив реактивной энергии на выполнение преобразования коэффициента заполнения входного ШИМ в постоянный уровень на выходе.

А Вы сходите по ссылке и почитайте, что в формуле обозначает буковка ω. Отсюда и нелинейность преобразования. А в формуле еще есть буковка C, точность которой для реального конденсатора не только очень низка, но еще зависит от температуры и со временем снижается.

С чего Вы взяли, что какие-то данные даются с привязкой к предельно допустимым параметрам (Absolute Maximum Ratings)?

Так делается для того, чтобы производитель не получил рекламацию на свою продукцию.

Где-то надо использовать и большие токи.

Для этого делают усилительные каскады.

Автор жуткий теоретик. Простую задачу решил выполнить окольными путями. Представляю насколько тяжело с таким душным челом работать, у которого все должно быть по теории выверено

Ваш коммент @tharsedX пропитан мракобесием и обскурантизмом.

Давайте уж как в третьем рейхе жечь учебники.

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

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

"вечных теоретиков" тоже не люблю. Крайности одинаково плохи.

Велосипеды - это интересно, но не в качестве рабочих решений.

Можно было написать что-то вроде "Всем известно, что А=Б. А вот как это можно доказать". И проблема бы рассосалась.

В чем мракобесие? В том, что ты простую инженерную задачку решил выполнить через построения рядов фурье? Иди дальше обмазывайся формулками

Да, работать с таким человеком тяжело, но результат того стоит. У меня начальник такой. Если бы я был как он - я бы все задачи решал быстрее.

А "душный" - это слово, которым тупые называют менее тупых.

Есть пруфы, что «душный человек» говорят более тупые? Или ты так решил и выдаешь за истину? Какие задачи он там быстрее решил? Пока этот чел в ряды раскладывал, да всякой фигней занимался исследовательской, норм инженер бы уже взял формулу частоты среза и прикинул бы нужные варианты.

Есть пруфы, что «душный человек» говорят более тупые?

Я сделал такой вывод из общих наблюдений за употреблением этого понятия в интернете.

Ну это сугубо твое личное мнение, не обязательно имеющее что-то общее с реальностью. Так что не душни и иди делом займись

Ну это сугубо твое личное мнение, не обязательно имеющее что-то общее с реальностью.

Да нет. И моё тоже..,

У нас на работе женщина 40+ лет работала программистом - микроконтроллеров.
Видел её сорцы и откровенно, она ни бо-бо в программировании.

Ей как -то патрон назначил в помощники программиста-микроконтроллервов из Бауманки. Толковый парень с красным дипломом, реальным опытом из Роскосмоса и английского автопрома.

В итоге она его постоянно душнилой тоже называла. Я тогда впервые это слово узнал.

ИЧСХ, человек пишет программы профессионально (за деньги), в программировании ни бо бо, но со своими задачами справляется (раз до сих пор не уволили). Вот как так?

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

По формальным признакам со своими задачами справляется. Но технический долг...

со своими задачами справляется. Но технический долг...

Технический долг придумали менеджеры, чтобы было чем попрекать программистов ;) . Код ревью это спагетти прошло?

Код-ревью, может, вообще не предусмотрено рабочим процессом... Руководству плевать, что в коде, лишь бы работало (да, и такое тоже бывает).

Технический долг придумали программисты, чтобы объяснять менеджерам, ради чего нужно выделять время на рефакторинг.

но со своими задачами справляется (раз до сих пор не уволили). Вот как так?

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

чтобы быть незаменимым

У него был план, и он его придерживался. И достаточно успешно. И никто его душнилой, как ту восходящую звезду программирования, не обязывает. И кто после этого ни-бо-бо? ;)

А! Я понял! "Душнила" - это слово, которым те, кого стоит придушить, называют тех, кто пытается привести приговор в исполнение!

Си-функции называл именами литературных персонажей. До сих пор пишет ПО для литературных танков в военном НИИ.

Функция Мальчиш() хранит секретные коды, функция Негоро() корректирует магнитное склонение компаса, функция Пиноккио(false) выдвигает ствол...

Функция Мальчиш() хранит секретные коды, функция Негоро() корректирует магнитное склонение компаса, функция Пиноккио(false) выдвигает ствол...

Чтобы враг не догадался.

Управление напряжением PWM сигналом.

По сути человек для себя открыл описание части лабораторной работы по предмету "Теоретические основы радиотехники" для второго курса ВУЗа.

Что касается практики, то например так получали управляющие напряжения в системе дистанционного управления аналоговых телевизоров проиводства еще середины 1980-х. Другой вопрос, что открытием такой способ и тогда не был.

Возможно автор напишет продолжение - "Управление электрическим током PWM сигналом."

Sign up to leave a comment.

Articles