Измерение напряжения переменного тока с использованием Arduino Uno

Можно ли определять напряжение переменного тока с помощью аналогового входа для Arduino Uno или он может считывать только постоянное напряжение?

Я имею в виду, что пытался подключить источник переменного напряжения к аналогу и читаю некоторые цифры. Однако я не знаю, являются ли эти цифры на самом деле значениями напряжения переменного тока или чем-то еще.

В конечном итоге я пытаюсь найти среднее значение напряжения для заданного периода времени. Я знаю, что AnalogRead() дает значения АЦП. Однако в моем блоке кода я использую коэффициент преобразования 1023/5, чтобы получить хорошую оценку напряжения. Однако я не слишком уверен, подходит ли аналоговое считывание Arduino для переменного напряжения? Я использую его для измерения напряжения, генерируемого пьезоэлектрической пленкой PVDF, и частота довольно высока. Все, что я хочу, это использовать avg. значение напряжения для расчета электрической энергии, производимой пленкой PVDF.

, 👍-1

Обсуждение

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

какова частота сигнала, который вы пытаетесь оцифровать?, @jsotola

Вам нужно [среднеквадратичное значение](https://www.electronics-tutorials.ws/accircuits/rms-voltage.html) или записать значения формы волны (например, пиковые)?, @sa_leinad

@jsotola: Re «_если напряжение сильно изменится во время преобразования, результат будет неточным_»: это не совсем так. АЦП использует интерфейс выборки и хранения, который на самом деле довольно быстр. После выборки входное напряжение может изменяться, не нарушая текущего преобразования. Вы получаете точное значение входного напряжения _во время выборки_. Очевидно, что быстро меняющийся сигнал вызывает проблемы с частотой Найквиста и наложением спектров, но они совершенно не связаны с точностью преобразования., @Edgar Bonet

Вы должны быть _намного_ более конкретными, если хотите получить какой-либо полезный ответ. Что вы имеете в виду, говоря, что частота «довольно высокая_»? Каковы типичные амплитуда и смещение по постоянному току? Что касается «_Я пытаюсь найти среднее напряжение_»: самый простой способ получить среднее напряжение — поставить фильтр нижних частот перед АЦП., @Edgar Bonet


1 ответ


0

Напряжение переменного тока, которое вы пытаетесь измерить, составляет примерно 50/60 Гц в зависимости от того, где вы живете. А максимальная эффективная частота дискретизации для обычного АЦП Arduino составляет 9615 Гц. Это означает, что вы не столкнетесь с алиасингом, так как частота дискретизации намного выше 2 * Частота сигнала.

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

,

Вы должны настроить АЦП на автоматический запуск, если вам нужна частота дискретизации 9615 Гц. С analogRead() вы получаете не более 8929 Гц (112 мкс/выборка)., @Edgar Bonet

В конечном итоге я пытаюсь найти среднее значение напряжения для заданного периода времени. Я знаю, что AnalogRead() дает значения АЦП. Однако в моем блоке кода я использую коэффициент преобразования 1023/5, чтобы получить хорошую оценку напряжения. Однако я не слишком уверен, подходит ли аналоговое считывание Arduino для переменного напряжения? Я использую его для измерения напряжения, генерируемого пьезоэлектрической пленкой PVDF, и частота довольно высока. Все, что я хочу, это использовать avg. значение напряжения для расчета электрической энергии, производимой пленкой PVDF., @ARJ

так что это не сеть переменного тока с частотой 50 Гц, как предполагает ответ, @Juraj

это верно, @ARJ