цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Raspberry Pi и шаговый двигатель с драйвером ULN2003A

Raspberry Pi и шаговый двигатель с драйвером ULN2003A

Автор: Mike(admin) от 3-08-2015, 07:15

Шаговый двигатель благодаря своей обширной сфере применения в робототехнике и других приложениях имеет множество средств управления. В этом материале будет рассмотрен один из них: управление с помощью одноплатного компьютера Raspberry Pi.


Raspberry Pi и шаговый двигатель с драйвером ULN2003A

Для работы с двигателем в данном случае будут использоваться линии GPIO, имеющие напряжение 5 В.


Raspberry Pi GPIO

Подключение к драйверу ULN2003A:


Raspberry Pi и шаговый двигатель с драйвером ULN2003A

Вывод A подключаем к выводу 11 (GPIO 17)


Вывод B подключаем к выводу 12 (GPIO 18)


Вывод C подключаем к выводу 13 (GPIO 21)


Вывод D подключаем к выводу 15 (GPIO 22)


+5V и GND подключаем к выводу 2 и выводу 6 соответственно


При желании можно задействовать другие линии GPIO, но при этом следует переназначить их в коде.


Скрипт на языке Python


1. Импортируем необходимые библиотеки



import time
import RPi.GPIO as GPIO

2. Используем для GPIO нумерацию BCM вместо нумерации физического расположения



GPIO.setmode(GPIO.BCM)

3. Определяем используемые линии GPIO



Pins 18,22,24,26
GPIO24,GPIO25,GPIO8,GPIO7
StepPins = [24,25,8,7]

4. Устанавливаем высе выводы параметра StepPins на выход



print "Setup pins"
  GPIO.setup(pin,GPIO.OUT)
  GPIO.output(pin, False)

5. Определяем счетчик шагов и время ожидания



StepCounter = 0
WaitTime = 0.5

6. Определяем простую последовательность



StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]

7. Определяем полную последовательность, как приведено в документации



StepCount2 = 8
Seq2 = []
Seq2 = range(0, StepCount2)
Seq2[0] = [1,0,0,0]
Seq2[1] = [1,1,0,0]
Seq2[2] = [0,1,0,0]
Seq2[3] = [0,1,1,0]
Seq2[4] = [0,0,1,0]
Seq2[5] = [0,0,1,1]
Seq2[6] = [0,0,0,1]
Seq2[7] = [1,0,0,1]

8. Выбираем, какую последовательность использовать



Seq = Seq1
StepCount = StepCount1

9. Основной цикл программы



while 1==1:
  for pin in range(0, 4):
    xpin = StepPins[pin]
    if Seq[StepCounter][pin]!=0:
      print " Step %i Enable %i" %(StepCounter,xpin)
      GPIO.output(xpin, True)
    else:
      GPIO.output(xpin, False)
  StepCounter += 1
  # Если мы достигли конца последовательности
  # начинаем заново
  if (StepCounter==StepCount):
    StepCounter = 0
  if (StepCounter<0):
    StepCounter = StepCount
  # Ожидаем перед следующим движением
  time.sleep(WaitTime)

В этом примере время ожидания составляет 0.5 секунд. Если хотите увеличить скорость двигателя, то можете уменьшить это значение. Экспериментальным путём установлено, что это значение можно уменьшить до 0.004, прежде чем вал двигателя перестанет вращаться. При 4-х шаговой последовательности скорость вращения достаточно большая, но крутящий момент не высок, мотор в данном случае легко остановить, удерживая вал пальцами. При 8-и шаговой последовательности скорость медленнее, но зато крутящий момент гораздо выше.




© digitrode.ru


<Via>


Теги: Raspberry Pi, шаговый двигатель




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

Комментарии:

Оставить комментарий