好记性不如铅笔头

linux, 操作系统, 树莓派

树莓派学习笔记:步进电机

最近搞了个步进电机和驱动板,尝试用树莓派来驱动。看了下资料,发现只要将4个IN依次设置为高电平即可。

代码如下:

import RPi.GPIO as GPIO
import time

def setMotorGPIO(A, B, C, D):
	GPIO.output(GPIO_DATAA, A);
	GPIO.output(GPIO_DATAB, B);
	GPIO.output(GPIO_DATAC, C);
	GPIO.output(GPIO_DATA4, D);

def motorRunOnce(sleeptime):
	setMotorGPIO(GPIO.HIGH, GPIO.LOW, GPIO.LOW, GPIO.LOW);
	time.sleep(sleeptime);
	setMotorGPIO(GPIO.LOW, GPIO.HIGH, GPIO.LOW, GPIO.LOW);
	time.sleep(sleeptime);
	setMotorGPIO(GPIO.LOW, GPIO.LOW, GPIO.HIGH, GPIO.LOW);
	time.sleep(sleeptime);
	setMotorGPIO(GPIO.LOW, GPIO.LOW, GPIO.LOW, GPIO.HIGH);
	time.sleep(sleeptime);

def motorRun(times):
	GPIO_DATAA = 22;
	GPIO_DATAB = 23;
	GPIO_DATAC = 24;
	GPIO_DATA4 = 25;
	
	GPIO.setmode(GPIO.BCM);
	
	GPIO.setup(GPIO_DATAA,GPIO.OUT);
	GPIO.setup(GPIO_DATAB,GPIO.OUT);
	GPIO.setup(GPIO_DATAC,GPIO.OUT);
	GPIO.setup(GPIO_DATA4,GPIO.OUT);
	GPIO.output(GPIO_DATAA, GPIO.LOW);
	GPIO.output(GPIO_DATAB, GPIO.LOW);
	GPIO.output(GPIO_DATAC, GPIO.LOW);
	GPIO.output(GPIO_DATA4, GPIO.LOW);

	cnt = 0;
	while cnt < times:
		motorRunOnce(0.5);
		cnt = cnt + 1;

	GPIO.cleanup();


if __name__ == "__main__":
	motorRun(10);

备注:

步进电机的运转速度较慢,如果想要比较高的转速,还是得用直流电机。

Leave a Reply

17 + 8 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据