佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: dns

servo programing

[复制链接]
发表于 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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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 | 显示全部楼层
嗯嗯,明白了。。谢谢你fritlizt。。。
回复

使用道具 举报

发表于 2-8-2008 01:36 AM | 显示全部楼层
原帖由 SolBadguy2 于 1-8-2008 08:52 PM 发表
嗯嗯,明白了。。谢谢你fritlizt。。。


不用客气。 不明白还可以再问。
我也是读robotics的
回复

使用道具 举报

Follow Us
发表于 7-8-2008 06:51 PM | 显示全部楼层
你读robotic的罗@_@"
我是electronic的,可是对robotic很有兴趣..如果以后我有问题,关于robotic的,可以问你吗?
回复

使用道具 举报

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

使用道具 举报


ADVERTISEMENT

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

可以和大家分享你的心得吗?
做一个有始有终的帖。。。
回复

使用道具 举报

 楼主| 发表于 20-8-2008 03:49 PM | 显示全部楼层
谢谢版主的支持

我的project所提供的时间是三个月。
一开始我们的学院答应买零件的时候供应金钱的支持。
我们就订购14servo motor5bend sensor

两个星期后学院告诉我们只可以买到10个和3
我和队友讨论后打算把5个手指改成3个手指。
又过了两个星期之后学院说不能在presentation之前拿到零件。
政府学院就是如此的麻烦。

剩下的两个月的时间只好自己出钱买零件,甚至从槟城到KLJALAN PASAR
找。但还是跟CYTRON买,因为只有它最便宜。

之后买到的servo已经改装的,跟dc motor 一样,所以更简单,forward reverse 罢了。
金钱不足的关系连sensor也没买,只用switch罢了。

然后presentation的时候是第一个,不过还相当顺利
当评判老师问为什么不用sensor来控制机器手并让动作更顺。
我的队友顶回老师当初因为学院买不到sensor加上我们的金钱问题,
老师也无可奈何笑笑罢了
回复

使用道具 举报

发表于 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

  1. While(True){   }
复制代码


请问你的程式内, 为什么要有个空的循环?
回复

使用道具 举报

发表于 16-10-2010 09:58 AM | 显示全部楼层
请问你的程式内, 为什么要有个空的循环?
宅男-兜着走 发表于 15-10-2010 09:37 PM

PWM 是由Timer1 定时触发。。。
所以在main 里, 没有做什么事。。。
如果没有空loop, MCU 就会走完程序, 然后进入Sleep mode。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 19-4-2024 09:48 AM , Processed in 0.064588 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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