里程计(一) 数学模型及STM32实现

文章详细介绍了如何使用STM32单片机通过L298N驱动板控制电机,包括接线、定时器的使用以及PWM调速。同时,讲解了电机控制逻辑和编码器解码原理,以及基于编码器的轮速里程计数学模型。最后,提到了STM32工程源码的应用。
摘要由CSDN通过智能技术生成

一、首先确保接线和硬件没问题,并确定控制逻辑

        测试单片机-驱动板(L298N)-电机连线是否接通:控制板IN1,IN2一个接3.3V一个接GND,ENA默认使能;控制板IN3,IN4一个接3.3V一个接GND,ENB默认使能。

        在电机已经安装完毕的情况下,分别记录小车前进时驱动器IN1、IN2、IN3、IN4的逻辑电平;本车:IN1、IN2控右电机且1高2低正转,IN3、IN4控左电机且4高3低正转;

二、简单的介绍下定时器吧,无论是电机调速所需的PWM还是编码器(码盘)解码都需要定时器

        STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。

        划重点,为什么使用定时器?因为定时器的运行不占用CPU计算资源!

三、用单片机控制电机

        1.1先用 TIM3的两个(因为有两个电机)通道CH1(PA6)、CH2(PA7)输出PWM  参考我的另一篇文章;分别接ENA和ENB

        使用的电机驱动板控制逻辑:

         1.2  另外使用4个引脚(PG0、1、2、4)进行输出控制,分别接IN1、IN2、IN3、IN4,小车向前行走配置如下:

 生成代码后需要在main.c开启PWM,下载代码后理想情况下差速底盘会向前行进。

 四、轮速里程计数学模型(两轮差速)

4.1  AB相编码器波形输出原理图   参考

4.2   结合我使用的硬件参数:基础脉冲11,减速比34,175rpm(转/s)。并且程序用4倍频解码(一个脉冲周期能捕获4个信号)

        假设t时间内输出了y个信号,求电机转的圈数x:  y=4*x*34*11(1),则速率x':x'=x/t(2);左右轮子的转速:\wp _{l}=2*3.14*x'_{l}  ,\wp _{r}=2*3.14*x'_{r}(3)

4.3   小车的速度及航迹推演:

将(2)(3)代入v和w的计算式,可消除t,得\bigtriangleup d=3.14*r*x_{l}+3.14*r*x_{r},\bigtriangleup \theta =3.14*r*x_{l}/l-3.14*r*x_{r}/l

补充:y为利用滴答定时器(毫秒级)每隔一段时间t进行读取定时器的捕获值。

至于为啥用滴答而不使用TIM定时器,可参考chatGPT给出的回答

 

五、STM32工程源码

(待上传到gitee,后续更新链接) 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CPU疼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值