利用sin/cos原理控制步进电机转动
前言
本文主要以两相步进电机为例,为总结使用;
什么是步进电机驱动器细分控制
步进电机的运行性能与它的步进驱动器有密切的联系,可以通过驱动技术的改良来克服步进电机的缺点。相对于其他的驱动方式,细分驱动方式不仅可以减小步进电机的步距鱼
提高分辨率,而且可以减少或消除低频振动,使电机运行更加平稳均匀。
总体来说,细分驱动的控制效果最好。因为常用低端步进电机伺服系统没有编码器反应,所以随着电机速度的升高其内部控制电流相应减小,从而造成丢步现象。所以在速度和精度要求不高的领域,其应用非常广泛。细分驱动精度高;细分是驱动器将上级装置发出的每个
脉冲按驱动器设定的细分系数分成系数个脉冲输出。比如步进电机每转一圈为200个脉冲
如果两相直流步进驱动器细分为 32,那么步进电机驱动器需要输出6400个脉冲步进电机才转一圈通常细分有2.4.8,16.32,62,128,256,512。在国外,对于步进系统,主要采用二相混合式步进电机及相应的细分驱动器。但在国内,广阔用户对“细分”还不是特别了解,有的只是认为,细分是为了提高精度,其实不然,细分主要是改善电机的运行性能。
——————————————————————————————
步进电机的细分控制是由驱动器准确控制步讲申机的相电流来实现的,以二相电机为例,假设电机的额定相电流为3A,如果使用常规驱动器(如常用的恒流斩波方式)驱动该电机,电机每运行一步,其绕组内的电流将从0突变为3A 或从3A 突变到0,相电流的巨大变化,必然会引起电机运行的振动和噪音。如果使用细分驱动器,在10细分的状态下驱动该电机,电机每运行一微步,其绕组内的电流变化只有 0.3A而不是3A,且电流是以正弦曲线规律变化这样就大大的改善了电机的振动和噪音,因此,在性能上的优点才是细分的真正优点。由于细分驱动器要准确控制电机的相电流,所以对步进电机驱动器要有相当高的技术要求和工艺要求,成本亦会较高。注意国内有一些驱动器采用“平滑”来取代细分,有的亦称为细分,但这不是真正的细分,望广阔用户一定要分清两者的本质不同。
———————————————————————————————
1)
“平滑”并不准确控制电机的相电流,只是把电流的变化率变缓一些,所以**“平滑”并不产生微步**,而细分的微步是可以用来准确定位的。
2)
电机的相电流被平滑后,会引起电机力矩的下降,而细分控制不但不会引起电机力矩的下降,相反,力矩会有所增加。
电机内部结构图片
步进电机驱动原理(重要)
步进电机必须有驱动器和控制器才能正常工作。驱动器的作用是对控制脉冲进行环形分配、功率放大,使步进电机绕组按一定顺序通电。以两相步进电机为例,当给驱动器一个脉冲信号和一个正方向信号时驱动器经过环形分配器和功率放大后,给电机绕组通电的顺序为
A+ > A+B+ > B+ > B+A- > A- > A-B- > B- > B-A+ > A+
分别对应电机的1 > 2 >3 > 4 > 5 > 6 > 7 > 8 > 1
,八个状态周而复始进行变化,电机顺时针转动:;
若方向信号变为负时,原理相同,电机逆时针转动;
步进电机参数
1、步距角:收到一个脉冲转动的角度
0.9度 ——> 400个 ——> 1圈
1.8度 ——> 200个 ——> 1圈
7.5度 ——> 48 个 ——> 1圈
2、细分数 :1/2,1/4,1/16,1/32
1/16:原来一个脉冲可以使电机转一个步距角,现在要16个才能转一个步距角
如果是1.8的话,电机转一圈要200*16个脉冲
3、 同步齿轮数和齿间距(一般2mm)
齿数10-30
驱动X电机平稳转动(这里例子128细分)
这里的X电机指的是旋转平面和水平面保持一致的电机;
电机走的总步数=大步 * 细分 * 齿比 ;=200 * 128 * 4;总步数为102400;
齿比: 大齿:小齿 = 60 :15 = 4 :1;
速度电流要相匹配,速度越大,电流也要增大,否则电机会有震动或者有噪音,其实就是没有力去驱动;
1)正转
index 0,1,2…511,0,1,2,3…511…
2)反转
index 511,510…3,2,1,0,511,510…
8812 驱动芯片
补充:
1)修改预分频可以决定拉不拉长spwm,
2) timer_channel_output_pulse_value_config修改占空比
3)电流影响波的幅度,
4)计数器就是自己设的周期时长
5) diffvalue 校正波形
6)ICC1——电流大,电机很大力,掰不动; ICC5——电流小,电机没有力,容易掰动
7)prescaler 7–9.375KHZ,3–18.75KHZ 拉长频率范围
8)period和precaler 用表格计算,可用,取点时间即中断时间
9) 第0帧一般存起来不用,1帧就是一个通道;发的是512整个数据包
开始以为收几个CHND,就准备多大的数组,后来发现不对,
************ 版权所有,转载请注明出处 ************