Вимірювання середнього струму за допомогою змінного струму та струмового шунта


12

Це моє перше повідомлення. Я хлопець із програмного забезпечення, який намагається робити обладнання, тому будьте обережні :)

Схема

Я розробляю невелику схему (див. Рис. І вибачте за безладну схематичну схему), що просто і просто є купою MOSFETS та драйверів воріт, призначених для перемикання резистивних навантажень (нагрівальних майданчиків у цьому випадку) з мікроконтролера. Нагрівальні елементи часто мають дуже низький опір, і щоб підтримувати потужність на потрібному рівні, MOSFETS перемикаються за допомогою ШІМ.

Вимірювання

Окрім суто функціонального аспекту, є і освітня спрямованість. Я хочу мати можливість отримати відгуки про поточне споживання. І мій наївний підхід полягав у тому, щоб просто запустити якийсь датчик поточного шунта. Використовуючи мультиметр для вимірювання вихідної напруги від датчика, я насправді отримую щось, що виглядає як середній струм (з перемиканням ШІМ) через «повільність» амперметра. Але при підключенні того ж виходу, тобто atmega328p ADC, я отримую деякі погані показання - швидкість тут ставить читання в будь-якому місці на хвилі ШІМ.

Отже, моє питання полягає в тому, як мені зайнятися вимірюванням (середнього) струму при перемиканні з ШІМ?

Здається, дизайн добре, але я, можливо, щось пропустив і в дизайні, і в тому, як UC ADC слід використовувати в цьому контексті.

схематичний


Я думаю, що фільтр може бути використаний, щоб дати середню напругу від ШІМ. Цікава стаття, що пояснює такий фільтр та значення, які використовуються на основі частоти ШІМ, - це ця .
alexan_e

У цьому питанні є деякі відповідні відповіді . Але вони просто згадують про використання шунтів та ІС для вимірювання струму. Однак про PWM немає жодної згадки.
Рікардо

Дякуємо за коментарі. @alexan_e: TI показує вхідний фільтр в аркуші INA197, але я не був впевнений у його використанні. Це може бути шлях, коли немає стабільної напруги.
ltj

Я думаю, що це рішення вашої проблеми, але я б скоріше мав би хтось більше досвіду щодо цього, щоб надати детальну відповідь, тому я розмістив це як коментар.
alexan_e

Оскільки на виході є змінний коефіцієнт напруги PWM, ви можете використовувати пікову схему детектора і вимірювати це за допомогою АЦП.
Мартін

Відповіді:


6

Іноді те, що виглядає просто, не так просто. У вас є досить складне вимірювання, але ви хочете простий результат. Те, що ви хочете виміряти, не є постійним, воно змінюється за часом. Залежно від рівня вашої вимоги, ви можете обчислити одну або декілька властивостей поточного споживання. Ці властивості допоможуть вам краще контролювати систему. Я пропоную вам 3 різних рішення, у зростаючій складності.

Рішення 1: Середнє значення

Ви хочете отримати однозначний результат -> отримати середнє за часом. Як уже запропонував @akellyirl, використовуйте фільтр низьких частот. Обчисліть float y = alpha*input + (1-alpha)*yдля кожного зразка, де alphaкоефіцієнт згладжування. Докладніше див. У Вікіпедії .

Рішення 2: Макс. + Середнє значення

Вам цікаво отримати середнє та максимальне значення. Моніторинг максимального значення може бути цікавим, наприклад, для розміщення компонентів.

if (y > max)
  max = y;

Рішення 3: Стандартне відхилення + Макс. + Середнє

Чому?

Дивіться нижче діаграми. Є 3 сигнали різної форми. Трикутник , A синус і пік сигналу. Всі вони періодичні з тим самим періодом, однаковою амплітудою , однаковими середніми і тими ж хв і макс . Але вони мають різні форми, і справді вони мають зовсім іншу історію ...

Сигнали та їх гістограма

Одна з різниць - це стандартне відхилення. Ось чому я пропоную вам розширити свої вимірювання та включити стандартне відхилення. Проблема полягає в тому, що стандартним способом його обчислення є споживання процесора. Сподіваємось, є одне рішення.

Як?

Використовуйте метод гістограми . Побудуйте гістограму всіх вимірювань та ефективно витягніть статистичні дані (хв, макс, середнє, стандартне відхилення) набору даних. Гістограма групує значення разом, які мають одне і те ж значення або той самий діапазон значення. Перевага полягає в тому, щоб уникнути зберігання всіх зразків (збільшуючи кількість у часі) та швидкого обчислення обмеженої кількості даних.

Перш ніж починати з вимірювань, створіть масив для зберігання гістограми. Це масив з 1 розміром, розміром 32, наприклад:

int histo[32];

Залежно від діапазону амперметра, адаптуйте нижче функцію. Наприклад, якщо діапазон становить 256 мА, це означає, що бін 0 гістограми буде збільшуватися на значення між 0 і 8 мА, бін 1 на значення між 8 і 16 мА тощо. Отже, вам потрібно буде представити ціле число номер відрізка гістограми:

