
看了你追问的,原来是四路每一路都产生变化的波形。那个也好办。可以通过计算,把这几个波形统一起来成一个周期,比如开始0.5ms到了,让定的值取反,再加19.5再取反,再加1.3Ms再取反,再加18.7ms再取反...然后一直这样把几个都写完。
还有种方法,来改变第一个pwm的设定值。比如放数组里一共5个设定值,分别代表你设定的高电平时间,依次替换第一个定时器里面的中端时间即可。
当然,前两种都差不多,还有一种方法供你扩展:就是用两个定时器,然后按照时间去匹配修改。当然,51单片机那精度就不说了,不太确信可以达标,一个定时器进中断了,另一个就要停一下。。
BTW,个人感觉51的单片机没有很好的pwm模块,这样写了Pwm程序,别的就干不了了。建议用用带epwm模块的mcu,直接调用epwm和epwm中断,节省cpu资源,可以多写很多程序。
四轴主要分为硬件驱动部分,和算法部分,首先我给你介绍一下驱动部分,现在四轴飞控自己做,一般使用stm32飞控 103系列的,f4没必要,主频快,有些浪费了,上图像识别又不行,stm32涉及的驱动主要是IIC(驱动mpu6050和磁力机以及气压计)SPI(主要是驱动nrf无线传输,但是也可以用在mpu6000),再就是串口,这个就是用在gps中,这些只是外部传感器的应用,内部设备主要使用四路接受pwm,和四路控速pwm,这需要用定时器,再就是eeprom这个也要用到,以及一些其他的部分。这是你需要张我的驱动部分,算法部分主要是三个,第一个是滤波技术,需要用在姿态数据处理,ahrs算法解算姿态,再就是pid这里pid一般用双环串级pid,单级的缺点很多,自己试一试可以。其实你想做到这一步还需要有不错的C语言基础以及扎实的调节驱动能力以及算法的参数,另外调节pid也是和有技巧的,建议多看看调节pid心得,多调试然后对照别人的理论就会掌握。在一个你需要做的就是掌握pcb的制作,会使用ad软件,这是pcb的入门,花几块板子练一下手,然后就可以制作飞控主控版了。加油,本科生能做出来是完全可以的,大三,大二已完成全部工作,有心不难。我当初用了一个月时间从零开始,硬件设计(没什么技术含量好么……),到实现不需要人去控制的定点悬停,外加一个有模有样的地面站软件,飞得还算可以。但是,后面花了一年多时间在做一些看似重复的工作,包括算法的更新,系统级设计与优化,现在研究生还在这个坑里,我现在我也只能说飞得还算可以。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)