|
发表于 11-5-2008 08:37 AM
|
显示全部楼层
原帖由 dns 于 10-5-2008 02:17 PM 发表 
酱如果我把servo的数量减少到6个
program会不会简单一点呢?
其实, 我没玩过Servo, 但我想, 你“不一定”要不断的send pulse 给那个Servo,
你只要send一次,拿到你要的Position 后,不用send 一段时间也ok,
我想, 好的servo motor应该可以保持它的位置, 除非你的load很大。
我建议你去学CCS C。
以下是www.piclist.com 搜索,供参考:
[ 本帖最后由 pic 于 11-5-2008 08:46 AM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 11-5-2008 11:17 PM
|
显示全部楼层
谢谢版主的意见,我会去学C的 。 |
|
|
|
|
|
|
|
发表于 1-8-2008 07:19 PM
|
显示全部楼层
pic版主,我有几个问题想要问你,希望你可以帮我解答!谢谢!
1.)请问这个”approx 20ms per cycle, preload=61650“怎么算呢?
为什么preload=61650的时候,会是20ms呢?如果我要其他frequency或者50hz的话,我要怎样改?
2.)你这个set_timer1(preload);的function是哪里来的啊?
3.)还有一开始你define preload 65180,为什么在你的timer int的时候却变成61650的呢?
4.)你的intCnt这个variable是你的timer吗?
5.)PWM_duty =128 ,是说128/256=50% duty cycle? 它的意思是说50% on 50% off 吗? 如果换去period 的话是10ms on 10ms off? (for f = 50hz)
6.)我不是很懂看你的timer interrupt routine,你可以解释一下吗?
我现在的proj也是做个robotic arm,控制方法是电脑给个left指令,arm就会转左一点(eg -10deg),再给个left就再转左(eg -20deg)..我想问如果怎样的话也是用timer来做会比较适合吗?我应该会只有3~4个servo motor而已 |
|
|
|
|
|
|
|
发表于 1-8-2008 08:10 PM
|
显示全部楼层
原帖由 SolBadguy2 于 1-8-2008 07:19 PM 发表 
pic版主,我有几个问题想要问你,希望你可以帮我解答!谢谢!
1.)请问这个”approx 20ms per cycle, preload=61650“怎么算呢?
为什么preload=61650的时候,会是20ms呢?如果我要其他frequency或者50hz的话,我 ...
把50hz, 20ms 分成256个部分。也就是20ms里面interrupt 256次。 然后再作比较来switch on/off io.这样就可以generate50hz, with resolution 256 steps 的pwm.
#define preload 65180 --> 由于20ms里面要interrupt 255次, 所以timer value 是65536 - (20ms/255)*20Mhz/4 ~= 65144. 要改frequency的话改preload value.
2. set_timer1(preload); 这个是ccs c 的built in function.
3. 可能pic斑竹打错,不过那个没关系, comment不会对program有影响。至于为什么61650就要问pic斑竹了。
4。intCnt是一个variable.比如你要generate一个pwm, 20% duty cycle. 20/100 * 255 = 51. 你的pwm duty = 51.intCnt 每nterrupt 一次会increment by 1.当pwm duty == intCnt的时候, io,就会被set low. 到最后255的时候,全部io set high,intCnt value reset。然后再从新compare过。
5. 是的。。。
6。 参考第四。 |
|
|
|
|
|
|
|
发表于 1-8-2008 08:52 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-8-2008 01:36 AM
|
显示全部楼层
原帖由 SolBadguy2 于 1-8-2008 08:52 PM 发表 
嗯嗯,明白了。。谢谢你fritlizt。。。
不用客气。 不明白还可以再问。 
我也是读robotics的 |
|
|
|
|
|
|
|
发表于 7-8-2008 06:51 PM
|
显示全部楼层
你读robotic的罗@_@"
我是electronic的,可是对robotic很有兴趣..如果以后我有问题,关于robotic的,可以问你吗? |
|
|
|
|
|
|
|

楼主 |
发表于 10-8-2008 03:01 PM
|
显示全部楼层
嘿嘿,我也是读electronic的 。
我的project 成功了,多谢版主的帮忙!!!
我的project 还拿 A 哦!但只是Diploma level  |
|
|
|
|
|
|
|
发表于 11-8-2008 08:10 AM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 20-8-2008 03:49 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 24-8-2010 11:02 PM
|
显示全部楼层
本帖最后由 fritlizt 于 24-8-2010 11:07 PM 编辑
回复 31# kyle0215
请自己努力。你可以来发问, 不过至少请你做了功课才来。
下次看到, 直接扣分删帖删回复。
*注:kyle0215,你的回复已被删。 |
|
|
|
|
|
|
|
发表于 15-10-2010 09:37 PM
|
显示全部楼层
下面我用CCS C 写了简单的8ch Soft PWM, resolution 是8bit, duty cycle (0-255)
频率可以通过prelo ...
pic 发表于 9-5-2008 10:11 AM 
请问你的程式内, 为什么要有个空的循环? |
|
|
|
|
|
|
|
发表于 16-10-2010 09:58 AM
|
显示全部楼层
请问你的程式内, 为什么要有个空的循环?
宅男-兜着走 发表于 15-10-2010 09:37 PM 
PWM 是由Timer1 定时触发。。。
所以在main 里, 没有做什么事。。。
如果没有空loop, MCU 就会走完程序, 然后进入Sleep mode。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|