В данной статье мы рассмотрим подключение шагового двигателя к плате MSP430G2. MSP-EXP430G2 представляет собой плату разработки, также известную как LaunchPad, от компании Texas Instruments. Данная плата позволяет производить программирование всей линейки микроконтроллеров MSP430. Если вы только начали знакомство с данной платой, то рекомендуем прочитать статью про начало работы с ней.
Также на нашем сайте мы рассматривали подключение шагового двигателя к другим микроконтроллерам (платам):
- к микроконтроллеру AVR;
- к микроконтроллеру PIC;
- к плате Arduino;
- к плате Raspberry Pi;
- к плате STM32 Blue Pill.
Необходимые компоненты
- Плата MSP430G2 LaunchPad (купить на AliExpress).
- Шаговый двигатель 35BYJ46 или 28-BYJ48 (купить на AliExpress).
- Микросхема ULN2003 (купить на AliExpress).
- Соединительные провода.
- Макетная плата.
Общие принципы работы шагового двигателя
Шаговый двигатель представляет собой бесщеточный электрический двигатель постоянного тока, преобразующий электрические импульсы в механические движения. Ось шагового двигателя вращается дискретными шагами. Мы можем установить необходимые нам размер шага и скорость вращения.
В нашем проекте мы будем использовать биполярный шаговый двигатель 35BYJ46, который сравнительно дешево стоит и который достаточно просто купить практически в любом соответствующем магазине. Он содержит 6 проводов, но существуют его модификации и с 5 проводами. Он содержит 2 катушки, к каждой из которых подходит по 3 провода – один к центральной части катушки и два другие провода подключаются к концам катушки. Таким образом, у нас есть 4 сигнальных провода и 2 провода, подключенных к центральным частям катушек. Все они подключаются к источнику напряжения 5-12V.
Если проводов не 6, а 5, то для подключения к центральным частям катушек используется один общий провод как показано на следующем рисунке.
Чтобы проверить какой провод является сигнальным, а какой центральным, необходимо измерить их сопротивление. Провода, которые подключены к одной и той же катушке, будет иметь более высокое сопротивление по сравнению с центральным проводом.
К примеру, если вы будете измерять сопротивление проводов в схеме, представленной на рисунке выше, то сопротивление между синим и желтым проводом будет больше чем между желтым и красным или между синим и красным. Таким образом можно определить что красный провод является центральным проводом.
Драйвер шагового двигателя ULN2003
Большинство современных шаговых двигателей управляется с помощью соответствующих модулей драйверов. Их использование обусловлено тем, что контакты современных микроконтроллеров (в том числе и наш MSP430) не могут обеспечить ток, достаточный для управления шаговым двигателем.
На рынке существует достаточно много модулей управления (драйверов) шаговых двигателей, в нашем проекте для этих целей мы будем использовать микросхему ULN2003, распиновка которой показана на следующем рисунке. Ранее мы ее уже использовали в различных проектах на нашем сайте.
В нашем проекте мы будем использовать 4 входных и 4 выходных контакта этой микросхемы.
Схема проекта
Схема подключения шагового двигателя к плате MSP430G2 представлена на следующем рисунке.
На представленной схеме провод красного цвета не подключен к контакту PIN5 микросхемы ULN2003. Он должен быть подключен к контакту 5V платы MSP430G2. Цвета проводов вашего шагового двигателя могут отличаться от представленных на схеме, поэтому желательно перед подключением вашего шагового двигателя проверить какие провода в нем являются сигнальными, а какие центральными.
Объяснение кода программы
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Код программы мы будем писать с помощью среды Energia IDE – она очень похожа на Arduino IDE и проста в использовании. Пример кода программы управления шаговым двигателем можно найти в меню Arduino IDE.
Прежде чем приступать к написанию программы давайте разберемся с тем, что она должна делать. Мы будем использовать 4-х шаговый метод управления шаговым двигателем, то есть будет необходимо 4 шага для того, чтобы ось шагового двигателя совершила один полный оборот. Будем считать что A, B, C и D – это 4 катушки. Тогда схема управления ими в нашем случае будет выглядеть следующим образом:
Шаг | Контакты, на которые подается питание | Катушки, на которые подается питание |
Step 1 | 6 и 7 | A и B |
Step 2 | 7 и 8 | B и C |
Step 3 | 8 и 9 | C и D |
Step 4 | 9 и 6 | D и A |
Число шагов для совершения полного оборота шагового двигателя в нашем случае будет равно 32, укажем это в программе:
1 |
const int STEPS = 32; |
Затем создадим объект для управления шаговым двигателем. При его создании необходимо указать контакты платы MSP430G2, с которых будет осуществляться управление шаговым двигателем.
1 |
Stepper myStepper (STEPS, 6, 7, 8, 9); |
Поскольку в нашем проекте мы используем библиотеку Stepper для управления шаговым двигателем, мы можем установить скорость вращения его оси с помощью следующей команды. Для шагового двигателя 35BYJ46 скорость вращения может быть задана в диапазоне от 0 до 200.
1 |
Mystepper.setSpeed(200); |
Чтобы шаговый двигатель совершил один полный оборот необходимо использовать следующую команду.
1 |
myStepper.step(STEPS); |
Поскольку для совершения полного оборота нам нужно 32 шага, а передаточное число равно 64, то шаговый двигатель должен совершить 2048 (32*64=2048) движений для совершения одного полного оборота. В коде программы вы можете изменить число шагов на то, которое вам необходимо.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 |
#include <Stepper.h> const int STEPS = 32; // измените это число шагов для совершения полного оборота в соответствии с типом вашего шагового двигателя // initialize the stepper library on pins 6 through 9 or you can use any pins on MSP430: Stepper myStepper(STEPS, 6,7,8,9); void setup() { myStepper.setSpeed(200); // устанавливаем скорость вращения 200rpm } void loop() { myStepper.step(STEPS); } |