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

В цьому експерименті ми розглянемо підключення до Arduino крокової двигуна.

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

Крокові двигуни являють собою електромеханічні пристрої, завданням яких є перетворення електричних імпульсів в переміщення вала двигуна на певний кут. ШД знайшли широке застосування в області, де потрібна висока точність переміщень або швидкості. Наочними прикладами пристроїв з ШД можуть служити принтери, факси і копіювальні машини, а також більш складні пристрої: верстати з ЧПУ (числовим програмним управлінням), фрезерні, гравірувальні машини і т. Д.Шаговий двигун - синхронний бесщеточний електродвигун з декількома обмотками, в якому струм, що подається в одну з обмоток статора, викликає фіксацію ротора. Послідовна активація обмоток двигуна викликає дискретні кутові переміщення (кроки) ротора. Безпосередньо, до виводів Arduino підключати ШД не можна, для підключення використовують або драйвери крокових двигунів (наприклад, A4988), або драйвери двигунів постійного струму (ULN2003, L293). В експерименті будемо використовувати мікросхему L393, яка містить в собі чотири потужних підсилювача (див. Рис. 19.1). Якщо на вхід підсилювача подається 1, то вихід садиться на 12 В, якщо на вхід подається 0, то вивід садиться на землю. Таким чином, подаючи комбінації 0 і 1 на різні входи, можна садити виводи двигуна на шини різної полярності, обертаючи движок в різні боки.


Рис. 19.1. Драйвер двигунів L293

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


Рис. 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 кроків у зворотний бік.