|
相关连接:
参与社区讨论
匠人DIY旋转时钟全程实播(连载1:电机的选择与安装)
匠人DIY旋转时钟全程实播(连载2:指针板的供电方式)
匠人DIY旋转时钟全程实播(连载3:指针板原理图V01)
匠人DIY旋转时钟全程实播(连载4:一些细节考虑)
匠人DIY旋转时钟全程实播(连载6:指针板状态表v01)
匠人DIY旋转时钟全程实播(连载7:旋转时钟之裸奔照)
匠人DIY旋转时钟全程实播(连载8:转速自适应算法)
匠人DIY旋转时钟全程实播(连载9:排除LED不亮故障)
----------------------------------------------------------------------------
xwj 发表于 2008-1-5 22:33 侃单片机 ←返回版面  |
36楼: 呵呵,我觉得匠人的“自适应”适应的太慢了 |
可以用除法的,只不过要把除法放到中断外面执行罢了, 慢点就慢点,没关系的
| |
fzj 发表于 2008-1-6 10:39 侃单片机 ←返回版面  |
38楼: 谢谢匠人! |
回复 匠人:我用的时钟频率是16M,不知道这种速度是否还能完成红外解码?我感觉速度还是不够。我觉得要显示更加细腻应该是TIME1在一周内中断360次,这种速度下如果再来处理红外遥控可能就显得力不从心了,您的思路有点巧妙,谢谢分享。 原本以为这个周期检测应该是个很简单的事情,所以我处理的思路就显得非常的单纯:用TIME1(16BIT)定时器来计一周所需的时间,然后就直接把一周所需的时间除以180,得到的就是一周内最高180点的显示。 我现在也打算用你的思路去重新写一个,呵呵,但是我觉得好像存在一个问题 对于你的思路我是这么理解的,你把TIME1即作为调整“周期”又作为LED显示,思路非常巧妙,真的佩服啊,但电机在达到正常转速后不允许有太大的误差,如果误差很大而你的自适应调整速度肯定跟不上,那就要产生抖动了,可能我的这个担心是多余的,正常工作的电机可能没有我所描述的现象,但作为电机工作电压可能需要稳压。 这里我也提一下这种方式的缺点,不对请你批评,我感觉你的自适应方式很被动,反应时间完全取决与电机的转速,而且调整时间可能是电机转速的百倍甚至是千倍,这个主要看时间精度。如果有可能解决这个反应慢的问题,那就真的太完美了,我想在一些装饰灯上可能也是采用你这种处理方式。再次谢谢!
| |
程序匠人 发表于 2008-1-6 13:12 侃单片机 ←返回版面  |
39楼: 回复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就够了,多了也许是浪费。
| |
|