A4988驱动42步进电机

A4988驱动42步进电机A4988步进电机驱动器驱动控制42步进电机速度,步进电机调速,调节驱动电流1A4988步进电机驱动器简介方便使用,是我们这些用户最想要的,固有的名词和深入介绍在这就不多说了,您可以百度,或这下载附件,芯片手册中有详细的…

大家好,又见面了,我是你们的朋友全栈君。

A4988步进电机驱动器驱动控制42步进电机速度,步进电机调速,调节驱动电流 

   
 

 

1  A4988步进电机驱动器简介

方便使用,是我们这些用户最想要的,固有的名词和深入介绍在这就不多说了,您可以百度,或这下载附件,芯片手册中有详细的说明。
A4988
是一款带转换器和过流保护的
DMOS
微步进电机驱动器,它用于操作双极步进电机,在步进模式,输出驱动的能力
35V
和±
2A
转换器是
A4988
易于实施的关键。只要在“STEP”引脚输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复杂的界面编程。
A4988
界面非常适合复杂的微处理器不可用或过载的应用。

2  产品特点

1
、控制简单,只需要控制
STEP

DIR
两个端口;
2
、精度调整,五种不同的步进模式:全、半、
1/4

1/8

1/16
3
、可调电位器可以调节输出电流,从而获得更高的步进率;
4
、兼容
3.3V

5V
逻辑输入;

3  芯片典型电路

<ignore_js_op>
A4988驱动42步进电机 
注意步进电机的接线方式,步进电机为两相四线的步进电机,
OUT1AOUT1B分别接电机同相的两端;OUT2AOUT2B
分别接电机另一相的两端。在连接步进电机时,一定要知道哪两个线是同一相。

4  最大额定值

<ignore_js_op>
A4988驱动42步进电机

5  步进模式设置

<ignore_js_op>
A4988驱动42步进电机
例如全模式时,一个脉冲,步进电机旋转角度
1.8
°;在
1/4
模式时,一个脉冲,步进电机旋转角度为
0.45
°。

6  模块连接图

<ignore_js_op>
A4988驱动42步进电机
测试中选择型号为
17HS5413(42BYGH)
的两相四线步进电机,步距角为
1.8
°,
200
个脉冲转动一圈。
STEP

DIR
分别连接单片机的两个控制端口,
EN
可以使用单片机端口控制,也可以直接连接
GND
使能;
MS1

MS2

MS3
按照上一节“步进模式设置”,接高低电平,设置步进模式,来选择不同的步距角。
设置脉冲的频率,来控制旋转速度。
2B

2A

1A

1B
分别接步进电机红、蓝、黑、绿线。
VMOT

GND

12V
左右直流电源(电压大小更具步进电机不同,选择合适电压)。
VDD

GND

3.3V

5V
7  实验代码
  1. //初始化步进电机控制端口
  2. //STEP1 PCout(4)
  3. //DIR1 PCout(5)
  4. void STEP_Init(void)
  5. {
  6.         RCC->APB2ENR|=1<<4;    //使能PORTC时钟
  7.         GPIOC->CRL&=0XFF00FFFF;        
  8.         GPIOC->CRL|=0X00330000;
  9. }
  10. //dir:为方向控制,TRUE:正转 FALSE:反转
  11. //period为周期
  12. //steps:脉冲个数
  13. void Step_Control(u8 dir,u16 period,u32 steps)
  14. {
  15.         u32 i;
  16.         for(i=0; i <= steps;i++)
  17.         {
  18.                 DIR = dir;
  19.                 STEP = 1;
  20.                 delay_us(1);
  21.                 STEP = 0;
  22.                 delay_us(period);
  23.         }
  24. }
  25. #define        TRUE  1
  26. #define FALSE 0
  27. //端口定义
  28. #define STEP PCout(4)
  29. #define DIR PCout(5)
  30. int main(void)
  31. {                                  
  32.         Stm32_Clock_Init(9); //系统时钟设置
  33.         delay_init(72);             //延时初始化        
  34.         STEP_Init();                 //步进电机驱动端口初始化
  35.         LED_Init();                           //初始化与LED连接的硬件接口
  36.         while(1)
  37.         {        
  38.                 LED = !LED;
  39.                 Step_Control(FALSE,1600,200);
  40.                 delay_ms(1000);
  41.                 Step_Control(TRUE,1600,400);
  42.                 delay_ms(1000);
  43.         }         
  44. }

程序实现功能:电机反转
1
圈、正转
2
圈。
不改变程序,设置不同的步进模式,观察步进电机的旋转角度。

