装了滑轨,云缝匆匆拍了一张,拉线很明显,检查下南北方向偏了很多,但是拉线星轨螺旋跳动。
分析下,可能是滑轨阻力小,放大了步进的震动造成的。
改写下程序,改为八拍细分,手摸上去感觉震动确实好点,等云散了再式。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;//按键一启动正转
sbit k2=P3^3;//按键三启动反转
sbit k3=P3^4;//按键三停止
sbit k4=P3^5;//按键四加速正传
uchar code ffw[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //反转
uchar code rfw[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //正转
void delay(unsigned int i)//延时
{
while(--i);
}
void motor_ffw()
{
uchar i;
uchar j;
for(i=0;i<5760;i++)//丝杆转120mm2个钟头
{
if(k3==0)
break;
for(j=0;j<8;j++)
{
P1=ffw[j];
delay(150);//这个数字故意让反转加速,网上看到一段改进漂移对极轴方法,用照相镜头在赤道仪关闭时拍一段星轨,然后同样条件下打开赤道仪拍一段星轨,中天和东西地平各一次,对比星轨是否重合可以精确判断极轴位置。
}
}
}
void motor_rfw()
{
uchar i;
uchar j;
for(i=0;i<5760;i++)
{
if(k3==0)
break;
for(j=0;j<8;j++)
{
P1=rfw[j];
delay(287);//反复调试
}
}
}
void motor_rrfw()
{
uchar i;
uchar j;
for(i=0;i<5760;i++)
{
if(k3==0)
break;
for(j=0;j<8;j++)
{
P1=rfw[j];
delay(150);
}
}
}
void main()
{
uchar r,n=128;
while(1)
{
if(k1==0)
{
for(r=0;r<n;r++)
{
motor_ffw();
if(k3==0)
break;
}
}
else if(k2==0)
{
for(r=0;r<n;r++)
{
motor_rfw();
if(k3==0)
break;
}
}
else if(k4==0)
{
for(r=0;r<n;r++)
{
motor_rrfw();
if(k3==0)
break;
}
}
else
P1=0xfe;
}
} |