Arduino 下用A4988或TMC2209驱动42步进电机

这篇具有很好参考价值的文章主要介绍了Arduino 下用A4988或TMC2209驱动42步进电机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在DIY黑胶唱机的过程中,准备用一个42步进电机带动唱盘,需要恒定的每分钟33.33转的转速。
记录一下折腾的过程。
用洞洞板制作的驱动电路:
a4988驱动器接线图,算法
a4988驱动器接线图,算法
驱动板接线图
a4988驱动器接线图,算法
先拿价格便宜很多的A4988做实验
a4988驱动器接线图,算法
a4988驱动器接线图,算法
按照接线图在面包板上把线接好。
Ardunio代码如下:

bool PULSE_STATE = true;

// A4988引脚连接Arduino引脚编号
const int dirPin   = 2;   // Direction
const int stepPin  = 3;   // Step
const int sleepPin = 4;   // Sleep
const int resetPin = 5;   // Reset
const int ms3Pin   = 6;   // Ms3
const int ms2Pin   = 7;   // Ms2
const int ms1Pin   = 8;   // Ms1
const int enPin    = 9;   // Enable


void setup() {
  // 设置引脚模式
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
  pinMode(sleepPin,OUTPUT); 
  pinMode(resetPin,OUTPUT);  
  pinMode(ms3Pin,OUTPUT);  
  pinMode(ms2Pin,OUTPUT);  
  pinMode(ms1Pin,OUTPUT); 
  pinMode(enPin,OUTPUT);   
 
  // 初始化引脚状态
  digitalWrite(sleepPin, HIGH);  
  digitalWrite(resetPin, HIGH); 
  digitalWrite(enPin, LOW); 

  digitalWrite(ms1Pin, LOW); 
  digitalWrite(ms2Pin, LOW); 
  digitalWrite(ms3Pin, LOW);  
  // 初始化电机步进模式为全步进
  //TMC2209 64细分
  digitalWrite(ms1Pin, LOW); 
  digitalWrite(ms2Pin, HIGH); 

  //Clockwise 顺时针旋转
  digitalWrite(dirPin, 1);


 
  cli();                      //stop interrupts for till we make the settings
  /*1. First we reset the control register to amke sure we start with everything disabled.*/
  TCCR1A = 0;                 // Reset entire TCCR1A to 0 
  TCCR1B = 0;                 // Reset entire TCCR1B to 0
  TCNT1  = 0; 

  // turn on CTC mode
  TCCR1B |= (1 << WGM12);

  /*2. We set the prescalar to the desired value by changing the CS10 CS12 and CS12 bits. */  
 
  TCCR1B |= B00000001;         
  /*3. We enable compare match mode on register A*/
  
  TIMSK1 |= (1 << OCIE1A);
   
  OCR1A = 1125;             //Finally we set compare register A to this value  
  sei();                     //Enable back the interrupts
}

void loop() {
  // put your main code here, to run repeatedly:
}

 
ISR(TIMER1_COMPA_vect){
  
  PULSE_STATE = !PULSE_STATE;       
  digitalWrite(stepPin,PULSE_STATE);   
}
 

代码主要使用了Timer1定时器。需要计算发送到电机的脉冲频率。用的Arduino NANO 主频是26MHz, 普通42步进电机的步距角是1.8度,转一圈都要200个脉冲,A4988芯片最大可使用的细分是16细分,如果用16细分,转一圈都要20016=3200个脉冲。我的目标是每三分钟转100转,需要的脉冲频率是1003200/(3*60)=1777.77Hz

A4988驱动芯片噪音比较大,步进电机运转时震动比较大。试验成功之后,换上了高大上的TMC2209芯片,电机低速运转时超级安静,震动极小。TMC2209内部支持256细分,计算脉冲频率的时候需要重新计算一下。上面代码中使用的是TMC2209芯片的版本。

用洞洞板制作的时候,用了一片LM7809稳压芯片给NANO主板供电,但当使用24伏电压时,LM7809芯片发热比较严重。后续准备换一个DCDC模块。
唱机视频演示文章来源地址https://www.toymoban.com/news/detail-676382.html

