выбор контроллера зонда для измерения изменений скорости двигателя
Чтобы отслеживать изменения скорости двигателя в режиме реального времени, датчик обнаруживает движение нескольких магнитов вокруг диска, приводимого в движение двигателем. Сигнал датчика Холла 1-го подхода регулируется сравнительной микросхемой LM393, в результате чего получается цифровой чистый сигнал, который подключается в качестве входа к выбранному контакту, а затем измеряются временные изменения между сигналами для расчета изменений скорости. 2-й подход заключается в подключении датчика Холла напрямую без моделирования к АЦП микроконтроллера, а затем обработке цифрового зашумленного нечистого сигнала, который требует большей вычислительной мощности, чем 1-й подход. Лучший подход приветствуется, но вопрос в том, как правильно подобрать характеристики контроллера для такой задачи
@Hamed, 👍-1
Обсуждение1 ответ
Лучший ответ:
Первый вариант намного лучше второго. Измерение напряжения с помощью АЦП требует времени, и вам не нужны аналоговые значения в вашем коде. (Хотя, в зависимости от фактических значений, вам может не понадобиться компаратор перед этим. Цифровой входной контакт действует как триггер Шмитта. Единственное требование для этого — чтобы диапазон сигнала превышал 0,3*Vcc до 0,7*Vcc.)
О необходимом контроллере: это во многом зависит от скорости, с которой работает двигатель (например, частота импульсов), и от того, как вы ее измеряете.
Самый простой способ Arduino – привязать прерывание к выводу и увеличить в нем переменную-счетчик. Чтение и сброс переменной в обычных временных диапазонах (использование
millis()
даст вам частоту импульсов и, следовательно, скорость. Для этого вам не нужно много дополнительных функций в микроконтроллере. Один с внешними прерываниями достаточно прерываний по смене контакта (они есть почти у всех микроконтроллеров).Еще один способ — использовать в качестве счетчика аппаратный таймер. Вы можете настроить таймер микроконтроллера, чтобы получить его источник синхронизации от контакта. Если вы подключите к нему выход вашего датчика, счетчик будет увеличиваться на каждом фронте (падении и повышении). Первый таймер Arduino используется ядром Arduino в качестве хранителя времени. Вы можете использовать его, чтобы получить компонент времени. Настройте второй таймер как счетчик, установите его значение равным нулю, затем запустите таймер и отслеживайте прошедшее время с помощью
millis()
. По истечении времени измерения вы считываете значение счетчика, обнуляете его и начинаете новое измерение. Пока аппаратный таймер считает импульсы, вы можете рассчитать скорость по количеству импульсов и прошедшему времени и делать с ним все, что хотите. Для этого подхода, конечно, требуется по крайней мере 2 таймера (которые, я думаю, есть у большинства микроконтроллеров).
Конечно, общая скорость микроконтроллера, то есть его тактовая частота, также вызывает беспокойство. Но это становится актуальным только по мере того, как вы достигаете высоких частот импульсов.
Этот ответ является общим обзором того, как действовать дальше. Чтобы получить более конкретный ответ, вы должны отредактировать свой вопрос, чтобы он также был более конкретным. Например, вы можете указать ожидаемую частоту пульса.
Спасибо, Крисл, за ваши подробные сведения, я беспокоюсь, будет ли достаточно прямого подключения датчика Холла без LM393, чтобы каждое изменение учитывалось., @Hamed
с другой стороны, я не хочу рассчитывать только скорость, но и изменение в реальном времени «ускорения», поэтому мы ставим на ротатор много магнитов, а не один, чтобы ощущать изменения в каждом обороте, а не через каждые много оборотов., @Hamed
Будет ли работать без LM393, зависит от уровней напряжения сигнала. И что важно, так это частота импульсов. Какую частоту вы ожидаете?, @chrisl
частота ниже 1000 Гц, но мой тест доступных датчиков Холла приводит к различному напряжению в зависимости от скорости, более низкая скорость означает более низкое напряжение, @Hamed
Я не понял разницы между триггером Шмитта и компаратором, но я заметил, что шмитт будет сохранять только большую волну, а маленькие не будут обнаружены., @Hamed
- Сколько датчиков может поддерживать ARDUINO UNO?
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Какой тип разъема использует система GROVE?
- Улавливают ли ультразвуковые датчики прозрачные материалы?
- Как подключить более 10 датчиков к Arduino uno r3
Слишком много догадок в попытках понять, о чем вы спрашиваете. Можете ли вы опубликовать некоторые схемы, код и фотографии?, @MichaelT