Телефонуйте » (+38) 096 227 41 41

Крокові двигуни - це щось середнє між звичайним електромотором і сервоприводом. Їх перевага в тому, що можна точно регулювати їхнє положення, рухати вперед або назад на один «крок» за раз, а також вони можуть обертатися безперервно.

Перш, ніж перейти до уроку, перегляньте статтю Керування кроковим двигуном за допомогою Python на Raspberry Pi, в якій коротко описаний принцип роботи крокових двигунів. А для правильного вибору типу двигуна скористайтеся коротким порівняльним описом їх параметрівю.

10 найбільш значущих переваг крокового двигуна:

1) Стабільність. Працює при різних навантаженнях.
2) Не потребує зворотного зв'язку. Двигун має фіксований кут повороту.
3) Відносно невисока вартість для організації систем контрольованих переміщень
4) Стандартизовані розміри двигуна і кут повороту.
5) Простота в установці і використанні.
6) Надійність: якщо щось зламається, двигун зупиниться.
7) Тривалий термін експлуатації.
8) Чудовий крутний момент на низьких обертах.
9) Чудова повторюваність при позиціонуванні.
10) Кроковий двигун не може згоріти при навантаженні, яке перевищує максимальний крутний момент двигуна. (При такому навантаженні двигун буде просто пропускати кроки).

10 найбільш важливих переваг серводвигунів:

1) Висока потужність в порівнянні з розмірами і вагою двигуна.
2) Дозвіл визначається за допомогою енкодера.
3) Висока ефективність: може досягти 90% при невеликих навантаженнях.
4) Високий крутний момент по відношенню до інерції. Працює з високим прискоренням.
5) Резервує енергію для підтримки живлення на короткий період.
6) Резервує крутний момент для підтримки обертання на короткий період.
7) Двигун залишається прохолодним. Струм споживання пропорційний навантаженні.
8) Високий крутний момент на високій швидкості.
9) Тиха робота на високих швидкостях.
10) Відсутність явищ резонансу і вібрації.

10 найбільш значущих недоліків крокових двигунів:

1) Низька ефективність. Мотор споживає багато енергії незалежно від навантаження.
2) Момент, що крутить різко знижується при збільшенні частоти обертання (крутний момент обернено пропорційний швидкості.)
3) Низька точність. 1: 200 при повному кроці.1 2000 при мікрокроці.
4) Схильний до резонансу. Для усунення резонансних процесів потрібний мікрокрок.
5) Відсутній зворотний зв'язок для контролю кроків.
6) Не може різко стартувати на високій швидкості (потрібний плавний розгін).
7) Високий нагрів двигуна в процесі роботи.
8) Кроковий мотор не може моментально продовжити роботу після перевантаження на валу.
9) Шумний на середніх і високих швидкостях.
10) Низька потужність в порівнянні з розміром і вагою.

10 найбільш значущих недоліків серводвигунів (крім їх відносно високої вартості):

1) Для стабільної роботи двигуна потрібно налаштування драйвера.
2) Мотор може згоріти: для запобігання цього потрібні спеціальні захисні ланцюги в драйвері.
3) Необхідна наявність енкодера.
4) Низький термін експлуатації щіток двигуна (потрібне регулярне обслуговування та заміна).
5) Пікові навантаження скорочують робочий цикл.
6) При тривалій роботі з перевантаженнями двигун може згоріти.
7) Складність вибору двигунів, енкодерів і серводрайверов.
8) Багаторазове збільшення споживаної енергії при пікових навантаженнях.
9) Двигун розвиває пікову потужність на високій швидкості.
10) Погане охолодження двигуна. Потрібний зовнішній вентилятор.

У цьому уроці ми дізнаємося, як управляти кроковим двигуном за допомогою Raspberry Pi і все тієї ж мікросхеми драйверів L293D, яку ми використовували раніше. Живлення 5В від Raspberry Pi буде досить, якщо Pi має хороше джерело живлення: як мінімум на 1А.
У крокового двигуна є п'ять проводів і цього разу ми будемо використовувати обидві частини L293D. Це означає, що потрібно буде зробити багато з'єднань на макетній платі. У двигуна є роз’єм на 5 виводів. За допомогою нього підключіть двигун до макетної плати.

Зверніть увагу, що червоний провід крокового двигуна ні до чого не підключений. Орієнтуйтеся за кольорами, а не за позицією, звідки йде провід. Ще раз перевірте, чи правильно виконали з’єднання, і переходьте до сценарію Python. В nano створіть та збережіть файл stepper.py:

import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
 
enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24
 
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
 
GPIO.output(enable_pin, 1)
 
def forward(delay, steps):  
    for i in range(0, steps):
        setStep(1, 0, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(1, 0, 0, 1)
        time.sleep(delay)
 
def backwards(delay, steps):  
    for i in range(0, steps):
        setStep(1, 0, 0, 1)
        time.sleep(delay)
        setStep(0, 1, 0, 1)
        time.sleep(delay)
        setStep(0, 1, 1, 0)
        time.sleep(delay)
        setStep(1, 0, 1, 0)
        time.sleep(delay)
 
def setStep(w1, w2, w3, w4):
    GPIO.output(coil_A_1_pin, w1)
    GPIO.output(coil_A_2_pin, w2)
    GPIO.output(coil_B_1_pin, w3)
    GPIO.output(coil_B_2_pin, w4)
 
while True:
    delay = input("Delay between steps (milliseconds)?")
    steps = input("How many steps forward? ")
    forward(int(delay) / 1000.0, int(steps))
    steps = input("How many steps backwards? ")
    backwards(int(delay) / 1000.0, int(steps)
)

Запустіть сценарій з використанням sudo.
Введіть затримку (5 буде хорошим значенням), а потім кількість кроків (512 кроків для повного оберту).
Коли кроковий двигун не рухається, він, як і раніше, "активований" і утримує свою позицію. Це вимагає живлення. Якщо вам не потрібно, щоб двигун "утримував" свою позицію, то можете викликати setStep(0,0,0,0), щоб звільнити котушки. Двигун буде вільно обертатися і не буде вимагати багато струму.

Завдання. Проекспериментуйте зі значеннями затримки, щоб отримати максимальну швидкість обертання двигуна.

Попереднє заняття - Наступне заняття

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс