Использование Arduino для вращения двигателя постоянного тока один раз в минуту
Я пытаюсь написать скетч arduino, который заставляет двигатель постоянного тока поворачиваться на один полный оборот каждые 60 секунд, как часы. Arduino будет подключен к вентилю обычного mosfet, а двигатель постоянного тока будет подключен к стоку mofset таким образом, чтобы arduino контролировал скорость двигателя. Есть какие-нибудь предложения о том, как мне это сделать? Я использую arduino mega 2560 на случай, если это имеет значение.
@John, 👍1
Обсуждение1 ответ
Лучшим способом было бы проверить техническое описание: https://ww1.microchip.com/downloads/en/devicedoc/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf и установите прерывание на один из таймеров.
Пример кода этого приложения можно найти в этом стеке здесь: Как сделать задержку на 1 секунду более точной?
Другой способ сделать это, если вам не нужно ничего делать между вращениями, - это просто подождать, используя задержку в цикле for. Имейте в виду, что это менее точно, чем ожидание, вызванное прерываниями. https://www.arduino.cc/reference/en/language/functions/time/delay /
редактировать: если вы хотите выполнять один полный оборот каждые 60 секунд
int i = 0;
while(1) {
i++;
delay(1000);
if( i == 60){
doFullRotation();
i = 0;
}
}
Извините, я виноват, я не был ясен в вопросе. Я не хочу, чтобы он начинал вращаться каждые 60 секунд, я хочу, чтобы он совершал один полный оборот каждые 60 секунд., @John
о, подождите, вы хотите сказать, что хотите, чтобы он вращался на один оборот в течение 60 секунд? 1 оборот за 60 секунд?, @Marianne Primeau Breton
В этом случае у вас возникнут проблемы с двигателем постоянного тока, поскольку вы не можете точно заставить его поворачиваться на точный угол без обратной связи с энкодером. Я бы посоветовал приобрести что-то вроде сервопривода или шагового двигателя в зависимости от ваших потребностей, @Marianne Primeau Breton
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
С чем именно у вас возникают проблемы? Временные операции в основном выполняются с помощью
delay ()
или (лучше) с помощьюmillis ()
(как в примереBlinkWithoutDelay
). Вы пробовали это?, @chrislУ меня возникли проблемы с балансировкой скорости и задержки двигателя так, чтобы он совершал один полный оборот каждые 60 секунд., @John
Вы не можете вращать двигатель постоянного тока только с помощью выхода arduino, так как вы не можете контролировать ускорение. Вам нужен шаговый двигатель, чтобы иметь чистое вращение на 360 °. Или энкодер, или этот датчик: AS5048A для определения точного положения вашего двигателя., @Adriano