欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要电机控制


【STM32智能车】电机控制-LMLPHP

PWM

我们要控制电机,就要先了解一下PWM。

PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。其具有两个很重要的参数:频率和占空比。

详情请查看:PWM如何控制直流电机

PWM基本用法:

from pyb import Pin, Timer

现在我们可以通过以下步骤来使用pyb.pwm模块:

  1. 创建一个定时器对象
tim = Timer(4, freq=1000)

其中 Timer() 函数用于创建一个定时器对象,并且可以选择性地指定频率。

  1. 使用定时器对象创建一个PWM通道
channel = tim.channel(1, Timer.PWM, pin=Pin("X1"), pulse_width_percent=50)

在此示例中,我们创建了一个PWM通道,位于引脚X1上,并且初始占空比为50%。

  1. 修改占空比
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开发板自带电机驱动,其他没有电机驱动的板子,要额外弄一个电机驱动板哦。
【STM32智能车】电机控制-LMLPHP
引脚说明
ZTMR电机驱动电路。注意,这里的引脚不能改哦。
【STM32智能车】电机控制-LMLPHP

基本控制

原理图比价复杂,专业人能看懂,我们只需要看下面引脚说明即可。下图是开发板标号对应的内部引脚。

查看ZTMR原理图可知

基本状态

我们在这里之控制一个电机,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电机口。
【STM32智能车】电机控制-LMLPHP
通电即可
【STM32智能车】电机控制-LMLPHP

智能车最最基础的控制就是驱动电机(简化了,实际情况更复杂。)我们先了解了单个电机的控制后就可以进入智能车专题了。

06-30 21:43