一、准备工作
TurnipBit开发板块一张
下载一条数据线
1个微型步进电机(28BYJ-48 )
一张步进电机驱动板(ULN2003APG )
一个MDC传感器
TurnipBit扩展板一张
一台连接到网络的电脑
在线可视化程序员
33558 turnip bit.com/python editor/editor.html
二、步进电机的介绍
此次实验使用28BYJ-48四相八拍电机、电压DC5V~12V。
24BYJ48名含义:
24 )电机外径24mm
b )步进电机中步字拼音首字母
(y )永久磁铁拼音首字母
j :减速的减字拼音首字母
48 :四相8步
实物照片
工作原理
步进电机是将电脉冲信号转换成角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行器,应用极为广泛。 非过载时,电机的转速、停止位置仅取决于脉冲信号的频率和脉冲数,不受负载变化的影响。 步进驱动器接收到脉冲信号后,向设定的方向旋转一定的角度。 称为“步进角”,其旋转以一定的角度一步一步地进行。 通过控制脉冲数可以控制角位移量,实现准确定位;同时通过控制脉冲频率可以控制电机的转速和加速度,达到调速的目的。
28BYJ-48步进电机参数表
在上表中,启动频率550 p.p.s (每秒的脉冲数)。 这意味着单片机每秒至少需要提供550个步进脉冲才能正常启动。 每节拍持续时间为1S/5501.8ms,因此控制和刷新节奏的速度必须约为1.8ms。
驱动原理
如果继续向电机发送控制脉冲,电机就会不断旋转。 如果每个脉冲信号根据步进电机所在的相或两相绕组的通电状态而变化一次,则对应的转子旋转一定的角度(步进角)。 通电状态的变化结束1个周期后,转子旋转1个齿距。
四相步进电机可以采用不同的通电方式运行,常见的通电方式:
四拍(单相绕组通电) A-B-C-D-A…
双射(两相绕组通电) AB-BC-CD-DA-AB- .
八拍: A-AB-B-BC-C-CD-D-DA-A…
三、器件的连接
1、将步进电机的白色接头插入驱动板的相应薄片中。
2、请记住,TurnipBit与扩展板对应插入,带有指示灯和钥匙的面朝扩展板针脚的一侧。
3、连接驱动器板和TurnipBit扩展板。 接线图如下。
4、连接光敏传感器和TurnipBit扩展板。 接线图如下。
四、开始编程
1、在以前的教程中,我们使用拖动进行了可视化编程。 这种方法可以让您的零度基点合作伙伴轻松入门,但在实际的项目和工作中,您可能需要直接敲代码。 今天,我们将介绍TurnipBit可视程序员的另一个功能:代码编程。
以前看过编程的伙伴发现,打开编辑器后,首先进入代码编程的接口。 下图:
2、接下来用代码实现步进电机的控制和照明数据的采集。
光线减弱时,顺时针旋转步进电机一周,模拟合上窗帘的操作;
光线变强时,逆时针旋转步进电机一周,模拟拉开窗帘的操作;
完成源代码:
#这里有Python代码frommicrobitimport * pin _ all=[ pin 5、pin8、pin11, pin12]# ) #转速(ms )的数值越大,转速越慢,最小值为1.8msspeed=5STEPER_ROUND=512 # ) 1圈) 360度的周期angle _ per _ round=stted 表示窗帘状态的true : false : defsteperwritedata (data ) : count=0fori in data : pin _ all [ count ] . write_digital ) I count=1defsteperfrontturn (: globalspeedsteperwritedata (1,1,0,0 ) ) sleep ) stepped 1 ) ) sleep(speed ) steperwritedata ([ 1,0,0,1 ] ) sleep(speed ) def SteperBackTurn ) ) 3360全球定位策略1] ) sleep ) speed (steperwritedata ) ),0,0,1,1 ) ) ) speeed ) ) speeeerwritedata652 0) sleep(speed ) def steperse 0 ) defsteperrun(Angle ) : global angle _ per _ round val=angle _ per _ round * ABS ) angle (if ) Angle0) 3360foor val val ) :steperbackturn(steperstop ) while true : light=pin0. read _ analog ) #读取从光传感器发送来的模拟数据的#数值越大,照度越高if light 400: IFIs open : is open=falsesteperrun (-360 ) #照度小于设定值,窗帘else : IFIs open==false 3360 is open=tru