树莓派控制直流电机

古月金真

1、直流电机

直流电机是一种将直流电能转换为机械能的装置,被广泛的用于驱动各种设备,如电风扇、遥控小车、电动车窗等,在控制设备运转领域中,它是不可或缺的一种设备。

小型直流电机的的电压范围通常是1.5V~30V,使用两根导线连接到直流电源上就能让电机转动起来,电压越高转得就越快。每个直流电机都有一个推荐电压,超出推荐电压太多容易导致电机被烧毁,而供电电压太低则转不起来。通过交换两根连接在电机上的导线顺序(实际上是改变电源的正负极),可以改变电机的转向。直流电机属于高功耗元件,不可以直接使用树莓派进行驱动,因此我们需要使用一个外部电源。

小型直流电机通常输出很高的转速和较低的扭矩,在作为机器人的驱动装置时,一般需要连接一个变速器,将其转换为低转速、高扭矩,使之有足够的力量驱动机器人。
下图为一个普通的直流电机图片。
在这里插入图片描述

2、双H桥直流电机驱动模块(L298N)

H桥(H-Bridge)是控制直流电机的常用电路,因其电路形状酷似字母H而得名,可以控制直流电机的转速和方向,典型的H桥芯片有L293D、L298N等,我们以L298N为例进行介绍,下图是一款典型的L298N双H桥直流电机驱动模块。
在这里插入图片描述
在这里插入图片描述

  • 采用L298N双桥直流电机驱动芯片
  • 工作电压范围5V~35V,如果需要从模块内取电,则供电范围为7V—35V。
  • 峰值输出电流2A。
  • 每个通道有一个使能输入端。
  • 可以驱动两个直流电机或者一个四线步进电机。

L298N双H桥直流电机驱动模块的引脚可以归纳成电源、控制和输出等三大类,下面是各类引脚的功能说明。

  • 电压类引脚

+12V输入:L298N芯片的电源正极,模块上标称+12V,但实际范围可以是5V35V,如果需从模块内取电,则其范围为7V35V。
  GND:L298N芯片的电源地,使用的时候应该把树莓派的GND接到这里,即两者需要共地。
  +5V输出:L298N芯片输出的5V电源,可以给外部设备供电,使用的时候需要用跳线把5V输出使能端短接起来。

  • 控制类引脚

    ENA、ENB:A、B通道的使能端,高电平有效,可以用PWM来实现调速。使用时,可以接到树莓派的GPIO上,实现用程序进行控制。
    IN1、IN2、IN3、IN4:IN1、IN2为A通道的控制输入,IN3、IN4为B通道的控制输入。

树莓派可以很方便地用于控制直流电机风扇,通常我们会使用GPIO引脚来输出PWM(脉宽调制)信号以调节风扇的速度,并通过L298N、ULN2003等驱动模块保护树莓派免受电流冲击。下面是一个简单的Python示例代码,演示如何利用RPi.GPIO库和pwm技术来操作连接至特定端口的直流电机风扇。 ### Python 示例代码 ```python import RPi.GPIO as GPIO # 导入GPIO控制模块 from time import sleep # 导入time.sleep函数用于延时等待 # 设置使用的针脚编号模式 BCM 或 BOARD (这里选择BCM) GPIO.setmode(GPIO.BCM) # 定义将要使用的实际硬件管脚 fan_pin = 18 # 假设我们将风扇接到第18号pin上 frequency = 50 # PWM频率(Hz),对于大多数电机来说50Hz足够了 def setup(): GPIO.setup(fan_pin, GPIO.OUT) # 将指定pin设置为输出模式 global pwm_fan # 创建全局变量以便其他地方引用 pwm_fan = GPIO.PWM(fan_pin, frequency) # 初始化PWM实例并设定其工作频率 pwm_fan.start(0) # 开始PWM,默认占空比为零即关闭风扇 try: setup() # 执行初始化配置过程 while True: # 进入无限循环体 print("正在加速...") for duty_cycle in range(0, 101): # 占空比从0逐渐增大到100% pwm_fan.ChangeDutyCycle(duty_cycle) sleep(0.02) # 每变化一次停留较短时间 print("保持全速运行一段时间") sleep(5) # 让风扇全速运转几秒钟 print("减速停止中..") for duty_cycle in reversed(range(0, 101)): pwm_fan.ChangeDutyCycle(duty_cycle) sleep(0.02) # 再次让风扇慢慢停下来 except KeyboardInterrupt: pass # 如果用户按下Ctrl+C则退出主程序而不报错 finally: pwm_fan.stop() # 确保最终会停止PWM波形的发生 GPIO.cleanup() # 清理释放所有已分配给应用程序使用的资源 ``` 上述代码实现了对一个接在BCM Pin 18上的直流电机风扇的基本速度调控功能,在这个过程中我们还学习到了关于PWM的一些基础知识以及怎样安全有效地控制外设设备。 #### 注意事项: - 在开始之前,请确认已经安装好`RPi.GPIO`库 (`pip install RPi.GPIO`) - 此段代码只适用于真实的树梅派环境测试;如果你是在PC或其他非Raspberry Pi环境下尝试此段代码,则无法正常运作。 - 使用外部电源供电给您的电机非常重要,不要试图直接由树莓派提供大功率负载所需的电力供给,这可能会损坏你的板卡!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值