电赛练习随笔 2017年电赛 板球平衡题目

先感谢伟大的开源精神  stm32工程参考正点原子例程 opencv参考了很多大神的帖子 PID原理及实现参考平衡小车之家

感谢@王向阳 的板球思路 串口通信协议参考匿名四轴   推荐一个超好用的串口助手 @猫猫串口助手

 

昨天莫名其妙板球就可以跑了,本来还感觉没什么希望 就一个PD位置环 30帧摄像头 由于自己写的串口延迟问题 控制环频率降到25Hz(此处说一下 受平衡小车之家例程思维限制 本以为c8t6只有四个定时器 只能完成四个任务, 其实不然 PWM输出与定时器更新中断是完全独立的 定时器1完全可以输出四通道PWM+配置一个定时中断)

串口本来使用中断接收 判断帧头帧尾 后来误码率实在太高 又学习了一种 串口空闲中断接收 效果非常好(串口这里有一个坑 我只在c8t6上见过 别的暂时不清楚 ,开启串口接收中断后 ORE中断位也会随之开启 即使没有发生串口中断 你也有可能死在串口中断里。。。这个费了我大半天的时间重写串口 走了不少弯路)

之前知道这里有个坑但是没有在意:STM32 在SWD下载期间 IO口电平处于一个很迷的状态 造成调试过程中 一点下载程序 舵机疯狂输出。。。整个装置惨不忍睹  本来希望通过st—link的 RESET电平 触发继电器 在下载期间将舵机断电 但是不知道是不是因为我的盗版STlink。。并没有成功。 后来发现 下载期间电平与下载前IO模式寄存器配置有关 利用这点 设置一个推挽输出的IO 外接三极管驱动 常闭继电器 程序运行后 手动将IO置低  这样就可以在下载期间驱动继电器完成断电操作。。 

今天实现了PID在线调参  心情愉悦。在匿名四轴上位机的支持下 可以很明了的看到波形,在根据串口协议写函数时 浮点数真的是把我玩坏了(上课时候C语言没有认真学,浮点数是不可以通过==去比较的 一定要小心),本身匿名V2.6版本的上位机是不支持浮点数PID的 我采用了三个通道传输整数位(浮点数取整),三个通道传输小数位(X100 转为u8发送)完美收工。

PS.如果有大神擅长PID自动整定的还请指点小弟一下 手调PID都快哭了

 

最后更几张图片

X轴 Y轴 阶跃响应

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值