打印

匠人DIY旋转时钟全程实播(2008-01-20最新进展:串口通讯调试

[复制链接]
楼主: 程序匠人
手机看帖
扫描二维码
随时随地手机跟帖
101
程序匠人|  楼主 | 2008-1-4 23:50 | 只看该作者 回帖奖励 |倒序浏览

旋转时钟之裸奔照


这几天写了一些程序模块,主要是一些核心的算法。 原本想等程序和硬件再稍微完善一些在调试。但匠人还是忍不住想看看效果。于是通电,拍下了下面几张裸奔的照片。虽然丑了点,不过关键的算法都被验证了。 通过实际通电测试,该模型已经具备了以下功能: 1、转速自动适应。当电机启动后,指针板会根据电机的速度,自动调整每一列的显示时间,从而实现“自适应”。这证明了部分网友提到的“恒速控制”是没有必要的。 2、由于PIC芯片不支持乘/除法指令,如果在程序中写除法,编译器会调用一个除法函数去计算,速度、资源等方面的效率很差。而匠人的这个“转速自适应”算法并不需要采用除法,在速度方面是有保障的。 3、2、时针、分针、秒针的走动。已经可以实现了。这部分的算法,也没有采用除法。呵呵。 目前还存在的问题: 1、部分LED电路有问题。比如,外框的那个LED居然坏了。导致外圈不亮。还有指针部分也有个别LED没有点亮,原因待查。不过,这些都是纯硬件的小问题。 2、由于指针板的重心还没有经过校准。在旋转时抖动比较厉害。待改进。 3、还有许多功能模块,没有实现。慢慢来。只要关键部分通过测试,其它的,都只是时间问题了。   
 
 
   

使用特权

评论回复
102
老狼| | 2008-1-5 00:20 | 只看该作者

我还以为是裸照!

被骗进来了!

使用特权

评论回复
103
hotpower| | 2008-1-5 00:22 | 只看该作者

好可怕的"黑手"~~~

使用特权

评论回复
104
xwj| | 2008-1-5 00:53 | 只看该作者

呵呵,俺今天终于动手写了一点程序,结果...

结果通电后不正常,
于是俺当然就拿起来看看啦,却被烫了一下!
心想:这下糟了,哪里短路了!位置好像是列输出功率管...

再摸摸,功率管是冷的啊,怎么回事???

于是再找...

原来是8脚的DS1302在发热!
但1302怎么会发热呢?
找出DataSheet来仔细核对引脚,接法也是对的啊,怎么回事?难道焊的时候击穿了?不会这么脆弱吧???

再仔细一看:
这个DS1302竟然是TDA2822!
我晕!!!!
彻底倒塌.........


之前是准备装音乐IC+功放+小喇叭的,还有DS18B20等,后来想着简单点又取消了,却没想到IC被调了包,竟然将TDA2822当成DS1302焊上去了...

5555555555555
好心情彻底破坏了,懒得动烙铁了,明天继续吧,俺呼呼去了...

使用特权

评论回复
105
老狼| | 2008-1-5 01:05 | 只看该作者

哈哈,天冷了,这个取暖方法挺好!

使用特权

评论回复
106
hotpower| | 2008-1-5 01:22 | 只看该作者

哈哈~~~都是手机惹得祸~~~

使用特权

评论回复
107
程序匠人|  楼主 | 2008-1-5 01:48 | 只看该作者

夜猫子还挺多啊

使用特权

评论回复
108
john_light| | 2008-1-5 08:31 | 只看该作者

老徐的TDA2822上演了一出半导体版《无间道》

程序读回时间一看走快了,2008年2月31日25点60分61秒。

使用特权

评论回复
109
LPcfANS| | 2008-1-5 08:47 | 只看该作者

哈哈....

使用特权

评论回复
110
fzj| | 2008-1-5 08:48 | 只看该作者

期待中.......

使用特权

评论回复
111
fsaok| | 2008-1-5 10:57 | 只看该作者

继续关重

使用特权

评论回复
112
hotpower| | 2008-1-5 19:45 | 只看该作者

俺真不明白把心思折腾到这里为什么~~~不解~~~

使用特权

评论回复
113
程序匠人|  楼主 | 2008-1-5 20:33 | 只看该作者

不为别的,只为好玩嘛

 hotpower 发表于 2008-1-5 19:45 侃单片机 ←返回版面    

113楼: 俺真不明白把心思折腾到这里为什么~~~不解~~~ 

使用特权

评论回复
114
原野之狼| | 2008-1-5 20:50 | 只看该作者

关注中~~~

匠人有没有考虑过不用电刷的方式来供电?
比如板上带上小发电机。。。
或者通过光来传递电能。。。

使用特权

评论回复
115
程序匠人|  楼主 | 2008-1-5 21:23 | 只看该作者

转速自适应算法(含程序)

匠人用的“自适应”算法是“逼近法”,算法如下:
1、预选确定一个“TIME1初值”。
2、对每个周期(电机旋转一周)内,TIME1中断的次数进行计数
3、每次过零时去判断,该周期内TIME1中断的次数是〉180次,还是<180次了,并调节“TIME1初值”(递增、递减)。
4、电机刚启动时,由于“TIME1初值”并不符合实际需要,所以显示会有点不正常。经过几秒钟后,“TIME1初值”逐渐逼近实际需要后,显示就正常了。
5、整个算法,不需要用到乘除法。

具体的调节程序如下:

 //================
 //INT中断
 //================
 if ( INTE && INTF )
 {
  INTF = 0 ;     //清除中断标志
  
  //调整单列显示时间设置值
  if ( TIMR1_JSQ > 180 )
  {
   if ( TIMR1_JSQ > 190 ) 
   {
    if ( TIMR1_JSQ > 220 ) 
    {
     DISP_TIME_SET = DISP_TIME_SET - 4 ;
    }
    else DISP_TIME_SET = DISP_TIME_SET - 2 ;
   }
   else DISP_TIME_SET = DISP_TIME_SET - 1 ;
   
 
   if ( DISP_TIME_SET < 400 ) DISP_TIME_SET = 400 ;  //钳位
  }
  else if ( TIMR1_JSQ < 180 )
  {
   if ( TIMR1_JSQ < 170 ) 
   {
    if ( TIMR1_JSQ < 140 ) 
    {
     DISP_TIME_SET = DISP_TIME_SET + 4 ;
    }
    else DISP_TIME_SET = DISP_TIME_SET + 2 ;
   }
   else DISP_TIME_SET = DISP_TIME_SET + 1 ;

   if ( DISP_TIME_SET > 65100 ) DISP_TIME_SET = 65100 ;  //钳位
  }
  


  //计数器处理
  TIMR1_JSQ = 0 ;     //TIMR1溢出计数器 = 0
  DISP_LINE = DISP_LINE_ADJ ;   //显示列计数器(0~179)=校正值
 
 }

使用特权

评论回复
116
程序匠人|  楼主 | 2008-1-5 21:31 | 只看该作者

答复原野之狼

原野之狼 发表于 2008-1-5 20:50 侃单片机 ←返回版面    

115楼: 关注中~~~ 

匠人有没有考虑过不用电刷的方式来供电?

比如板上带上小发电机。。。(其实这就是换向器的思路,xwj就是用了两个电机,把其中一个当发电机来用。但匠人找不到合适的电机,只好另想办法)

或者通过光来传递电能。。。 (这也太“科幻”了吧?匠人还想过在指针板上装太阳能电池呢,但是不现实啊~~~ )
 

使用特权

评论回复
117
原野之狼| | 2008-1-5 21:40 | 只看该作者

呵呵,偶随便一说的~~~~

不需要旋转的部件上安上激光发射器,然后在旋转的板上安上接受器,当然功率的问题需要计算,偶就是随便一说的。有没有这样的接收器还是个问题呢。。。

另外,除了刷个时钟一类的东西,匠人也许可以再刷些文字,这样看来还得来个适应于旋转方式的取模软件。

使用特权

评论回复
118
程序匠人|  楼主 | 2008-1-5 21:45 | 只看该作者

正在考虑加入“上位机通讯”功能

正在考虑,以后加入“上位机通讯”功能,可以通过电脑下载显示字符或图片到指针板上,并保存在PIC的内部E2PROM里。

匠人的设计里已经预留的串行通讯接口,应该可以实现吧。

不过,这是后面的工作了。

使用特权

评论回复
119
Xwj| | 2008-1-5 21:52 | 只看该作者

呵呵,发电机用的除了换向器的另一半

使用特权

评论回复
120
Xwj| | 2008-1-5 22:07 | 只看该作者

其实wangkj的就是旋转镜的方式,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则