AVR Урок 18. Подключаем шаговый двигатель. Часть 2



 

Урок 18

Часть 2

 

Подключаем шаговый двигатель

 

Продолжим подключение к микроконтроллеру Atmega8a подключить шагового двигателя.

В прошлой части занятия мы изучили принцип работы шагового двигателя, а также драйвера шагового двигателя, а также изучили определёные режимы работы данного двигателя.

В данной части занятия мы подключим его к живому контроллеру, а венее к нашей отладочной плате, и, хотя мы, скорее всего, им пока ещё не зашагаем, но код писать начнём.

Для наглядности шагания я прицепил яркую скрепку к валу ротора двигателя, получилось вот так

 

image06

 

Шаговый двигатель мы будем подключать вот к такому драйверу

 

image07

 

Ну, давайте и подключим

 

image08

 

Черный и белый провод, которые мы видим подключенными к драйверу будут подавать питание не микросхему, а также, следовательно и на двигатель чеез выходные ножки разъёма. Питание мы подадим вот с такого вот блока питания на 9 вольт от внешнего жесткого диска

 

image09

 

 

Но 9 вольт для двигателя много, так как питаться он должен от 5 вольт, поэтому применим вот такой вот преобразователь, который на выходе нам выдаст стабилизированные 5 вольт. Данный преобразователь может также выдавать и 3,3 вольт, но нам нужно именно 5 вольт

 

image10

 

Подключим к преобразователю питание с блока питания

 

image11

 

С преобразователя стабилизированное питание пойдёт на драйвер мотора по белому и чёрному проводу

 

image12

 

К контроллеру Atmega8A мы подведём 4 провода для управления двигателем через драйвер на ножки 23 — 26 (ножки портов PC0-PC3)

 

image13

 

 

С другой стороны данные провода мы подключим к ножкам драйвера IN1-In3

 

image14

 

Осталось нам подключить к плате программатор и включить к питанию 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 2.0

Шаговый двигатель 28YBJ-48 с драйвером ULN2003

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

AVR Подключаем шаговый двигатель

2 комментария на “AVR Урок 18. Подключаем шаговый двигатель. Часть 2

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*