Управление двигателем Arduino в определенное время
Привет. В настоящее время я работаю над созданием автоматического дозатора корма для собак. Я использую Arduino Uno R3, шаговый драйвер L298N, плату DS1307 RTC, шаговый двигатель Nema 17 и макет для распределения мощности на каждой плате. Я использую 9-вольтовую батарею для временного питания. Я протестировал управление двигателем без определения текущего времени, и оно отлично работает, однако, когда я запускаю двигатель в определенное время (4:45 и 6:45 в коде), двигатель не двигается. Как я могу двигать двигатель в это конкретное время?
#include <RTClib.h>
#include <Stepper.h>
#include <SoftwareSerial.h>
RTC_DS1307 rtc;
Stepper myStepper(200 , 9 , 10 , 11 , 12);
void setup() {
Serial.begin(9600);
rtc.adjust(DateTime(2021 , 7 , 14 , 4 , 44 , 0));
myStepper.setSpeed(20);
}
void loop() {
DateTime now = rtc.now();
if ((now.hour() == 4 and now.minute() == 45) or (now.hour() == 6 and now.minute() == 45)) {
Serial.println("testing");
myStepper.step(10000);
delay(1000);
}
}
@Carter, 👍1
2 ответа
Вы нажимаете на предел L298N, вероятно, превысите его. Типичный шаговый двигатель, такой как NEMA 17, вероятно, рассчитан на напряжение около 2,8 Вольт и максимальный ток 1,68 Ампер. Это в основном означает, что, если вы подключите его до 2,8 Вольт, он потянет 1,68 ампера. Если вы попытаетесь запустить его при более высоком напряжении, он будет потреблять больше тока и станет чрезмерно горячим. Модель драйвера: L298N имеет Ток питания двигателя (максимальный): 2A, Логическое напряжение: 5 В, Напряжение драйвера: 5-35 В. Мощность двигателя была рассчитана примерно на 2,8 В, и его мощность очень быстро превысит мощность вашего моста. Arduino даст вам 5 В и 3,3 В, но использование любого из них для питания вашего двигателя, вероятно, уничтожит Arduino. В Arduino источника питания НЕТ! Я предлагаю вам использовать отдельный источник питания для двигателя. Если вы запитываете Arduino через Vin и используете понижающий преобразователь от 12 В, он должен работать нормально.
Я новичок в этом, но мне кажется, что ваш rtc использует связь i2c. Я не вижу, чтобы вы включили провод.h или выдал провод.начните инициировать связь между rtc и arduino. Смотрите другие примеры rtc и удачи!
Я тоже новичок в этом, и я нашел несколько примеров (все они с использованием ЖК-экрана) с использованием провода.h, но думал, что они связаны с ЖК-дисплеем. Приятно знать, что мое предположение было неверным. Спасибо за вашу помощь!, @Carter
Без проблем. Будет любопытно, решит ли это проблему. Спасибо., @Vince
Связь I2C, вероятно, уже выполнена библиотекой RTC. Таким образом, в основном скетче нет необходимости в "проводе", @chrisl
@крисл. Вы могли бы подумать, но RTClib показывает провод как зависимость., @Vince
@Винс Дело в том, что RTClib уже [#включает Wire.h](https://github.com/adafruit/RTClib/blob/d352323ccbb326a6250943ae4266c47d40ff8dee/RTClib.cpp#L50). Вам нужно включать библиотеки только там, где они используются. Поскольку "Провод" не называется в основном скетче, его не нужно туда включать.
Провод` вызывается в библиотеке RTClib, чтобы она включала его в начале своей реализации., @chrisl
Добавление #include <Wire.h>и wire.begin(); сработало, @Carter
@Картер Рад, что это сработало! Спасибо за обновление., @Vince
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Библиотека времени Arduino и библиотеки RTC
- Запустить два степпера одновременно
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
- Питание двух шаговых двигателей с драйверами A4988
- Управление функцией включения на драйвере микрошагового устройства
Могу ли я подключить батарею 9 В к макетной плате и заставить двигатель и arduino использовать один и тот же источник питания?, @Carter
@Картер, если вы имеете в виду эти стандартные блочные батареи 9 В, то нет. Они едва обеспечивают достаточный ток для самого Arduino, не говоря уже о любом двигателе., @chrisl