Skip to content

Latest commit

 

History

History
56 lines (30 loc) · 5.06 KB

bugs.md

File metadata and controls

56 lines (30 loc) · 5.06 KB

bug日志

这里列出来我们组遇到的可能比较头疼、耗时较久或比较细节的问题,希望能给未来的人避开一些坑。

  1. 如果你的电路系统不稳定,请考虑绝缘问题。SleepNO1队此前的泵用的铁连接件和铝架相连,虽然泵能正常工作但是会影响到单片机,导致所有pwm输出都不稳定,麦轮和舵机都不时抽风。将泵和铝板绝缘后系统稳定性++.还是不行就考虑供电问题吧!尝试给单片机/上位机独立供电。

  2. 关于光电门,注意NPN型大概率是用不了的,最好用PNP型。原理如下:

    NPN型是共阳极测量,光电门的供电电压一般最低是5v,所以意味着单片机必须对一个5v参照电平进行测量。但是你在引脚上配置EXTI外部中断时,你会发现就算配置上拉电阻,单片机内部也只有输出3.3v的高电平做参照,不满足共阳极测量的要求。而使用PNP型,是对地测量输出,将光电门供电电源与单片机共地即可。此时配置引脚外部中断,选用下拉电阻配置即可(注:不可以是悬空)。

配置完光电门输出引脚EXTI后仍有一个要注意的地方,就是这个中断在单片机开机那段时间也会触发(不由光电门引起,目前不知道是为啥)。不过我们有解决方案,在进入中断后读取一下该引脚是高电平还是低电平即可判断中断是不是由光电门引起。

  1. 如果你使用单片机串口和某模块通信,但是接线的时候除了RX/TX外还有5V/GND,那么这个模块应该和单片机既共阳极,也共地。(显然要共地)不共阳极的话通信会失败,比如你在用电脑给单片机烧写程序时,单片机供电5V来源于你的电脑,而你的模块供电使用的是车上的5V电源,那么这就是一个没有共阳极的情况,你的模块可能收不到单片机的信号。但是你如果想测试,接一个TTL转USB,用电脑上的串口调试助手,会发现是可以收到单片机的信号的。其实,此时电脑和单片机共阳极,当然能收到信号,测出来通信也没问题的。但是你reset单片机之后发现你的某模块还是没收到信号,不要疑惑,只是他没和单片机共阳极。

  2. 关于单片机程序烧写问题:烧写时分电板应断电。烧写后记得按reset按钮。这部分虽然简单,但是很容易出事(bushi):

①SleepNO1队曾经某天一直烧写不了程序,后来发现是ST-link上的SWDIO和SWCLK接反了,但是前一天的时候是可以烧写程序的,怀疑可能是有人经过的时候把ST-link碰掉了,想接回去但是接错了。

②SleepNO1队曾经某天一直烧写不了程序,SWDIO和SWCLK都没接错,后来发现是ST-link这端杜邦线松了。

③SleepNO1队曾经某天烧写不了程序,检查了接线发现没问题,按了114次reset拔插了514次ST-link之后可以烧写了。

④SleepNO1队曾经某天能烧写程序但是bug一直改不好,build了191次工程,按了981次reset,Load了0次。

  1. (头疼且耗时1周多的bug)SleepNo1队曾在调底盘时遇到如下问题:

开环控制:ok

闭环控制:单独控制一个轮子ok,(1,3),(1,4),(2,3),(2,4)的轮子组合ok,(1,2),(3,4)的轮子组合不ok。不ok的症状表现为:一个轮子在转时,另一个轮子就不会转(也可看到它尝试在转但是会立即刹停,处于这种反复状态),或者表现为两个轮子速度都在震荡发散(此处须及时断电)。

怀疑过驱动板损坏,怀疑过单片机控制有问题,怀疑过驱动板供电电源不稳定,但都不是。

最后检查结果为霍尔编码器接反了。电机1和2的霍尔编码器对调了,3和4的也对调了。后面就好了。

提供一点经验:调底盘时如何把接线改正确的方案:(假设使用有反馈器的电机)

如果电机在反向加速,请把控制电机方向的IN1和IN2口对掉(或者调换电机正负极)。

如果电机在正向加速,请把该电机霍尔编码器AB相对调。

如果电机反向速度收敛,把上面两条都做了就行。

速度环pid的话,如果只有p参数,速度最后不会收敛到设定值(加了i参数才可以)。如果你没加i参数但是发现有的轮子速度在设定值,请检查霍尔编码器(SleepNO1直到看到有个轮子转的比其他快才想起来这事,qwq!)

  1. 2024.8.30回去调通信一下午,愣是没想出来为啥单片机没法收数据,死活进不去中断函数,最后查完发现usb转ttl坏了,无语至极,遂写于此。一气之下把stlink也烧掉了,哈哈。

  2. 2024.10.2发现循环队列指针写的是char,QUEUE_MAX_LEN又大于128,char溢出变成负数卡住任务队列了。现已修复。

经验总结

1.在和机械臂的uart通信中,单片机5v请使用电源降压得到。笔记本提供的5v不行,要共阳极

2.所有单元共地

3.电机驱动板需刹车0.1s后再换向(不是必须的,但是请注意看驱动板的使用说明是否有这一条)

后后记

好像没有录到调试成功的视频qwq...