Malay
颜色选择
阳光橙
深夜黑
天空蓝
葡萄紫
薄荷绿
深海蓝
首页
论坛
佳礼报道
新闻
搜索
4998
查看
46
回复

2轮平衡ROBOT(更新)

[复制链接]

楼主: 高明       显示全部楼层   阅读模式

发表于 7-2-2009 05:14 PM | 显示全部楼层
原帖由 高明 于 5-2-2009 05:33 PM 发表
再看了一下,两个网站说的都不不同,还是我理解能力有问题??


第一个才对。第二个的错了。

我到了youtube看了一些相关的片段,发现大多数的balancing robot 都是高的,是不是越高其sensor 越敏感?


不是越高 sensor 越敏感,而是重量在上面会比较容易平衡。你试一下用手去平衡一个铁锤,是不是重量在上面会比较容易平衡?

是不是一定要用到 wheel encoder 的?? 拿来  convert (encode) a  mechanical position as an signal that is readable by some sort of control  circuit.


不一定。Encoder 是让你知道轮子的速度和位置,对 2 轮平衡机器人来说并不是很重要。我的女友是用 Back EMF 的方法来量 motor 的速度的。这方法不是很准,但是已经足够了。

http://www.acroname.com/robotics/info/articles/back-emf/back-emf.html

由于现在我们正读着MC68HC11,还会做MC的project,所以我建议他如果用MC68HC11 就能省下一点时间与钱。他却说我叫你看 MC68HC12 能不能接(interface) with 电脑,不是MC68HC11 ,MC68HC11能接电脑咩?? 我心想    ,HC11与HC12 就那一点点分别,HC11也能接电脑呀,但我没出声,给他威下。


相信你现在所读的 MC68HC12 是用 assembly language 的吧。建议你还是用 C 来写,否则你会很头痛。至于能不能和电脑沟通,只要有 UART 就可以了。

他也叫我找motor 的driver,说什么 用motor the feedback signal 来控制 robot (不就是wheel encoder 麻,之前我就解释给他说需要wheel encode record  rotatio, acceleration,velocity 等)。


如果你的 motor current 不是很大的话,可以用一些 IC 的 motor driver,例如 L293, L298 等,然后用 PWM 来控制速度。但如果你要做 close loop 的 motor control 的话,就会比较复杂,必须用到 PID 之类的 algorithm。

他说可以拿 line follower 的来用(上次他supervised line follower, 但hareware 做到了,software 却不成,那条水还能拿 A,因为他是长嘴的)


看开点吧。在马来西亚的大学有很多这样的 case 的。

我真是要顶他的肺,如果我会就不需要你做我Supervisor啦,你是协助我的,不是我去告诉你,教你做。。


政府大学,不是每个 lecturer 都是有料的。很多有料的都已经被私人大学挖过去了。所以与其靠你的 supervisor,不如自己多做功课,将来受益的也是你自己。
回复

使用道具 举报

楼主
 楼主| 发表于 8-2-2009 11:30 AM | 显示全部楼层
  相信你现在所读的 MC68HC12 是用 assembly language 的吧。建议你还是用 C 来写...

对,MC68HC12是用assembly language 的。



感谢waiweng83一直以来的指导,经过不断吸取各方面的资讯,以上的图是我对2轮机械人的构思图。


我不知道该用PCB还是Processor chip, 有何建议?
目前我已了解L293D的连接。DC motor 读取PMW input,然后转换成旋转运作。如要向相反方向转,我们只需倒转voltage polarity 看了Cytron DC Geared Motor。可能会用MO-SPG-10-150K。还有UC00A (USB to UART converter)。
SPG 是什么?Sync pulse generator找了很久都找不到其意思。Cytron  看到 MO-SPG-10-150K, SPG50,10和50 号码代表什么?
Cytron 的Square robot chasis 适合吗? 好像很大, 40cm x 50cm。 能定做的吗?



[ 本帖最后由 高明 于 8-2-2009 02:00 PM 编辑 ]
回复

使用道具 举报

发表于 10-2-2009 11:34 AM | 显示全部楼层
原帖由 高明 于 8-2-2009 11:30 AM 发表



这个图,有点错。
1。DC Geared Motor 不应该从regulator 那边拿电,应该直接从 battery 拿,除非你的 regulator 可以 supply 大 amp,或你的motor 很省电。
2。Motor 的 back EMF 是应该接去 MCU 的 ADC,不必通过 L293。

我不知道该用PCB还是Processor chip, 有何建议?


