首先说明:是用于舞台灯光控制马达。2相4线电机,1.8度。最高速必须能达到3.5~4圈每秒。慢速也要极慢,不能丢步。而且因为驱动电流很大(很大力,惯性很大),必须用加减速。用AVRmega168,12M晶体。
我有这样的分析,假如速度要4圈每秒,最大角度12圈,就是12*200=2400步。为了平滑,采用64细分,就是2400*64=153600细分步。
速度方面,4圈每秒,每细分步时间是1/4/200/64=19.5微妙,当他20微妙每步。
问题就在这里,CPU同时处理2个马达,无法完全用细分步来跑(已经用此芯片的快速pwm功能,查表修改定时值)。为了能让他从任意速度变化成任意速度和角度又不丢步,必须有很好的加减速控制。
我曾经试过几个方法都不成功。第一是永远用8细分来跑,结果是勉强合格,但是跑的慢会很卡,不行。第二是永远用64细分控制,速度不够快。
然后是把细分步数,执行次数,定时器时间等分成很多个级别,分级跑,结果是目标位置和速度配合不起来。
在这里想请教高手有什么高见?如何控制加减速,而且步数不能错。 |