PID控制见上图,PID_Reset的作用是设置参数,PID_Calc则是控制输出函数:
驱动电路如下:
基于PWM控制实现正转和反转的功率输出,IN2\IN1接两个PWM引脚。这里就是布线要求严格一点,PAD上要多铺过孔,大电流通过的同时,减少分布参数,较小电磁干扰,然后电容C1比较关键,必须使用快恢复二极管,包括做开关电源也是这里处理不好,输出就不好看。布线也是一个经验问题。
之后,通过无线蓝牙调试具体的参数,基本做到:转向反应快,超调小,控制平滑,就可以。
做到这种曲线,波动和偏差尽可能小。但是,系统的调节能力比较弱,慢速系统的症结。
第三天:
我们弱化一下PID部分吧。直接将上层的任务调度层。因为实现时间太短。无法做复杂的任务调度管理。
我实现了上面两个函数,就是一个单线程调度器,将任务函数f插入*Task中,然后TaskRun作为定期检查函数,定期检查函数运行:
实现三个功能:
1.是否触发函数(基于时间还是基于事件);
2.函数是否使能;
3.是否注销函数;
然后运行函数队列;
所以这里需要有一个非常严格的时钟函数,为*Task做标定。