short int index;

Кожен раз, коли ви отримуєте зразок, знайдіть відповідний індекс:

index = (short int) floor(yi);

І збільшити цей контейнер:

histo[index] += 1;

Щоб обчислити середнє, запустіть цю петлю:

float mean = 0;
int N = 0;
for (i=0; i < 32 ; i++) {
  mean = i * histo[i]; // sum along the histogram
  N += i; // count of samples
}
mean /= N; // divide the sum by the count of samples.
mean *= 8; // multiply by the bin width, in mA: Range of 256 mA / 32 bins = 8 mA per bin.

Щоб обчислити стандартне відхилення, запустіть цю петлю:

float std_dev = 0;

for (i=0; i < 32 ; i++) {
  std_dev = (i - mean) * (i - mean) * histo[i]; // sum along the histogram
}
std_dev /= N; // divide the sum by the count of samples.
std_dev = sqrt(std_dev); // get the root mean square to finally convert the variance to standard deviation.

Стратегія методу гістограми полягає в тому, щоб зробити повільні операції на кількох числах бункерів замість усіх придбаних сигнальних зразків. Чим довше розмір вибірки, тим краще. Якщо ви хочете отримати детальнішу інформацію, прочитайте цю цікаву сторінку «Гістограма, Pmf та Pdf» .


дуже ретельне і чітке пояснення. На практичному рівні, як ви гарантуєте, що вибірки АЦП розподіляються "в хороший спосіб", тобто не заблоковані сигналом ШІМ? Я мушу визнати, що зараз я просто використовую Arduino (hw + sw) для вибірки ШІМ та АЦП. Можливо, я повинен сам налаштувати вбудовані таймери. Я думаю, частота вибірки повинна бути трохи вище, ніж частота ШІМ, правда?
lt

1
Як тільки ви починаєте відбирати проби, речі стають досить складними. Перше, що потрібно зробити, це пам’ятати - це теорема Найквіста-Шеннона. Інтуїтивно зрозуміло, що чим вище частота вибірки, тим більше інформації ви маєте. Але не є інтуїтивно зрозумілим, хоча й принциповим, що перед тим, як взяти вибірку на частоті Fs, необхідно абсолютно низькочастотний фільтр (в аналоговій / електронній області) сигнал у Fs / 2. В іншому випадку на вас буде впливати відчуження. Я пропоную вибрати найбільшу частоту вибірки. Щось на зразок ~ 10 разів більше частоти ШІМ, якщо можливо.
RawBean

Це поширене непорозуміння теореми Найкіста-Шеннона, яка фактично стверджує, що вам потрібно зробити вибірку вдвічі більше пропускної здатності. Згладжування може бути корисним. Ніякої неповаги не передбачалося, але це схоже на відповідь з підручника. Запропонувати в цьому сценарії вибірку ШІМ в 10 разів, коли деталізація високої частоти, швидше за все, не має значення, є надмірною.
akellyirl

1

Ви правильно розумієте проблему: вам потрібно отримати "середню" ШІМ, як і лічильник, який ви використовуєте для вимірювань.

Ви можете використовувати RC-фільтр для сигналів A1,2,3, константа часу щонайменше в десять разів перевищує ваш період ШІМ. Це означає, що якщо ваш період ШІМ становив 10 мікросекунд, то постійна час RC повинна становити 100 мікросекунд. Наприклад, 10kOhms x 10nF = 100us

Краще рішення - фільтрувати сигнали в цифровому мікроконтролері таким чином:

float y = (1-0.99)*input + 0.99*y; 

Змініть значення "0,99", щоб змінити константу часу цього цифрового фільтра.


1
Слідкуйте за псевдонімом, якщо ви це зробите в коді.
Енді ака

Зв'язок не обов'язково є проблемою. Всі ми знаємо, що для відновлення сигналу частота вибірки повинна бути щонайменше вдвічі більшою частотою. Але коли сигнал обмежений смугою, вам потрібно зробити вибірку лише в два рази пропускну здатність . Це називається підкресленням. Оскільки сигнал, мабуть, низькочастотний, оскільки він працює нагрівальним майданчиком, то розумні показники вибірки в діапазоні від 100 до 1000 SPS повинні бути нормальними. Дивіться: ni.com/newsletter/50078/uk
akellyirl

Було б розумно переконатися, що частота ШІМ та частота вибірки є взаємно простими, якщо використовується підкреслення.
akellyirl

Точно мої думки - якщо вимірювати через АЦП та генерувати ШІМ в одному MCU, може бути тенденція до того, що вони будуть заблоковані в часі.
Енді ака

Сигнал знаходиться на частоті pwm, не низькій частоті. Якби він був низьким frq, його, ймовірно, менш ресурсомісткий, щоб просто вибирати протягом одного періоду і середнього, ніж використовувати математику з плаваючою комою таким чином.
Скотт Сейдман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.