<ignore_js_op>A4988驱动42步进电机 A4988步进电机驱动器使用手册.rar (636.55 KB, 下载次数: 554) 
此文件主要包含1:A4988步进电机驱动器使用手册,主要涉及步进模式设置、与单片机和步进电机的连接方式;
              2:A4988芯片手册;
              3:步进电机驱动程序例程
例程是通过延时来实现控制步进电机速度的,缺点就是单片机“其他的不能干了”;也有使用PWM来控制步进电机的,但是这个缺点就是,调速度时要不停的初始化,脉冲个数也不好控制。个人决定中断是最好用的,在下次更新的时候我们贴上。

 

 
 

 

 

   
 


大家还有一个比较关心的问题,就是如何调节A4988电机驱动的输出电流
<ignore_js_op>A4988驱动42步进电机 

最大输出电流,与Rs和Vref有关,I=Vref/(8*Rs)。
Rs:在驱动板上是0805的贴片电阻封装,通过上面的丝印,R***,可以知道电阻的阻值,我手中的模块上面的电阻丝印为R100,电阻阻值为0.1Ω。
滑动变阻器:驱动板上的滑动变阻器为圆形的,上面有一个缺口,默认向下,顺时针旋转时,相当于上图的滑动电阻指针向左移动,当缺口朝向A4988芯片时,是一个0Ω和10k的临界状态。
VDD加5V电源, Vref的最大电压为1.67,I=1.67/(8*0.1)=2.09A。步进电机实际测得的电压是A4988输出电流的0.7倍,即1.46A。步进电机不同,承受的电流也不同,17HS5413的电流为1.3A,此时的输出电流,已经高于电机所承受电流,需要将滑动变阻器逆时针旋转。

转载于:https://www.cnblogs.com/edan/p/6848633.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150617.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 优先队列「建议收藏」

    优先队列「建议收藏」优先队列比如现实生活中的排队,就符合这种先进先出的队列形式,但是像急诊医院排队,就不可能按照先到先治疗的规则,所以需要使用优先队列。实现优先队列其实都是基于下面这些实现的:可以看出来实现优先队列最

    2022年7月3日
    24
  • VC++常见错误原因解析之error LNK2019: 无法解析的外部符号 “public: void __thiscall[通俗易懂]

    VC++常见错误原因解析之error LNK2019: 无法解析的外部符号 “public: void __thiscall[通俗易懂]VC++常见错误原因解析之errorLNK2019:无法解析的外部符号"public:void__thiscall出现这个错误,应该首先查看“#include”语句是否包含,或者是否包含正确。符号无法解析意味着编译器知道有这个符号存在,也就是有声明,但在链接时,找不到实现代码,那么就去看看报错的这个函数有没有实现代码。如果它们的确已经有了,还是出现这个错误,就把它们重新编译一下。…

    2022年10月5日
    2
  • mysql查询时间戳转换成日期格式

    mysql查询时间戳转换成日期格式在很多的数据表中,很多日期的记录都是以时间戳的格式来存储,在查询的时候无可避免的会带来查看数据的不方便,作者在之前总是通过程序的方式去处理,后来通过查询,发现可以直接在数据表中进行查询。如下图中regdate是时间戳的格式,没法直接了当的进行查看时间。mysql中可以进行转换select*,from_unixtime(regdate,’%Y-%m-%d%H:%i:%s’)asregtimefromtax_common_memberorderbyregdateasc;..

    2022年6月21日
    32
  • mysql 截取字符串 并且按时间将数据分组

    mysql 截取字符串 并且按时间将数据分组数据库中保存的交易记录,需要按天和按小时分别展现出来,可使用sql语句直接分组selectDATE_FORMAT(newsalrecord.timeForOrd,’%Y%m%d’)days,count(payType)totaalcount,(SELECTsum((newsalwai.`Price`*newsalwai.`ODnumber`))FROMnewsalwai…

    2022年5月10日
    44
  • Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]

    Gazebo使用笔记(5) —— 力/力矩传感器的使用[通俗易懂]1.插件的添加在相应的<joint>标签内添加如下代码:<sensorname=”force_torque”type=”force_torque”><update_rate>30</update_rate></sensor>运行world:gazebo–verboseforce_torque_tutorial.world查看传感器输出:法1:命令查看gztopi

    2022年5月15日
    66
  • Java 高并发解决方案(电商的秒杀和抢购)

    Java 高并发解决方案(电商的秒杀和抢购)电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整…

    2022年5月31日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号