到了这里,关于Arduino 下用A4988或TMC2209驱动42步进电机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • arduino uno+驱动器控制42步进电机

    1.步进电机工作原理 步进电机通过不停的变换通电线圈和线圈的通电方向进行旋转,每次变换使步进电机转子转动1.8°。如图所示,这里采用的是两相四线步进电机,所有的转动都由以下四个步骤构成 2.arduino+驱动器+步进电机,接线示意图 3.编写arduino程序

    2024年02月13日
    浏览(30)
  • 【STM32篇】4988驱动步进电机

    本文介绍的步进电机驱动为毕设所用,学习时也借鉴了其他博主和商家的资料,介绍的都很详细。但对于刚入门的友友萌来说,可能还会存在的一些不解。而我就是被卡在驱动电源上。下文为我对4988驱动的一些理解,希望能帮助到刚学习步进电机的朋友。 4988驱动IC价格便宜

    2024年02月01日
    浏览(62)
  • STM32F4驱动42步进电机(采用驱动器)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 stm32f407zgt6芯片,tb6600驱动器 植树机代码,可以驱动四路42步进电机,以下是只驱动1路。 : 红线接B+(TB6600), 蓝线接B-, 绿线接A-, 黑线接A+ 该图片是转载的。根据本文代码:Signal的-统一接开发板的GND(解

    2024年02月03日
    浏览(52)
  • 【STM32】实战3.1—用STM32与TB6600驱动器驱动42步进电机(一)

    目录 0 参考资料出处 1 实验预期效果 2 硬件学习 2.1 TB6600驱动器  2.1.1 通过拨码开关设定细分与电流 2.1.2 共阴共阳接线法 2.2 开关电源(AC转DC变压器) 电源线 2.3 42步进电机 2.3.1 基本知识 2.3.2 转速细分控制 2.3.3 满步、半步、微步驱动原理 3 软件配置与硬件接线 3.1 STM32CubeM

    2024年02月02日
    浏览(45)
  • 《树莓派项目实战》第十五节 使用L298N驱动板模块驱动双极42步进电机

    目录 15.1 双极步进电机引脚介绍 15.2 连接到树莓派 15.3 编写代码驱动步进电机  在本节,我们将学习如何使用L298N驱动板驱动一个

    2024年02月13日
    浏览(34)
  • stm32使用TB6600驱动器控制42BYGH型步进电机

    stm32使用TB6600驱动器控制42BYGH型步进电机 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 24V电源就是通过电路控制开关进行高速的导通于截至,将直流电转化为高频率的交流电提供给变压

    2024年02月11日
    浏览(38)
  • STM32控制42步进电机

    首先采用TB6600驱动外接12VDC电源。 STM32选c8t6最小系统板 接线TB6600跟32接线有共阴级接法(把ENA-,DIR-,PUL-与32共地)也有共阳接法(把ENA+,DIR+,PUL+与32共地)。这里选共阴级接法。 判断42步进电机的4根线哪两根是A相(A-和A+),哪两根是B相(B-和B+),方法:将任意两根线短接起来

    2024年02月16日
    浏览(62)
  • Arduino控制步进电机

    目录 1、步进电机简介 2、电路连接 3、控制代码 步进电机是一种用电脉冲进行控制,将电脉冲(数字信号)转化为角位移的执行机构。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,

    2024年02月15日
    浏览(37)
  • MKS SERVO42&57D 闭环步进电机_系列12 STM32_CAN例程

    具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法。 硬件开源! 网盘: 08_例程-STM32系列(CAN) 设置波特率: 菜单 → CanRate → 500K 设置从机地址: 菜单 → CanID → 01 需要一个TTL转CAN电平模块。 接线说明 代码说明 代码功能:STM32 主板通过CAN接口读取

    2024年02月10日
    浏览(30)
  • 【Arduino实验16 步进电机的控制】

    目录 一、实验目的 二、实验设备与环境 三、实验重点 四、实验难点 五、实验内容 5.1实验任务 5.2实验原理 5.3 实验内容 5.4实验结果 5.5思考题         (1)掌握ULN2003AN驱动阵列的原理,熟悉驱动模块的使用;         (2)熟悉并理解步进电机的基本原理,熟悉步进电机的

    2023年04月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包