Урок 18
Часть 2
Подключаем шаговый двигатель
Продолжим подключение к микроконтроллеру Atmega8a подключить шагового двигателя.
В прошлой части занятия мы изучили принцип работы шагового двигателя, а также драйвера шагового двигателя, а также изучили определёные режимы работы данного двигателя.
В данной части занятия мы подключим его к живому контроллеру, а не к нашей отладочной плате, и, хотя мы, скорее всего, им пока ещё не зашагаем, но код писать начнём.
Для наглядности шагания я прицепил яркую скрепку к валу ротора двигателя, получилось вот так
Шаговый двигатель мы будем подключать вот к такому драйверу
Ну, давайте и подключим
Черный и белый провод, которые мы видим подключенными к драйверу будут подавать питание не микросхему, а также, следовательно и на двигатель чеез выходные ножки разъёма. Питание мы подадим вот с такого вот блока питания на 9 вольт от внешнего жесткого диска
Но 9 вольт для двигателя много, так как питаться он должен от 5 вольт, поэтому применим вот такой вот преобразователь, который на выходе нам выдаст стабилизированные 5 вольт. Данный преобразователь может также выдавать и 3,3 вольт, но нам нужно именно 5 вольт
Подключим к преобразователю питание с блока питания
С преобразователя стабилизированное питание пойдёт на драйвер мотора по белому и чёрному проводу
К контроллеру Atmega8A мы подведём 4 провода для управления двигателем через драйвер на ножки 23 — 26 (ножки портов PC0-PC3)
С другой стороны данные провода мы подключим к ножкам драйвера IN1-In3
Осталось нам подключить к плате программатор и включить к питанию 220 вольт блок питания.
Теперь пришло время заняться кодом.
Проект был создан стандартным образом и назван MyStepMotor, также обычным образом к проекту подключен файл main.h и созданы два файла для будущей библиотеки шагового двигателя с именами stepmotor.h и stepmotor.c.
Содержание файла MyStepMotor.c у нас такое
#include «main.h»
int main(void)
{
while(1)
{
}
}
А содержимое main.h такое
#ifndef MAIN_H_
#define MAIN_H_
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include «stepmotor.h»
#endif /* MAIN_H_ */
В файле stepmotor.c мы подключим хедер-файл и напишем некоторые макроподстановки для удобного написания кода и обращения к ножкам портов, благо мы знаем к каким ножкам драйвера от каких ножек порта поступает сигнал, также напишем макрос для задержки. 5 милисекунд нам хватит
#include «stepmotor.h»
#define SM_port PORTC
#define SM_ddr DDRC
#define IN1 PORTC0
#define IN2 PORTC1
#define IN3 PORTC2
#define IN4 PORTC3
#define SM_delay _delay_ms(5)
Теперь давайте напишем первую функцию. Это будет функция инциализации нашего двигателя
void SM_ini(void)
{
SM_ddr |= (1<<IN4)|(1<<IN3)|(1<<IN2)|(1<<IN1);
SM_port &= ~((1<<IN4)|(1<<IN3)|(1<<IN2)|(1<<IN1));
}
Это стандартная функия инициализация ножек порта на выход и установки всех ножке порта в низкое логическое состояние.
Напишем для неё прототип в хедере
#ifndef STEPMOTOR_H_
#define STEPMOTOR_H_
#include «main.h»
void SM_ini(void);
А затем вызовем в main()
int main(void)
{
SM_ini();
Попробуем собрать код, прошивать пока не будем, так как смысла в этом нет. Функций ещё будет много.
Отложим данные работы до следующей части урока.
Предыдущая часть Программирование МК AVR Следующая часть
Техническая документация на шаговый двигатель
Программатор и шаговый двигатель 28YBJ-48 с драйвером ULN2003 можно приобрести здесь:
Программатор USBASP USBISP с адаптером USBASP USBISP 3.3 с адаптером
Шаговый двигатель 28YBJ-48 с драйвером ULN2003
Смотреть ВИДЕОУРОК в RuTube (нажмите на картинку)
Смотреть ВИДЕОУРОК в YouTube (нажмите на картинку)
Я не понял
Здравствуйте!
Что именно Вы не поняли?