шаговый двигатель не работает, но сообщение об ошибке не выдается

Итак, я работаю в отделе, который использует Arduino для перемещения шагового двигателя волновой машины, и столкнулся с проблемой. Они дали мне код, который они использовали, но он не двигает двигатель, а просто издает прерывистый звуковой сигнал.

Мой код выглядит следующим образом:

int pulse_delay = 20;
int wave_period = 1000;

void setup() {
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}

void loop() {
digitalWrite(9,HIGH);
delay(10000);
for (int i=0;i<wave_period;i++)
{
  digitalWrite(8,HIGH);
  delayMicroseconds(pulse_delay);
  digitalWrite(8,LOW);
  delayMicroseconds(pulse_delay);
}
digitalWrite(9,LOW);
for (int i=0;i<wave_period;i++)
{
  digitalWrite(8,HIGH);
  delayMicroseconds(pulse_delay);
  digitalWrite(8,LOW);
  delayMicroseconds(pulse_delay);
  }
}

Я не получаю никаких сообщений об ошибках, и IDE просто сообщает, что загрузка завершена. Мы используем плату Arduino Mega. Я довольно новичок в Ардуино.

Изменить: Кто-то попросил фотографии о том, как это было связано. Извините за поздний ответ, были семейные обстоятельства.

Кабель, идущий снизу, — это кабель шагового двигателя

изображение всей платы

Кабель, идущий снизу на первом изображении, идет от шагового двигателя, как и кабель, который я держу, но мне сказали, что это не обязательно.

, 👍-1

Обсуждение

Я думаю, я спрашиваю, не хватает ли чего-то в коде или есть что-то, что я могу добавить к нему, чтобы увидеть, где код останавливается., @thango

двигателям требуется довольно большой ток (больше, чем могут выдержать контакты GPIO), можете ли вы описать, как вы подключили шаговый двигатель?, @ratchet freak

У него их 2. Один из них, я думаю, это 5-контактный кабель HX2.54. Другой я понятия не имею, у него черная основа и 4 длинных выступа, которые торчат, но мне сказали, что им не нужно их использовать. Я постараюсь спросить своего руководителя, когда они вернутся с уроков., @thango

Мы также подключаем этот кабель к плате Arduino, а плата подключается к розетке., @thango

Между Arduino и шаговым двигателем должна быть схема драйвера. Он управляет фазами двигателя в соответствии с импульсами и штифтом направления и обеспечивает двигатель необходимой мощностью. Пожалуйста, покажите изображение схемы, где мы можем видеть, как все подключено, @chrisl

Хорошо, в настоящее время в моем другом отделе (я работаю на 2). Я вернусь сегодня днем, чтобы сфотографировать плату и двигатель, чтобы опубликовать., @thango

На ваших изображениях я вижу больше проводов, идущих между Arduino и (предполагаемой) платой драйвера (зеленая внизу). Поскольку плата драйвера имеет хорошие разъемы, а разъем от двигателя подходит, я предполагаю, что драйвер подключен правильно, но сигналы от Arduino не соответствуют ожиданиям драйвера двигателя. Можете ли вы сказать нам, что это за драйвер двигателя, чтобы мы могли найти таблицу данных?, @chrisl

Единственная идентификация, которую я могу найти на зеленой плате, это CDV524-K TV8 1U54101, и, я думаю, это дата 2016/08, и это от Oriental Motor Co., @thango


2 ответа


0

К чему подключены контакты 8 и 9 на вашем степпере? также определите скорость передачи данных в зависимости от требований двигателя.

недействительная установка () {
pinMode(8,ВЫХОД); < должен быть ПУЛ
pinMode(9,ВЫХОД); < должно быть ENA (возможно, реж.)
цифровая запись (8, НИЗКИЙ);
цифровая запись (9, НИЗКИЙ);
Серийный.начать(115200);
}

недействительный цикл () {
цифровая запись (9, ВЫСОКИЙ);
delay(10000);
для (целое i=0;i<1000;i++)
{
цифровая запись (8, ВЫСОКИЙ);
delayMicroseconds(20);
цифровая запись (8, НИЗКИЙ);
delayMicroseconds(20);
}
цифровая запись (9, НИЗКИЙ);
для (целое i=0;i<1000;i++)
{
цифровая запись (8, ВЫСОКИЙ);
delayMicroseconds();
цифровая запись (8, НИЗКИЙ);
delayMicroseconds();
}
}
,

Как это отвечает на вопрос? Какое отношение имеет серийный номер и скорость передачи данных к шаговым двигателям? А функция Serial.begin() написана строчной буквой b., @chrisl

Вы... Я протестировал этот код (исправил МАЛЕНЬКУЮ опечатку) на моем сервоприводе, и он сработал... Итак? Делали ли вы что-нибудь, чтобы попытаться помочь этому человеку?, @chas stevens

В цикле 9, LOW for я получаю не объявленную ошибку wave_period., @thango

еще раз не добавляя ценности., @chas stevens

Хорошо, тогда, наверное, я не знаю, чего ты хочешь. Я разместил фотографии того, что подключено, и попробовал ваш код. Спасибо за вашу помощь в любом случае., @thango

@час я не хотел тебя оскорбить, так что извините. Ваш рабочий код отличается от нерабочего кода ОП только строкой Serial.begin(). Таким образом вы пропагандируете, что эта строчка и есть решение проблемы. Я не понимаю, как это могло быть, так как состояние оборудования Serial (UART) не должно влиять на другие цифровые выходы. Если вы знаете это иначе, пожалуйста, объясните, чтобы другие могли извлечь из этого уроки., @chrisl


0

Здесь вы можете найти руководство по эксплуатации вашего шагового двигателя.

См. страницу в разделе "CN3 (сигналы ввода/вывода)". Помимо импульса и направления, которые вы уже установили в своем коде, определены еще 2 входных сигнала: AWO полностью отключит двигатель, если вы подадите сигнал, CS изменит источник настройки угла шага. Поскольку вы не настраиваете никаких контактов, кроме импульса и направления, другие контакты на Arduino устанавливаются как входные/высокоимпедансные. Состояние этих контактов может сильно меняться в зависимости от исходящего шума. Я не знаю, действительно ли это имеет значение для этого драйвера, но вы должны попытаться обеспечить действительное состояние на всех входных контактах драйвера. Например, плавающий вывод AWO может случайным образом отключать и включать ваш двигатель очень быстро (что, по крайней мере, соответствует описанному поведению). Установите соответствующий вывод на Arduino в качестве выхода (через pinMode()) и задайте им желаемое состояние с помощью digitalWrite() (я предлагаю LOW для AWO, чтобы включить моторы и HIGH для CS, чтобы получить базовый угол шага).

Я не вижу на ваших картинках, все ли подключено к драйверу, как надо (здесь поможет схема подключения или схема). На данный момент я предполагаю, что сигнальные контакты на стороне Arduino подключены правильно.

Входные сигналы драйвера должны обеспечиваться парой витых проводов. Это сделано для минимизации шума на линии. Таким образом, все входные сигналы имеют 2 контакта: «+» и «-». Соедините все контакты «-» с землей, а контакты «+» — с соответствующим контактом цифрового выхода на Arduino.

Если у вас есть осциллограф или логический анализатор, вы также можете контролировать выходы ALM и TIM драйвера. Возможно, они показывают, что происходит не так.

Сообщите нам, если это поможет.

,