Цифровые выходные контакты Arduino Micro с плавающим / высоким Z
итак, недавно я получил arduino micro для проекта, требующего управления двумя шаговыми двигателями с драйвером A4988. ранее я создавал прототипы на arduino uno, и все работало нормально, но при переключении на микро двигатели начали вести себя хаотично, например, произвольное направление шага и случайное количество выполняемых шагов. я довольно уверенно сузил его до плавающих выходных выводов, я записал направляющий вывод на микро-плавающем, при этом ~ 2 В было "выключено", а ~ 3 В было "включено" с помощью мультиметра. дело в том, что я не могу найти ничего, чтобы исправить это, кроме как сделать.
pinMode(DIR, OUTPUT);
digitalWrite(DIR, HIGH);
или внешние тянущие резисторы, и я пробовал как тянущие, так и понижающие резисторы на 100 Ком и 330 Ом, но безуспешно.
прямо сейчас у меня есть один двигатель, подключенный к uno, и один к micro, двигатель на uno по-прежнему работает нормально без внешних тянущих резисторов. на приведенной ниже схеме показана упрощенная версия подключения как uno, так и micro.
, и вот код, который работают оба arduino.
#include "A4988.h"
#define MOTOR_STEPS 200
#define DIR 10
#define STEP 9
A4988 stepper(MOTOR_STEPS, DIR, STEP);
void setup() {
pinMode(DIR, OUTPUT);
digitalWrite(DIR, HIGH);
pinMode(STEP, OUTPUT);
digitalWrite(STEP, HIGH);
stepper.setRPM(100);
}
void loop() {
stepper.rotate(360);
delay(1000);
stepper.rotate(-360);
delay(1000);
}
вот несколько ссылок на другие связанные сообщения https://stackoverflow.com/questions/14174162/arduino-micro-triggering-with-no-contact https://forum.arduino.cc/t/high-impedance-output-pin/655236
@StanberyTrask, 👍2
Обсуждение0
- Отправка цифрового сигнала с одного Arduino на другой для запуска события
- Nano: все цифровые контакты ничего не выводят
- Быстрый цифровой ввод-вывод
- Как увеличить переключение распиновки?
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- В чем разница между analogWrite и digitalWrite?
- Arduino Micro против Pro Micro
- Что означает “LSB на градус в секунду” (LSB per degree per second)?
Arduino подключен к USB, и я использую выход 5 В на микро (и я могу подтвердить его 5 В), и я также полагаю, что цифровые контакты работают на 5 В., @StanberyTrask
Ах, извините, перепутал его с Pro Micro., @chrisl
Когда вы измеряете такие напряжения на цифровом выходе Arduino, что-то электрически не так. Сохраняются ли эти напряжения, когда вы не подключаете драйвер шагового двигателя (только Arduino без каких-либо подключений)? Остается ли контакт 5 В на уровне 5 В, когда у вас подключен драйвер шагового двигателя?, @chrisl
хорошо, после пробуждения и повторного взгляда на него, похоже, это ошибка проводки с моей стороны, вместо того, чтобы быть подключенным к контактам 10 и 9 и шагнуть туда, где на 9 и 8, и я чувствую себя немного глупо, но прежде чем перейти к 10 и 9 драйвер был подключен к контактам 3 и 2 и все еще имел такое же неустойчивое поведение. и двигатель просто не будет вращаться, если его подключить к соседним контактам ((2 и заземление) / (4 и 3)) и настроить программу. так что я думаю проблема решена для меня по крайней мере, @StanberyTrask
Вы можете написать ответ на свой вопрос, @chrisl