как проверить, что не работает из пары шаговый мотор 28byj-48 и драйвер uln2003?

M a x
Offline
Зарегистрирован: 20.06.2016

Был в наборе шаговый двигатель с драйвером 28byj-48 и uln2003, наконец добрались руки поэксперементировать, но сразу возникла проблема - ни на один из тестовых скетчей в различных конфигурациях двигатель не реагирует, светодиодики не загараются.

Пробовал и на разные порты ардуины подключать и 3 разных библиотеки и бнез библиотеки и с отдельным питанием и с питанием от МЕГИ - никакой реакции. Микросхему вытащил-вставил, по двигателю пальцем пощелкал ....

Не подскажете, как без покупки второгокомплекта проверить работоспособность?

nevkon
Offline
Зарегистрирован: 20.01.2015

Для начала проверить сопротивление обмоток ШД, но он скорее всего в порядке. Потом показать как подключаете - скорее всего неправильно. Ну и неработающий скетч тоже не помешает показать.

M a x
Offline
Зарегистрирован: 20.06.2016

Подключаю к цифровым выводам 8,9,10,11 соответственно, выводы IN1, IN2, IN3, IN4

Питание, либо с выводов Ардуины либо с блока питания на макетной плате к контактам - + на драйвере. Джампер рядом с контактами замкнут. Мотор по-другому не вставить, у него разъем соединения с драйвером.

Скетч, например, такой:

// Bounce.pde
// -*- mode: C++ -*-
//
// Make a single stepper bounce from one limit to another
//
// Copyright (C) 2012 Mike McCauley
// $Id: Random.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $

#include <AccelStepper.h>
// Define a stepper and the pins it will use
#define HALFSTEP 8
#define motorPin1 8 //IN1
#define motorPin2 9 //IN2
#define motorPin3 10 //IN3
#define motorPin4 11 //IN4

AccelStepper stepper(HALFSTEP, motorPin1, motorPin2, motorPin3, motorPin4);

void setup()
{
  // Change these to suit your stepper if you want
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(100);
  stepper.setSpeed (200);
  stepper.moveTo(5000);
}
void loop()
{
  // If at the end of travel go to the other end
  if (stepper.distanceToGo() == 0)
    stepper.moveTo(-stepper.currentPosition());
  stepper.run();
}

 

M a x
Offline
Зарегистрирован: 20.06.2016

Пробовал вот такой скетч:

const int motorPin1 =8;
const int motorPin2 =9;
const int motorPin3 =10;
const int motorPin4 =11;
 
 
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(motorPin1, OUTPUT);    
  pinMode(motorPin2, OUTPUT);    
  pinMode(motorPin3, OUTPUT);    
  pinMode(motorPin4, OUTPUT);     
}
 
void loop() {
 // HALF STEP  
 int motorDelay=5;
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motorDelay);
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, HIGH);
  delay(motorDelay);  
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motorDelay);  
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motorDelay); 
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(motorDelay); 
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, HIGH);
  delay(motorDelay); 
  
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motorDelay); 
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(motorDelay); 
}

И такой:

/*
  ULNStepper Library 
  Library to use with controller ULN2003
  for stepper motors.
				
  Created by A. Carpini, 24 April 2015.
  Contact: alessio.carpini@gmail.com
  
  - Demo Sketch -
  
*/

#include <ULNStepper.h>

// Connect a ULN2003 controller to digital pin 8,9,10 and 11 of Arduino
// Connect to ULN2003 controller board a motor step with 200 steps per
// revolution (1.8 degree)
ULNStepper motor(200, 8, 9, 10, 11);

void setup() {
  
  // set up Serial library at 9600 bps
  Serial.begin(9600);           
  Serial.println("Stepper test!");
  
  // set motor speed to 10 rpm 
  motor.setSpeed(10);    
}

void loop() 
{
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("HALF coil steps");
  motor.step(100, FORWARD, HALF); 
  motor.step(100, BACKWARD, HALF); 
}

Никакой реакции. Плюс еще много разныхз с библиотеками и без. Видимо, что-то не в порядке с железом, хотя, не хотелось бы...

uragan
Offline
Зарегистрирован: 23.02.2015

Звук есть какой-нибудь. Если есть, то  Скорее всего надо номера пинов переставить в скетче без библиотеки. Пользуюсь подобным.

M a x
Offline
Зарегистрирован: 20.06.2016

нет звуков никаких и светодиоды не горят

uragan
Offline
Зарегистрирован: 23.02.2015

Можно подавать сигналы на пины и тестером смотреть как проходят. Там схема простейшая. На рин подаешь "хай" и соответсвующая ножка улнки должна конец обмотки замкнуть на землю. Если нет звуков от двигателя , нет контакта на землю.

Jehn
Offline
Зарегистрирован: 13.03.2017

Чтобы новую тему не создавать напишу здесь.

Та же пробелма что и у автора - не робит. Мультиметром меряю напряжение - на пинах проходит 5 V в соответствии со скетчем. На питании выдает постоянно 5V. На контактах штекера (который с ключом) - 0,6 V постоянно. Диоды не горят. Что еще можно проверить?

evgta
Offline
Зарегистрирован: 02.09.2016

масса общая?, с unl2003 насколько помлю не + появляется а -, на мотор на центральном проводе должен быть + на остальные от микрухи - , 

Jehn
Offline
Зарегистрирован: 13.03.2017

Эм..а для чайников? :)

Куда ткнуть красным щупом, а куда черным?

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

