打印

菜鸟也想做个电机钟,硬件都搞好了,可是显示不稳定啊

[复制链接]
楼主: FZJ
手机看帖
扫描二维码
随时随地手机跟帖
21
FZJ|  楼主 | 2008-1-4 16:47 | 只看该作者 回帖奖励 |倒序浏览

其实emailli的思路是对的

我现在没有用余数补偿,稳定性比以前提高了好多,但还是有不固定的略微抖动,我在想是不是我的电机转数误差很大,我也考虑是不是速度跟不上,所以我把中断程序中的除法运算放大的主程序中,结果测试效果一样,我明天打算仔细测试一下电机的转数,有好消息马上来汇报。简单的时钟轮廓出来了,呵呵!

使用特权

评论回复
22
emailli| | 2008-1-4 17:07 | 只看该作者

不同的元件安装可能风阻会不一样

负载发生变化的时候,对电机的速度会有一定的影响

还有电源抖动等都对电机的速度有影响

如果不增加一个稳速的功能。

显示不稳定市场发生了

有了转速的控制后,可以用 底板的MCU用来和遥控器通信

控制开机和停机。

指针板的MCU要检测速度到达一定的速度才 显示,否则不显示。

尽量将功能做的智能一点。

另外,匠人你的 半成品 和 精加工 方法想出来了没有?

拿出来秀秀啊!

我是思考了几天了

关于 半成品 和 精加工  的 实现方式还没有想出来。

使用特权

评论回复
23
程序匠人| | 2008-1-4 19:57 | 只看该作者

呵呵,匠人的想法还是半成品,没法秀。等变成了成品再秀

使用特权

评论回复
24
程序匠人| | 2008-1-5 00:05 | 只看该作者

秀个半成品看看


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


相关链接:http://blog.21ic.com/user1/349/archives/2008/44824.html

使用特权

评论回复
25
救火车| | 2008-1-5 00:19 | 只看该作者

那个是匠人的玉手吗?

使用特权

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

匠人果然厉害,佩服

不知道你在旋转中是否存在抖动现象?
不知可否把您宝贵的编程思路给讲一下?谢谢!

使用特权

评论回复
27
emailli| | 2008-1-5 13:47 | 只看该作者

转速低于一定的速度后就会闪烁了

你的转速自适应是有限制条件的

如果显示连20Hz都达不到

你的自适应又有什么用呢?

使用特权

评论回复
28
fzj| | 2008-1-5 17:32 | 只看该作者

emailli:我的抖动不是低频率的抖动

emailli:我的抖动不是低频率的抖动,而是显示位置无法固定,今天我也测试了电机转速,基本很稳定,我想肯定是我的程序有问题,而且问题就出在这个周期时间检测上,为什么我的周期时间检测会误差很大?我到现在也没搞明白,以前在交流电频率判断中也有类似的情况,看看我这个思路对不?
 一周旋转到--->时间地址清0(角度计数器)-->备份TIME1的计数值(TIME1_TEMP)-->清TIME1计数-->补偿中断误差--->将TIME1_TEMP/180给TIME2中断显示时间(也就是TIME2在旋转一周有180次中断)
TIME2每次中断调用显示函数一次.

使用特权

评论回复
29
甄蔡组合| | 2008-1-5 19:56 | 只看该作者

顶一下

使用特权

评论回复
30
程序匠人| | 2008-1-5 21:05 | 只看该作者

匠人的“自适应”算法

奇怪,下午发的贴怎么没有成功?浪费匠人打字精力了。

to fzj :关键是TIME1的初值如何计算呢?

你的算法用到了“/180”的除法,而且是双字节除单字节。匠人不知道你的系统频率是多少。不知道你有没有计算过这个除法要消耗多少时间?

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

使用特权

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

步进电机需要自适应么?

使用特权

评论回复
32
hotpower| | 2008-1-5 21:13 | 只看该作者

哈哈~~~搞得像PWM调节一样~~~

使用特权

评论回复
33
程序匠人| | 2008-1-5 21:14 | 只看该作者

匠人用的是普通直流电机,非步进电机

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

32楼: 步进电机需要自适应么? 

使用特权

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

自适应,学习~~~

使用特权

评论回复
35
xwj| | 2008-1-5 22:33 | 只看该作者

