LOOP: MOV A#1110000B;在A寄存器中置入11100000
RR A;右移位
AJMPLOOP;循环右移位
这样在寄存器A中存储的值会有如下循环:
11100000→01110000→00111000→00011100→00001110→00000111→10000011→11000001→11100000
其奇数位有如下循环:
1000→1100→0100→0110→0010→0011→0001→1001→1000
其偶数位有如下循环:
1100→0100→0110→0010→0011→0001→1001→1000→1100
将A输出到P0端口 , 则奇数位和偶数位正是我们所需要的步进电机输入信号 。
而事实上每个电机的动作是不同的 , 为此我们在RAM中为每个电机开辟一个byte的状态字节用以循环移位 。 在每一个电机周期里 , 根据需要对每个电机的byte进行移位 , 并用ANL指令将两个电机的状态合成到一个字节里输出 , 此时的A同时可以控制两个电机了 。
步进电机的速度由驱动脉冲的频率决定 , 移位的周期不同 , 电机的速度也就不同了 。 前面提到的电机周期 , 应该取各种可能的周期的最大公约数 。 换句话说 , 一旦电机周期取定 , 每个电机移位的周期应该是它的倍数 。
在程序中 , 对每个电机的相应时刻设定相应的分频比值 , 同时用一个变量进行加一计数:每到一个电机周期若计数变量<分频比值 , 则计数变量加1;若相等 , 则移位 , 计数变量清零 。 这样就实现了分频调速 , 可以让多个电机同时以不同的速度运转 。
另外 , 也可以采用传统的查表方式进行驱动 , 程序稍长 , 但也比较稳定 , 这种方法非常适合三相步进电机 。
?步进电机的智能驱动方案
步进电机有可以精确控制的优点 , 但是功耗大、效率低、力矩小 。 如果选用大功率步进电机 , 为了降低功耗 , 可以采取PWM恒流控制的方法 。
基本思路是 , 用带反馈的高频PWM根据输出功率的要求对每相恒流驱动 , 总体电流顺序又符合转动顺序 。 需要力矩小的时候应及时减小电流 , 以降低功耗 。 该方案实现的电路 , 可以采用独立的单片机或CPLD加场效应管驱动电路以及电流采样反馈电路 。
- 交货期|全球半导体交货期显著延长
- 华为|这就是实力!华为大量研究项目曝光!
- 红包|微信提高个人红包限额 并增加三个情人节限定状态
- 飞利浦·斯塔克|「手慢无」高刷2.5K屏 小米平板5Pro促销送快充
- 闪存|日本的智能机使用情况,是苹果多还是安卓多,哪个牌子最受欢迎?
- 苹果|国产手机冲击全球高端市场,雷军官宣对标苹果,库克紧张了
- realme|三星、苹果远远落后,国产黑马量产新技术,150W快充刷新行业纪录
- 佳能|87岁挂帅救火,亲手终结自创单反时代,佳能“诸葛亮”,难!
- 华为mate|华为Mate50系列不孤单,苹果遇麻烦,外媒:替华为“冲锋”?
- 苹果|有没有人觉得苹果手机特别难用?