stm32f1 平衡小车 建造章节(二)

大家好,本人小白一个,利用一些课外时间制作32平衡小车,博客的主要内容是记录自己在制作过程中遇到的鸡毛蒜皮的困难,以及搭配自己的制作思路。

话不多说,开始今天上午的任务。

本章节主要是想要实现小车 PID保持平衡的趋势,具体精确参数下午再调试。

第一步:让小车先动起来。

(1)先检验小车电机是否有问题,直接给电机的两个12V线供上12V和GND(没有顺序,大不了正反转,切记不要超过12V哦,烧了电机,小编可不负责任)

经过检验,电机没问题。然后通过TB6612FNG电机驱动模块驱动小车。参考连线图:

很明白,我先尝试用A电机(自己给电机命名了),IO口配置,没问题,高低电平输出正常;可是,电机就是不转。花了2个多小时查找,才发现PWMA引脚我给的低电平,也就是说PWMA控制小车转速为0,老铁,真的坑我啊。(细节决定成败)

(2)调整两个轮子按照正方向转动。

注意:PWMA的高低电平,决定AO1和AO2输出的占空比的多少;如果PWMA悬空,那么在AO1和AO2引脚测得的电压为0。

调整方法很多:基本就是先连线再对应设置引脚、先预定好引脚,再连线(小编就用的这种哦)

(3)进行PWM调速

这里我用的是PA1-->PWMA,PA2-->PWMB,对应分别是T2C2和T2C3.

这里注意定时器的内容就行了,没有其他问题(除非你没有学好定时器)。

花了快1个小时才配置好,因为好久都没用过了,快忘了。小结一下,关键点在于:arr,psc的计算公式、以及配置细节。

第二步:查看编码器模式的配置。只有配置好了编码器,才能读取电机转动的方向,为PID调节准备物质基础。

/////////////////////////刚才发生一起重大事故,希望各位同学引以为戒:两分钟之内烧了两个C8T6,没错,是烧了两个。为什么呢?第一次是由于自己的粗心,降压模块被烧了(12V供电降成5V),当然,12V电压足够干翻几个C8T6了,导致烧了第一个。经过检查,再次上了一个C8T6,结果又烧了,因为没有将那个坏了的降压模块换下来,又烧了一个(细节决定成败,必须改掉这个毛病)

算了,今天运气不好,明天晚上再做吧*—*,难受,香菇。

好了,今天继续,先是花了一个小时修复了昨天被烧坏的东西,从新接线,一切恢复到昨天的状态。

//////////////////////////

编码器模式只能由定时器 1 2 3 4的通道1,2来实现。(具体资料自行百度更好)

小纠结,开始查各种资料。

第三步:读取编码器数值。

先确定使用板子的TIM2作为小车的PWM控速,然后使用TIM3,TIM4的通道1和2 设置为编码器模式。代码比较简单,不过电机就是不转,为什么呢?有点迷。

还有,为什么不用对编码器的硬件引脚进行初始化呢?

stm32编码器会直接占用整个TIMx定时器通道,而引脚也是固定的TIMx_Ch1和TIM_Ch2,所以不需要配置通道,因为通道已经被硬件固化了。

今天有点晚了,明天满课,明天晚上再继续更新。

现在接着继续,原因是设置了PWM输出的值, 

TIM_SetCompare2(TIM2,4999);//PWMA

TIM_SetCompare3(TIM2,4999);//PWMB,却并没有设置车轮的方向,就是默认的停止状态,好比你把一辆车的油门轰到了指定位置,但是挂的空挡一样,车子肯定不会动啦。

然后愉快的加上:

AIN1=0,AIN2=1;
      BIN1=0,BIN2=1;//默认小车向前行驶

然后小车就转起来了。通过不断地调试,终于通过串口显示了编码器地数据:0
1
1
4
5
7
7
8
9
10
14
14
16
16
18
16
19
18
19
19
19
19
19
20
20
19
20
19
20
19
20
20
20
19
20
210
1
1
4
5
7
7
8
9
10
14
14
16
16
18
16
19
18
19
19
19
19
19
20
20
19
20
19
20
19
20
20
20
19
20
210
1
1
4
5
7
7
8
9
10
14
14
16
16
18
16
19
18
19
19
19
19
19
20
20
19
20
19
20
19
20
20
20
19
20
21

这一串数字是什么意思呢?这就留给小伙伴们自己猜吧,下一节揭晓答案^-^(但是这么说也不全对,随着进程的深入,我会一步一步的解释它的意思)

我曾许下十年,只为最美的遇见。我是西伯利亚小强,咱们有缘再见。

猜你喜欢

转载自blog.csdn.net/qq_41821562/article/details/88616998