0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样与Arduino和L298N H桥配合使用以实现双极步进电机控制

454398 来源:wv 2019-10-24 09:43 次阅读

步骤1:您将需要什么

该项目将需要一些注意事项,如果您正在阅读此内容,则可能已经拥有:/p》

*某种风味的arduino(我正在使用UNO)

*步进电机(请查阅规格表)

* L298N驱动程序类似于图片中的电路板

*某种电源,至少可提供5V电压,但小于电机的最大电压

*连接线,剥线钳,电线推子等(在该项目上无需焊接)

数字万用表可能会有所帮助

第2步:将L298N连接到Arduino

怎样与Arduino和L298N H桥配合使用以实现双极步进电机控制

我在上一节中对此进行了描述,但让我们详细介绍一下:

L298N模块IN1-4上有四个引脚,有四个输出连接OUT1-4。模块的接线盒中还有一个+ V和GND。还有一个+ 5V端子(我们将不再使用)。

IN引脚可以连接到Arduino上的任何控制引脚。在我的情况下,我在UNO上有一个LCD屏蔽,因此我使用了模拟引脚(A1到4,这在以后很重要)。然后按如下方式连接它们:

A1-》 IN1

A2-》 IN2

A3-》 IN3

A4-》重要的是,还必须将arduino的接地引脚连接到公共接地端子,否则将无法正常工作!!!!!

然后我将+ V连接到可变电源,然后通过端子将地再次接地。

步骤3:为步进器接线

如果您查看规格表,它应该列出哪些导线是A + A- B +和B-有时,它们不使用此特定语言,但是您所拥有的是一盒带有4根导线的盒子,它们被分成两组。您可以通过测量电阻(或连接)来查看万用表,以查看配对的两个(如果没有说明)。为了使电动机真正旋转,您需要确保A +和B +分别挂接到OUT1和OUT3。如果您对电动机进行接线,而电动机刚刚振动,则其中一对会反转。

接线图基本上是:

A +(黑色)-》 OUT1

A-(绿色)-》 OUT2

B +(蓝色)-》 OUT3

B-(红色)-》 OUT4

第4步:编程:概述和警告

因此,当我第一次开始本奥德赛时,文档非常少,而且更糟糕的是,大多数示例仍然依赖于使用digitalWrite来处理引脚操作,或更糟糕的是,仍然依赖于内置的arduino步进器库,该库实际上实现了同一件事。但是,以这种方式进行操作存在很大的问题。 digitalWrite系统非常慢,而且,如果要执行的是digitalWrite,然后再执行另一个digitalWrite,则它确实是丑陋的,可怕的慢速代码。

如果您还不熟悉它,则应该阅读以下内容:

https://www.arduino.cc/zh/Reference/PortManipulati 。..

这允许我们要做的是,而不是一次写高电平或低电平引脚,只需通过寻址控制这些引脚的寄存器,就将整套引脚高电平或低电平写入即可。

警告:L298N H桥本质上是4个单独的开关,作为一个开关运行,如果与现有的arduino Stepper库一起使用,则有一个主要的坏习惯,或者如果您使用重复的digitalWrite()语句,也就是说,由于设置引脚之前的等待时间,则可能同时将IN1和IN2置于高电平。这会造成死机,并且可能不超过一两分钟,可能会冒烟检查您的桥梁。我花了几天的调试时间才能弄清楚桥为何要拉4安培的电流,并在运行约5秒钟后,散热器变得太热而无法触摸。

第5步:编程示例

因此,这里可能需要或可能不需要一些额外的东西,例如LCDShield的代码或检查主循环执行时间的代码。

如果您使用的是A1-A4,则应编译该代码(Arduino IDE 1.6.5),并使电动机旋转。这段代码大部分是我自己的,从Stepper.h文件中借来了或修改了一点。

注意:

“ StepFast”上的延迟以微秒为单位,因此2000仅为2毫秒,大多数情况下,如果尝试以小于1200的延迟步进电动机它会跳过一些步,尽管对于大多数电动机来说,800步是4整圈,但您可能会发现电动机只能转动四分之一圈。

此代码仅作为示例,目前不反向,它也不会吸收L298的反馈,也不会做我想做的其他很多事情。在查看现有的Stepper.h时,我可能会在接下来的几周中使用此方法来处理步骤,以重新编写它,因为现有的方法可能会损坏L298或任何其他H桥配置。

#include

#include

//Keypad Shield LCD pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

long unsigned int lasttime;

long unsigned int timer;

int timeuntil;

float exectime;

int smallcount;

void setup()

{

lcd.begin(16, 2);

lcd.print(“Motor Test”);

delay(2500);

lcd.clear();

}

void StepFast(long int steps,long unsigned wait)

{

DDRC = B00011110; //set arduino ports A1-A4 output remember this works backwards!

// ^-pin 7^-pin 0

int pattern = 0;

int mydelay = 0;

for (int i = 0;i 《 steps; i++)

{

switch (pattern)

{

case 0: // 1010

PORTC = B00001010; //arduino analog port we‘re using pins A1-A4 So we’re only going to change those

break;

case 1: // 0110

PORTC = B00001100;

break;

case 2: //0101

PORTC = B00010100;

break;

case 3: //1001

PORTC = B00010010;

break;

}

pattern++;

if (pattern 》 3) {pattern = 0; }

delayMicroseconds(wait);

}

PORTC = B00000000; //de-energize to motor

}

void loop()

{

lasttime = timer;

timer = millis();

exectime = (timer - lasttime)/1000;

if (timeuntil 《 timer)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Clockwise ”);