PCB 是电板,Processor chip 是 IC,两个是不同的东西来的,怎么比较?

看了Cytron的 DC Geared Motor。可能会用MO-SPG-10-150K。还有UC00A (USB to UART converter)


SPG-10 系列的 motor 太小了,并不适合你。它是 Pololu 3pi Robot 的 motor 来的。3pi 只有手掌般大小
http://www.youtube.com/watch?v=P8T_ZZwOmIs

UC00A 是很好用的东西。因为现在大多数的 laptop 都没有 serial port 了。如果要跟 MCU interface,就必须接一个 USB to RS-232 converter,然后还要一个 max232 来convert RS-232 去 UART。现在这个 UC00A 可以直接 convert USB to UART,省掉了很多麻烦。

SPG 是什么?Sync pulse generator?找了很久都找不到其意思。Cytron  看到 MO-SPG-10-150K, SPG50,10和50 号码代表什么?


SPG 并没有特别的意思,只是产品的代号而已。SPG10, SPG20, SPG30, SPG50 是代表不同的 size。

Cytron 的Square robot chasis 适合吗? 好像很大, 40cm x 50cm。 能定做的吗?


这个真的很大,是给 Robocon 或其他大架的 mobile robot 用的。而且价钱不便宜,因为是用 aluminium profile 做的。
要定做是可以,但是通常 customize 的东西都很贵。为什么你不自己做呢?大学应该都有足够的器材让你自己做了。
回复

使用道具 举报

楼主
 楼主| 发表于 10-2-2009 01:36 PM | 显示全部楼层
.这个图,有点错。

谢谢告知,请问还有缺少什么硬体吗?


PCB 是电板,Processor chip 是 IC,两个是不同的东西来的,怎么比较?.

写错了  ,PCB 是 Printed circuit board, 我想问 PCB上该用什么Processor 或microcontroller, 有何建议?

SPG-10 系列的 motor 太小了,并不适合你。

谢谢告知,那我就用 SPG50 60K DC geared motor 好了   ,56rpm, 588 mNm。


. 为什么你不自己做呢?大学应该都有足够的器材让你自己做了。

因为有budget 的 , 现在只好自己做了

还有, cytron 的 Narrow Tire Set  : WL-TMY-70145 适合吗?

你女朋友的Thesis      能借我参考吗  

谢谢。

[ 本帖最后由 高明 于 10-2-2009 01:57 PM 编辑 ]
回复

使用道具 举报

发表于 11-2-2009 11:50 AM | 显示全部楼层
原帖由 高明 于 10-2-2009 01:36 PM 发表
写错了  ,PCB 是 Printed circuit board, 我想问 PCB上该用什么Processor 或microcontroller, 有何建议?


用你所熟悉的吧。

谢谢告知,那我就用 SPG50 60K DC geared motor 好了   ,56rpm, 588 mNm。


56rpm 好像太慢了吧。建议你参考网上其他人的 motor rpm 和轮子大小。

还有, cytron 的 Narrow Tire Set  : WL-TMY-70145 适合吗?


这个是给 Tamiya 的 motor 的。你用其他 motor,可能 mounting 会有问题。

你女朋友的Thesis      能借我参考吗  ?


hmm...这个有点麻烦。因为只有 hard copy。而且也不懂她的 supervisor 允许她给人吗。你可以试看直接跟她的 supervisor 拿。Email 和电话我会 PM 你。
回复

使用道具 举报

楼主
 楼主| 发表于 12-2-2009 09:31 PM | 显示全部楼层

回复 25# waiweng83 的帖子

谢谢 waiweng83 兄
回复

使用道具 举报

楼主
 楼主| 发表于 21-10-2009 08:37 PM | 显示全部楼层
真不好意思,这没久没更新,有些不服责任。

8个月过去了,交论文的时候也到了,
先说说这段期间的进程吧~

上个学期在4-5月是已经得到了所需硬件,
依照进度表是必须在上学期吧硬件完成,
因为我校电子系要搬迁到北根(pekan),
所以实验室没开,工作唯有延迟。

*搞到现在每天要坐一小时多车程来回宿舍与学院 :@  
(来回差不多3小时了) :@

一切有关机械人的线路我已画好,
但却拖到8月才开始建造骨架与线路,
因为我们是4人一起用+建一样的机械人,
我supervisor 说要teamwork,一起做

结果等呀等,那3条番薯无动于衷
我就去踢下那3条番薯,开始是有滚动下,
说出他们心目中的机械人构造,
4方形的有,圆形的也想。

