Arduino 控制步进电机的转速随时间按正弦规律变化

下面这段Arduino代码可以用的前提条件是,你用的步进电机的驱动器只需要你给定速度(脉冲时间间隔)和方向即可(推荐用这种驱动器),不需要你具体地指定A+,A-,B+,B-四根线分别是高电平还是低电平(这种驱动器真TM难用)。


//转角θ=-ANcos(wt),转速V=ANwsin(wt)  
float w=3;  
int N=100; //N是半个周期的脉冲数,正比于正弦函数的振幅  
           //如果乘积Nw太大,步进电机就会丢步  
float dt[400]={0}; //脉冲的时间间隔  
int k;  
const byte pinSPEED=5;
const byte pinDIREC=6;
  
void setup() {  
pinMode(pinSPEED,OUTPUT);  // 5号引脚发送PULSE(控制速度)  
pinMode(pinDIREC,OUTPUT);  // 6号引脚指定SIGN (控制方向)   
int dtMAX=30;  
float t=0;  
  for(k=1;k<=N;k++)  
  {dt[k]=(1.0F/sin(k*PI/(N+1))> dtMAX ? dtMAX : 1.0F/sin(k*PI/(N+1)));  
//如果两个脉冲的时间间隔超过预设的dtMAX,就认为它是dtMAX  
//dtMAX的值可以根据需要自行修改  
  t=t+dt[k];}  
//for循环结束后,t代表数组dt的前N项的和    
  for(k=1;k<=N;k++)  
  {dt[k]=PI*dt[k]/(w*t);}  
}  
  
void loop() {  
digitalWrite(pinDIRE
  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值