Использование Arduino для вращения двигателя постоянного тока один раз в минуту

Я пытаюсь написать скетч arduino, который заставляет двигатель постоянного тока поворачиваться на один полный оборот каждые 60 секунд, как часы. Arduino будет подключен к вентилю обычного mosfet, а двигатель постоянного тока будет подключен к стоку mofset таким образом, чтобы arduino контролировал скорость двигателя. Есть какие-нибудь предложения о том, как мне это сделать? Я использую arduino mega 2560 на случай, если это имеет значение.

, 👍1

Обсуждение

С чем именно у вас возникают проблемы? Временные операции в основном выполняются с помощью delay () или (лучше) с помощью millis () (как в примере BlinkWithoutDelay). Вы пробовали это?, @chrisl

У меня возникли проблемы с балансировкой скорости и задержки двигателя так, чтобы он совершал один полный оборот каждые 60 секунд., @John

Вы не можете вращать двигатель постоянного тока только с помощью выхода arduino, так как вы не можете контролировать ускорение. Вам нужен шаговый двигатель, чтобы иметь чистое вращение на 360 °. Или энкодер, или этот датчик: AS5048A для определения точного положения вашего двигателя., @Adriano


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