讨论了一番后,
总于动手了,
可惜动手的只有我一人,
他们眼看,手不动,嘴巴却不停
由于那时是斋戒期间,
我也懒得理他们,
这些东西一个人做都不够做

就只代表性的来看下,
接着几次就没出现了,
我自己默默的完成hardware part。
直到上两个星期,
其中一个才收到风我完成了hardware part,
所以就出现问东问西  

我已经成功把motor programmed 转了,
为了拿sensor 的bacaan,也让费了我不少时间,
还拿osciloscope 来试,
最后才知道拿multimeter 就能得到 sensor 的voltage reference 了

现在正研究着如何写 sensor 的programme,
先在此向各位 单晶片分区 网友与版主还有waiweng83 兄行个礼,
以便日后好相见。



注:由于学院搬迁,所以project 被延迟到11月尾present,不知道能完成吗?
回复

使用道具 举报

楼主
 楼主| 发表于 14-11-2009 11:45 PM | 显示全部楼层
我只用 X-axis of accelerometer as sensor,但平衡不了我的robot。

我用坐车的原理,当踩大油时,后面的人将会向后移。

当robot 向前倾时,

1.他的轮因向前转对吗?反之就向后。

但我向前、后、倒转都不能。


2.请问我单单只用一个sensor能吗?因为现在我只是要平衡而已,不需要robot run + balance.

3。以下是我的code,如方便的话,有错误请告知
'* ----------------define crystal being used-------------------- *'
define osc 20

'* ----------------program defination is here------------------- *'
define ADC_BITS 8          'Set the nimber of bit being used'
DEFINE ADC_CLOCK 3           'set clock source being used'
DEFINE ADC_SAMPLEUS 50      'sampling time in microseconds'
define CCP1_REG PORTC
DEFINE CCP1_BIT 2
DEFINE CCP2_REG PORTC
DEFINE CCP2_BIT 1
'define HPWM1_TIMER1


'* -------all variable,pin defination and constant here--------- *'
SE1 VAR porta.0    'sensor-x axis accelerometer'
CW2 VAR portd.0     'clockwise'
CCW2 VAR portd.1     'counterclockwise'
CW1 VAR portd.2
CCW1 var portd.3
PWM1 VAR PORTC.1     'motor1'
PWM2 VAR PORTC.2      'motor2'
DAT1 VAR byte
TRISA= 1
TRISC= 1
TRISD.0= 0
TRISD.1=0
TRISD.2=0
TRISD.3=0
adcon1=%00000000
HPWM 1,100,500
HPWM 2,100,500

status_sensor var byte '0 - 1, 1 - 2
'* ------------------Main programs are here--------------------- *'

main:
status_sensor=1
        GOSUB IR1     'JUMP TO IR1 SUBOUTINE
        
GOTO MAIN
   

'SUBROUTINE PROGRAM

IR1:
    adcin 0, DAT1
   
   IF  DAT1>70 THEN
        gosub Bwd
'        pause 1000
   return
   
   IF 66<dat1<70 THEN
        GOSUB STP
'        pause 1000
    return   
   
   IF DAT1<66 THEN
        GOSUB FWD
'        pause 1000
    return  
endif
endif
endif



FWD:
    HPWM 1,150,500
    CCW1=1
    CW1=0
'    PAUSE 1000
    HPWM 2,150,500
    CCW2=0
    CW2=1
'    PAUSE 1000

RETURN

BWD:
    HPWM 1,150,500
    CCW1=0
    CW1=1
'    PAUSE 1000
    HPWM 2,150,500
    CCW2=1
    CW2=0
'    PAUSE 1000

return

STP:
     HPWM 1,0,500
    CCW1=0
    CW1=0
    HPWM 1,0,500
    CCW2=0
    CW2=0
   
RETURN  



