如何使步进电机罗盘通过360度

时间:2018-11-09 23:59:30

标签: arduino

你好,我正在为飞行模拟器建造一个湿指南针。我目前有一个步进电机可以在模拟器上很好地运行,但是在360度到0度的交叉点上,步进会进行完整的反向360定位。

我的问题...任何人都可以帮助我创建代码,以使从360到0的线性交叉在两个方向上起作用。

模拟器输入浮点值,该值是360度之外的一个度。 172.13。我的步进器每整转有4076步。您将在下面的代码中看到数学。我正在使用AccelStepper库。

void ProgOut(byte id, float val) {
switch (1) {
case 1:  

if (val)
        { stepper1.moveTo(val * 11.3222222);         } 
         
        stepper1.run(); 

break; }}

我尝试过这样的事情:

void ProgOut(byte id, float val) {
switch (1) { 
case 1:  
if ( stepper1.distanceToGo () >= 4064){
          stepper1.moveTo(4076);
          stepper1.setCurrentPosition(0);
}
    else if (val)
        { 
                
                stepper1.moveTo(val * 11.3222222);         
        } 
         
        stepper1.run(); 

break; }}

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您已经找到了步进电机的分辨率,则只需执行一个简单的转换任务即可:

const float resolution  = xx.xx; // put your step resolution here
int step_degree(float desired_degree){
    return (desired_degree/resolution);}

可以通过致电使用

stepper.step(step_degree(40)); //rotate 40 degree.

因此,在您的情况下,如果希望它从360平稳过渡到0,则只需以大于360度的角度传递步幅即可。