Датчик скорости LM393 - подсчет импульсов
Я пытаюсь рассчитать скорость вращения двигателя постоянного тока.
Я использую датчик, показанный на рисунке, и диск с прорезями, прикрепленный к двигателю. Результаты, которые я получал, не имели смысла, и после нескольких тестов я понял следующее:
В большинстве случаев, когда я вручную блокировал или разблокировал датчик, было подсчитано два импульса. Это означало бы, что на каждый зубец щелевого диска подсчитывалось до четырех импульсов вместо одного.
Bellow – это тестовый код. Я считаю импульсы на обработчике прерываний и сбрасываю счетчик при расчете скорости двигателя.
Я делаю что-то не так или датчик страдает от дребезга сигналов?
int encoderCounter = 0;
int encoderDiscSlots = 21;
int encoderPin = 19;
void encoderIncrementISR()
{
encoderCounter++;
}
double calculateMotorSpeed(int interval)
{
Serial.print("enc ");
Serial.println(encoderCounter);
double rpm = (encoderCounter*1.0/encoderDiscSlots)*60000/interval;
encoderCounter = 0;
return rpm;
}
void setup() {
Serial.begin(9600);
pinMode(encoderPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(encoderPin), encoderIncrementISR, RISING);
}
void loop() {
// поместите сюда ваш основной код для многократного запуска:
delay(1000);
double rpm = calculateMotorSpeed(1000);
Serial.print("rpm ");
Serial.println(rpm);
}
Датчик использует микросхему LM393 от TI, спецификацию можно найти здесь
@Gnomo, 👍2
Обсуждение1 ответ
Лучший ответ:
Я еще немного поискал в Интернете и нашел кого-то (на испанском языке) с описанием той же проблемы. У этого человека есть осциллограф, и он может подтвердить, что в сигнале данных есть некоторые колебания как вверх, так и вниз.
Представленное аппаратное решение заключается в размещении конденсатора емкостью 100 нФ между сигнальным контактом и землей.
Я попробовал, и это работает.
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Взаимодействие с датчиком SSI?
- ArduinoMEGA: 64 цифровых входа вызывают случайные значения digitalRead
- Объединение кода для нескольких датчиков в одной программе
- Датчик PIR и сон (прерывание) на Mega2560
- Как подключить 2 датчика FSR к Arduino Mega?
- Как измерить ультразвуковой датчик без импульсного метода?
- Как получить контакты 3 на 3 на Arduino Mega Sensor Shield v2.0?
изображение ничего не говорит нам о датчике, кроме подтверждения типа датчика .... добавьте ссылку на таблицу данных в ваш вопрос выше, @jsotola
@jsotola добавил в вопрос дополнительную информацию о датчиках., @Gnomo