当robot BWD(向后倒时,ccw LED on,轮也转,但却回不了set point(balance).

当robot FWD(向前倒时,ccw 和 CW LED 都 on,有CW 又CCW,结果轮也转速度就比上面的来得慢了,但也回不了set point(balance).


HELP ME!!
回复

使用道具 举报

发表于 15-11-2009 11:01 PM | 显示全部楼层
原帖由 高明 于 14-11-2009 11:45 PM 发表
请问我单单只用一个sensor能吗?因为现在我只是要平衡而已,不需要robot run + balance.


不行。原因请看 11 楼。

如果你要简单些,可以考虑用 IR distance sensor。
回复

使用道具 举报

发表于 29-11-2009 03:09 AM | 显示全部楼层
你的program似乎跟on/off type control 很接近(只差你多了一段中间平衡时的process)。这种control method,是无法有效地balance你的robot。我建议你对于不同的斜度,feedback不同的速度(lookup table 方法),再透过多次试验,你该会有机会成功。而且,必须明确的交代你robot的稳定运作范围给你supervisor。这个firmware照我看,少都要5面 embedded c code(因为,全部都是conditional process)。加油吧。
回复

使用道具 举报

发表于 3-12-2009 09:42 AM | 显示全部楼层
On-Off Control 是不行的。Lookup Table 的方法也好像很难。必须用一些 control system 如 PID 之类的来控制你的 robot。楼主之前不是说要用 Linear Quadratic Regulator 的吗?
回复

使用道具 举报

发表于 4-12-2009 08:56 PM | 显示全部楼层
我的FYP也是做2 wheel balancing robot..
刚开始罢了。。
回复

使用道具 举报

发表于 12-12-2009 02:04 PM | 显示全部楼层
我也是用IR量sensor 与地面上的距离以便让机器平衡... 但是我现在stuck再prgrammingpart ... 请问如果我使用IR的话,programming 应该怎么写呢?应该注重在哪一个部分? 还有急事说如果我用IR sensor 量distance 的method, 就是说我不用gyroscope and accelarameter lo??
回复

使用道具 举报

发表于 14-12-2009 01:15 PM | 显示全部楼层
我也是用IR量sensor 与地面上的距离以便让机器平衡... 但是我现在stuck再prgrammingpart ... 请问如果我使用IR的话,programming 应该怎么写呢?应该注重在哪一个部分?
啊寺 发表于 12-12-2009 02:04 PM


不如你说说看你打算怎么做?想一想,有了 IR Sensor 和地面的距离后,怎样换去角度?有了角度,怎样平衡你的机器人?

还有急事说如果我用IR sensor 量distance 的method, 就是说我不用gyroscope and accelarameter lo??


是。
回复

使用道具 举报

发表于 15-12-2009 01:23 AM | 显示全部楼层
回复 34# waiweng83

我的初步构思是把IR1 and IR2 放在前后,然后把两颗都装在和地面一样的距离,如果我的robotic有swinging 的话,那么sensor与地面的距离就会有更改,有更改意即不平衡.假设说我把sensor放在离地面10cm, 我把它set成原始点,如果sensor与地面的距离有更改,就尝试把它弄会原始点。 by the way , 如果只是用IR sensor , 也能用来量角度吗? 我看楼上的是需要IMU 的... 谢谢大大指教
回复

使用道具 举报

发表于 15-12-2009 10:27 AM | 显示全部楼层
回复  waiweng83

我的初步构思是把IR1 and IR2 放在前后,然后把两颗都装在和地面一样的距离,如果我的robotic有swinging的话,那么sensor与地面的距离就会有更改,有更改意即不平衡.假设说我把sensor放在离地面10cm,我把它set成原始点,如果sensor与地面的距离有更改,就尝试把它弄会原始点。
啊寺 发表于 15-12-2009 01:23 AM


差不多就是这样。

by the way , 如果只是用IR sensor , 也能用来量角度吗? 我看楼上的是需要IMU 的... 谢谢大大指教


从你两个 IR Sensor 所量到的距离的差别,不是可以算到角度吗?前提是你的 IR Sensor 必须是可以量距离的,而不是 IR Proximity Sensor。楼上的使用 IMU,是因为他们没有用 IR sensor。
回复

使用道具 举报

发表于 15-12-2009 07:06 PM | 显示全部楼层
哦... 意思是可以用formula 可以算出它的角度?我的朋友建议我用dc servo motor , 把它set 程90度 , 这样就肯定不会倒. 想请问一下可以量distance的IR sensor 市面上大概多少钱? 因为我所用的IR 一set才rm2.50=.=" hehe
回复

使用道具 举报

发表于 16-12-2009 09:51 AM | 显示全部楼层
我的朋友建议我用dc servo motor , 把它set 程90度 , 这样就肯定不会倒.
啊寺 发表于 15-12-2009 07:06 PM


如果你说的 servo motor 是航模用的 servo,那肯定不行。因为那些 motor 是不能连续转动的。

想请问一下可以量distance的IR sensor 市面上大概多少钱? 因为我所用的IR 一set才rm2.50=.=" hehe


用 Sharp GP2Y0A21YK 吧。价钱大概是 RM65 一个。

halo... this is the programming i write... but i dun knw how actually to write the balancing part... hope u can help me.
this is the programming part i wrote...

                list        p=16f877a
                include        "p16f877a.inc"

Reg_0        equ                20h

                org                0x00
                goto        Start

Start        bsf                STATUS,5                        ;select bank 1
                bcf                STATUS,6
                movlw        0x06                                ;set all PORTA to digital input
                movwf        ADCON0
                movlw        0xff                                ;set porta as input
                movwf        TRISA
                movlw        b'11110000'                        ;set portc pin4-7 as input
                movwf        TRISC
                movlw        0x00
                movwf        TRISB
                movwf        TRISD
                movlw        b'00000111'                        ;change prescaler tmr0
                movwf        OPTION_REG
                bcf                STATUS,5                        ;select bank0
                clrf        PORTD
                clrf        Reg_0
                clrf        PORTC

Begin        bcf                PORTD,4                                ;reset motor
                bcf                PORTD,5
                bcf                PORTD,6
                bcf                PORTD,7
                btfsc        PORTA,0                                ;test sensor 1
                goto        Begin
                btfsc        PORTA,1                                ;test sensor 2
                goto        Begin
                btfsc        PORTA,4                                ;test sensor 3
                goto        Begin
                btfss        PORTC,4
                goto        Left
                btfss        PORTC,6
                goto        Right
                btfss        PORTC,5
                goto        Front
                btfss        PORTC,7
                goto        Back
                goto        Begin

Left        bcf                PORTD,4
                bsf                PORTD,5
                bcf                PORTD,6
                bcf                PORTD,7
                btfsc        PORTA,0
                goto        Begin
                btfsc        PORTA,1
                goto        Begin
                btfsc        PORTA,4
                goto        Begin
                btfsc        PORTC,4
                goto        Begin
                goto        Left
Right        bcf                PORTD,6
                bsf                PORTD,7
                bcf                PORTD,4
                bcf                PORTD,5
                btfsc        PORTA,0
                goto        Begin
                btfsc        PORTA,1
                goto        Begin
                btfsc        PORTA,4
                goto        Begin
                btfsc        PORTC,6
                goto        Begin
                goto        Right
Front        bcf                PORTD,4
                bcf                PORTD,6
                bsf                PORTD,5
                bsf                PORTD,7
                btfsc        PORTA,0
                goto        Begin
                btfsc        PORTA,1
                goto        Begin
                btfsc        PORTA,4
                goto        Begin
                btfsc        PORTC,5
                goto        Begin
                goto        Front
Back        bcf                PORTD,5
                bcf                PORTD,7
                bsf                PORTD,4
                bsf                PORTD,6
                btfsc        PORTA,0
                goto        Begin
                btfsc        PORTA,1
                goto        Begin
                btfsc        PORTA,4
                goto        Begin
                btfsc        PORTC,7
                goto        Begin
                goto        Back

                end


为什么你 PM 我?放在这里可能其他人可以帮到你。不好意思,我已经五年多没有用 assembly 了。别用 assembly 了,用 C 吧。除非是高手中的高手,不然是没有可能用 assembly 写得出来的。因为2轮平衡机器人的程序,不是简单的 if else 罢了,而是需要一个 closed loop control system (PID, fuzzy 之类)。这些都会用到乘除和小数点的运算,用 assembly 你会吐血。
回复

使用道具 举报

发表于 16-12-2009 11:16 PM | 显示全部楼层
哈哈,对不起,那么那个IR 需要两个吗? 如果只是用普通得IR不能?为什么不能呢?
回复

使用道具 举报

发表于 17-12-2009 08:36 AM | 显示全部楼层
哈哈,对不起,那么那个IR 需要两个吗? 如果只是用普通得IR不能?为什么不能呢?
啊寺 发表于 16-12-2009 11:16 PM


应该一个就够了的。如果你用普通的 IR,要怎样量距离?普通的 IR 是会被颜色的深浅影响的。
回复

使用道具 举报

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

本版积分规则

 WeChat
 CARI App
Get it FREE Google play
 Instagram
cari_malaysia
FOLLOW
- 版权所有 © 1996-2019 Cari Internet Sdn Bhd 佳礼网络有限公司 (483575-W) -
Private Cloud provided by IPSERVERONE
0.176619s Gzip On
快速回复 返回顶部 返回列表