Здравствуйте. Подскажите как организовать подсчет импульсов датчика скорости ? Хочу вывести отображение скорости на семи сегментном индикаторе для проверки эбу. На датчике скорости написано 6 импульсов = 1метр. Сами имульсы будут или на таймере NE555. Или ,если возможно, на самом ардуино. Надо как-то подсчитать импульсы и перевести все в скорость. Сам в программировании не особо. Пните в нужном направлении.
Видимо, направлять нужно в раздел “Ищу исполнителя”
Подождите. Может кто подскажет. Дальше сам начну.
Пожалейте ЭБУ !!!
Датчик скорости связан с его оборотами, но никак не связан с метрами !!!
V=S/t, (V- скорость, t- время , S- расстояние) в мое случае S=6*i (где i-импульсы). Получается V=6*i/t. Как подсчитать импульсы?
На датчике скорости написано 6 импульсов на 1 метр.
На датчике скорости написано 6 импульсов на 1 метр.
Прекрасно! 1 импульс 1/6. Классно.
не начнете…
Благодарю.
Спасибо.
6 импульсов на метр означает, что частота импульсов вряд ли превысит 400-500 импульсов в секунду. Это вообще не о чем, для любого МК это черепашья скорость.
Тут подойдет практически любой метод подсчета, хотя бы даже тупой опрос пина в цикле…
Вот примерный код от ИИ Яндекса
const int inputPin = 8; // Пин для входа импульсов
unsigned long previousMillis = 0;
const unsigned long interval = 1000; // интервал измерения в миллисекундах
volatile unsigned long pulseCount = 0;
int lastPinState = LOW;
int currentPinState;
void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);
}
void loop() {
unsigned long currentMillis = millis();
// Опрашиваем состояние пина
int pinState = digitalRead(inputPin);
// Если пришел фронт импульса (т.е. изменение с LOW на HIGH)
if (lastPinState == LOW && pinState == HIGH) {
pulseCount++;
}
lastPinState = pinState;
// Проверяем, пришло ли время выводить результат
if (currentMillis - previousMillis >= interval) {
Serial.print("Импульсов за ");
Serial.print(interval);
Serial.print(" мс: ");
Serial.println(pulseCount);
pulseCount = 0; // сброс счётчика
previousMillis = currentMillis;
}
}
Пожелание ТС - сейчас вокруг столько вариантов ИИ, что стыдно напрягать подобной ерундой живых людей. Учитесь пользоваться новой технологией, она просто спасение для лентяев и неучей
Спасибо.
Когда с ии сталкиваюсь или пользуюсь, почему то вот этот рассказ в журнале Пионер из деЦтва вспоминается. Ссылку и название Алиса подсказала.
Вам нужно считать импульсы в течении, скажем, секунды. Начитали 12 импульсов, например. Это означает 2 метра в секунду. Если скорость предполагается большой - возьмите интервал времени поменьше, например, 200 мсек. Если скорость супер маленькая, наОборот возьмите интервал в несколько секунд.
Чтобы посчитать скорость нужно и расстояние и время. Время выдумайте себе сами.
Направление пинка: прерывания, обработчик прерывания от пина, таймер.
Можно делать и наоборот: измерять время, в течение которого придет заранее заданное количество импульсов.
С чем столкнулся я в своё время с датчиком скорости:
Датчик а/м Subaru - 12 импульсов на один оборот датчика.
Время между двумя соседними импульсами ОЧЕНЬ сильно отличается !!!
Пришлось организовать кольцевой буфер на 12 значений и суммировать время полного оборота …
Измерял число тактов через Input Capture таймера с учётом возможных переполнений на малой скорости вращения.
Всем спасибо. Направление понял.