Подключение шагового двигателя 28BYJ-48-5V к Arduino драйвер ШД ULN2003 CustomStepper.h
- Информация о материале
- Обновлено: 23.03.2023, 11:58
- Опубликовано: 22.03.2023, 16:40
- Автор: DeniS
Цель задания: заставить вращаться шаговый двигатель 28BYJ-48-5V при нажатии на кнопку 1 по часовой стрелке, при нажатии на кнопку 2 против часовой стрелки.
Материалы и компоненты:
- Шаговый двигатель 28BYJ-48-5V в штатном исполнении
- Драйвер шагового двигателя ULN2003
- Arduino NANO
- блок питания 5в
Схема подключения ШД и драйвера к Ардуино
Скетч подключения шагового двигателя 28BYJ-48-5V к Arduino
******************************************************************
/*Вращение ШД по часовой/против часовой от нажатия 2х кнопок http://www.muuh.ru/shagovye-dvigateli/313-podklyuchenie-shagovogo-dvigatelya-28byj-48-5v-k-arduino-drajver-shd-uln2003-customstepper-h.html*/
const int buttonA0 = 14; //14 контакт он же А0
const int buttonA3 = 17; //17 контакт он же А3
int buttonState1 = 0;
int buttonState2 = 0;
int i1 = 0;
int i2 = 0;
int t1 = 4; //Скорость вращения (задержка переключения фаз(мс)), чем > значение, тем медленнее вращается ШД при 2мс 14/обмин, при 4мс - 7об/мин
void setup()
{
//8, 9, 10, 11 контакты драйвера ШД
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
// назначение контактов кнопок
pinMode(A0, INPUT_PULLUP); //А0 кнопка на GND
pinMode(A3, INPUT_PULLUP); //А3 кнопка на GND
}
void prodlit() //Функция
{
buttonState1 = digitalRead(buttonA0); //чтение состояния кнопки на пине A0
buttonState2 = digitalRead(buttonA3); //чтение состояния кнопки на пине A3
if (buttonState1 == LOW)
{
i1--; //декремент i1
}
if (buttonState2 == LOW)
{
i2--; //декремент i2
}
}
void stopPins() //Функция остановки ШД
{
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(500);
}
void loop()
{
buttonState1 = digitalRead(buttonA0);
if (buttonState1 == LOW) {
while (i1 < 1) { //Вращения мотора в одну сторону, пока нажата кнопка
digitalWrite(11, HIGH); digitalWrite(9, LOW); delay(t1);
digitalWrite(10, HIGH); digitalWrite(8, LOW); delay(t1);
digitalWrite(9, HIGH); digitalWrite(11, LOW); delay(t1);
digitalWrite(8, HIGH); digitalWrite(10, LOW); delay(t1);
i1++; prodlit();
} i1 = 0; stopPins();
}
buttonState2 = digitalRead(buttonA3);
if (buttonState2 == LOW) {
while (i2 < 1) { //Вращения мотора в другую сторону, пока нажата кнопка
digitalWrite(8, HIGH); digitalWrite(10, LOW); delay(t1);
digitalWrite(9, HIGH); digitalWrite(11, LOW); delay(t1);
digitalWrite(10, HIGH); digitalWrite(8, LOW); delay(t1);
digitalWrite(11, HIGH); digitalWrite(9, LOW); delay(t1);
i2++; prodlit();
} i2 = 0; stopPins();
}
}
******************************************************************