请选择 进入手机版|继续访问电脑版
返回列表 发新帖回复

[教程] 自制爬楼梯小车,包括全套流程和代码

[复制链接] 【【【进入图片模式】】】
  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表在  2017-8-8 13:16:52  | 显示全部楼层 | 阅读模式
    近日心血来潮用Makeblock的零件搭了个自动爬楼梯的小车
    1 }2 H( k0 }  E3 ^废话少说先上视频
      R1 x4 K2 J, z% ^7 a+ t( S, C4 ~* W* T$ {; ?

      v+ p0 y& Z( }5 D1 D下面给大家介绍一下如何搭建这个案例。由于是自动爬行,那么自然有各种传感器。什么巡线(当接触开关用),超声波,限位开关,陀螺仪~~: i8 m# a. u- R  Q% y8 I

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码
    ) t( [2 K% h% V# H- d0 A

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码
    7 q- r3 y9 j$ U* r4 B) r8 w; p! c

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码
    9 k4 b! }9 e3 _0 B& O7 T8 ?
    + D! {! k; ]0 G$ }. _
    首先先简单介绍一下实现原理
    / h2 e  M5 v- q: G8 u# \额。。理想状态下一共有8个阶段,其中1号轮子和4号轮子都是带电机的主动轮,其他都是从动轮,而且升降装置装在2号和4号轮子上# _* `& p3 N8 q1 S6 J
    阶段1
    " V* z$ o: E6 @+ Q1 ^; `$ D前进2 l* g( @* Z9 L( O

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    # {) s% k" |; I# l. |  y
    3 D* I3 [2 ~1 \4 Y+ p阶段2 % ]9 ]+ Y, f- E, Q
    超声波检测到前方有障碍(这里指的是楼梯)
      m  N( |8 R3 N车体上升,1号和2号升降装置把1号和3号轮子升起来直到超声波传感器检测不到楼梯3 i. U: {7 Y. F/ l& b

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    " d" o" I6 _6 t1 \3 b0 v1 P" b  ~+ r: P
    阶段3 ; `  S. `; V3 @( e; a: A
    1号和4号轮子推动小车前进, U. m8 t6 D: Q

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码
    5 `1 k/ B( W' i5 [$ K( f
    ( N+ p3 r- d. y- K
    阶段4
    9 }+ Q8 W+ s0 Q1 b. c$ z! ^2号轮子的巡线传感器检测碰到楼梯了,1号升降装置把2号轮子收回去
    7 t4 |' _! R) R$ H

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码
    7 S, h$ w) k( q' D! l8 |3 A
    4 e5 |" W! m0 [- ?2 J+ p7 k
    阶段56 [0 r3 S8 k+ g) J( E8 u
    1号和4号轮子推动小车前进
    # a6 i3 S' Y& h# @$ e" q

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    / R7 D" h; L- D# J& [# A
    ( B: e0 }& Q9 h4 ]1 l7 I( y阶段6
    6 }8 j! Y4 b2 L* p4 a; R! B, E: J- t4号轮子上的限位开关检测到4号轮子已经碰到楼梯,主动轮停止转动,2号升降装置把4号轮子收回去  p0 {7 K+ ?, z" v) k3 L

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    9 f' ~1 C3 F8 V* Z
    / X. z) X* _: \( y阶段7
    4 \) [7 B* i2 I( J5 ?8 ?9 ]  F1号轮子推动小车前进 也就是阶段15 x4 y& n; Z$ ?

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    2 Y! D. z4 R* W. I
    5 M6 p1 ?: P6 d, X: M阶段8
    8 ~: Q. X5 [) _  }& v8 [3 v也就是阶段2,小车继续前进直到超声波检测到楼梯然后开始循环- j% A: @6 H& b0 @! s8 k

    自制爬楼梯小车,包括全套流程和代码

    自制爬楼梯小车,包括全套流程和代码

    2 [" _' b  R5 f0 g) `, s: R& L) e5 A) a/ p" K, V
    额。。攀爬原理差不多就是这样了,接下来给大家介绍一下搭建方法以及调试过程中碰到的一些问题
    % m- J" h6 n5 l  z0 q' Y
    回复

    使用道具 举报

  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表于 2017-8-8 13:17:42  | 显示全部楼层
    这个案例在机械结构方面的一个特色就是这个升降的装置,既要可靠,又要比较迅速地升降。所以我选择了齿条齿轮的配合方式,并且使用单孔梁作为滑轨,用3*3的同步带固定片配合双孔梁做了个简易滑块。
    3 z. B6 f! q+ r) f" a$ O下面是搭建使用的材料和方法。$ o6 j  O3 X/ Q" H" B* D2 W
    $ ]- F. v# M% C+ k5 E4 O6 r( A
    升降装置1: C; H2 B( l/ F2 ~
    181315fd8t8tqq8ttks7ap.jpg.thumb.jpg 6 x$ \, L& S1 a+ [* Q' ]5 `
    1 S0 `3 v6 {- U# i
    双孔梁032*4
    1 b8 t, {; e' ^双孔梁160*2
    - P* C4 ^3 ~  r( x* R  WM4*22螺丝*84 V8 t+ W1 ^  \3 c9 q1 s1 e  W
    M4螺母*8
      H/ O. M1 b( E, `+ }% x 181310htykatvrv80rzcas.jpg.thumb.jpg
    * N& P' z7 T& e' h2 i9 a! a+ s( p) n+ _; Z
    181312eh01d1e1dyzh10p1.jpg.thumb.jpg 8 S5 d: y: i3 I7 H
    ( r6 b: O! \2 T2 M+ f
    然后使用下面的材料把上面搭好的结构连接起来2 V0 I( V8 E+ g0 h$ ?, V$ k& g4 D9 M
    181307pn2af4cfflif2edf.jpg.thumb.jpg
    / Q9 m( z- o6 x/ F
    : p, _( H1 c0 ^, E# V3*3同步带固定片*4
    # {9 g+ c1 {& j, I& ]1 nM4*8螺丝*164 S' F* m& |" _, s. D
    181306z30pfvvcwcgf0m0m.jpg.thumb.jpg
    9 P$ S5 J/ a+ n/ V, Z  z# L3 T2 x% b' W* w2 k9 g' a
    181303moo7zhsitp3tsxso.jpg.thumb.jpg
    " ~$ B2 J. Y8 I# D  |/ w
    1 w* x" p2 y/ M1 z7 H8 k额。。这样滑块就搭好了
    ; j2 E* v; L0 _5 j 181300lqqqiiyv7xxx3xpo.jpg.thumb.jpg
    6 [0 L4 p/ l/ s- Z
    : C" ]+ x* K5 Q" V! V拿两根0808*312的单孔梁刚好能穿过滑块
    9 \. ?- a4 x' _) \$ M
    + H* y) @" @, a. e! ~7 H接下来我们来搭齿条5 X& }* _; b2 x8 R4 b6 D5 B! ?
    由于我们这个自动爬楼梯小车比较智能,能够适应不同高度的楼梯,所以我们的滑轨和齿条都要准备的长一点,既然滑轨都有312mm那么长了,齿条肯定不能短
    . i. [" h1 R5 p0 z- C3 g% Y1 A4 X 181259impnrssrwst43vp0.jpg.thumb.jpg " @0 @% B: r5 g: E7 W
  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表于 2017-8-8 13:19:07  | 显示全部楼层
    所以我使用了4段齿条拼接起来,至于为什么上面的材料图片中有一根312的单孔梁呢,这是有原因的。光靠齿条拼接的话在升降过程中齿条与齿条之间的连接处会弯,这一弯齿轮和齿条的啮合就出问题了,哒哒哒滑齿了。至于为什么我会发现这个问题呢,这个就不解释了,说多了都是泪。所以我们要把齿条固定在这根单孔梁上。如下" F+ I1 ^0 K3 U$ X+ A' p
    181257nmzi3i1i6d5tii8z.jpg.thumb.jpg
    . @5 X2 u6 O% J% c
    * [* e2 ^0 f) k/ S* |( h: P 181256n4u6cvmk743ckolx.jpg.thumb.jpg
    ( G. ^% `2 ^" G# Y; G* }; D# l9 Q. S) ~
    181254labpiblw5cnav5zp.jpg.thumb.jpg $ _& M: P: z/ S+ _7 M9 v$ S
    1 E( T& Q/ v# S' Y5 q0 w, O0 s
    接下来把导轨和齿条固定在一起
    " Q. b" d. N% c8 t材料如下
    : T! ?* i! p) u. t3 D144双孔梁*1" v  ~6 N2 D9 z2 t* ]
    M4*22螺丝*3
    " T; p, |* B- }: n8 Y0 U: L6 |M4螺母*2
    ) d- a% \7 a3 V% t 181251lwet9zroe9lt8azr.jpg.thumb.jpg
    3 y& A; N! x) r" w) G- A' \7 N$ \1 e: e4 X2 @) [
    176双孔梁*23 H) N! g! \$ s2 {9 J
    M4*22螺丝*6$ S+ j+ _& C3 a9 }2 S6 F' ]
    M4螺母*6& b7 u& b5 Q+ }+ ~4 i
    181249nos4kvsrlptmfrkv.jpg.thumb.jpg
    0 S1 g2 B8 L# J( X& f( {2 l" B, H 181248coczuvunan2hd4hz.jpg.thumb.jpg
    6 a8 T* S2 b1 R2 c" Z3 `装上2号轮子(从动轮)
    6 A) s# N. W8 c# {% P7 x使用以下材料
    3 v, p: r& z* B* I8 K5 N 181243powwc9woooc76p0t.jpg.thumb.jpg
    6 {$ b  g% {) m# i% h/ U4 L6 f3 X3 o: I  Z& ~( Q# @; {  E
    轮胎*2. b8 r/ n9 `1 ?/ T9 [, J' N9 q
    90T同步带轮*2# s! O+ M* }* P7 z
    螺丝轴*2- v, V" n1 f+ ]8 V
    法兰轴承*4
    & U% R( q7 ]$ v! n! ~0 ?M4螺母*2' g2 W/ ?  p# K2 K: A
    M3*5无头螺丝*2
    / ^  U4 F7 L, ?) \. m" |& k4*2塑料垫片*4
    5 ~! W6 L& ^, ?) b 181239rzekgugg3ah2emqa.jpg.thumb.jpg
    ! @* h5 ]9 w7 n6 G5 G7 t' t 181237g9jvawpwwwafa9bv.jpg.thumb.jpg
    1 o0 y2 Q' v7 h& Y. U. m* N把轮子固定在双控梁的端面! X( b5 R6 M. s# _
    181236je4orzrxzl32oqz3.jpg.thumb.jpg 4 Y' _# t* y+ u1 x

    ( r' {* l. b' o7 j4 K$ F* Z2号轮子和1号升降装置搭建完毕8 u) R& p' a0 s5 A
    接下来搭建4号轮子和2号升降装置
    8 n4 ~# E0 x% Y# Y0 L/ }6 b2号升降装置结构和1号一样
    / l' z( }4 A2 K  t# [% J' Z所需材料也一样
    8 |# w2 j. y- D# a只不过把032双孔梁固定在下图的位置5 ]% a9 H, ?1 J# y
    181355sx09k0fuxu0ueevf.jpg.thumb.jpg   G$ ~+ L1 [1 U2 b4 }$ [' j
  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表于 2017-8-8 13:19:56  | 显示全部楼层
    导轨和齿条的搭建与1号升降装置一样
    ) K% A& Z9 i& J; o& a' N" Z上端的连接使用080双孔梁替代144双孔梁
    - O. U7 Q# M! ~4 o* Q1 _ 181346dhz1z9stzaatvnm1.jpg.thumb.jpg
    5 p7 m% k  \5 v$ r# T, m1 u2 P) R7 @7 B
    181341fmztz7xt6i64c6ny.jpg.thumb.jpg # n) g1 U/ h+ Y
    128双孔梁*16 s+ f# |$ H- S: o+ u
    M4*22螺丝*6
    5 }6 a5 l" l2 ?5 n. D1 I! bM4螺母*6% R; b9 w# m, O3 c4 a- b
    181339l11f7yxxe7fpe1qc.jpg.thumb.jpg
    8 F! F3 B( @+ e) T5 S9 p& @/ h) Z
    2 B2 a# I! {! D! P( ?6 K' Q1 a/ c0 }
    装上L形支架,用8 ]3 i2 H8 }/ ]4 ~+ X
    M4*14螺丝*2
    . j+ i6 j) V; o, U% n: z' |# ?M4螺母*2& R" d. o- r  w5 P$ H* G" G# V& F
    固定在梁上
    : o/ G( p6 R. {9 d8 C( L2 W8 A: P! M1 [ 181333ner52r32ogagb18j.jpg.thumb.jpg ' W# x2 e& ]9 y

    % `2 q4 x9 W! u0 f! [8 D 181331tevoc13ckh2k11so.jpg.thumb.jpg ' l; |( f0 r# i* d0 n1 f
    0 Y" \% {$ ~6 P" N: d
    % U) ^4 z- r5 g* ^+ A* x0 [; |
    完成2号升降装置的搭建后就可以开始搭建4号轮子(主动轮)) r' p' @8 t9 z( l
    所需材料如下
      d% `# @  S$ n# v3 j/ ^ 181329xhlvwkwwiwq6wrwh.jpg.thumb.jpg   V+ m# ^* R. n

    * b4 `1 j: I! S$ F9 U% U3 e3 `25mm电机*1
    1 T0 c6 A; X* o: F: T& L  b4 V90T同步带轮- f8 G9 K5 }; y9 Q
    25mm电机支架# r4 _0 }. g9 Z* T" |
    传动固定盘
    - [# {; o1 l) x* w( Z! N7 QM3*5螺丝' N2 @; T3 T8 `1 o* \' {" m6 R0 Q
    M4*14螺丝
    : i) l0 B, m  Y9 Z# O; B 181326b2gk6nsff2p6rm1h.jpg.thumb.jpg
    + V5 r- ?3 Q0 l1 o% t: B
    " k" o- }% n1 b# }5 V套上轮胎,用6 Z  k# @: C& m8 O! m
    M4*14螺丝*23 T8 V" K: m" \2 I, v
    螺母*2
    : M. @" j# S$ c! |固定在L形支架上/ F+ H- t: B4 O" ^- g
    181323q11akzk8rvx4ri1d.jpg.thumb.jpg % k" V7 Z1 Y4 x* z3 S6 [9 o

    % R/ w: ~$ i3 }8 F7 L) a2 M: H7 T
    6 s% E+ \" u! {* Z4 M8 h4 e完成1、2号升降装置和2、4号轮子搭建,整车结构就完成一半了
    , @0 _$ w$ |7 p2 z* F* w: l 181234llqg3zxmxm4m3bcl.jpg.thumb.jpg
    8 I4 W5 y, }; g6 R" S. {
    ( u, y1 d" k5 ~) V/ F接下来开始搭建主车架、1号和3号轮子
    7 o3 z. O) Y! q: I( Z. Z* H
    * O! ^$ Q2 p, f( w9 P首先,把1号轮子(主动轮)搭建好0 F, P( h( x; G3 {7 C( q; \
    轮胎*2# N# `1 `' P% m+ o
    90T同步带轮*2
    % W& L  r, _. ]传动固定盘*29 b1 M4 J7 l/ q0 p
    M4*14螺丝*82 b7 F1 k: U/ s2 R) L% p
    M4螺母*4/ g) L" Q1 k/ a7 u2 T9 @  I. q& I3 X
    M3*5螺丝*4
    & z( V6 |* }# U% KM3*5无头螺丝*2
    : K$ l: |4 V: B- C; u% D  y1 ]25mm电机*2; }8 U" v# Y: I7 }% Y; _
    25mm电机支架*2
      b9 ?3 V, C  A+ G" A6 p  l064双孔梁*2
    ) }2 g, X  X2 u 181246c2mxvk6hovv6ov0h.jpg.thumb.jpg & X5 Z6 Y& ~) k/ W$ ~, @8 m
    $ K6 B) h: _' T/ P
    181233keytsqj7qqqtofwt.jpg.thumb.jpg
    . Y4 Y& t/ u, m4 Q4 b
    - C- e7 n) f5 x2 D0 w4 g  g( v7 A' u+ h& }; c
    搭建前防撞杠; @$ E: {$ r3 r# e4 M

    # Z8 V3 ~7 r! Q% @- h+ } 181229ggnv9so5sj2zu5um.jpg.thumb.jpg
    7 H0 @6 o1 B2 b- V" N# [6 `/ B% @) X: B$ a( ]% q# T
    160双孔梁*1
    : ~4 J( l7 `  v* QL形支架*28 J8 x! G# `2 [3 V; w% d" w9 z5 B
    M4*14螺丝*4
    1 ~2 ~1 q- H( vM4螺母*4( P3 q5 e( y# t
    5 u" m; r, A, }9 p; x
    181227d1rlhpjfjjfrjrh1.jpg.thumb.jpg ' ^' ~8 d; E& W6 H+ ~+ c

    0 d& Z  m. [" J& K; s1 S
    / U. w! p0 f* r  u: C搭建主车架
    3 {) h9 H) ~' h# D, n 181226izrxkk022s5f9xck.jpg.thumb.jpg 8 B8 H) ^' q3 T- R+ |  X
    192双孔梁*2! v# g% K1 o0 u0 A+ F' Z( u8 s
    防撞杠*1
    5 I5 `) r7 U! V# x- |3 }前轮*2
    4 B" E- F0 \9 h/ Y4 wM4*30螺丝*6
    8 u4 s* T3 k" N9 X, z1 T8 y5 x8 vM4螺母*6
    " t6 ~6 W! E" S6 q/ @: X! B3 m5 h6 X6 u9 x
    181224lppu392y2iypepeg.jpg.thumb.jpg 0 Z2 Q5 G& z# N6 i- b
    搭建3号轮子(从动轮)9 b6 Z! X+ L8 l3 _& G1 q$ ^# F  V
    181222k7lfl0lxyc1xcdpq.jpg.thumb.jpg / J4 F/ i) ?2 c$ O! |# g- U

    6 ?$ h: e, ?; `0 r8 C) l$ ]. i3 o
    9 j' }7 a; b; r; B. ^$ T/ |轮胎*2, M4 C) m1 d. D/ f* C$ A
    90T同步带轮*2
    ) l* N, c9 A% r; y  h0 l+ t8 L088单孔梁*2
    + v  E1 a; m! t% @: i* y法兰轴承*4, Z9 Q0 b5 Q& \- O1 S* D" l- x; U
    螺纹轴*2% a0 s% T2 A' N
    4*2塑料垫片*4
    - {$ M* ~- }5 a# z2 d螺母*2/ ]' a. o% O- l
    M3*5无头螺丝*2
    , T* w9 q; J6 W1 a& N8 a 181221oldn2hlwry2qqsqx.jpg.thumb.jpg
    ) i3 _* g9 W  F( {' q4 r5 s6 G/ s; ^2 q2 w; _
    使用. z$ P; g0 F# o# I0 W( l& `2 S
    M4*22螺丝*4
    8 [& e3 T* E  y  F- v7 F% i9 }M4螺母*49 d" ~+ F( W: F& H8 \: I2 _
    181219tzi1ln538352gzwx.jpg.thumb.jpg * E# s8 p5 e1 X) }+ i+ @4 k. t
    + h' i& B1 F% y& \9 |8 V3 Q
    把3号轮子固定在车架上% |2 w, C& m( H2 @0 w6 j
    181217dre6ehp9bf9vrvzl.jpg.thumb.jpg , G+ l; h/ h# H0 z( `/ ^3 V

    : S( e5 q" ~6 z0 S6 \; `9 s2 ` 181216qfqh66wrg1suzx6j.jpg.thumb.jpg / P3 z) i  `6 S' b9 K% P: _
    装上2号升降装置
    7 R( p& J, {: G. ? 181214ezn57knz1ly7kln6.jpg.thumb.jpg 0 c1 K/ {' P  q3 V" q+ |' m, L
    使用M4*14螺丝*8" L, p) I# x1 Q1 h1 c9 {' I. R8 ~6 ^# T
    181212rf3yhfyz3vplqpfj.jpg.thumb.jpg   I- y' r8 B# z0 ~  E0 e
    # D4 R3 C  p' C7 I6 S, E0 E2 I/ {
    181211l2f3xyvhluh2vzvv.jpg.thumb.jpg 5 m- P; B6 K8 X4 W. a2 m
    装上1号升降装置
    - t6 P" h2 M" U1 i" A2 `: g9 H) h
  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表于 2017-8-8 13:20:48  | 显示全部楼层
    使用M4*14螺丝*61 O- V& l% ^' l) r5 J, h
    181209u413ggs3oa2hzo61.jpg.thumb.jpg # W1 r% L: D/ J# N6 x! |8 L5 Y
    & H$ k" K% E9 g1 n/ q
    181207fq83shbgmc3usy5m.jpg.thumb.jpg " k! y9 i& }3 a2 `/ ^. n, E
    181204sce22uzoosqq2pms.jpg.thumb.jpg 9 t2 ?4 l; B% G; N+ A" F, Q

      S4 {5 T- H( F由于楼梯宽度有限,轮子又比较大所以只能把轮子错开安装,为了节约搭建时间和材料,4号轮组之用了一个电机和一个轮子
    3 M- x! i+ N3 T# F" P9 r! m% g6 @. c9 Y' G+ s" G
    1 [3 t: o3 ?% U: L6 V' _

    ; Y: U+ K0 b% s1 M8 ?. t  B再安装升级装置的电机
    : S/ C- G0 Z0 {9 \ 181203w5t154o5my6b1bty.jpg.thumb.jpg ( ?+ ?( M0 {- x" l3 O5 _

    $ v; {- V8 o' U4 o7 q  i, ^( W7 u  F/ X' \6 T0 p
    37电机(装好电机支架)*2
    1 J0 [" R8 i# @* A6 w" m18T齿轮*27 m, A# j. w" f! i5 e3 [
    M3*5无头螺丝*2
    8 j' o6 {9 c# d; n$ m5 `M4*8螺丝*4& G$ T/ g0 M2 W4 e$ ^
    调整好齿轮和齿条的距离分别固定在1号、2号升降装置双孔梁的螺纹槽上
    3 E# V' x4 }! q+ y# k' k' [4 q6 \ 181201o004n5604jniql1e.jpg.thumb.jpg ) q$ x8 g# O8 }) f4 C/ ?
    7 J# ]8 p/ L0 ?
    181158oh3hh3h7ymzzmssm.jpg.thumb.jpg
    ! c6 p) b1 u- E8 z9 s0 q( o& f  Y5 x& v6 P  g, F" K2 \
    181148v99zz7cq7c089996.jpg.thumb.jpg
    * S$ o( t9 Y- s* I! i* e& g9 d/ J2 l3 ^, a$ D: i
    181144c5z9h39l7r9l7lll.jpg.thumb.jpg   s4 p& F# d  W
    , g. Y# k6 U6 e" r; I8 y
    完成机械搭建
    : K, s* @5 }" X. m8 _: J
    6 }0 t1 L& z6 Q/ |3 w' b. f3 S6 R" H+ A
    接下来开始安装传感器
    8 R/ M+ q5 |" c" t& G限位开关*1+ j! Q$ B0 r0 p  _. f7 X
    181141vhswhsw4pbthatt9.jpg.thumb.jpg : Z8 f$ f9 Q8 |, U

    & Q# D0 a* c6 C  N0 E3 R装在2号升降装置侧面
    & @+ d* N8 z" E7 R+ r% i7 {6 }. Q 181138l69f8cm8nzyzyph9.jpg.thumb.jpg # x9 D; H( r6 w6 D% ]3 L
    限位开关*2# l" r. ]) O7 s) s8 a' m" }( Y
    181133u0lbbi1484cbb8c7.jpg.thumb.jpg
      ^$ T- p, r$ n" I6 M5 j
    $ f+ l/ J8 B+ Y' x2 _分别装在1号2号升降装置的梁上。(作用:限制抬升高度)+ |/ T* w7 h% ]4 C8 _: k2 e
    181129kwaw00y0iw1wu0zr.jpg.thumb.jpg
    8 X7 m5 l# M' A4 \& D6 ?
    3 l% v( A( ~. i0 c3 X" i+ C 181126bdi6d6znk6x0j8ir.jpg.thumb.jpg
      C9 W8 f. u7 o! g+ i# R1 z安装电机驱动 7 D6 \2 f0 {! V; M
    181119or0ycdbm58qqbrd8.jpg.thumb.jpg # ^5 N* R8 j  }7 j' g

    * {6 o; k0 T# ?  s# X
    0 L. Y- r9 P! F5 ^6 ^. t1 E# l 181116j4jbgt7yydd7z4y4.jpg.thumb.jpg
    , g1 F8 x0 H+ H* B: f8 {- i7 [安装巡线传感器
    5 ~, B( g" H/ W8 K5 T 181114ngdfs7smypuibum2.jpg.thumb.jpg % g: `9 b4 m( i
    1 x7 [0 l& ~' b6 y" e, Y
    M4*22螺丝: [' j0 l, u; b/ ]# w) Z$ L
    4*10塑料圆柱! j- x6 K6 d. W# v! P
    4*2塑料垫片*4
    * C$ h# S' M) g: Q1 K3 G9 j" Q巡线传感器*1, y) J5 X& F, |/ R4 B5 g
    181113dxn299kbc9vno3j7.jpg.thumb.jpg ( `4 k" O8 u8 t
    : g! `  y# b1 p; Q1 n) V( v7 {6 `9 b
    安装陀螺仪2 J' G) U6 a, X3 k
    181111sn2ktth932kkh6n9.jpg.thumb.jpg $ A% l, D+ g( F
    - L+ U3 Y9 G, L5 f; T4 o& D
    安装超声波传感器
    ' C" d! T/ o" x/ G9 t' j 181109hj04fr0fmfpmk7au.jpg.thumb.jpg ' ?% O8 V4 ^& Q$ [- K$ a

    1 B% n3 n  \# w! m1 ^, ~* E) s 181107yunft9emnp6ojmuh.jpg.thumb.jpg - ]. `9 c$ m% F& V/ ?( ]& f
    由于超声波模块没办法检测0-30mm的距离,所以放里面去了 让防撞杆去撞楼梯,小车撞上障碍后刚好是30mm多点,顺利检测到(这都是调试后才发现的~_~!!)$ n- ^& ?2 Y5 D0 \1 A' s
    181105y6fc30aj4byfby4a.jpg.thumb.jpg
    & q% I( ?+ F9 x  P& u安装主控板
    5 Z3 A! z+ C3 B. }- E! }; N* h8 a2 C/ f; y; `
    181101z9wn16g1chwcp5n6.jpg.thumb.jpg
    ! G/ D$ l' M$ n' M( y 181057xkkdozxd7iaxraof.jpg.thumb.jpg " |0 @8 q% V8 N7 d- j
    181053sdhs3iz9zxrlubx3.jpg.thumb.jpg ; q5 p: F# A) u* `. [9 M
    安装适配器(限位开关用)5 q( k/ r8 Z9 |: c; `; V9 y
    181048mnjtjjjnjqhznchj.jpg.thumb.jpg
    & Z& J! Q" H# X3 Q- ~
    " s9 B' i& q* i 181045w7yrs72heywhflqj.jpg.thumb.jpg " f. ]8 \4 Q. T! g$ u
    额。。基本上传感器安装好了,现在介绍一下各个整车结构和传感器: j; E: E4 D" _8 g: E; M% T
    181041v21im9iq1cd2xx7e.jpg.thumb.jpg
    ' X3 t4 e' C% M" Z
    + |; Q. P9 K& W+ e+ Z整车从左到右可以按轮子分成4个部分,其中1号轮子和4号轮子是主动轮(驱动轮),2号和3号轮子是从动轮  L: L8 [5 |9 b5 L  \/ {/ W) Y- ?
    180947rq77cr7al0qqja0w.jpg.thumb.jpg , \8 m6 h% \3 o2 i7 E
    其中1号和2号升降装置控制2号和4号轮子的位置1 Q% M9 s. a9 ?4 |
    181037vin1arzwrb5e5rez.jpg.thumb.jpg
    - x+ h4 R, k9 }- ~0 i1 C 181034qvvp9sglnudqntsl.jpg.thumb.jpg
    5 w% B# w; g4 g; e# R* W9 k+ r7 m 181032h1rta0e7tigo29z6.jpg.thumb.jpg 8 d% Y- _3 s' u  T; C( k
    181013f8gs16nw1w5r6si5.jpg.thumb.jpg ; Y8 u5 A4 _5 T& G* L7 e  y
    这里加装陀螺仪是因为我们升降装置用的是直流电机,没办法保证车体平衡,所以加入陀螺仪调整电机抬升速度
    2 O5 Q& }4 g& P; L+ e) T
  • TA的每日心情
    可爱
    2017-8-1 12:46
  • 1

    主题

    6

    帖子

    76

    积分

    初级学士

    Rank: 2

    积分
    76
    发表于 2017-8-8 13:22:18  | 显示全部楼层
    整车图
    $ W2 V2 K7 ^' E 181005kp9q98bssqsppgbm.jpg.thumb.jpg
    * c$ @' O# J3 _5 w1 z. U
    6 i; w! H& z. _4 t 180959lsz9jidakg9uz2vj.jpg.thumb.jpg 5 k  c8 J1 x( j0 W3 ]0 f2 g* ]
    180954v3f2lmd1ssmt3elt.jpg.thumb.jpg ; `; I; A. {) H1 |& T$ N

    7 I' {/ _' w+ u& O( E( S接线图
    0 [; T5 v7 d! D0 \( e 181357mj6rzezarm6owrsl.jpg.thumb.jpg * X: V& \: r2 K' Y. s
    / e, }" N: A! ?2 O/ G& Y
    , ^4 S4 k7 S" y4 ]! Z/ T
    代码如下:#include "MeOrion.h"
    5 z5 g3 e+ f& L) L7 T#include : k: ?8 Y7 q- C' X6 x/ c7 P

    3 ~' f5 I: l% \$ o$ p- A/ oMeGyro gyro;
    ; F( I6 ^' Y( A0 m5 L/ [MeDCMotor lifer1(PORT_1);  //升降1
    / B# z: _' \; U' nMeDCMotor lifer2(PORT_2);  //升降2& W: t+ w1 n/ z) r, H
    MeDCMotor rw(M2);  //1号驱动轮" ]% Y0 d" M5 z+ ^6 Y3 u: Q& b
    MeDCMotor fw(M1);  //4号驱动轮
    ; G6 u5 ?4 E6 f/ n' O  E7 ?MeLineFollower lineFinder1(PORT_7);  // 巡线
    . `9 y. s. e) q; c) }MeLimitSwitch upWard1(PORT_3, SLOT2);  // 1号升降限位开关
    " {( w, c+ Y( c) q8 M9 T) D: _MeLimitSwitch forWard2(PORT_4, SLOT1);   // 4号轮子限位开关
      ~: n6 F7 e! p. YMeLimitSwitch upWard2(PORT_4, SLOT2);  // 2号升降限位开关4 C  Z1 t3 d" P6 x0 l
    MeUltrasonicSensor ultraSensor(PORT_8);  // 1号轮子超声波
    7 i; N( Z+ k8 G1 c; q$ J% I0 a/ q3 H& ?" ^5 Z/ C
    void setup()  // 初始化,前后升降装置回收
    : n1 N# K+ ~) _: Q; `{
    5 q) {# R9 C; E  Serial.begin(9600);  $ W$ ]/ E( T" P9 }5 c0 W* N* b' I
      gyro.begin();( P8 J0 N4 _: Q0 B& N
      lifer1.run(-250);, t4 h" h0 e4 y8 C) A! I
      while (!upWard1.touched());
    ' @% U0 N/ R3 E: H+ L. S+ D7 j  lifer1.stop();0 |/ H" ?6 ?7 i
      lifer2.run(-250);$ y( U. b! Z4 }% \0 y
      while (!upWard2.touched());
    ( u+ B! p, Z0 l9 S  lifer2.stop();3 F: s# I7 Y0 h7 U9 a
    }
      ?/ W2 k1 Y' {5 `8 x+ A2 O9 w) g) d" W3 |/ p! q0 {
    3 B/ Q- N/ ^! G5 d! C% f6 ~
    # N0 |8 i% R# ?# B1 s
    void Step2()( s% f2 _3 h% o( Z: L7 Z
    {: o% z! }$ y+ W* d
        float p = 15;
    , u4 ~. R. `4 H& x+ @    float i = 0.01;
    . }* \4 @1 H3 h( ~4 q    float angle = 0;6 V& F" u3 o7 V5 n" C& n. u+ V& }
        float targetAngle = 0;; Y2 b; E$ |4 O7 f- t8 w
        float integration = 0;
    " X9 A" e6 s4 U1 T1 }& n    float err = 0;  R8 x" y9 [% {$ C2 M7 y+ r

    5 \6 Z4 N  r& @# a1 g    while (NotStop()). q3 }+ z# w. n5 h( v
        {
    / a/ l! k  t& i& s8 J1 K9 B& S: ?: L        gyro.update();
    9 b+ s- }' P& f& ?( `        float angle = gyro.getAngleX();, i0 B6 @6 ^% {2 c' f
            err = angle - targetAngle;
    ) I. k+ Y, g2 k: g- P1 p        integration += err;/ q: i4 ~' M- ^" \6 D
      W9 H1 S' t8 e0 o2 M
            int speed1 = 200;
    8 G* ?6 ~  a9 Z: x4 H        int speed2 = 200;& R0 o, Z# b9 J

      x; }( @- k* ?6 n" B- l        speed2 = speed1 + err * p;// + integration * i;
    7 H5 F0 |5 {* v$ o7 G; J9 o% W8 k$ p/ y; E% A. e% A4 K$ D! V. \
            lifer1.run(speed1);- x0 u- |. P" n6 |7 W* N  E" T& x0 R
            lifer2.run(speed2);+ O: ~& r3 `+ N, R0 J
            //delay(10);
    + q5 e6 z2 U: h$ V+ w    }6 g: M- O7 K: d: b. F; H
        lifer1.stop();: ]6 D# Y- h$ M5 y$ p& n! ~. [
        lifer2.stop();
    6 B# K8 G+ e* l: _) W}
    . B8 U" G- X5 i* p  j! ?. ~
    9 t4 a. H& z; t9 p2 `& Bint startTiming = 0;
    % g# E/ R' T* v1 d2 u0 r2 \unsigned long startTime = 0;
    / C# q3 d, h, I! V$ L/ R4 C$ c% k
    : c) A% M- l* o4 ^5 dint NotStop()
    ( x) v/ Q1 ]# c% E{" L8 J. _: N6 @7 y
        int16_t distance;/ c8 i) @6 V/ N0 {9 z  l& u
        distance = ultraSensor.distanceCm();
    1 t$ W! Q3 j& m0 G( W    delay(10);# p7 S4 O# c. |* ~) e& ^( o, F; B
        if (0 == startTiming)
    . }5 ^1 N- u; ^+ ]9 d    {
      ~% o* p0 g9 ^& o% h. `        if ((distance < 10) && (distance > 1))
    3 ?" f" h0 {! w2 M. Y) @" U* [        {" |( e7 Z; p6 w4 j- P8 d4 ?& J
                return 1;7 U/ t  [1 U# b9 b( W2 m9 k7 o
            }
    0 P" R0 k& `( [) T        else
    , v$ J0 _: f8 r* o; }/ I3 Q/ G9 E        {
    6 U+ [# L& @3 y$ ~6 K            startTiming = 1;- s6 }& V" Q+ X  ?& R! R
                startTime = millis();
    2 Q1 d4 P* t. c4 I4 k1 W; p            return 1;
    ! t* O/ J: A- d5 R7 r, s        }
    $ i* h  u% D) j; N+ x) E+ x6 ^    }1 f6 x( C6 J$ n8 W$ K" _+ ~" I. n4 D
        else
      m# @$ @3 n. J! w1 D* \$ A9 F- x  _    {& Z7 |. U, y7 o7 `1 A  v! B& ^8 S" E
            unsigned long currentTime = millis();
    9 m/ V/ N. v0 |/ y        if (currentTime - startTime < 2500)  //超声波检测不到楼梯后延时2.5秒
    $ [, T6 m8 Z% h4 ?: B+ s        {
      m3 @- d2 M" W" O: t            return 1;
    + }; }6 A8 I" z5 G% N/ T* e$ @        }
    & e+ D4 g5 z3 s( ?) @" j        else
    ; B) A; C' }. C' l        {
    . s+ h4 ^, N# B            return 0;5 J0 S: t$ U# u/ s- r. L( Z
            }
    . R0 e- G9 V+ [% n    }% p) f3 i# L  g8 }2 N, G3 i0 }
    }
    / d/ q1 ?. g* V" ~9 Z; E- V
    3 C6 l, d) w) g. V6 k: f0 D
    $ Q9 D! Y# y5 E" c5 Svoid loop() ; w! U$ {- ~; d8 P! o: P
    {" O* f2 u" V. r$ b7 V4 m
      startTiming = 0;/ q1 Q: w8 a0 m1 c
      startTime = 0;* D& h8 ~7 Z# Z5 U7 p
    //阶段1 小车前进% O9 b# K& D) u+ C# C$ l# N7 r
      fw.run(60);  
    - r0 q- D$ ~, {' i' H3 g. Q; a  rw.run(60);  //1号 4号轮子推动小车前进
      K9 D; Y# E6 R* e( _# R3 r; H- p& `: Y7 ]' V# K
      int16_t distance;; H' Z7 S" S; c( q+ Z
      do- a9 [- q, k8 f6 ]5 |) q" c
      {
    1 R2 m, G2 Z5 a      distance = ultraSensor.distanceCm();
    7 I4 a8 b5 R4 X' M" m) U: T" l  n6 {      delay(10);
    5 X3 K% Z  E8 C3 X9 z0 l& P  }9 l# `6 D* e6 Q1 e
    //阶段2 碰到楼梯 主动轮停止 整体车架上升0 T, I! }" O8 S" A& T
      while (!((distance < 4) && (distance > 1)));  //如果碰到楼梯
    ! w& z& _3 t2 ~) ?* U" k7 a0 }' y/ F( M' g7 z
      fw.stop();& K5 x3 a9 D; K" |; E
      rw.stop();
      o- Y" h* m2 ]( C2 @! G' D  Step2();
    1 M* G- G2 D& z1 g' N//阶段3 1号 4号轮子推动小车前进) A* a* Z+ ?! n( T+ p- _
      fw.run(60);
    2 u6 b5 n) H8 w" M' ^  rw.run(60);
      U1 j+ R; r. i! g- x//阶段4 2号轮子巡线传感器检测到楼梯 主动轮停止 升降装置1把2号轮子收回去
    4 d# C9 d9 u2 X9 V8 H: ~( ?' f1 L  while (!(lineFinder1.readSensors() != S1_IN_S2_IN));, {2 t8 `1 x% o8 Y: A/ x
      lifer1.run(-250);
    ) ?# y1 v$ n% B5 P2 }  fw.stop();$ X3 a/ D. A9 l% r9 |  Y
      rw.stop();! R& l- _: T. C: {' G

    & g' X, Q9 L3 y, i" K. j! E4 P  while (!upWard1.touched());  //1号升降限位开关检测升降结束
    3 Y: P6 T6 N- o  lifer1.stop();
    ' F. q/ ?9 _, E4 p, N9 P% z/ V( O+ O2 A8 w0 J( s
      Adjust();+ O" N2 y( [( J( I- e3 }; }
    //阶段5 1号 4号轮子推动小车前进  
    + C; U; S( }& l% O  fw.run(60);" B% g1 S# w8 k& `" @0 T+ T/ R
      rw.run(60);
    6 X& ]7 B9 n  e; x//阶段6 4号轮子限位开关检测到4号轮子碰到楼梯 主动轮停止 2号升降装置回收4号轮子
    7 F, p: L9 D$ T4 q: k+ b% O  while (!forWard2.touched());
    & A( n; S6 n( C/ n  lifer2.run(-250);# A) B% v9 h7 O" A( d' i
      fw.stop();3 Y4 c! G3 [5 d, B2 u
      rw.stop();* t1 f) o" q, m- s) u# C9 R
    0 a( l  s# N3 Q6 R
      while (!upWard2.touched()); //1号升降限位开关检测升降结束
    . M+ B4 ~. ]! j6 |  lifer2.stop();* B, U' n2 Y( X+ h9 u
    //阶段7 循环阶段1  
    ! T6 k0 X1 F( w. [# L//阶段8 循环阶段2  6 Z* y  G* K; V$ a9 y
    }8 l& R- Q& ~, V0 j
    0 \5 s# T) E# P
    void Adjust() //陀螺仪控制1、2号升降电机控制平衡
    7 N! W4 i) e/ N2 X) E{5 r2 n' v: q" L% R6 E  O- c* S8 }; _
        int p = 40;
    6 {+ f) A- {/ y7 B# L5 Q1 K    //float i = 0.05;
    + w" K- W' H" i3 f0 A& c    float angle = 0;- w/ Q) S+ L3 P6 B  ^% u' Z7 B, k
        float targetAngle = 4;! E. t3 D# o, D. \0 G
        //float integration = 0;
    - A% [3 v' s$ R- `, W' \, P    //float err = 0;% r" I$ f+ b$ k1 D  ]0 s9 P

    6 T: K" ?* k0 H+ Y% l    do. m; _$ X. p5 F9 I9 _
        {/ r1 z2 Q9 C& s: [8 j5 e
            gyro.update();
    4 p# ~/ c. r2 y3 A8 F/ I        angle = gyro.getAngleX();
    4 g. T; H7 n0 Q  w7 {  ?' B4 W3 h        //err = (angle - targetAngle);8 ?6 X; j& x! n
            //integration += err;
    ! A& n8 l6 v$ O8 S) N, @        lifer2.run((angle - targetAngle) * p);// + i * integration);. D  C, |; [$ F5 t$ U, D  P, O7 Q
            //delay(10);
    $ h9 a, f5 X: W7 B/ c    }
    1 e# Q, @% i1 t# v    while(fabs(angle - targetAngle) > 1);
    % D3 [: K+ Q; n- Q
    5 N2 R0 H# v" ?! I    lifer2.stop();
    4 I' X9 Q! o; ]}
    # |% ~% X. ?* l/ r
    * k. p. V+ C0 b! U% K+ t7 w5 T" ?/ m* [

      v- g' j7 Z( O, ~7 D6 E. Z. l5 \7 Q1 D
    * s7 A% Y: B( \
      i  Z- p+ A4 y5 o) n( x
    7 P1 X, H+ R7 d  K: E

    3 u: f# o" b# g* U8 S0 s2 m- M
    0 a- [- _4 u5 a% B
    ' U! [4 b2 x2 D3 Q' M. }
    ! H5 {6 e& H: i  Z4 f% m1 `& f" S/ ^4 h% B

      }" v; {. {5 E3 T. B. |; O! x4 y; K7 M+ N! g
    2 }! k1 Z3 Q) h

    6 I; B% _$ `2 H: Y- d2 f5 y( t! }( y$ O7 m8 S- Y8 _& ~
    181123kkk1d202de5n4pv2.jpg.thumb.jpg ! ~: _+ J$ @" ?1 k5 d
    181152ht51wwbwbkbkbw1w.jpg.thumb.jpg 8 {& q5 w: ~% f0 ]
    181155di9zic29lzui9guo.jpg.thumb.jpg
    ; U* }4 ]1 m1 \# E4 N7 H 181231eka7wgoopk7wang4.jpg.thumb.jpg
    . a$ S8 a. o+ Y3 {: A

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

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