600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 树莓派用c语言pwm控制电机 树莓派学习笔记之PWM控制直流电机转速

树莓派用c语言pwm控制电机 树莓派学习笔记之PWM控制直流电机转速

时间:2019-10-07 21:58:30

相关推荐

树莓派用c语言pwm控制电机 树莓派学习笔记之PWM控制直流电机转速

树莓派控制PWM控制电机转速

一、硬件

树莓派

12V直流电机

L298N电机驱动器

220V转12V变压器

二、连线

树莓派与L298N需要共地

L298N驱动模块

树莓派接线

三、树莓派python库配置

安装GPIO库

sudo apt-get install python3-rpi.gpio

电机控制程序

import time

import RPi.GPIO as GPIO

#定义树莓派BCM编码引脚

Motor_A_EN = 16

Motor_A_Pin1 = 20

Motor_A_Pin2 = 21

#引脚初始设置

def setup():

global pwm_A

GPIO.setwarnings(False) #禁用监测编码为非默认值时的警告

GPIO.setmode(GPIO.BCM) #指定编码规则

#设置引脚模式为输出

GPIO.setup(Motor_A_EN, GPIO.OUT)

GPIO.setup(Motor_A_Pin1, GPIO.OUT)

GPIO.setup(Motor_A_Pin2, GPIO.OUT)

motorStop() #将所有引脚置为低电平

try: #捕获try后面语句的异常,如果有异常执行except语句后的

#将使能引脚初始化为PWM实例,频率为1000Hz;频率是指PWM脉宽调制的时间倒数

pwm_A = GPIO.PWM(Motor_A_EN, 1000)

except:

pass #无意义保证代码的完整性

def motorStop():

GPIO.output(Motor_A_Pin1, GPIO.LOW)

GPIO.output(Motor_A_Pin2, GPIO.LOW)

GPIO.output(Motor_A_EN, GPIO.LOW)

def motor_A(direction,speed):

if direction == 1:

GPIO.output(Motor_A_Pin1,GPIO.LOW)

GPIO.output(Motor_A_Pin2, GPIO.HIGH)

pwm_A.start(0) #设置开始占空比为0

pwm_A.ChangeDutyCycle(speed) #改变占空比 占空比范围0-100

elif direction == 0:

GPIO.output(Motor_A_Pin1, GPIO.HIGH)

GPIO.output(Motor_A_Pin2, GPIO.LOW)

pwm_A.start(0)

pwm_A.ChangeDutyCycle(speed)

else:

GPIO.output(Motor_A_Pin1, GPIO.LOW)

GPIO.output(Motor_A_Pin2, GPIO.LOW)

setup()

motor_A(1,100)

time.sleep(3)

motorStop()

time.sleep(3)

motor_A(0,100)

time.sleep(3)

#释放引脚资源

motorStop()

GPIO.cleanup()

标签:树莓,引脚,LOW,Motor,output,直流电机,GPIO,PWM

来源: /lpccclp/article/details/114167415

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。