【STM32智能车】电机控制
- PWM
- PWM基本用法:
- 电机驱动
- 基本控制
- 基本状态
欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要电机控制
PWM
我们要控制电机,就要先了解一下PWM。
PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。其具有两个很重要的参数:频率和占空比。
电机PWM驱动可以使用单片机、FPGA或电机专用的PWM芯片来实现,可以对电机进行精确的控制和调节。相比于其他传统的电机驱动方式,电机PWM驱动具有效率高、响应快、稳定性好等优点,因此被广泛应用于各种电机控制系统中,例如电动汽车、工业自动化设备、家电等领域。
详情请查看:PWM如何控制直流电机
PWM基本用法:
from pyb import Pin, Timer
现在我们可以通过以下步骤来使用pyb.pwm模块:
- 创建一个定时器对象
tim = Timer(4, freq=1000)
其中 Timer()
函数用于创建一个定时器对象,并且可以选择性地指定频率。
- 使用定时器对象创建一个PWM通道
channel = tim.channel(1, Timer.PWM, pin=Pin("X1"), pulse_width_percent=50)
在此示例中,我们创建了一个PWM通道,位于引脚X1上,并且初始占空比为50%。
- 修改占空比
channel.pulse_width_percent(75)
我们可以使用 pulse_width_percent()
方法来更改占空比。
基本使用
from pyb import Pin, Timer
# 创建定时器对象
tim = Timer(4, freq=1000)
# 创建PWM通道
channel = tim.channel(1, Timer.PWM, pin=Pin("X1"), pulse_width_percent=50)
# 修改占空比
channel.pulse_width_percent(75)
电机驱动
PS:ZTMR开发板自带电机驱动,其他没有电机驱动的板子,要额外弄一个电机驱动板哦。
引脚说明
ZTMR电机驱动电路。注意,这里的引脚不能改哦。
基本控制
原理图比价复杂,专业人能看懂,我们只需要看下面引脚说明即可。下图是开发板标号对应的内部引脚。
引脚 | 说明 |
---|---|
B10 | 只有为高电平时,马达才会转 |
B8 | PWM控制A电机 |
B9 | PWM控制B电机 |
B12 | A0 |
B13 | A1 |
B14 | B0 |
B15 | B1 |
查看ZTMR原理图可知
引脚 | 定时器Timer | 对应通道CH |
---|---|---|
B8 | TIM10 | CH1 |
TIM4 | CH3 | |
B9 | TIM4 | CH4 |
TIM11 | CH1 |
基本状态
我们在这里之控制一个电机,1个电机有3种状态:正转,反转,停止。so,代码如下
#main.py -- put your code here!
from pyb import Pin,Timer
cs = Pin('C8',Pin.OUT_PP) #C8设置为输出引脚输出高电平
cs(1)
ch1 =None
ch2 =None #初始化
#A电机正反转
p1 = Pin('B8')
tim1 = Timer(10, freq=120)
ch1 = tim1.channel(1, Timer.PWM, pin=p1)
ch1.pulse_width_percent(100)
A0 = Pin('B12',Pin.OUT_PP)
A1 = Pin('B13',Pin.OUT_PP)
A0(1) #A0值:0 0 1
A1(0) #A1值:0 1 0
#状态: 停 状态1正转 状态2反转
#不能同时为1
#正反转需要看位置调换
ZTMR开发板提供了2个电机接口,A电机,B电机。
为了展示效果,我把电机插入到A电机口。
通电即可
智能车最最基础的控制就是驱动电机(简化了,实际情况更复杂。)我们先了解了单个电机的控制后就可以进入智能车专题了。