牧夫天文网

 找回密码
 加入牧夫(请注明天文爱好者,否则无法通过审核)

QQ登录

只需一步,快速开始

[自制DIY] 发一个星野赤道仪52单片机C语言控制代码

  [复制链接]
yuersthe1 发表于 2015-3-19 11:43 | 显示全部楼层 |阅读模式 来自: 江苏省南京市 联通

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?加入牧夫(请注明天文爱好者,否则无法通过审核)

x
本帖最后由 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连线图:
Snap1.jpg
代码如下:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
#define FOSC  12000000L
#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;
        }
    }
}




评分

参与人数 2牧夫币 +15 收起 理由
沸腾的冰川 + 10 很给力!
有内涵的豆沙包 + 5 很给力!

查看全部评分

feinanchen617 发表于 2015-3-19 12:47 | 显示全部楼层 来自: 广东省深圳市 统计信息网
这个程序开发环境是啥?汇编还是C?
回复 支持 反对

使用道具 举报

feinanchen617 发表于 2015-3-19 12:48 | 显示全部楼层 来自: 广东省深圳市 统计信息网
KeilC?

点评

是在keil下写的  详情 回复 发表于 2015-3-19 19:53
应该是的  详情 回复 发表于 2015-3-19 14:20
回复 支持 反对

使用道具 举报

xiaoguilink 发表于 2015-3-19 13:10 | 显示全部楼层 来自: 广东省广州市增城区 电信
太详细了,点一下赞
回复 支持 反对

使用道具 举报

马铃鼠 发表于 2015-3-19 13:22 | 显示全部楼层 来自: 河北省秦皇岛市 联通
赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块,感觉那个对干扰太敏感。
看了下你的作品,不知道那个谐波减速箱的输出轴可不可以拆下来,那样的话,安装云台会方便不少。我还在拆解中,因为买了两个这个减速箱,想做赤道仪。。。

点评

我用铝板做了一个平衡套件安在谐波减速箱法兰盘上面,那根中轴都不用锯掉了,嘿嘿  详情 回复 发表于 2015-3-19 15:13
一般都是100减速比的谐波减速,加上128细分的驱动器,加上最小单片机系统,加上材料,至少300以上。我曾经想过用一般的减速步进电机加上蜗轮蜗杆减速,至少可以省一半的成本,但是不知道蜗轮蜗杆精度怎么样,另外单  详情 回复 发表于 2015-3-19 14:49
回复 支持 反对

使用道具 举报

qiazi 发表于 2015-3-19 13:59 | 显示全部楼层 来自: 浙江省杭州市 电信
额,外行完全不懂

是不是买下这3个东西,这个代码烧进去
线连好就能用了…………

点评

还要买铝盒,铝块,要钻孔加工,还要买极轴镜,很折腾的。不过有空闲自己做一个也不错哈。贴代码出来也是为了方便大家少走弯路。  详情 回复 发表于 2015-3-19 15:26
要买很多种东西  详情 回复 发表于 2015-3-19 14:22
回复 支持 0 反对 1

使用道具 举报

有内涵的豆沙包 发表于 2015-3-19 14:18 | 显示全部楼层 来自: 江苏省南京市 电信
哈哈,好东西,手上还有一块51单片机,等下就做一个
回复 支持 反对

使用道具 举报

有内涵的豆沙包 发表于 2015-3-19 14:20 | 显示全部楼层 来自: 江苏省南京市 电信

点评

是的,用keil编译的  详情 回复 发表于 2015-3-19 14:59
回复 支持 反对

使用道具 举报

有内涵的豆沙包 发表于 2015-3-19 14:22 | 显示全部楼层 来自: 江苏省南京市 电信
qiazi 发表于 2015-3-19 13:59
额,外行完全不懂

是不是买下这3个东西,这个代码烧进去

要买很多种东西
回复 支持 反对

使用道具 举报

火星蒙面侠 发表于 2015-3-19 14:49 | 显示全部楼层 来自: 广东省珠海市 联通
马铃鼠 发表于 2015-3-19 13:22
赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块, ...


一般都是100减速比的谐波减速,加上128细分的驱动器,加上最小单片机系统,加上材料,至少300以上。我曾经想过用一般的减速步进电机加上蜗轮蜗杆减速,至少可以省一半的成本,但是不知道蜗轮蜗杆精度怎么样,另外单片机也半知半解,一直没有行动。马铃鼠兄有什么好的意见

点评

谐波减速可以用,但是在星野赤道仪这里就有点大材小用,毕竟不是goto,不用考虑回差的问题,就算是谐波减速,也不可能没有空程,只是比较小罢了,更何况是这种二手的。减速步进电机很多人不喜欢估计是考虑到了齿轮箱  详情 回复 发表于 2015-3-19 17:36
回复 支持 0 反对 1

使用道具 举报

 楼主| yuersthe1 发表于 2015-3-19 14:59 | 显示全部楼层 来自: 江苏省南京市 联通

是的,用keil编译的
回复 支持 反对

