Как использовать 3 цифровых входных контакта на Arduino Uno для частотных входов и суммарного выхода?
Я работаю над тахометром Arduino, который считывает частоту вращения двигателя BLDC. Схема двигателя не использует датчики Холла, поэтому я хотел бы использовать их для датчиков оборотов. Я уже подключил плату Uno, используя один вывод в качестве входного, с включенным внутренним подключением, и она отлично работает.Причина, по которой я хочу использовать все 3 датчика Холла, заключается в увеличении количества импульсов на оборот, чтобы поддерживать показания на ЖК-дисплее на более низких скоростях. Я искал информацию о том, как считывать 3 входа и суммировать импульсы для этой цели, но не смог найти информацию.
@Jerry Rowe, 👍1
Обсуждение2 ответа
Предполагая, что каждый раз будет срабатывать только один датчик, затем (как предложил Джсотола) свяжите их вместе и подключите общий вывод к выводу прерывания. Arduino UNO имеет функцию прерывания на выводах 2, 3.
В качестве примера для подсчета импульсов с помощью pin2 на падающем краю (изменено с https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/):
const byte interruptPin = 2;
volatile int numPulses = 0; // измените тип переменной в соответствии с вашими потребностями
void setup() {
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), sumPulses, FALLING);
Serial.begin(9600);
}
void loop() {
Serial.println(numPulses);
delay(500);
}
void sumPulses { // сделайте ISR как можно короче
numPulses++;
}
Выходы Холла на двигателях BLDC снижаются, поэтому два выхода в любое время находятся на высоком уровне, поэтому параллель не будет работать. Возможно, мне придется приобрести двухвальный двигатель и добавить датчик с более высоким показателем PPR на заднем валу, чтобы достичь желаемых результатов. Тем не менее, спасибо вам за ваши предложения., @Jerry Rowe
Альтернативным методом определения частоты является измерение периода и получение обратной зависимости. Он может быть чрезвычайно точным и отзывчивым на очень низких частотах, поэтому вам не нужно объединять несколько датчиков просто для увеличения скорости.
Обратите внимание, что вы не ограничены измерением одного периода; вы можете считать микросекунды за N периодов, чтобы увеличить разрешение на высоких частотах.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
если датчики имеют выходы с открытым коллектором, то вы можете подключить их все вместе к одному входу, @jsotola