В этой статье рассказывается о подключении одного определенного шагового двигателя к ардуино. В интернете много информации по шаговым двигателям. Зачем делать то, что уже сделано? Чтобы ознакомится с конкретным шаговым двигателем, оценить его возможности.
Шаговый двигатель (4-phase 5-wire stepper motor)
Phase Resistor: 26 Ohm
Driver Voltage: DC 5-12V
Step Angle: 7.5°
Очень важно знать ток который будет протекать через обмотки.
5.0 / 26.0 = 0.193 A
Можно обойтись и без специального разъема, но тогда придется припаивать проводки непосредственно к плате мотора.
Драйвер двигателя
Параметры L293D вполне приемлемы для данного проекта.
Arduino Uno
Прежде чем говорить о соединении компонентов между собой, нужно сказать о конфигурировании драйвера двигателя.
driver --- driver
EN1 --- VCC
EN2 --- VCC
VIN --- VCC
Для соединения EN1 и EN2 с VCC на плате драйвера предусмотрены удобные перемычки. А вот соединение VIN с VCC предполагается посредством пайки. Я паять ничего не стал, так как у меня двигатель питается от 5 вольт лишь на тестировании. Поэтому я соединил VIN и VCC проводочком.
Компоненты между собой соединяются согласно изложенным ниже инструкциям.
stepper motor --- driver
A1 --- A+
A2 --- A-
B1 --- B+
B2 --- B-
VCC --- VIN
driver --- arduino uno
VCC --- 5V
GND --- GND
IN1 --- D11
IN2 --- D10
IN3 --- D9
IN4 --- D8
arduino uno --- button module
VCC --- 5V
GND --- GND
A0 --- SW1
A1 --- SW2
Программа
Для шагового двигателя можно довольно точно определить скорость вращения вала.
(360.0 / 7.5) * 20.0 = 960.0 ms
Под управлением показанной выше программы, вал шагового двигателя делает полный оборот, приблизительно, за одну секунду.
Шаговый двигатель (4-phase 5-wire stepper motor)
Phase Resistor: 26 Ohm
Driver Voltage: DC 5-12V
Step Angle: 7.5°
Очень важно знать ток который будет протекать через обмотки.
5.0 / 26.0 = 0.193 A
Для подключения двигателя нужен JST 2.0mm PH 5-Pin Connector
Драйвер двигателя
Параметры L293D вполне приемлемы для данного проекта.
Arduino Uno
Модуль с кнопочками
Прежде чем говорить о соединении компонентов между собой, нужно сказать о конфигурировании драйвера двигателя.
driver --- driver
EN1 --- VCC
EN2 --- VCC
VIN --- VCC
Для соединения EN1 и EN2 с VCC на плате драйвера предусмотрены удобные перемычки. А вот соединение VIN с VCC предполагается посредством пайки. Я паять ничего не стал, так как у меня двигатель питается от 5 вольт лишь на тестировании. Поэтому я соединил VIN и VCC проводочком.
Компоненты между собой соединяются согласно изложенным ниже инструкциям.
stepper motor --- driver
A1 --- A+
A2 --- A-
B1 --- B+
B2 --- B-
VCC --- VIN
driver --- arduino uno
VCC --- 5V
GND --- GND
IN1 --- D11
IN2 --- D10
IN3 --- D9
IN4 --- D8
arduino uno --- button module
VCC --- 5V
GND --- GND
A0 --- SW1
A1 --- SW2
Программа
////////////////////////
//
// Arduino Uno
//
////////////////////////
//
// Sketch: Stepper Motor
//
#include <util/delay.h>
const unsigned char IN1 = 11; // Digital Pin 11
const unsigned char IN2 = 10; // Digital Pin 10
const unsigned char IN3 = 9; // Digital Pin 9
const unsigned char IN4 = 8; // Digital Pin 8
const unsigned char SW1 = 14; // Analog Pin 0
const unsigned char SW2 = 15; // Analog Pin 1
unsigned char step = 1;
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
}
void loop()
{
if ( digitalRead(SW1) == LOW ) step -= 1;
if ( digitalRead(SW2) == LOW ) step += 1;
if ( step == 0 ) step = 4;
if ( step == 5 ) step = 1;
if ( step == 1 )
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
}
if ( step == 2 )
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if ( step == 3 )
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
if ( step == 4 )
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
_delay_ms(20);
}
//
// End
//
////////////////////////
Для шагового двигателя можно довольно точно определить скорость вращения вала.
(360.0 / 7.5) * 20.0 = 960.0 ms
Под управлением показанной выше программы, вал шагового двигателя делает полный оборот, приблизительно, за одну секунду.
Видео
А скажите пожалуйста,а можно вместо кнопок использовать акселерометр mp6050?
ОтветитьУдалить