Я пытаюсь использовать текущие функции измерения Arduino Motor Shield R3 , щит основан на L289 . Значения, которые я прочитал, кажутся очень шумными. Я использую функцию AnalogRead() Arduino UNO A0 для измерения тока. Чтобы исправить это, я попытался использовать фильтр нижних частот между моторным щитом и Arduino Uno.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Это помогло исправить шум измерения, однако у меня есть несколько вопросов по этому поводу:
Из блок-схемы в техническом описании видно, что на определение тока влияют выходные каскады H-моста. Это означает, что когда вы используете ШИМ для управления двигателем, напряжение считывания будет меняться в зависимости от сигнала ШИМ. Напряжение на чувствительном резисторе пропорционально току через него, который, в свою очередь, зависит от напряжения на индукторе двигателя. В течение положительного периода сигнала ШИМ ток будет «медленно» увеличиваться, тогда как в течение отрицательного периода сигнала ШИМ ток будет «медленно» уменьшаться. На практике это будет немного похоже на треугольную волну, и это шум, который вы измеряете.
Решение состоит в том, чтобы убедиться, что вы синхронизируете измерение напряжения считывания с сигналом ШИМ. Например, вы можете привязать прерывание к таймеру, который используется для сигнала ШИМ, и для этого потребуется немного покопаться в таблице данных микроконтроллера (и немного проб и ошибок), чтобы понять, как это реализовать. Другой вариант — подключить вывод прерывания к выходному выводу ШИМ, что может быть проще для начала. Это можно сделать, хотя вам может потребоваться снизить частоту ШИМ (чтобы согласовать преобразование АЦП с рабочим циклом ШИМ), напрямую запрограммировать аппаратные регистры (библиотеки Arduino медленные) или использовать какой-либо ассемблер.
Олин Латроп
Каз