树莓派驱动直流电机
感谢树老师。
直流电机
直流电机(DC电机)是一种将直流电能转化为机械能的电动机。它由电枢(有时也称为转子)和电枢磁场(有时也称为定子)组成。
在DC电机中,电枢由绕组和通电的铁芯组成。电枢绕组是由导线绕制而成,在通电时会产生电流。电枢磁场通常是由永磁体或电磁线圈产生的。当电流通过电枢绕组时,由于电磁感应的作用,电枢会受到力矩的作用,发生旋转运动。
具体来说,当电流通过电枢绕组时,根据右手螺旋定则,电流在磁场中受到力矩的作用,使电枢发生旋转。而电枢绕组与磁场的磁力相互作用,产生机械输出功。这样就实现了将电能转化为机械能的过程。
DC电机具有调速范围广、启动扭矩大、结构简单、维护方便等优点,因此被广泛应用于工业、交通、家电等领域。
树莓派与电机链接
直流电机驱动
TB6612FNG
硬件调试 PWN输出
PWM是脉宽调制(Pulse Width Modulation)的缩写,是一种常用的调制技术,用于控制电子系统中的电压或电流。
PWM通过周期性改变电信号的脉冲宽度来实现电压或电流的控制。在一个固定的时间周期内,信号的高电平时间(脉冲宽度)和低电平时间可以调节。通过改变高电平时间和低电平时间的比例,可以控制输出信号的平均电压或电流。
在PWM控制中,调制信号的周期一般是固定的,通常用一个稳定的时钟源来确定。脉冲的高电平时间可以根据需要进行调节,通过调节高电平时间的比例,可以改变信号的平均电压或电流值。
PWM在很多应用中非常常见,例如:
- 电子调光:通过改变LED的亮度,可以使用PWM控制LED的亮度级别。
- 电机控制:使用PWM可以控制直流电机的转速和方向。
- 电源调节:PWM在开关电源中广泛应用,可以实现高效的电压调节和转换。
- 控制系统:PWM可以用于控制系统中的位置、速度和功率。
总的来说,PWM是一种基于脉冲宽度的调制技术,通过控制信号的高电平时间比例来实现对电压或电流的精确控制。它被广泛应用于各种电子设备和系统中。
# coding=utf-8
import RPi.GPIO as GPIO
from time import sleep
p_ pin= 16
f_pin=18
GPIO.setmode(GPIO. BCM)
GPIO.setup(p_ pin, GPIO.OUT)
GPIO.setup(f_ _pin, GPIO.OUT)
pwm_ pin = GPIO.PWM(p_ pin, 70)
pwm_ pin.start(0)
try:
while 1:
speed = int(input("请输入速度")) * 0.390
pwm_ _pin.ChangeDutyCycle(speed)
GPlO.output(f_ pin, GPIO.HIGH)
sleep(2)
GPIO.output(f pin, GPIO.LOW)
sleep(2)
pwm_ pin.ChangeDutyCycle(0)
except KeyboardInterrupt:
pwm_ pin.stop(0)
GPlO.cleanup()
对模块的使用
在树莓派上使用GPIO输出PWM(脉宽调制)信号,可以使用Python的 RPi.GPIO
库来实现。以下是一个简单的示例代码,演示如何在树莓派上使用GPIO输出PWM信号:
import RPi.GPIO as GPIO
import time
# 设置GPIO模式为BCM
GPIO.setmode(GPIO.BCM)
# 指定使用的GPIO引脚
pwm_pin = 18
# 设置GPIO引脚为输出模式
GPIO.setup(pwm_pin, GPIO.OUT)
# 创建PWM对象,第一个参数为GPIO引脚号,第二个参数为频率(Hz)
pwm = GPIO.PWM(pwm_pin, 100)
# 启动PWM,第一个参数为占空比(0-100),即脉冲高电平时间所占百分比
pwm.start(50) # 这里是以50%的占空比启动PWM
try:
while True:
# 改变PWM的占空比,实现不同的输出
duty_cycle = float(input("请输入占空比(0-100):"))
pwm.ChangeDutyCycle(duty_cycle)
except KeyboardInterrupt:
pass
# 停止PWM
pwm.stop()
# 清除GPIO设置
GPIO.cleanup()
需要注意的是,在运行该代码之前,需要先在树莓派上安装 RPi.GPIO
库,可以通过在终端中运行 pip install RPi.GPIO
命令来进行安装。
上述代码中,首先导入了 RPi.GPIO
库,并设置GPIO的模式为BCM。然后指定使用的GPIO引脚,这里以GPIO 18为例。
接下来,通过调用 GPIO.setup()
函数将指定的GPIO引脚设置为输出模式。然后,创建一个PWM对象,指定GPIO引脚和频率(Hz)。可以通过调用 pwm.start(duty_cycle)
方法启动PWM,并设置初始的占空比。
在 while
循环中,可以通过从用户输入获取新的占空比,并使用 pwm.ChangeDutyCycle(duty_cycle)
方法来改变PWM的占空比,从而实现不同的输出。
最后,当程序被中断(通过键盘输入Ctrl+C)时,停止PWM并进行清理操作。