找回密码
 注册
关于网站域名变更的通知
查看: 194|回复: 2
打印 上一主题 下一主题

MicroPython TPYBoard v102 驱动28BYJ-48步进电机

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-5 10:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
实验目的- S" y3 b$ w3 X
8 a1 {% g7 J  i0 W; `( z1 ~9 m8 ^
    了解步进电机的工作原理
, o0 s2 L# F9 D: D8 V    学习步进电机的驱动方法$ p% b2 l" \  j- y- S

0 E) I) U/ W1 N0 Y  t4 P/ q( K    实验器材
/ ]: L1 w$ M0 ^# w
( n' [$ j/ c3 u" x8 I( X5 K    TPYBoard v102 1块
: [/ z: C1 m4 V2 x% |9 ?! ]* e    微型步进电机(28BYJ-48) 1个: |( M6 r6 B; H
    步进电机驱动板(ULN2003APG) 1块
+ [. S- g- o" K+ E# [; A9 X    micro USB数据线 1条
. l' {% [7 c) r' B- Q$ K2 F    杜邦线 若干! u; K; X' |: n

0 W1 T1 O# f$ d, z9 N    步进电机的介绍
, D  y" g& `8 m0 B: u. _- ~    本次实验采用的是28BYJ-48 四相八拍电机,电压DC5V~12V。  Q; [2 H' I: T/ f
    24BYJ48名称的含义:: X! j4 f( w1 ~0 P* I0 j
    24:电机外径24mm
8 K1 P! ?9 n9 ?) _7 F    B:步进电机中步字的拼音首字母
4 g$ n0 x  l' v# m* z  G6 p    Y:永磁中永字的拼音首字母
" @( W9 N$ o/ y5 A/ t6 Y0 j    J:减速的减字拼音首字母1 a  G6 b5 t2 L
    48:四相8步
  B' c$ o" o, K& _, u( f
# o+ C; b% i- U    实物图" Q' j9 I* P6 q  T2 Y- i

3 y6 o/ u) ~2 d* n) G0 g( v) y7 D/ [% L" j# \0 ?
    工作原理0 b8 s6 v! p. `, G" p1 i6 U
: z4 B6 R, Y7 z( [, \; ?8 h
    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
$ o4 K6 T( w6 h4 \0 z    28BYJ-48 步进电机参数表" t5 m( Y: b$ w0 }7 `) @5 w
+ ~, H; z3 S+ a6 y

7 D8 |& I$ _% Q) c) |# W0 K
  v( K6 I5 ^7 U' r' v4 k; Y$ E8 w    上表中启动频率≥550 P.P.S(每秒脉冲数),意思是要想正常启动,需要单片机每秒至少给出550个步进脉冲。那么每一节拍需要持续的时间就是1S/550≈1.8ms,所以控制节拍刷新的速率应大约1.8ms。4 q1 w$ d! s" N$ j
5 n7 m3 ^/ y7 q- L
    驱动原理
* J) J3 B2 h: j' o- n( z' t
) R; t5 m" M4 i! P8 T- j    当连续不断的给电机发送控制脉冲时,电机就会不断的转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,对应转子就会转过一定的角度(步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。& a8 L6 y/ Q# x" T
    四相步进电机可以在不同的通电方式下运行,常见的通电方式:
# g$ B- o  o  E8 }9 r$ |' q# ?2 O- x" C    四拍(单相绕组通电):A-B-C-D-A…
, k9 M- v- c' L4 b4 J3 Q    双四拍(双相绕组通电):AB-BC-CD-DA-AB-...' `2 o/ @) F, ]5 @, q
    八拍: A-AB-B-BC-C-CD-D-DA-A…1 M0 P8 s7 ^6 J2 J/ j( J
    模拟效果图$ z4 G- j8 B. y% i  b' ?7 k
    * D4 K" I2 {% s  i5 k" x
    硬件连接# r& L" M; Q* m4 {$ l  k
    将步进电机白色接头插到驱动板对应的座子上即可。. w6 Z+ h* h6 a) R5 w, v
    TPYBoard v102驱动板与驱动板的接线图,如下:
: a$ W  H: n# B) j; b5 c# e" K" t- E7 ]8 F/ B; ?* ^9 r: r2 V
    程序源码如下:
* q2 Q7 x; v  T- ~/ q  \1 B: K% Q, J: g% q7 e9 b1 v9 M# T) }+ S! ]4 L

4 f6 R* E8 v$ S8 d
  • # main.py -- put your code here!
  • import pyb
  • from pyb import Pin
  • Pin_All=[Pin(p,Pin.OUT_PP) for p in ['X1','X2','X3','X4']]
  • #转速(ms) 数值越大转速越慢 最小值1.8ms
  • speed=2
  • STEPER_ROUND=512 #转动一圈(360度)的周期
  • ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期
  • print('ANGLE_PER_ROUND:',ANGLE_PER_ROUND)
  • def SteperWriteData(data):
  •     count=0
  •     for i in data:
  •         Pin_All[count].value(i)
  •         count+=1
  • def StepeRFrontTurn():
  •     global speed
  •     SteperWriteData([1,1,0,0])
  •     pyb.delay(speed)
  •     SteperWriteData([0,1,1,0])
  •     pyb.delay(speed)
  •     SteperWriteData([0,0,1,1])
  •     pyb.delay(speed)
  •     SteperWriteData([1,0,0,1])
  •     pyb.delay(speed)
  • def SteperBackTurn():
  •     global speed
  •     SteperWriteData([1,1,0,0])
  •     pyb.delay(speed)
  •     SteperWriteData([1,0,0,1])
  •     pyb.delay(speed)
  •     SteperWriteData([0,0,1,1])
  •     pyb.delay(speed)
  •     SteperWriteData([0,1,1,0])
  •     pyb.delay(speed)
  • def SteperStop():
  •     SteperWriteData([0,0,0,0])
  • def SteperRun(angle):
  •     global ANGLE_PER_ROUND
  •     val=ANGLE_PER_ROUND*abs(angle)
  •     if(angle>0):
  •         for i in range(0,val):
  •             SteperFrontTurn()
  •     else:
  •         for i in range(0,val):
  •             SteperBackTurn()
  •     angle = 0
  •     SteperStop()
  • if __name__=='__main__':
  •     SteperRun(180)
  •     SteperRun(-180)

  • 9 |3 ~( U0 d' X3 S' F3 C' |

2 R' J5 ^, |% Y  e# c
' F, a$ F& R. ^& h* w
0 t) P' t3 @+ R* Q! f, G
% n3 C: y9 P" a. u; n+ v" V
$ K# y* U+ H5 o& F$ I2 A* G: u; S9 w( S5 @$ q
) H4 {7 x3 b! h. d- I
6 u9 B# s6 R0 |8 j+ ]4 I5 l7 r+ m

. Q. A. h# d4 m2 W  @' }% A& G  \2 p
1 k. N" p$ A9 H1 E1 j6 s6 P, y
2 B& x' l* O4 k: R# c1 J! {$ @! p) m. s* ~( c/ z0 c

8 d0 D% M) Q4 s* N9 Q
! p# P% d. u4 P+ ~/ d% Z" g8 }9 F& V4 S9 ~* d) [  r

该用户从未签到

2#
发表于 2022-8-5 13:14 | 只看该作者
感谢,这东西好啊

该用户从未签到

3#
发表于 2022-8-5 15:18 | 只看该作者
好东西,楼主辛苦了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-9 09:07 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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