- Стъпков мотор
- Въртене на стъпков двигател С ARM7-LPC2148
- Необходими компоненти
- Стъпков двигател (28BYJ-48)
- Шофьор на стъпков двигател ULN2003
- Електрическа схема
- Програмиране ARM7-LPC2148 за стъпков двигател
В днешния свят на автоматизация стъпковият двигател и серво двигателят са два най-често използвани двигателя във вградени системи. И двете се използват в различни машини за автоматизация като роботизирани рамена, CNC машини, камери и т.н. В този урок ще видим как да свържем Stepper Motor с ARM7-LPC2148 и как да контролираме скоростта му. Ако сте нов в ARM7, започнете, като научите за ARM7-LPC2148 и неговите инструменти за програмиране.
Стъпков мотор
Стъпковият двигател е безчетков постояннотоков двигател, който може да се върти под малки ъгли, тези ъгли се наричат стъпки. Можем да въртим стъпков двигател стъпка по стъпка, като подаваме цифрови импулси към неговите щифтове. Стъпковите двигатели са евтини и имат здрав дизайн. Скоростта на двигателя може да се контролира чрез промяна на честотата на цифровите импулси.
Има два вида стъпкови двигатели на разположение в зависимост от вида на намотка на статора: еднополюсен и биполярно. Тук използваме стъпков двигател UNIPOLAR, който е най-често използваният стъпков двигател . За да завъртим стъпковия двигател, трябва последователно да активираме намотките на стъпковия двигател. Въз основа на въртеливата операция те се класифицират в два режима:
- Режим на пълна стъпка: (последователност от 4 стъпки)
- Еднофазно стъпване (ВЪЛНА СТЪПКА)
- Двуфазна стъпка
- Режим на половин стъпка (последователност от 8 стъпки)
За да научите повече за стъпковия двигател и неговата работа, следвайте връзката.
Въртене на стъпков двигател С ARM7-LPC2148
Тук ще използваме ПЪЛНА СТЪПКА: ЕДНА ФАЗА ВКЛЮЧЕНА или РЕЖИМ НА СТЪПКА НА ВЪЛНАТА, за да завъртим стъпковия двигател с ARM7-LPC2148
При този метод ще захранваме само една намотка (един щифт на LPC2148) наведнъж. Тоест, ако първата намотка A е захранена за малко време, валът ще промени позицията си и след това намотката B се захрани за същото време и валът отново ще промени позицията си. По същия начин, намотката C и след това намотката D се захранват, за да преместят вала по-нататък. Това кара вала на стъпковия двигател да се върти поетапно, като захранва по една намотка наведнъж.
По този метод ние въртим вала стъпка по стъпка, като последователно активираме намотката. Това се нарича четири стъпкови последователности, тъй като отнема четири стъпки.
Можете да завъртите стъпков двигател, използвайки метода HALF STEP (метод с 8 последователности) според стойностите, дадени по-долу.
Стъпка |
Намотка A |
Намотка B |
Намотка C |
Намотка D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Необходими компоненти
Хардуер:
- ARM7-LPC2148
- ULN2003 IC драйвер за двигател
- LED - 4
- СТЪПКОВ ДВИГАТЕЛ (28BYJ-48)
- БЛОК
- СВЪРЗВАНЕ НА ЖИЛКИ
Софтуер:
- Keil uVision5
- Flasic Magic Tool
Стъпков двигател (28BYJ-48)
28BYJ-48 стъпков двигател вече е показан на снимката по-горе. Това е еднополюсен стъпков двигател, който изисква захранване от 5V. Двигателят има еднополярно разположение от 4 намотки и всяка намотка е оценена за + 5V, поради което е сравнително лесно да се управлява с всякакви микроконтролери като Arduino, Raspberry Pi, STM32, ARM и т.н.
Но ние се нуждаем от IC с моторно задвижване като ULN2003, за да го задвижваме, тъй като стъпковите двигатели консумират висок ток и това може да повреди микроконтролерите.
Спецификациите на 28BYJ-48 са предоставени в таблицата с данни по-долу:
Също така проверете взаимодействието със стъпков двигател с други микроконтролери:
- Свързване на стъпков двигател с Arduino Uno
- Управление на стъпков двигател с Raspberry Pi
- Свързване на стъпков двигател с микроконтролер 8051
- Свързване на стъпков двигател с микроконтролер PIC
- Свързване на стъпков двигател с MSP430G2
Стъпков двигател може да се управлява и без никакъв микроконтролер, вижте тази схема на драйвер за стъпков двигател.
Шофьор на стъпков двигател ULN2003
Повечето стъпкови двигатели ще работят само с помощта на драйвер модул. Това е така, защото модулът на контролера (в нашия случай LPC2148) няма да може да осигури достатъчно ток от своите I / O щифтове за работа на двигателя. Така че ние ще използваме външен модул като ULN2003 модул като драйвер за стъпков двигател.
В този проект ще използваме ULN2003 IC драйвер за двигател. ПИН диаграма на IC е дадена по-долу:
Пиновете (IN1 до IN7) са входни щифтове за свързване на изхода на микроконтролера, а OUT1 до OUT7 са съответните изходни щифтове за свързване на входа на стъпкови двигатели. COM се дава положително напрежение на източника, необходимо за изходни устройства и за външен източник на захранване.
Електрическа схема
Схема за свързване на стъпков двигател с ARM-7 LPC2148 е дадена по-долу
ARM7-LPC2148 с ULN2003 IC драйвер за двигател
GPIO щифтовете от LPC2148 (P0.7 до P0.10) се считат за изходни щифтове, които са свързани с входни щифтове (IN1-IN4) на ULN2003 IC.
LPC2148 щифтове |
ПИНОВЕ НА ULN2003 IC |
P0.7 |
IN1 |
P0.8 |
IN2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Връзки на ULN2003 IC със стъпков двигател (28BYJ-48)
Изходните щифтове (OUT1-OUT4) на ULN2003 IC са свързани към щифтовете на стъпковите двигатели (синьо, розово, жълто и оранжево).
ULN2003 IC ПИНОВЕ |
ПИНОВЕ НА СТЪПЧЕН ДВИГАТЕЛ |
ИЗХОД1 |
СИН |
ИЗХОД2 |
РОЗОВ |
ИЗХОД3 |
ЖЪЛТ |
ИЗХОД4 |
ОРАНЖЕВ |
COM |
ЧЕРВЕН (+ 5V) |
Светодиоди с IN1 до IN4 на ULN2003
Четири анодни щифта (LED1, LED2, LED4, LED 4) на анода са свързани съответно с щифтовете IN1, IN2, IN3 и IN4 на ULN2003, а катодът на светодиодите е свързан към GND, което означава да импулсите от LPC2148 Можем да отбележим модела на предоставените импулси. Шаблонът е показан в демонстрационното видео, приложено в края.
Програмиране ARM7-LPC2148 за стъпков двигател
За да програмираме ARM7-LPC2148, се нуждаем от инструмента keil uVision & Flash Magic. Използваме USB кабел за програмиране на ARM7 Stick чрез микро USB порт. Пишем код с помощта на Keil и създаваме шестнадесетичен файл и след това HEX файлът се мига на ARM7 стик с помощта на Flash Magic. За да научите повече за инсталирането на keil uVision и Flash Magic и как да ги използвате, следвайте връзката Първи стъпки с ARM7 LPC2148 Microcontroller и го програмирайте с Keil uVision.
Пълният код за управление на стъпков двигател с ARM 7 е даден в края на този урок, тук обясняваме няколко части от него.
1. За да използваме метода FULL STEP-ONE PHASE ON, трябва да включим командата по-долу. Затова използваме следния ред в програмата
неподписан знак по часовниковата стрелка = {0x1,0x2,0x4,0x8}; // Команди за завъртане по посока на часовниковата стрелка без знак char обратно на часовниковата стрелка = {0x8,0x4,0x2,0x1}; // Команди за въртене обратно на часовниковата стрелка
2. Следващите редове се използват за инициализиране на изводите PORT0 като изходни данни и задаването им на LOW
PINSEL0 = 0x00000000; // Настройка на PORT0 пина IO0DIR - = 0x00000780; // Задаване на щифтове P0.7, P0.8, P0.9, P0.10 като ИЗХОД IO0CLR = 0x00000780; // Задаване на P0.7, P0.8, P0.9, P0.10 щифтове ИЗХОД като НИЗКИ
3. Задайте ПИНОВИТЕ щифтове (P0.7 до P0.10) HIGH според командите по часовниковата стрелка, като използвате това за цикъл със закъснение
за (int j = 0; j
Същото е и за Anti-clock Wise
за (int z = 0; z
4. Променете времето на закъснение, за да промените скоростта на въртене на стъпковия двигател
забавяне (0x10000); // Променете тази стойност, за да промените скоростта на въртене (0x10000) -Пулна скорост (0x50000) -Получава се бавно (0x90000) -Получава се бавно от предишното. Така че чрез увеличаване на закъснението ние намаляваме скоростта на въртене.
5. Броят стъпки за едно пълно завъртане може да бъде променен с кода по-долу
int no_of_steps = 550; // Променете тази стойност за необходимия брой завъртания на стъпки (550 дава едно пълно завъртане)
За моя стъпков двигател получих 550 стъпки за пълно завъртане и 225 за половин завъртане. Затова го променете според вашите изисквания.
6. Тази функция се използва за създаване на време за забавяне.
void delay (unsigned int value) // Функция за генериране на забавяне { unsigned int z; за (z = 0; z
Пълният код с демонстрационно видео е даден по-долу.