Проблема с аналоговой перезаписью ESP12E motorshield при питании двигателя постоянного тока
Я относительно новичок в адруино и во всем этом пространстве. В настоящее время я пытаюсь включить двигатель постоянного тока, используя экран двигателя ESP12E и модуль ESP8266
Моторный щит - https://www.amazon.com/gp/product/B078CPZDW1/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
ЭСП8266 - https://www.amazon.com/gp/product/B010O1G1ES/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
Двигатель постоянного тока - https://www.amazon.com/gp/product/B07MTT7B88/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
Вот мой код
#define DIRA 0
#define PWMA 5
#define LED 2
void setup() {
Serial.begin(9600);
Serial.println();
Serial.println("Starting...");
Serial.println("Preparing motor...");
pinMode(DIRA, OUTPUT);
pinMode(PWMA, OUTPUT);
analogWrite(PWMA,0);
digitalWrite(DIRA,1);
delay(5000);
Serial.println("Starting motor...");
analogWrite(PWMA,5);
delay(5000);
}
void loop() {
}
Вот как я это подключил
Примечание: Эта настройка похожа на то, что у меня есть, но не совсем, у меня подключено 4 батарейки типа АА и только 2 двигателя
Я ожидаю, что двигатель запустится, как только я загружу этот код, но ничего не происходит. Если я поменяю аналоговую запись на цифровую, двигатель заработает, но я хочу иметь возможность контролировать скорость, а не просто заставлять его работать на одной скорости.
Я протестировал использование analogWrite, изменив интенсивность светодиода, и он работал, хотя выходной вывод не совпадал с тем, который я использую для двигателя.
Был бы очень признателен за любую помощь, так как я уже просматривал страницы поиска в Google, но безуспешно. Я использовал этот пример в качестве эталона, https://hackaday.io/project/8856-incubator-controller/log/29291-node-mcu-motor-shield.
@Ameya Savale, 👍1
Обсуждение1 ответ
Этот ответ представляет собой краткое изложение комментариев к вопросу. Идея решения была первоначально упомянута @Majenko.
Вы питали щит напряжением около 6 Вольт. Оператор analogWrite(PWMA, 5);
дает вам (5/1024) ~ 0,5% от этих 6 Вольт на выходном выводе PWMA. Этих 0,03 В недостаточно для приведения двигателя в действие.
Вы должны использовать не менее 3 Вольт для приведения двигателя в действие (согласно спецификации).
Этого можно достичь, используя рабочий цикл ШИМ-сигнала, составляющий около 50%. analogWrite (PWMA, 512);
должно сработать.
- Селеноидный двигатель не реагирует на инструкции NodeMCU
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
5 далеко не достаточно велик, чтобы вывести двигатель из заглохшего состояния., @Majenko
Вы подключили к выходу 2 двигателя и приводите в действие эти два двигателя примерно на 2% от полного напряжения. Как заявил @Majenko, этой мощности недостаточно для запуска двух двигателей. Я не знаю вашего максимального напряжения (две батареи, но это обычные 1,2-вольтовые аккумуляторы или ~ 4-вольтовые аккумуляторы или ...). Допустим, у вас максимум 8 Вольт, ваш двигатель запускается с 1,5 Вольта, тогда вам нужно как минимум на 5-6% лучше 10% от максимального напряжения, которое вы можете регулировать с помощью рабочего цикла PWM. Вы использовали
analogWrite (PWMA,5);
Я бы предложил 'analogWrite (PWMA, 25);`., @Peter Paul Kiefer@PeterPaulKiefer Я пробовал использовать 4 батарейки типа АА 1,5 В с двумя двигателями и одним двигателем. Эта картинка не является моей точной настройкой, но довольно близка, разница лишь в количестве подключенных мной батарей (4) и количестве двигателей (2). Моя ошибка в том, что я не указал на это, я обновил детали. Я также попробовал
analogWrite (PWMA, 10)
,analogWrite (PWMA, 50)
,analogWrite (PWMA, 100)
, но по-прежнему ничего, @Ameya SavaleИзвини, что я допустил ошибку. Максимальное значение для
analogWrite
равно 1023, а не 255. Вы питали щит напряжением около 6 Вольт. Чтобы быть уверенным, вы должны использовать не менее 3 Вольт для приведения двигателей в действие. Используйте рабочий цикл 50%`analogWrite (PWMA, 512);. Значение 100 составляет всего 10% (то есть среднее напряжение составляет около 0,6 Вольта). Если этого все еще недостаточно, попробуйте, будут ли работать двигатели, если вы подключите их непосредственно к 2 или 3 вашим батареям. В противном случае, возможно, ваши аккумуляторы разрядились или двигатель неисправен. Если двигатель работает от батарей, подключенных непосредственно, экран может быть неисправен. Вы тоже пробовали 2-й мотор?, @Peter Paul Kiefer@PeterPaulKiefer ты был прав! Как только я увеличил значение
analogWrite
до 512, двигатель начал вращаться. Большое вам спасибо!, @Ameya Savale