呵呵,我觉得匠人的“自适应”适应的太慢了

可以用除法的,只不过要把除法放到中断外面执行罢了,
慢点就慢点,没关系的

使用特权

评论回复
36
程序匠人| | 2008-1-6 00:26 | 只看该作者

“自适应”的速度是可调整的

实际上,匠人是分级调整的。参见匠人另一个贴子里的程序

使用特权

评论回复
37
fzj| | 2008-1-6 10:39 | 只看该作者

谢谢匠人!

回复 匠人:我用的时钟频率是16M,不知道这种速度是否还能完成红外解码?我感觉速度还是不够。我觉得要显示更加细腻应该是TIME1在一周内中断360次,这种速度下如果再来处理红外遥控可能就显得力不从心了,您的思路有点巧妙,谢谢分享。
原本以为这个周期检测应该是个很简单的事情,所以我处理的思路就显得非常的单纯:用TIME1(16BIT)定时器来计一周所需的时间,然后就直接把一周所需的时间除以180,得到的就是一周内最高180点的显示。
我现在也打算用你的思路去重新写一个,呵呵,但是我觉得好像存在一个问题
对于你的思路我是这么理解的,你把TIME1即作为调整“周期”又作为LED显示,思路非常巧妙,真的佩服啊,但电机在达到正常转速后不允许有太大的误差,如果误差很大而你的自适应调整速度肯定跟不上,那就要产生抖动了,可能我的这个担心是多余的,正常工作的电机可能没有我所描述的现象,但作为电机工作电压可能需要稳压。
这里我也提一下这种方式的缺点,不对请你批评,我感觉你的自适应方式很被动,反应时间完全取决与电机的转速,而且调整时间可能是电机转速的百倍甚至是千倍,这个主要看时间精度。如果有可能解决这个反应慢的问题,那就真的太完美了,我想在一些装饰灯上可能也是采用你这种处理方式。再次谢谢!

使用特权

评论回复
38
程序匠人| | 2008-1-6 13:12 | 只看该作者

回复fzj

1、关于你和xwj担心的“自适应调整”的反应可能会比较慢,滞后于电机转速的变化。匠人在考虑之初已经想到了。匠人的想法,就是引入简单的模糊控制,如下:

-------------------------------------------------------------------

电机旋转一周内TIME1中断的次数                “TIME1初值”调整量

-------------------------------------------------------------------

        >220                                        -4
        =191~220                  -2 
        =181~190                                   -1
        =180                                        不变
        =170~189                                   +1
        =140~169                                   +2
        <140                                        +4
-------------------------------------------------------------------

通过这个模糊控制方法,当电机转速与每列显示速度之间偏差越大,则调整量也越大,从而可以“快速逼近”;而当二者偏差逐渐变小后,调整量也变小,从而可以“精细调整”。

2、关于“自适应调整”的精度,匠人用的是18MHZ晶振,TIME1不做预分频。也就是说,“TIME1初值”+1或-1时,调节精度为0.2222222us*180=40us。应该是比较精细的。

3、关于电机的转速波动问题。匠人感觉不是太大的问题。因为电机本身就是感性负载。有着其自身的惯性。电源上的一些细小的快速的波动并不会体现在电机转速上。而那种慢性的电源波动导致的电机转速漂移,用“自适应调整”可以应付。

当然,对电机电源的稳压还是要的,总不能直接把交流电降压整流后就直接给电机用吧。匠人用的是普通7805。

4、关于显示分辨度的问题。匠人从2个方面来考虑:

首先,180这个数字是单字节的,而360是双字节的。可能对于写c的朋友来说,没有太大感觉。而匠人对这其中的差别还是很敏感的。

其次,就是有没有必要了。匠人的想法是,圆周上的分辨度和半径上的分辨度应该相互“匹配”。如果你打算像xwj那样做48个LED,那么,圆周上的分辨度当然也要提高;如果只是做16个LED左右的,匠人觉得圆周上的分辨度180就够了,多了也许是浪费。


         

使用特权

评论回复
39
huangqi412| | 2008-1-7 09:32 | 只看该作者

全收下漫漫嚼

使用特权

评论回复
40
xue| | 2008-1-7 16:25 | 只看该作者

不是除180和360

除512,不是180和360.就都解决了.

使用特权

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

本版积分规则