单片机控制步进电机T型加速实现原理

来源:互联网 发布:s7200数据块使用 编辑:程序博客网 时间:2024/05/18 02:48


单片机控制步进电机是通过时钟计数器计算次数产生脉冲

T型加速转换到数学计算

计数器每秒钟计数c=1000000次
脉冲频率从 v0 = 4K 到v = 40K次  v0时每个脉冲需要计数 m0 =1M/4K = 250 v时每个需要计数m1 = 1M/40K/ 25次
加速度 a = 36K 每个计数单位增加 da = a/c 个
加速时间 t = v/a = 0.1秒
求脉冲频率从4K到40K这个过程中需要产生多少个脉冲,每一个脉冲需要计数多少次

假设在加速过程中产生了n个脉冲,设每个脉冲计数m次

0 =< i <=n
v(i + 1) = v(i) + da*m(i) = v(i) + (a/c) *(c/vi)= v(i) + a/v(i)


java验证代码如下


public class test {
 public static void main(String[] args) throws InterruptedException{
  long v0 = 4000;
  long v = 40000;
  long a = 36000;
  long c = 1000000;
  int i = 1;
  double mi = (double)c/v0;
  double count = 0;
  double vi = v0;
  while(vi < v){
   vi += a/vi;
   mi = c/vi;
   i ++;
   count += mi;
   System.out.println("i = " + i + ", v(i) = " + vi + ", m(i) = " + mi + ", count = " + count);
  }
  System.out.println("step = " + i + ", count = " + count);
 }
}



执行结果:

i = 21993, v(i) = 39993.835869814175, m(i) = 25.003853175152972, count = 999603.7780146872
i = 21994, v(i) = 39994.73600852848, m(i) = 25.003290427689283, count = 999628.781305115
i = 21995, v(i) = 39995.63612698388, m(i) = 25.002727718220473, count = 999653.7840328332
i = 21996, v(i) = 39996.536225181735, m(i) = 25.002165046742274, count = 999678.7861978799
i = 21997, v(i) = 39997.43630312342, m(i) = 25.00160241325041, count = 999703.7878002932
i = 21998, v(i) = 39998.336360810295, m(i) = 25.001039817740605, count = 999728.7888401109
i = 21999, v(i) = 39999.23639824373, m(i) = 25.000477260208587, count = 999753.7893173711
i = 22000, v(i) = 40000.1364154251, m(i) = 24.99991474065008, count = 999778.7892321118
step = 22000, count = 999778.7892321118




0 0