Заголовок сообщения: Преобразование шим в напряжение
Добавлено: Ср дек 07, 2022 03:09:31
Родился
Зарегистрирован: Ср май 05, 2021 00:34:11 Сообщений: 17
Рейтинг сообщения:0
Здравствуйте. Дано: шим сигнал в 1КГц, амплитуда которого может меняться от 0 до 12В, коэффициэнт заполнения может меняться от 10% до 90%. Есть желание считывать амплитуду шим сигнала с помощью raspbery pi. Можно подключить источник сигнала к АЦП и выполнять сотни операций сэмплирования, чтобы поймать максимальное значение. Но возникла идея преобразовать шим сигнал в аналоговый и измерять его. Амплитуда может меняться, ее нужно измерить. Коэффициент заполнения тоже может меняться, но его мы знаем. Если я правильно понимаю, то в случае 12в и заполнении 50% с помощью фильтров можно получить 6в постоянного напряжения. При амплитуде 9в и коэффициенте заполнения 30%, мы получим 3в постоянного напряжения. Т.е. амплитуда будет считаться по формуле: выходное напряжение / коэффициент заполнения. Это напряжение можно через АЦП получить на raspberri pi/ Цель мероприятия - избавиться от микроконтроллера, который на данный момент выполняет эту работу и передает результат на raspberry. Возможно ли реализовать такую идею или она глуповата?)
АЦП по любому нужно задействовать, а значит гораздо проще синхронизировать АЦП с сигналом, измеряя сигнал в высоком уровне. То есть потребуется только компаратор в цепи синхронизации.
в случае 12в и заполнении 50% с помощью фильтров можно получить 6в постоянного напряжения. При амплитуде 9в и коэффициенте заполнения 30%, мы получим 3в постоянного напряжения.
похоже, что оба этих параметра могут меняться независимо. Хотел бы я знать, что это за девайс такой, и как его разработчики планируют передавать информацию коэффициентом заполнения при нулевой амплитуде. Ну и, конечно, ТС должен будет, если послушаться Крама и поставить компаратор (даже с плавающим порогом), соображать, как ловить нулевой уровень, когда компаратор будет или молчать, или шуметь. Так-то достаточно просто найти максимум напряжения за время, несколько превышающее 1 мс. То есть, скажем, тупо каждые 50 мкс (для ШИМ от 10%) складывать отсчёты в кольцевой буфер длиной 25 ячеек и брать максимум.
_________________ Морд - ни лап. Мат, око и дар. А колом? Массам кот или торт? Тротил и ток массам!
Последний раз редактировалось mickbell Ср дек 07, 2022 09:06:04, всего редактировалось 1 раз.
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
Я пропустил по невнимательности исходный параметр напряжения "от нуля". От нуля синхронизировать не выйдет. Но если есть данные о скважности, то они могут быть получены только от генератора этих импульсов. Не проще ли получить от генератора синхросигнал?
С точки зрения аппаратуры проще всего просто подать этот самый ШИМ на АЦП малинки, если он там есть (через делитель, разумеется) - И НА ЭТОМ ВСЁ. Программно - я уже сказал, как. Короче, возня со всем этим предстоит минимальная. Единственное, что следует понимать - будет задержка получения текущего значения амплитуды на время примерно до миллисекунды. Если это критично, то будем дальше думать.
_________________ Морд - ни лап. Мат, око и дар. А колом? Массам кот или торт? Тротил и ток массам!
А малинка знает что либо о режиме реального времени? Я так думаю, что написать драйвер под ОС малинки для АЦП работающего через ДМА в режиме реального времени - это отдельная и не слишком тривиальная задача.
Это напряжение можно через АЦП получить на raspberri pi/ Цель мероприятия - избавиться от микроконтроллера, который на данный момент выполняет эту работу и передает результат на raspberry.
Так у "малинки" есть же свой набортный АЦП (правда, с фильтром постоянки, но здесь-то ничего страшного). Если частота ШИМ не выходит за пределы десятка кГц, то достаточно сделать элементарный повторитель сигнала на ОУ с делением в 4 раза. И написать примитивную утилитку, которая будет 44.1кГц семплировать. И сразу будет понятно и заполнение, и амплитуда.
Добавлено after 3 minutes 20 seconds: Но таки я бы на МК сделал, это гораздо проще. Настраиваем таймер в режим захвата — вуаля, нам известен период и заполнение. А тем же таймером по событию начала захвата запускаем АЦП через DMA, чтобы в пике измерить амплитуду (делаем штук 9 измерений, потом считаем медиану).
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Так скважность знать ни к чему, надо, как я себе понял, измерить только амплитуду.
да, только амплитуду нужно определить.
Добавлено after 5 minutes 21 second: Добавлю пояснений) Речь идет о стандарте J1772 для зарядки электромобилей. Там коэффициэнтом заполнения задается максимальный ток, а по уровню амплитуды определяем текущее состояние процесса. Вот краткое описание стандарта, если вдруг кому-то интересно. https://openev.freshdesk.com/support/so ... -sae-j1772 Сейчас за работу с шим у меня отвечает микроконтроллер, но хочется от него избавиться и работать только с малиной. Генерировать шим можно как с помощью pwm ноги малины, так и с помощью отдельного i2c шим-модуля. Проблема в определении амплитуды сигнала без контроллера. Если можно обойтись без него, буду рад услышать предложения и идеи!
Это напряжение можно через АЦП получить на raspberri pi/ Цель мероприятия - избавиться от микроконтроллера, который на данный момент выполняет эту работу и передает результат на raspberry.
Вопрос непонятен. Цель - заменить МК на АЦП?
цель - перенести всю логику в userspace linux-а. я в программировании микроконтроллеров не очень силен, моя сфера деятельности - программирование в linux, поэтому хотелось бы упростить себе жизнь)
Добавлено after 1 minute 45 seconds: Но, если вы считаете, что идея совсем неразумная, так и скажите. Может, стоит прекратить изыскания в эту сторону)
Добавить компаратор, чтобы, скажем, все, что выше 10мВ было 3.3В... Если ни хрена нет - значит амплитуда нулевая.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Но, если вы считаете, что идея совсем неразумная, так и скажите.
Нет, я так не считаю. Если цель уйти от МК, то такая задача вполне решаемая аппаратными средствами. Только решение такой задачи без МК требует очень хорошего знания электроники. Так что тут палка о двух концах.
Если только амплитуду нужно измерить, можно собрать на ОУ простой пиковый детектор. Вот только, ЕМНИП, у "малины" нет возможности напрямую на АЦП подать сигнал, т.е. придется модулировать синусоиду. Или поступить проще: взять дешевый внешний АЦП на I2C или SPI, им и замерять напругу после пикового детектора. Тогда точно будете знать, какова текущая амплитуда сигнала.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Спокойно, "амплитуда 0 вольт" означает отсутствие -12 вольт во-первых, и фактическое отсутствие сигнала во-вторых. Гляньте картинки в стандарте по ссылке. Аудиовхода хватит. С делителем. конечно.
А откуда информация о допустимой инерционности? Пиковый детектор только при увеличении сигнала быстро реагирует. При уменьшении все будет очень печально... И придется разменивать пульсации на скорость.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения