查看: 5186|回复: 69
|
要如何同时控制5个servo motor?? (全部解决了,谢谢大家的帮忙)
[复制链接]
|
|
我是用5个Variable resistor来控制5个Servo Motor,第一个VR控制第一个SERVO,第二个VR控制第二个SERVO。。。。第5个VR控制第5个SERVO。
我的难题就是要如何同时控制这5个SERVO,就是说5个VR一起转的时候,那5个SERVO也会同一时间一起转,SERVO转的方向是BASED ON那VR。简单来说就是parallel operate.
我想请教这里的高手要如何写那C CODE。
我是用16F877/877A
20MHz crystal
CCS c compiler
[ 本帖最后由 crazybear 于 24-4-2009 04:59 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 24-2-2009 09:22 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 24-2-2009 07:04 PM
|
显示全部楼层
回复 2# pic 的帖子
问题不是在写控制SERVO的程式,问题是要如何同一个时间控制5个SERVO。
就是synchronize 5 个SERVO的操作,因为我是在同时用5个不同的INPUT来控制5个SERVO。
通常PIC都是处理第一个INPUT候才处理第二个INPUT,我要的是同个时间处理5个INPUT然后同个时间给予5个OUTPUT。Parallel process.. |
|
|
|
|
|
|
|
发表于 24-2-2009 09:27 PM
|
显示全部楼层
原帖由 crazybear 于 24-2-2009 07:04 PM 发表
通常PIC都是处理第一个INPUT候才处理第二个INPUT,我要的是同个时间处理5个INPUT然后同个时间给予5个OUTPUT。Parallel process..
看你怎么写程序了。。。看你会不会做Multi task了。
不可能同时间, 一般multitask 都也是一个一个input 处理。
就算是我们的PC 电脑, 也是一个一个task 跑, 只是它得很快, 我们感觉好像是一起跑的。
如果你要很快, 可能用PIC24 或18F K series, 可以跑最少到64Mhz。
但如果你要真实的 同个时间处理5个INPUT然后同个时间给予5个OUTPUT,真的Parallel process. 的话, 恐怕你必须用五颗MCU 来实现。 |
|
|
|
|
|
|
|
楼主 |
发表于 24-2-2009 10:50 PM
|
显示全部楼层
回复 4# pic 的帖子
我不会MULTI TASK,没有试过。
哪里有得学MULTI TASK?
如果我用16F877跟20MHz,有可能做到我想要的结果吗? |
|
|
|
|
|
|
|
发表于 25-2-2009 08:51 AM
|
显示全部楼层
原帖由 crazybear 于 24-2-2009 10:50 PM 发表
我不会MULTI TASK,没有试过。
哪里有得学MULTI TASK?
如果我用16F877跟20MHz,有可能做到我想要的结果吗?
很难。 速度不够快。
我假设功能是你一楼所说的, 没有附加其他的功能的话, 其实, 我上面帖里的Software PWM 源码, 你只要加入 ADC 读你的VR Input, 再加快你的 PIC MCU 的运行速度, 应该勉强可以的。 |
|
|
|
|
|
|
|
发表于 25-2-2009 08:58 AM
|
显示全部楼层
原帖由 crazybear 于 24-2-2009 10:50 PM 发表
我不会MULTI TASK,没有试过。
哪里有得学MULTI TASK?
如果我用16F877跟20MHz,有可能做到我想要的结果吗?
Multi Task 就是多任务的操作系统。像版主说的,它也是不能在同个时间内,处理五个输入与输出。
在严格的角度来分析就是,你需要多快响应一个输入与输出,如果有一些延迟会有什么后果吗?最恶劣的延迟是多少?
假设是使用多任务操作,当某个事件发生后如果不及时处理,后果有多严重这些都要考量。
过后才决定要选择哪类型的处理器,来符合你的要求,假如要求非常严格,就不要先决定使用 PIC16F877。 |
|
|
|
|
|
|
|
发表于 1-3-2009 01:58 PM
|
显示全部楼层
原帖由 crazybear 于 24-2-2009 10:50 PM 发表
我不会MULTI TASK,没有试过。
哪里有得学MULTI TASK?
如果我用16F877跟20MHz,有可能做到我想要的结果吗?
可以。 resolution很低。 |
|
|
|
|
|
|
|
发表于 1-3-2009 04:14 PM
|
显示全部楼层
原帖由 fritlizt 于 1-3-2009 01:58 PM 发表
可以。 resolution很低。
它是针对发生的事件来处理。 |
|
|
|
|
|
|
|
发表于 1-3-2009 06:41 PM
|
显示全部楼层
原帖由 fritlizt 于 1-3-2009 01:58 PM 发表
可以。 resolution很低。
但是,Pololu 卖的,只用 16F876A,resolution 可以去到 0.5uS,不懂他们怎样作的。 |
|
|
|
|
|
|
|
发表于 1-3-2009 06:43 PM
|
显示全部楼层
原帖由 waiweng83 于 1-3-2009 06:41 PM 发表
但是,Pololu 卖的,只用 16F876A,resolution 可以去到 0.5uS,不懂他们怎样作的。
单单拿来做servo motor controller是可以的
不过楼主还要拿来做其他东西。 read adc等,就做不到0.5us了
我觉得不能。等下我试试看。
polulu是几个channel的?
[ 本帖最后由 fritlizt 于 1-3-2009 06:49 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 1-3-2009 08:34 PM
|
显示全部楼层
原帖由 crazybear 于 23-2-2009 02:20 PM 发表
我是用5个Variable resistor来控制5个Servo Motor,第一个VR控制第一个SERVO,第二个VR控制第二个SERVO。。。。第5个VR控制第5个SERVO。
我的难题就是要如何同时控制这5个SERVO,就是说5个VR一起转的时候,那5个SER ...
试过了。
pic16f877a 20mhz 用ccs c。 5个vr控制5个servo是没问题的。之前讲不能是第六感。呵呵。仔细算过后就发觉倒是可以的。
resolution 1us.要更fine也是可以。
不过这样fine你也是看不出的。
你想想看怎样有什么控制servo的 idea.adc我相信对你不会很难。
我过后再告诉你我的solution. |
|
|
|
|
|
|
|
楼主 |
发表于 1-3-2009 11:58 PM
|
显示全部楼层
回复 12# fritlizt 的帖子
之前还打算用5MCU了,但看到你这样说我决定用1个MCU来做了。 |
|
|
|
|
|
|
|
发表于 2-3-2009 11:26 AM
|
显示全部楼层
原帖由 fritlizt 于 1-3-2009 06:43 PM 发表
polulu是几个channel的?
16 个 channel。这个:http://www.pololu.com/catalog/product/240
pic16f877a 20mhz 用ccs c。 5个vr控制5个servo是没问题的。之前讲不能是第六感。呵呵。仔细算过后就发觉倒是可以的。
resolution 1us.要更fine也是可以。
不过这样fine你也是看不出的。
请问,你的 output 是全部一起变 high,然后各自地变 low?还是 channel 1 先输出,然后才到 channel 2......? |
|
|
|
|
|
|
|
发表于 2-3-2009 02:38 PM
|
显示全部楼层
不懂他用什么方法。我迟一点在揭晓。 等看crazybear有什么idea。
cytron也不是有16 channels servo motor controller吗?做法应该大同小异把
[ 本帖最后由 fritlizt 于 2-3-2009 02:59 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 2-3-2009 06:05 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 3-3-2009 11:50 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 4-3-2009 02:49 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 4-3-2009 08:02 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 5-3-2009 12:21 AM
|
显示全部楼层
原帖由 fritlizt 于 4-3-2009 08:02 PM 发表
给你了。 我又觉得我很像抢手。。。。。。良心过意不去。哈哈哈
讲 concept 就好了。不用整个 source code 都 paste 上来吧。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|