发一个星野赤道仪52单片机C语言控制代码
本帖最后由 yuersthe1 于 2015-3-19 19:52 编辑如题,实现的功能为:开机时以地球旋转速率追星,当按下P3.2管脚的按键时,P0.4的脉冲速率加快,P0.5电平拉低,赤道仪快速反转。本实例配合42步进电机,100:1减速箱和128细分驱动来用,若细分数和减速比不同,请各位大神们自行修改参数。。。继续附上本人使用的单片机:http://item.taobao.com/item.htm? ... 0801&_u=i3knvfu353f
本人使用的128驱动:http://item.taobao.com/item.htm? ... &abbucket=13#detail
以及本人使用的减速箱:http://item.taobao.com/item.htm? ... &abbucket=13#detail
还有protel连线图:
代码如下:
#include<reg52.h>
#define uchar unsigned char
#define uintunsigned int
#define FOSC12000000L
#define TSTEP0(65536-FOSC*16875/12000000)//16875*1us计时
sbit KEY0=P3^2;//反向加速按键
//sbit KEY2=P3^3;
sbit POUT=P0^4;
sbit POUT1=P0^5;
uchar Count0 = 0;
uint s;
uint s1;
//uchar Count1 = 0;
void delay500ms(void)
{
uchar i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
void delay1(uint del1)//延时del1X0.1ms 函数
{
uint i,j;
for(i=0;i<del1;i++)
{
for(j=0;j<10;j++);
}
}
/*void Time0_Init()
{
TMOD = 0x01; //定时器0选用方式1
TH0= TSTEP0; //初值的计算
TL0= TSTEP0>>8;
TR0= 1; //启动定时器
ET0= 1; //打开定时器中断允许位
}
void Time0_Int() interrupt 1
{
TH0 = TSTEP0;
TL0 = TSTEP0>>8;
Count0++; //长度加1
}*/
void Time1_Init()
{
// TMOD = 0x10; //定时器1选用方式1
TH1= TSTEP0; //初值的计算
TL1= TSTEP0>>8;
TR1= 1; //启动定时器
ET1= 1; //打开定时器中断允许位
}
void Time1_Int() interrupt 3
{
TH1 = TSTEP0;
TL1 = TSTEP0>>8;
Count0++; //长度加1
}
void Outside_Init0(void)
{
IT0 = 0;//低电平触发
EX0 = 1;//外部中断0允许
// IT1 = 0;//低电平触发
// EX1 = 1;//外部中断1允许
}
void Outside_Int0(void) interrupt 0 //高速反转中断函数
{
delay500ms();//延时500ms给步进电机反向旋转缓冲
POUT1=0;//反向
s=250;
s1=1;//改s1可以修改反转速率
while(1)
{
if(KEY0==0&&25000/s>s1)
{
delay1(25000/s);//缓慢加速至高速
s++;
POUT=!POUT;
}
else if (KEY0==0&&(25000/s<=s1))
{
delay1(s1);
POUT=!POUT;
}
else
{
delay500ms();
POUT1=1;
return;
}
}
}
void Main(void)
{
Time1_Init();
Outside_Init0();
EA = 1; //打开总中断
POUT1=1;//正向
while(1)
{
if(Count0==10)
{
Count0=0;
POUT=!POUT;
}
}
}
顶! 好。 这个程序开发环境是啥?汇编还是C? KeilC? 太详细了,点一下赞 赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块,感觉那个对干扰太敏感。
看了下你的作品,不知道那个谐波减速箱的输出轴可不可以拆下来,那样的话,安装云台会方便不少。我还在拆解中,因为买了两个这个减速箱,想做赤道仪。。。 额,外行完全不懂
是不是买下这3个东西,这个代码烧进去
线连好就能用了………… 哈哈,好东西,手上还有一块51单片机,等下就做一个 feinanchen617 发表于 2015-3-19 12:48
KeilC?
应该是的
qiazi 发表于 2015-3-19 13:59
额,外行完全不懂
是不是买下这3个东西,这个代码烧进去
{:3_208:}要买很多种东西 马铃鼠 发表于 2015-3-19 13:22
赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块, ...
一般都是100减速比的谐波减速,加上128细分的驱动器,加上最小单片机系统,加上材料,至少300以上。我曾经想过用一般的减速步进电机加上蜗轮蜗杆减速,至少可以省一半的成本,但是不知道蜗轮蜗杆精度怎么样,另外单片机也半知半解,一直没有行动。马铃鼠兄有什么好的意见{:5_281:} 有内涵的豆沙包 发表于 2015-3-19 14:20
应该是的
是的,用keil编译的
马铃鼠 发表于 2015-3-19 13:22
赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块, ...
我用铝板做了一个平衡套件安在谐波减速箱法兰盘上面,那根中轴都不用锯掉了,嘿嘿
qiazi 发表于 2015-3-19 13:59
额,外行完全不懂
是不是买下这3个东西,这个代码烧进去
还要买铝盒,铝块,要钻孔加工,还要买极轴镜,很折腾的。不过有空闲自己做一个也不错哈。贴代码出来也是为了方便大家少走弯路。
以前也做过电机驱动,看了下代码,感觉那个ISR中缓慢加速至高速调用delay不合适,可直接修改定时器的TH,TL寄存器的值实现软启动。 ke-pler 发表于 2015-3-19 16:40
以前也做过电机驱动,看了下代码,感觉那个ISR中缓慢加速至高速调用delay不合适,可直接修改定时器的TH,TL ...
谢谢,高手们自己修改哈,本人能力有限,只是实现需求罢了,没有想太多。
yuersthe1 发表于 2015-3-19 15:13
我用铝板做了一个平衡套件安在谐波减速箱法兰盘上面,那根中轴都不用锯掉了,嘿嘿
...
锯掉了?好锯吗,看着材料挺硬的。。。 火星蒙面侠 发表于 2015-3-19 14:49
一般都是100减速比的谐波减速,加上128细分的驱动器,加上最小单片机系统,加上材料,至少300以上。我曾 ...
谐波减速可以用,但是在星野赤道仪这里就有点大材小用,毕竟不是goto,不用考虑回差的问题,就算是谐波减速,也不可能没有空程,只是比较小罢了,更何况是这种二手的。减速步进电机很多人不喜欢估计是考虑到了齿轮箱的空程问题,我也挺忌讳,加上速度太慢,所以在goto系统中不用。星野赤道仪中精度最好的据说是剪刀脚,其实原因很简单,一般用蜗轮减速的,都有周期误差,这是蜗轮的加工精度决定的,也是几乎不可避免的。细分模块可以软件操作这点在goto中特别重要,程序可以随时设置细分达到变速,这是齿轮减速箱不具备的优点,所以,用在星野赤道仪这里感觉也是有点大材小用了。
我感觉性价比最高的,业余条件也最容易加工的,就是类似剪刀脚(门板)结构的赤道仪,毕竟星野拍摄时间不会太长,那个螺纹行程足够了,软件配合操作,达到行程让电机回转很容易实现。
北京天文同好会有一篇文章专门介绍了改良版的“剪刀脚”,可以减小剪刀脚为了精度而增大的臂长,可以找来看下,感觉做星野非常合适,而且投入应该非常小。如果为了提高精度,可以采用廉价的16细分模块,某宝5块钱搞定。。。
马铃鼠 发表于 2015-3-19 17:36
谐波减速可以用,但是在星野赤道仪这里就有点大材小用,毕竟不是goto,不用考虑回差的问题,就算是谐波减 ...
这个好,有空了试试。
页:
[1]
2