lcd.print(exectime);

lcd.setCursor(0,1);

lcd.print(timer);

lcd.print(“ ”);

lcd.print(lasttime);

timeuntil = timer + 1500;

}

StepFast(800,2000); //steps,delay in microseconds

delay(5000);

}

注意:

此代码在〜300RPM的中等步进速度(步进率为1ms左右)下可以很好地工作,因为您尝试将其提高到1000RPM,除非电压升高,否则它将开始丢失步骤,但是,如果以》 5V在60RPM(5ms)下运行电动机,则L298N会开始变得很热。

步骤6:事后的想法和补充

所以我在原始文章中没有真正提到的一些事情我非常重视在处理过程中。其中的主要问题是:

随着步进速度的增加,电源电压也必须增加

使用引脚ENA和ENB作为PWM输入以将电压保持在低低步速,并随着步速的增加而提高

加速和惯性应对

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    149

    文章

    2929

    浏览量

    146044
  • L298N
    +关注

    关注

    19

    文章

    224

    浏览量

    78136
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184819
收藏 人收藏

    评论

    相关推荐

    arduino控制步进电机代码

    中,我们将详细介绍如何使用Arduino控制步进电机的代码。 步进电机通常用于需要精确
    的头像 发表于 02-14 16:29 608次阅读

    Art-Pi+TMC2209步进电机细分控制测试

    前几天找出个步进电机,用L298N驱动测试了一下,具体见上篇文章简单的步进电机驱动调试。
    的头像 发表于 12-11 16:00 3150次阅读
    Art-Pi+TMC2209<b class='flag-5'>步进</b><b class='flag-5'>电机</b>细分<b class='flag-5'>控制</b>测试

    L298驱动的步进电机本身没有细分功能请问软件上可以细分吗?

    L298驱动的步进电机本身没有细分功能请问软件上可以细分吗?怎么实现?有例程分享吗?
    发表于 11-10 06:04

    L298N驱动电机顿卡是什么原因?

    L298N驱动电机顿卡是什么原因
    发表于 11-01 06:56

    L298N 电机驱动模块--配套程序

    电子发烧友网站提供《L298N 电机驱动模块--配套程序.zip》资料免费下载
    发表于 10-18 09:43 4次下载
    <b class='flag-5'>L298N</b> <b class='flag-5'>电机</b>驱动模块--配套程序

    L298N 电机驱动模块用户手册与原理图

    电子发烧友网站提供《L298N 电机驱动模块用户手册与原理图.zip》资料免费下载
    发表于 10-18 09:42 10次下载
    <b class='flag-5'>L298N</b> <b class='flag-5'>电机</b>驱动模块用户手册与原理图

    CEPARK L298N(带光耦)电机驱动模块配套程序

    电子发烧友网站提供《CEPARK L298N(带光耦)电机驱动模块配套程序.zip》资料免费下载
    发表于 10-13 11:17 1次下载
    CEPARK <b class='flag-5'>L298N</b>(带光耦)<b class='flag-5'>电机</b>驱动模块配套程序

    CEPARK L298N(带光耦)电机驱动模块原理图

    电子发烧友网站提供《CEPARK L298N(带光耦)电机驱动模块原理图.pdf》资料免费下载
    发表于 10-13 10:47 3次下载
    CEPARK <b class='flag-5'>L298N</b>(带光耦)<b class='flag-5'>电机</b>驱动模块原理图

    ST的L6230芯片适合用来驱动步进电机或舵机吗?

    ST的L6230芯片官方说适合用来驱动PMSM和BLDC,1种是永磁同步电机,1种是无刷直流电机。 那适合用来驱动步进电机和舵机吗,和
    发表于 09-28 06:12

    L298N引脚定义及功能

    一.L298N芯片 L298是15脚Multiwatt封装的L298N,内部包含4通道逻辑驱动电路;是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥驱动器,接收标准
    的头像 发表于 09-11 11:09 1.2w次阅读
    <b class='flag-5'>L298N</b>引脚定义及功能

    当Wemos最初由L298n供电时无法连接到WIFI怎么解决?

    这里有奇怪的问题。当 Wemos 最初由 L298n 供电时,我无法连接到 WIFI。 我将 wemos 连接到 L298n Hbridge shield 以驱动两个电机打开/关闭两个窗户。我正在
    发表于 05-26 11:45

    L298N电机驱动板

    1、输出 L298N模块拥有双通道输出,也就是输出A与输出B,可以实现对两路电机进行不同的控制与操作,输出A与输出B就是直接连电机的两端即
    发表于 05-16 15:39 0次下载
    <b class='flag-5'>L298N</b><b class='flag-5'>电机</b>驱动板

    L298N驱动电机+pwm

    L298N驱动:输入:12V 12V供电:将电源(2个18650电池)接入升压模块,用螺母旋转调到12V,接入L298N的驱动,给驱动提供12V供电 GND:将升压模块的输出端(out--)接入
    发表于 05-16 14:44 7次下载
    <b class='flag-5'>L298N</b>驱动<b class='flag-5'>电机</b>+pwm

    L298N步进电机驱动器使用说明

    L298N是 ST公司生产的一种高电压、大电流电机驱动芯片。 该芯片采用 15 脚封装。 主要特点是:工作电压高,最高工作电 压可达 46V;输出电流大, 瞬间峰值电流可达 3A,持续工作电流
    发表于 05-10 17:47 1次下载

    L298N原理图

    L298N原理图免费下载。
    发表于 05-10 09:14 44次下载