使用道具 举报

 楼主| yuersthe1 发表于 2015-3-19 15:13 | 显示全部楼层 来自: 江苏省南京市 解放军理工大学
马铃鼠 发表于 2015-3-19 13:22
赞一个,软件代码功能还可以丰富,硬件投入有点大,不过谐波减速的精度很好,驱动我的星野的没用细分模块, ...

我用铝板做了一个平衡套件安在谐波减速箱法兰盘上面,那根中轴都不用锯掉了,嘿嘿

点评

锯掉了?好锯吗,看着材料挺硬的。。。  详情 回复 发表于 2015-3-19 17:22
回复 支持 反对

使用道具 举报

 楼主| yuersthe1 发表于 2015-3-19 15:26 | 显示全部楼层 来自: 江苏省南京市 解放军理工大学
qiazi 发表于 2015-3-19 13:59
额,外行完全不懂

是不是买下这3个东西,这个代码烧进去

还要买铝盒,铝块,要钻孔加工,还要买极轴镜,很折腾的。不过有空闲自己做一个也不错哈。贴代码出来也是为了方便大家少走弯路。
回复 支持 反对

使用道具 举报

ke-pler 发表于 2015-3-19 16:40 | 显示全部楼层 来自: 湖南省长沙市 电信
以前也做过电机驱动,看了下代码,感觉那个ISR中缓慢加速至高速调用delay不合适,可直接修改定时器的TH,TL寄存器的值实现软启动。

点评

谢谢,高手们自己修改哈,本人能力有限,只是实现需求罢了,没有想太多。  详情 回复 发表于 2015-3-19 17:01
回复 支持 1 反对 0

使用道具 举报

 楼主| yuersthe1 发表于 2015-3-19 17:01 | 显示全部楼层 来自: 江苏省南京市 联通
ke-pler 发表于 2015-3-19 16:40
以前也做过电机驱动,看了下代码,感觉那个ISR中缓慢加速至高速调用delay不合适,可直接修改定时器的TH,TL ...

谢谢,高手们自己修改哈,本人能力有限,只是实现需求罢了,没有想太多。
回复 支持 反对

使用道具 举报

马铃鼠 发表于 2015-3-19 17:22 | 显示全部楼层 来自: 河北省秦皇岛市 联通
yuersthe1 发表于 2015-3-19 15:13
我用铝板做了一个平衡套件安在谐波减速箱法兰盘上面,那根中轴都不用锯掉了,嘿嘿
...

锯掉了?好锯吗,看着材料挺硬的。。。

点评

没有锯掉啊,在铝板中间开了个和中轴一样大的孔让它穿过去  详情 回复 发表于 2015-3-19 19:50
回复 支持 0 反对 1

使用道具 举报

马铃鼠 发表于 2015-3-19 17:36 | 显示全部楼层 来自: 河北省秦皇岛市 联通
火星蒙面侠 发表于 2015-3-19 14:49
一般都是100减速比的谐波减速,加上128细分的驱动器,加上最小单片机系统,加上材料,至少300以上。我曾 ...

谐波减速可以用,但是在星野赤道仪这里就有点大材小用,毕竟不是goto,不用考虑回差的问题,就算是谐波减速,也不可能没有空程,只是比较小罢了,更何况是这种二手的。减速步进电机很多人不喜欢估计是考虑到了齿轮箱的空程问题,我也挺忌讳,加上速度太慢,所以在goto系统中不用。星野赤道仪中精度最好的据说是剪刀脚,其实原因很简单,一般用蜗轮减速的,都有周期误差,这是蜗轮的加工精度决定的,也是几乎不可避免的。细分模块可以软件操作这点在goto中特别重要,程序可以随时设置细分达到变速,这是齿轮减速箱不具备的优点,所以,用在星野赤道仪这里感觉也是有点大材小用了。
我感觉性价比最高的,业余条件也最容易加工的,就是类似剪刀脚(门板)结构的赤道仪,毕竟星野拍摄时间不会太长,那个螺纹行程足够了,软件配合操作,达到行程让电机回转很容易实现。
北京天文同好会有一篇文章专门介绍了改良版的“剪刀脚”,可以减小剪刀脚为了精度而增大的臂长,可以找来看下,感觉做星野非常合适,而且投入应该非常小。如果为了提高精度,可以采用廉价的16细分模块,某宝5块钱搞定。。。
cmpctm1.gif

点评

看起来蛮不错!  详情 回复 发表于 2015-3-19 20:00
这个好,有空了试试。  详情 回复 发表于 2015-3-19 17:46
回复 支持 0 反对 1

使用道具 举报

火星蒙面侠 发表于 2015-3-19 17:46 | 显示全部楼层 来自: 广东省珠海市 联通
马铃鼠 发表于 2015-3-19 17:36
谐波减速可以用,但是在星野赤道仪这里就有点大材小用,毕竟不是goto,不用考虑回差的问题,就算是谐波减 ...


这个好,有空了试试。
回复 支持 反对

使用道具 举报

本版积分规则

快速回复 返回顶部 返回列表