Проект 19: Шаговый двигатель 4-фазный, с управлением на ULN2003 (L293)

В этом эксперименте мы рассмотрим подключение к Arduino шагового двигателя.

Необходимые компоненты:

контроллер Arduino UNO R3;
плата для прототипирования;
• шаговый двигатель;
• микросхема L293;
провода папа-папа.
кнопка – 3 шт.;
резистор 1 кОм – 3 шт.;
внешний блок питания +5 В.

Шаговые двигатели представляют собой электромеханические устройства, задачей которых является преобразование электрических импульсов в перемещение вала двигателя на определенный угол. ШД нашли широкое применение в области, где требуется высокая точность перемещений или скорости. Наглядными примерами устройств с ШД могут служить принтеры, факсы и копировальные машины, а также более сложные устройства: станки с ЧПУ (числовым программным управлением), фрезерные, гравировальные машины и т. д.
Шаговый двигатель – синхронный бесщёточный электродвигатель с несколькими обмотками, в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора. Напрямую, к выводам Arduino подключать ШД нельзя, для подключения используют либо драйверы шаговых двигателей (например, A4988), либо драйверы двигателей постоянного тока (ULN2003, L293). В эксперименте будем использовать микросхему L393, которая содержит в себе четыре мощных усилителя (см. рис. 19.1). Если на вход усилителя подается 1, то выход сажается на 12 В, если на вход подается 0, то вывод сажается на землю. Таким образом, подавая комбинации 0 и 1 на разные входы, можно сажать выводы двигателя на шины разной полярности, вращая движок в разные стороны.

Рис. 19.1. Драйвер двигателей L293

Подключим к Arduino шаговый двигатель и с помощью кнопок будем задавать перемещение шагового двигателя в разные стороны.
Схема соединений для данного эксперимента показана на рис. 19.2.

подключение к Arduino шагового двигателя
Рис. 19.2. Схема соединений шагового двигателя и Arduino

Напишем скетч управления поворотом шагового двигателя с помощью кнопок. При нажатии на первую кнопку шаговый двигатель перемещается на 200 шагов по часовой стрелке, при нажатии на другую кнопку шаговый двигатель перемещается на 200 шагов против часовой стрелки. При написании скетча будем использовать Arduino-библиотеку Stepper. Содержимое скетча показано в листинге 19.1.

// подключение библиотек для RTC
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
// подключение библиотеки для SD
#include <SD.h>
File myFile;
String sfilename;
char filename[20];
const int LM335=A0; // для подключения LM335
tmElements_t tm;
unsigned long millis1=0;
void setup()
{;}
void loop()
{
// проверка прошло 5 минут?
if(millis()-millis1>5*60*000)
{
millis1=millis();
// получить имя файла для текущего дня
sfilename=get_file_name();
sfilename.toCharArray(filename,20);
// открыть файл или создать
myFile = SD.open(filename, FILE_WRITE);
// получить температуру
double val = analogRead(lm335); // чтение
double voltage = val*5.0/1024; // перевод в вольты
double temp = voltage*100 - 273.15; // в градусы Цельсия
// получить время H:m
// создать запись для файла
record=get_time();
record+=" ";
record+=String(temp);
myFile.println(record);
myFile.close();
}
// получение времени дня
String get_time()
{
String time1;
RTC.read(tm);
if(tm.Hour()<10)
time1="0"+String(tm.Hour(),DEC);
else
time1=String(tm.Hour(),DEC);
if(tm.Minute()<10)
time1+=":0"+String(tm.Minute(),DEC);
else
time1+=":"+String(tm.Minute(),DEC);
return time1;
}


1. Подключаем элементы к плате Arduino по схеме на рис. 19.2.
2. Загружаем в плату Arduino скетч из листинга 19.1.
3. При нажатии на одну из кнопок шаговый двигатель делает 200 шагов в одну сторону и останавливается, при нажатии на другую кнопку двигатель делает 200 шагов в обратную сторону.

2222


Листинги программ скачать


Вверх