查看“步进电机驱动”的源代码
←
步进电机驱动
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 目的== 本将通过Microduino A4982来控制步进电机,并且焊接步进电机控制底板。 == 设备 == *'''[[ Microduino-CoreSTM32]]''' Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。 *'''[[Microduino-Stepper/zh]]''' Microduino-Stepper是一款带转换器和过流保护的 DMOS 微步驱动器,该产品可在全、半、1/4、1/8及1/16步进模式时操作双极步进电动机。 *'''其他硬件设备''' **USB数据连接线 一根 **洞洞板 **铜柱、螺丝 *焊接工具: **电烙铁 **焊锡 **导线 **镊子 *排针 [[File:Advance7 1.jpg|600px|thumbnail|center]] == 原理 == '''步进电机''' *步进电机分类: *:反应式步进电机(Variable Reluctance ,VR):转子用软磁材料制成,其中没有绕组。结构简单、成本低,步距角可以做得很小,但动态性能较差。由于其综合性价比高,应用广泛。 *:永磁式步进电机(Permanent Magnet ,PM): 转子用永磁材料制成,本身就是一个磁源。输出转矩大,动态性能好,转子的极数与定子的极数相同,一般步距角较大,需供给正负脉冲信号。 *:混合式步进电机(Hybrid ,HB):综合了反应式和永磁式的优点,输出转矩大,动态性能好,步距角小,但结构复杂,成本较高。 *步进电机内部构造如下图: [[File:Advance7 2.jpg|600px|thumbnail|center]] 通过上图可知,A,~A是连通的,B和~B是连通。那么,A和~A是一组a,B和~B是一组b。 不管是两相四线,四相五线,四相六线步进电机。内部构造都是如此。至于究竟是四线,五线,还是六线。就要看A和~A之间,B和B~之间有没有公共端com抽线。如果a组和b组各自有一个com端,则该步进电机六线,如果a和b组的公共端连在一起,则是5线的。 *步进电机相关概念: *:相数:产生不同对极N、S磁场的激磁线圈对数。常用M表示。 *:拍数:完成一个磁场周期性变化所需脉冲数或导电状态用N表示,或指电机转过一个齿距角所需脉冲数。 *:步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。步距角计算公式:θ=360/(MCZ)。M为控制绕组相数;C为状态系数,C=1时为(单、双)M拍, C=2时为M相2M拍;Z为转子齿数。 *:定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的). *:静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。 *'''步进电机驱动''' 不同相的电机有不同的工作方式: :*三相步进电机:单三拍、双三拍、三相六拍 :*四相步进电机:单四拍、双四拍、四相八拍 :*五相步进电机:单五拍、双五拍、五相十拍 本实验采用二相四线接法,下面以8拍的方式为例加以说明。 [[File:Advance7_3.jpg|600px|thumbnail|center]] 八个状态:1、在A与A-正电压,B与B-不给电悬空; 2、在A与A-正电压,B与B-也给正电压; 3、A与A-不给电压悬空,B与B-正电压; 4、A与A-给负电压,B与B-给正电压; 5、A与A-给负电压,B与B-不给悬空; 6、A与A-给负电压,B与B-给负电压; 7、A与A-不给电悬空,B与B-给负电压; 8、A与给正电压,B与B-给负电压; '''原理图''' 本讲采用一个2相6线电机,步进角1.8度,单极驱动方式,相电阻130欧,注意相电阻很大,因此电流很小,比如24v时,静态电流才0.17A,但是力矩挺大的,内部线圈细而密,属于低速,小单流,大力矩型。其外形图如下所示: [[File:Advance7_4.jpg|600px|thumbnail|center]] 信号顺序:1:B-,2:BCOM,3:B+;4:A+,5:ACOM,6:A-,本讲采用2相4线接法,所以1和5号引脚悬空。 原理图如下: [[File:Advance7_5.jpg|600px|thumbnail|center]] == 程序 == <source lang="cpp"> int step=2; int dir=3; int EN=4; void setup() { pinMode(step, OUTPUT); pinMode(dir, OUTPUT); pinMode(EN, OUTPUT); digitalWrite(EN,HIGH); delay(10); digitalWrite(EN,LOW); } void pulse(int n,int speed) { for(int i=0;i<n;i++) { int k=(1000000/speed)-1; digitalWrite(step,HIGH); delayMicroseconds(1); digitalWrite(step,LOW); delayMicroseconds(speed); } } void loop() { pulse(25600,12800); delay(400); } </source> 程序说明:函数pulse(int n,int speed)的作用是每秒以speed个脉冲发送n个步进脉冲。 == 调试 == 步骤一:按规则大小裁剪洞洞板。 步骤二:确定好Microduino CoreSTM32、排针以及电源转接头底座位置,按原理图焊接电路; [[File:Advance7_6_1.jpg|600px|thumbnail|center]] [[File:Advance7_6_2.jpg|600px|thumbnail|center]] [[File:Advance7_6_3.jpg|600px|thumbnail|center]] 步骤三:连接好电路。 [[File:Advance7_6_4.jpg|600px|thumbnail|center]] 步骤四:复制程序到Maple IDE编译,下载程序。 == 结果 == 每隔400ms以12800个脉冲的速度发出25600个脉冲。 == 视频 == 视频地址:
返回至
步进电机驱动
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息