社区导航

 
查看: 594|回复: 8

[设计过程分享] 第五篇 Sensortile评测----平坦度测量之42步进电机调试

[复制链接]

777

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-2-25 16:38:25 | 显示全部楼层 |阅读模式
本帖最后由 wugx 于 2017-2-25 16:47 编辑

项目需求,动作部分需要步进电机参与,去年论坛送的3D打印机还在,那就用A4988驱动模块和42步进电机了。
一、模块介绍:

1、步进电机:
1>步进电机:在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度
3.png

图1 四线两相步进电机原理图

2〉42步进电机
42意思是说安装机座宽42mm,如下图


2.png

图2 42步进电机机械图

其额定转矩为0.5Nm。

2、A4988步进电机驱动模块

1.png

图3 A4988IC功能框图

A4988一个带转换器和过流保护功能的DMOS(vertical double-diffused MOSFET)微步驱动芯片。

其MS1/2/3是模式选择逻辑引脚,共有五种不同的步进模式(全、半、1/4、1/8、1/16),模式根据应用精度选择,其具体介绍见官方datasheet。


5.png

图4 模式逻辑表

4.png

图5 时序图


下面是A4988在3D打印机应用中的经典模块电路
A4988.jpg

图6 3D打印RAMPS1.4电路中的驱动模块

RAMPS1.4电路板中,MS1/2/3、reset和sleep引脚被上拉,step、enable和dir,以及OUT1A、OUT1B、OUT2A、OUT2B引脚外留。

二、用Arduino开发板调试驱动块:

开发板用的是ATmega2560 R3,驱动模块的dir、step、enable分别接于开发板的28、26、24接口,前面说过A4988的模式,网上查来说,在全模式下,转一圈要200个步进值或一个步进1.8°,而我们的板子是在1/16的模式下,即转一圈需要16*200个步,这里的1步指的是step引脚的一个周期方波,方波的周期决定了旋转的速度,而总的步进数决定了旋转的角位移,两者其实耦合,不纠结了,经测试方波的周期在300us至1600us之间电机运行稳定。


下面是这次调试的代码:

  1. char Dir=28;
  2. char Step=26;
  3. char Enable=24;
  4. //MS1/2/3 5V

  5. void setup() {
  6.   // put your setup code here, to run once:
  7.   pinMode(Enable,OUTPUT); // Enable  
  8.   pinMode(Step,OUTPUT); // Step  
  9.   pinMode(Dir,OUTPUT); // Dir  
  10.   digitalWrite(Enable,LOW); // Set Enable low
  11.   //digitalWrite(Dir,HIGH); // Set Dir high  

  12. }

  13. void loop() {
  14.   // put your main code here, to run repeatedly:
  15.   digitalWrite(Dir,HIGH); // Set Dir high  正转
  16.   for([color=#000000]int x = 0[/color]; x < 3200; x++)
  17.   {  
  18.       digitalWrite(Step,HIGH); // Output high  
  19.       delayMicroseconds(800); //  
  20.       digitalWrite(Step,LOW); // Output low  
  21.       delayMicroseconds(800); //
  22.   }
  23. delay(5000);
  24. digitalWrite(Dir,LOW); // Set Dir low 反转
  25.   for([color=#000000]int x = 0[/color]; x <3200; x++)
  26.   {  
  27.       digitalWrite(Step,HIGH); // Output high  
  28.       delayMicroseconds(800); //  
  29.       digitalWrite(Step,LOW); // Output low  
  30.       delayMicroseconds(800); //  
  31.    }  
  32.     delay(5000); // pause five second  
  33. }
复制代码



三、总结:


此次调试唯一经验就是,一定不忘以前养成的程序编写习惯,切记,下面来说说这次遇到的坑,


首先、是第二次玩Arduino,对其编辑、编译器和代码书写要求没有任何好感,个人感觉。


其次、犯了一个很没程序素养的问题,程序是先让电机正转一圈,延迟5s后再反转一圈,如此轮回,结果一直在正转,怪了,什么鬼?于是拿着表测了一下方向控制脚,发现的确没有执行到这一步,看了半天没看出来,于是就回头去测电路板,排除硬件的影响,任然无效,于是从程序for循环开始排查,是不是步数转多了,电机剩磁太大,老死机的经验,就慢慢改步数,从3200改到了100,发现改到150时还是一样,但改到100时可以反转了,聪明的你知道是什么原因了吧,差不多找着你了,于是改到了126发现可以反转,又改到了130不反转,好家伙,x溢出了!!!,???恩,无缘无故你溢出个球,x怎么是char类型的,我明明定义的是int啊,于是想了想,当初定义了一个全局变量x,char类型的,写for的时候为了省事,就用了它,这回是哭笑不得,好吧,老了,记性太差,改回来后,ok了,觉得好笑,写这麽多,大家一起笑笑

人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复

使用道具 举报

471

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-25 19:10:06 | 显示全部楼层
Sensortile评测???

点评

是评测啊,项目的一部分  详情 回复 发表于 2017-2-25 20:20

回复 支持 反对

使用道具 举报

777

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-25 20:20:28 | 显示全部楼层

是评测啊,项目的一部分
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复 支持 反对

使用道具 举报

3953

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-2-25 20:41:02 | 显示全部楼层
好一个sensortile 评测

点评

这样写有问题?  详情 回复 发表于 2017-2-25 22:12
虾扯蛋

回复 支持 反对

使用道具 举报

777

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-25 22:12:06 | 显示全部楼层
littleshrimp 发表于 2017-2-25 20:41
好一个sensortile 评测

这样写有问题?

点评

我觉得把”SensorTile评测“换成”SensorTile大赛“更适合  详情 回复 发表于 2017-2-25 23:06
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复 支持 反对

使用道具 举报

3953

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-2-25 23:06:09 | 显示全部楼层
wugx 发表于 2017-2-25 22:12
这样写有问题?

我觉得把”SensorTile评测“换成”SensorTile大赛“更适合

点评

恩,的却欠妥,不过这个是为了和最初的贴合一下而已  详情 回复 发表于 2017-2-26 10:49
虾扯蛋

回复 支持 反对

使用道具 举报

777

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-26 10:49:13 | 显示全部楼层
littleshrimp 发表于 2017-2-25 23:06
我觉得把”SensorTile评测“换成”SensorTile大赛“更适合

恩,的却欠妥,不过这个是为了和最初的贴合一下而已
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复 支持 反对

使用道具 举报

2688

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2017-2-26 16:55:02 | 显示全部楼层
感觉和SensorTile没关系啊

点评

项目的一部分,只是测试而已  详情 回复 发表于 2017-2-26 21:14

回复 支持 反对

使用道具 举报

777

TA的帖子

6

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-26 21:14:22 | 显示全部楼层
suoma 发表于 2017-2-26 16:55
感觉和SensorTile没关系啊

项目的一部分,只是测试而已
人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复 支持 反对

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-6-26 03:09 , Processed in 0.378309 second(s), 16 queries , Redis On.

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