寻迹小车
寻迹基本逻辑是最中间两个亮就前进,左边三路只要有灯亮并且中间两个不亮并且最外两路不同时亮就是歪了然后一个前进一个后退实现转弯,这里如果不是让他反向而且调pwm效果不是很好。
对于寻迹小车的数格子问题,可以尝试用最外两个传感器去用if判断进入然后用while卡住使他出格子时候再开始重新数,这样做的缺点是如果两边电机转速差别太大可能会在数格子时候跑歪,我尝试用只要最外两个传感器其中一个数不到就跳出while。但是我这里还有一个问题还没解决就是车如果沿着边缘行走格子数无法计算,但是如果想要数边缘格子数,就会导致格子数会数错。
对于与openmv传回来的颜色信息经常受读取颜色时机不对的影响一直读到底色。我这里用for循环每个1ms读一次让他读三千次,再去比数量多少起到了不错的效果。记得传回来数据的线一定要接好,stm32要与openmv供地。不然就会出现一堆奇怪问题。
对于传感器和单片机供电的先后问题导致了一开始的格子数有问题,我后面在while前面加了延时保证单片机启动一定比传感器慢。
还有就是控制舵机转动pwm一定要供地。
平衡小车
我一开始调节时候忘记pwm取绝对值导致只要pwm值是负数他就反向到最大值。导致我一直调调不好。
对于mpu6050数据读取由于我是用iic读取的所以我一开始没用定时器时候直立环的kd调节一直没有效果因为数据是连续变化所以kd一直✖️的是一个数值为零的,还有就是如果程序是放在while里面就不能用OLED。
对于直立环kd极性只要让物块向前倒小车向就没有问题。速度环的kp这里注意速度的读取一定要带方向,还有就是编码器的引脚一定要记得拉高,由于代码问题可能两个轮子极限的速度不一样,这里只要其中一个速度带一个负号就解决了。速度环的ki极性是会让轮子不断加快的。
对于平衡小车的大幅度震荡和低幅度震荡都是相对小车而言,不同小车效果不同。对于直立环kp的调节只要发现他开始出现左右震荡2~3下然后再加一点就可以了,加太多了也是不行的。可以试试kd和kp都调好再✖️0.6如果小车没有出现疲软现象那就是说明你kpkd给多了,这里小车结构不同,可能不会出现短暂的平衡。
对于调节过程中一定要经常查看速度和角度数据,有时候可能是线松了,速度数据有问题,避免调节kdkp一直瞎调。
以上是我这几周做的工程遇到的问题所做的笔记仅供参考。