Лабораторная работа №3. Подключение двигателя постоянного тока к Аrduino, управление осуществляем ШИМ сигналом.
Шаговые двигатели становятся все популярнее в мире электроники поскольку именно они обеспечивают точность позиционирования различных механизмов. Ниже рассмотрим подключение шагового двигателя 28-BYJ48 к плате микроконтроллера Arduino при помощи модуля ULN2003 и управление им с помощью потенциометра. в этом же проекте мы будем управлять поворотом шагового двигателя вращая ручку потенциометра. Если мы будем вращать ручку потенциометра по часовой стрелке, то и шаговый двигатель будет поворачиваться по часовой стрелке, а если мы ручку потенциометра будем поворачивать против часовой стрелки – то и шаговый двигатель будет вращаться против часовой стрелки.
Рис. Шаговый униполярный двигатель 28BYJ-48 с драйвером на микросхеме ULN2003.
Рис. Принципиальная схема шагового двигателя 28BYJ-48. Режимы работы двигателя Для управления шаговым двигателем 28BYJ 48 используют полно шаговый режим – 4 ступени импульсов на 1 шаг.
Рис. схема работы двигателя.
Подключение 28BYJ-48 к плате Arduino Плата управления двигателя включает в себя 7 пар транзисторов Дарлингтона и представляет собой усилитель, собранный из семи ключей n-p-n биполярных транзисторов, где первый транзистор управляет большими токами второго через его базу, тем самым защищая плату Ардуино от перегрузки. Микросхема применяется для управления шаговым двигателем. Ниже приведена схема справочника для микросхемы ULN2003A.
Рис. микросхема ULN2003A. Схема подключения ULN2003 изображены на рисунке ниже. Рис. Схема подключения двигателя к платеArduino.
Применяя микросхему L293 вместо ULN2003, красный контакт подключать не надо. Разъёмы IN1 – IN7 подключаются к микроконтроллеру, Выводы земля (GND) и вывод VCC – для питания шагового двигателя. Схема подключения платы управления к контроллеру Arduino изображена на рисунке. Ниже изображены примеры подключения двигателя к плате микроконтроллера Arduino.
Рисунок 3. Подключение драйвера и микросхемы L293 к плате Arduino. Управляет шаговыми двигателями в Arduino IDE библиотека – Stepper далее скетч stepper_oneRevolution. Она отвечает за полно шаговый режим коммутации. Рис. Пример №1 кода программы управления шаговым двигателем: */подключение библиотеки #include < Stepper. h> const int stepsPerRevolution = 200; // соответствуем количеству шагов на оборот // библиотека двигателя 28BYJ-48 // работаем с выводами: Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); void setup() { // set the speed at 60 rpm: установка скорости myStepper. setSpeed(60); // включение последовательного порта Serial. begin(9600); } void loop() { // движение 1 оборот по часовой стрелке Serial. println(" clockwise" ); myStepper. step(stepsPerRevolution); delay(500); // движение 1 оборот против часовой стрелки Serial. println(" counterclockwise" ); myStepper. step(-stepsPerRevolution); delay(500); } Пример №2 кода программы управления шаговым двигателем:
// Контакты Гол, роз, желт, оранж int pins[] = {8, 9, 10, 11}; //Задаем пины по порядку
int phases = 8; // для шагового режима установить 4
// Для шагового режима //bool motorPhases[4][4] = { // [phase][pin] //// -------- pins ---------- //// Winding A B A B //// Motor Pin 1 2 3 4 //// Color Гол, роз, желт, оранж // { 1, 1, 0, 0}, // { 0, 1, 1, 0}, // { 0, 0, 1, 1}, // { 1, 0, 0, 1} //}; // Для полушагового режима bool motorPhases[8][4] = { // [phase][pin] // -------- pins ---------- // Winding A B A B // Motor Pin 1 2 3 4 // Color Гол, роз, желт, ор { 1, 1, 0, 0}, { 0, 1, 0, 0}, { 0, 1, 1, 0}, { 0, 0, 1, 0}, { 0, 0, 1, 1}, { 0, 0, 0, 1}, { 1, 0, 0, 1}, { 1, 0, 0, 0} }; void setup() { for (int i = 0; i < 4; i++) pinMode(pins[i], OUTPUT); } int phase = 0; int _step = 1; // Если у шага поменять знак, на -1 - изменится направление вращения.
void loop() { phase += _step; if (phase > 7) phase = 0; if (phase < 0) phase = 7; for (int i = 0; i < 4; i++) { digitalWrite(pins[i], ((motorPhases[phase][i] == 1)? HIGH: LOW)); } // Пауза на вращение на один шаг/полушаг delay(3); // Для шагового режима установить в 3 } Используя микросхему L293D при подключении двигателя к плате микроконтроллера Ардуино применем следующую схему включения: Рис. Схема подключения микроконтроллера и двигателя через микросхему L293D. Пример №3 кода программы управления шаговым двигателем: int pin7=7; //управление выводом №….. int pin8=8; // управление выводом №….. void setup(){ pinMode(pin7, OUTPUT); //Arduino вывод #7 как выход pinMode(pin8, OUTPUT); //Arduino вывод #8 как выход } Пример №4 кода программы управления шаговым двигателем потенциометром: void loop(){ digitalWrite(pin7, HIGH); //вывод#7 высокий уровень digitalWrite(pin8, LOW); // вывод #8 низкий уровень delay(4000); //Задержка 4 секунды двигатель rotates in clock wise direction digitalWrite(pin7, LOW); // вывод #7 низкий уровень digitalWrite(pin8, LOW); // вывод #8 низкий уровень delay(2000); // Задержка 2 секунды Motor halts digitalWrite(pin8, HIGH); // вывод #8 высокий уровень digitalWrite(pin7, LOW); // вывод #7 низкий уровень delay(5000); // Задержка 5 секунд двигатель rotates in anti clock wise direction digitalWrite(pin7, LOW); // вывод #7 низкий уровень digitalWrite(pin8, LOW); // вывод #8 низкий уровень delay(3000); // Задержка 3 секунды Motor останов }
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|