Та же проблема! Долго искал подобную тему, т.е. людей у которых та же ситуация. Во всех форумах, примерах и описаниях как подключать NEMA И ARDUINO, используется красный L298N ( чёрт подери, словно все сговорились... ). В общем в моей ситуации используется "Robotdyn driver motor L298N". Подключил в точности как описано в текстах на примере ( мучаюсь 3-е сутки ), как и автор этой дискусии опробовал разные методы: подключал с разных источников питания, менял провода местами и т.д. п. т. Единственное чего я добился, это ВНИМАНИЕ! : ВКЛ. "logic on" и задействовал 4-е пина (IN 1 E1 E2 IN3 ), воткнул в эти D8 D9 D10 D11 И ЗАГРУЗИЛ СКЕТЧ "Stepper"... в итоге мотор "замурчал" тихо тихо и загорелись лампочки движения на драйвере. Короче "ЖОПА"

 

TVM
Offline
Зарегистрирован: 04.06.2017

28byj-48 униполярный шаговый двигатель.

int Pin0 = 8;
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int t = 2;
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop()
{
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(t);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
delay(t);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(t);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(t);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(t);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(t);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(t);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(t);
}

 

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

Твой скетч простой и это большой плюс! Попробовал без изменений, но мотор "нуль реакции", даже лампочки на драйвере не загорелись ( индикация поворота ).

....

void loop()
{
digitalWrite(e1, 200);
digitalWrite(e2, 200);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);

..........

Добавил в твой код немного изменений: e1 и e2, выставил значение под 200, тобишь ENABLE выполняет роль скорости, результат не заставил себя долго ждать. Индикация поворотов на Robotdyn загорелись, абсолютно все, но не мегают; мотор вибрирует, видно как вал делает вибрации, такого у меня ещё не было. Спасибо за разнообразие, буду эксперементировать ( NEMA 17 SH8401 1.8 ).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

PVl_Soryn пишет:

e1 и e2, выставил значение под 200, тобишь ENABLE выполняет роль скорости

Функция digitalWrite не работает с разными значениями. Только HIGH или LOW (1 или 0). Это цифровой сигнал, он не может принимать другие значения. Никакой регулировки скорости не будет (да и не могло быть, ENABLE для друго предназначен). Достаточно было сделать так:

digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);

 

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

Спасибо, ошибка учтена.

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

Ураааааа!!!

int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int e1 = 7;
int e2 = 6;
int t = 2;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(e2, OUTPUT);
}
void loop()
{
digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
}

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

TVM, ОГРОМНОЕ СПАСИБО, неделю мучался и вооот, настал момент радости, урааааааа! Все работает замечательно, ничто не вибрирует. Единственное - пугает сильный нагрев драйвера, т. е. алюминеего бруска. Но это не сравнится с лучами радости, COOL. Пойду праздновать :), досмотрю "Гарри Поттера".

TVM
Offline
Зарегистрирован: 04.06.2017

Для проверки самый простой вариант.

В полушаговом режиме.

 

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

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

TVM
Offline
Зарегистрирован: 04.06.2017

Похоже на полный шаг.

Только зачем e1 и e2?

Еще надо схему смотреть.

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int e1 = 7;
int e2 = 6;
int t = 50;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(e1, OUTPUT);
pinMode(e2, OUTPUT);
}
void loop()
{
digitalWrite(e1, HIGH);
digitalWrite(e2, HIGH);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
}

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

Вот этот скетч у меня тоже работает. Нарисовал картинку и немного поразмыслив, подумал как создать полный шаг. Сейчас опробовал, но на t=2 вибрирует, на t=10 вибрирует, на t=50 работает, но тупо, шаг за шагом, смотрится это "квадратно".

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

E1 и E2 исользую только потому, что это единственный способом завести мотор. Много перепробовал без ENABLE и всё катится к чертям.

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

http://robotosha.ru/electronics/how-stepper-motors-work.html По статье похожа на "волновое управление"?

TVM
Offline
Зарегистрирован: 04.06.2017

Попробуй так:

int in1 = 8;
int in2 = 9;
int in3 = 10;
int in4 = 11;
int t = 3;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop()
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(t);
}

Если не получится то дело в подключении.

PVl_Soryn
Offline
Зарегистрирован: 31.05.2017

С таким скетчем пробовал, ещё с самого начала... мотор не реагирует. Перед тем как написать рабочий вариант скетча, я поставил t=1000 и присмотрелся в какой последовательности горят LED индикаторы на драйвере, в результате получилось то, что вышло. И я тут ещё подумал, мой шаговик тянет ~ 4000 грамм, значит при работе мотора с полным моментом мне будет трудновато прокручивать вал в обратном направлении, собственно эту теорию я проверил, вал, действительно, тяжело крутить, он будто приварен.

Oleksii
Offline
Зарегистрирован: 06.01.2019

 

Здравствуйте!

Удалось проверить работоспособность?

Просто тоже есть такая проблема но програматор тоже потух полностю.

наверно все сгорело. От другого програматора двигатель и драйвер так же себя ведут(диод не мигает, звука нет).

Не знаю как проверить что работает, а что нет

M a x пишет:

Был в наборе шаговый двигатель с драйвером 28byj-48 и uln2003, наконец добрались руки поэксперементировать, но сразу возникла проблема - ни на один из тестовых скетчей в различных конфигурациях двигатель не реагирует, светодиодики не загараются.

Пробовал и на разные порты ардуины подключать и 3 разных библиотеки и бнез библиотеки и с отдельным питанием и с питанием от МЕГИ - никакой реакции. Микросхему вытащил-вставил, по двигателю пальцем пощелкал ....

Не подскажете, как без покупки второгокомплекта проверить работоспособность?