如何使用arduino控制步进电机一个5V电机

Arduino电机驱动模块(293D)使用
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
Arduino电机驱动模块(293D)使用
  前段时间从淘宝上掏到了一块可控制4个电机的293D驱动板,今天终于有空可以搬出来测试了。
Arduino电机扩展板可使Arduino成为简易机器人和机电一体化很好的平台。
2路5V的简易舵机连接,最多4路双向直流电机连接,2个步进电机连接。
4个H-桥 L293D芯片提供0.6A每桥(1.2A峰值)带过热保护,电压从4.5V至36V可选。
Arduino 复位按钮移到了顶层。
它们带有一个3线母头插座连接到+5V,地和信号输入。
电机驱动板只需提供16bit PWM 输出线至23线连接头所以操作及其简单,它们需要消耗大量的电流因此不能使用9v叠层电池来供电。
好消息是使用板载的PWM非常精准和在后台运行控制。
你可以使Arduino自带的Servo库。
使用伺服电机非常简单,请参考官方的Arduino文档关于如何使用它们以及IDE中的伺服器例子代码。
  直流电机被使用在各种类型的机器人项目。这款电机驱动板可以驱动四路直流双向电机。意味着他们可以正转或者反转。速度同样可以以0.5%的增量变化使用内嵌的高质量的PWM。这意味着电机调速非常平滑和稳定!
(注意H-桥芯片的驱动负荷并不是真正超过0.6A 或者峰值超过1.2A 所以只适用于微型电机。查阅数据手册来确定电机是否适用。)
  连接电机只需将焊接电机引线连然后接到板子上的电机连接端子M1, M2, M3,orM4。然后按照下面的步骤来创建你的程序:
1.确定你导入了&AFMotor.h&
2.使用AF_DCMotor(motor#, frequency)创建 AF_DCMotor 对象, 来设置电机H桥和制动。构造器带有两个参数。第一个motor#是要链接的电机端口,1, 2, 3or4,第二个frequency是电机转速控制量.
电机1和2你可以选择MOTOR12_64KHZ,MOTOR12_8KHZ,MOTOR12_2KHZ,orMOTOR12_1KHZ。一个高速例如 64KHz 将听得见声音但是一个低速例如1KHz将使用更少的能耗。电机 3 和 4 只能运行在1KHz 并且会忽略任何的设置。
3.然后你可以通过setSpeed(speed)设置电机的速度,speed& 范围从0(停止)到255(全速)。你可以设置任何你想要的速度。
4.为了运行电机,调用run(direction)direction为FORWARD,BACKWARD或者RELEASE。当然,Arduino 实际不知道电机是正转还是反转,所以如果你想改变正反转的方法,只需简单的交换电机的接线。
#include &AFMotor.h&
AF_DCMotor motor(2, MOTOR12_64KHZ);// 创建电机#2号,速度是64KHz pwm
void setup() {
Serial.begin(9600);// set up Serial library at 9600 bps
Serial.println(&Motor test!&);
motor.setSpeed(200);// 设置速度,从200/255之间任意
void loop() {
Serial.print(&tick&);
motor.run(FORWARD);// 电机前进
delay(1000);
Serial.print(&tock&);
motor.run(BACKWARD);// 电机后退
delay(1000);
Serial.print(&tack&);
motor.run(RELEASE);// 停止
delay(1000);
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved查看: 3019 | 回复: 0
伺服电机在许多不同的应用中是非常有用的,我们应该好好学习如何控制他们!前面的文章已经介绍过电磁阀和直流电机控制;大多数情况下,它们的电机控制方法都是非常简单的(只需要连接电源和地)。
伺服电机有一些不同,它使用3根线连接(电源、地和信号)将电机移动到某个旋转位置。该位置由信号线上发送的信号决定。一旦电机到达信号指定的位置,它将保持其位置,并抵抗试图将其从该位置移动的任何外力。该电阻称为伺服的转矩额定值,可在数据表中找到。可以使用下面几种类型的伺服:
固定旋转伺服 - 这些伺服在其旋转方面有固定的限制,因此您无法使其超过其限制。适合用于机器人手臂、拉/推杠杆等;
连续旋转伺服 - 这些伺服允许您无限期地连续顺时针或逆时针旋转。
线性伺服 - 允许通过伺服电机控制进行线性运动。脉冲宽度调制PWM伺服电机可以在0-6V范围内工作,特别是我们在Makersphere看到的爱好伺服(hobby servo)。为了控制旋转,我们在信号线上发送一个可变宽度的脉冲(电源线和地线用作信号的参考)。如果你对这个不熟悉,可以理解成,一个脉冲只是一个方波从0V到另一个电压,然后返回到0V的一段时间。伺服点击根据脉冲的宽度向左或向右转动。首先使用脉冲控制伺服位置的想法看起来有点过时,请看一下这个图,以便更直观地了解它是如何工作的。基本上,存在一个伺服电机电路可以保持的中性位置,该位置定义成一个脉冲宽度(在本示例中称为1ms)。
servo-diagram-rotation.png (29.67 KB, 下载次数: 0)
19:00 上传
假设,保持伺服点解在中性位置的1ms脉冲可以无限期地保持该位置。如果我们发送短于1ms的中性脉冲(&1ms)的脉冲,电机将百分数转向零度。相反发生在另一侧(& 1ms),电机将朝最大旋转(180度)分数旋转。计算该中性点任一侧的旋转分数值的电路会比这个简化模型要复杂得多。但这应该可以给你一个让它工作的好主意。当我们使用Arduino编程时,这种伺服电机背后的理论并不太重要。我们可以导入一个库来满足大多数的PWM应用场景。该库称为Servo库,您可以在查看的该库的所有不同函数。使用伺服库的基本操作如下:1.&&将伺服电机命名servo,可以使用Servo [servo name];函数实现。2.&&将伺服关联到一个引脚,这个引脚将是我们伺服的信号引脚,并使用 [servo name].attach([PinNumber]);3.&&为伺服的位置创建一个变量(或者只是使用一个整数值)4.&&现在我们可以使用[servo name].write([position integer])写入伺服的位置。
在本教程中我们将使用Arduino Uno和一个小型爱好伺服。有时,在使用较大的电机时,伺服器可以在极短的间隔汲取过量的电流。在这种情况下,我们将使用一个电容器(或者可能只是一个具有外部电源的伺服屏蔽),以减少灌入的电流量(考虑Arduino引脚只有20mA!)。因此我们使用的是一个小的爱好伺服,它直接连接到Arduino可以很好的工作。您的设置应该看起来像这样,请注意,我们使用的PWM引脚10,但可以使用任何PWM引脚!
arduino_servo_fritzing.png (54.19 KB, 下载次数: 0)
21:06 上传
编写代码就像使用Servo库一样简单。我们将写一个框架程序,可以向后和/或向前移动我们的伺服点击。 你可以在下面看到我们的代码,也可以随时自己写。#include&&//import the servo library
S //Name the Servo
void setup() {
&&coreservo.attach(10);
&&/*Attach the named servo object to Digital IO 13, use following syntax:
&&servoname.attach(Pin#, minimum Pulse width (ms), maximum pulse width (ms));
&&if you want to define the pulse widths for your motor*/
void loop() {
&&coreservo.write(0);
&&delay(200);
&&coreservo.write(90);
&&delay(200);
&&coreservo.write(180);
&&delay(200);
&&/* If you wanted to read the angle of your servo at any given time, use servoname.read();
& &* If you wanted to write a pulse of a certain width use servoname.writemicroseconds(value in microseconds);
& &*/
}复制代码
如果你想要构建一个机器人或使用一大堆伺服器的东西,可以看看Adafruit这个强大的,它允许你在任何时间连接16个伺服电机!感谢您花时间看看这个教程,如果有任何问题,可以在教程后面留言。
微信扫一扫 转发朋友圈
Powered by使用Arduino控制大型步进电机--EEWORLD大学堂 - 工控电子 - 电子工程世界-论坛
后使用快捷导航没有帐号?
查看: 3450|回复: 4
使用Arduino控制大型步进电机--EEWORLD大学堂
在线时间96 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
使用Arduino控制大型步进电机:第一集:如何利用Arduino、24V电源和一个ST-M5045细分驱动器,控制Nema 34步进电机。第二集:测试3种不同的Arduino程序的代码,驱动大型Nema 34步进电机,然后增加轴上的载荷,去看电机如何处理多出的重量。
在线时间96 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
Arduino不只是整点小玩意哦 大的也能搞定
在线时间39 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 284, 距离下一级还需 216 积分
一粒金砂(高级), 积分 284, 距离下一级还需 216 积分
程序代码,好模糊,但不清楚
恩,主要是教方法&
请修改签名 ^_^
在线时间96 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
一粒金砂(高级), 积分 443, 距离下一级还需 57 积分
程序代码,好模糊,但不清楚
恩,主要是教方法
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
楼主你好 我手里有两个直流电机 参数是24VDC 15Amax 只有两根线(+ 和-) 想用这两个做个平衡车 问下楼主电机驱动该选择 谢谢
EEWORLD 官方微信
EE福利 唾手可得
Powered byArduino控制直流电机
从机器人基地淘宝店铺邮寄的今天终于到了。
蓝色的板子,金色的印字,做工真的很精美,物有所值,吼吼~刚拿到的驱动板就来编写一个小程序测试一下吧,当务之急就是要了解一下这款驱动板接口说明和参数指南,这里我就“盗用”一下机器人基地的功能图解,敬请见谅啦!
可以看到板子左、右下角分别有两个直流电机控制信号输入接口,我这里准备了一个从玩具小车上拆下来的电机,我就选择左边的接口,将直流电机接入绿色端子,左下角的信号输入接口三个插针分别是EA、I1、I2,EA是区别于右边的EB,是用来接入PWM接口给电机调速的,I1、I2分别接入数字接口就OK了,是用来控制电机转向的。我就将EA接入Arduino的pin11PWM接口,I1、I2分别接8、9数字接口,至于逻辑供电部分,我就直接接入Arduino板子上的5V输出接口了,这里也可以不接线,因为这款驱动板子是可以板内取电的,如需要板外取电需将控制板内取电的跳线帽取下(这里我只是为了给网友们演示外部取电的使用方法,我并没有取下板内取电的跳线帽,如图接线实际上仍是板内取电。这里希望没有造成误导),端子左边的VMS接口是驱动部分取电,我接入四节5号电池,按下图连接好电路。
连接好电路就剩编程的工作了,我就让电机先顺时针转两秒,再逆时针转两秒,再让电机停止转动,这样循环进行。
程序如下:
int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin=11;//定义EA(PWM调速)接口
& pinMode(pinI1,OUTPUT);//定义该接口为输出接口
& pinMode(pinI2,OUTPUT);
& pinMode(speedpin,OUTPUT);
void loop()
& analogWrite(speedpin,100);//输入模拟值进行设定速度
& delay(2000);
& digitalWrite(pinI1,LOW);//使直流电机顺时针转
& digitalWrite(pinI2,HIGH);
& analogWrite(speedpin,100);
&&delay(2000);
& digitalWrite(pinI1,HIGH);//使直流电机逆时针转
& digitalWrite(pinI2,LOW);
& analogWrite(speedpin,100);
& delay(2000);
& digitalWrite(pinI1,HIGH);//使直流电机停止
digitalWrite(pinI2,HIGH);
delay(2000);
有一点值得注意,一般情况电机的速度与电机以及其负载都有关系,所以速度要根据实际情况调节。
已投稿到:当前位置:
如何用Matlab连接控制Arduino:GUI界面制作与电机控制
MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。而Arduino开发板是一种越来越受到欢迎的开源硬件。
  MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。而Arduino开发板是一种越来越受到欢迎的开源硬件。  一个是什么都能算的软件,一个是最火爆的开源硬件,两者结合能碰撞出什么样的火花呢?笔者以Matlab软件研究如何控制Arduino,将从Matlab制作Arduino的GUI界面和simulink应用出发,探索如何使用Matlab连接和控制Arduino。  Matlab与Arduino联合应用&&GUI界面  首先介绍如何安装配置一个基于Matlab的GUI界面,能够实现对ArduinoIO口的操作。  下图所示为matlab中Arduino相关程序的下载界面  下载后为压缩文件,解压缩为ArduinoIO的文件夹,打开Matlab(笔者为2012版本),将当前工作目录至于ArduinoIO文件夹下。  打开Matlab的GUIDE  安装下面方法,拖放两个按钮,按钮的显示文字可以通过双击后,在属性页下的&string&一栏下面修改,我们用两只按钮分别控制直流电机的转动  至此,我们已经完成必要的程序的烧写和界面的初步编写,下面将继续介绍如何添加按钮的响应函数,实现上位机的控制功能。  我们利用Matlab已经初步设计了一个GUI界面,下面将添加必要的响应函数,演示时间的控制功能。  下图展示如何从GUIDE进入按钮的编辑界面,在这里我们将添加对Arduino相应的IO口或者串口的操作。  下面是基本的操作函数实例汇总  a=arduino('COM9')  设置引脚为输入或者输出  a.pinMode(4,'input');  a.pinMode(13,'output');  读写引脚的状态  a.digitalRead(4)  a.digitalWrite(13,0)  模拟量输入或者输出操作  a.analogRead(5)  a.analogWrite(9,155)  串口操作  a.serial%getserialport  a.%flushesPC'sinputbuffer  a.roundTrip(42)%sends42tothearduinoandback  本例中若使用按钮&Right-Motor&点击实现IO口8置为高电平,驱动直流电机全速转动,则添加    a=arduino('COM7');  a.pinMode(8,'output');  在按钮&Right-Motor&的响应函数中添加代码段    a.digitalWrite(8,(get(hObject,'Value')))  Arduino端准备  想要arduino端的控制,还需要向Arduino中烧写已经下载的pde文件,其位置位于加压缩后的ArduinoIO文件夹下的pde文件中。通过usb线缆将Arduinouno与电脑连接,点击GUI中添加的按钮,即可实现远端控制功能。  我们介绍了,在Matlab中建立一个ArduinoGUI的过程。下面将继续介绍如何在Arduino端进行软件准备。  软件调试可以在Arduino连接至电脑端就可以进行。  下面将作者自己在其中遇到或者大家可能会遇到的问题一一总结如下:  (1)已经编写完成的Matlab程序已经绑定了通信口COM8,执行Matlab程序出现如下提示  Errorusingarduino(line83)  Couldnotopenport:COM8  ErrorinArduinomatlab&Arduinomatlab_OpeningFcn(line60)  a=arduino('COM8');  首先保证你的开发板已经连接至PC机,而且通过设备管理器查看端口是否与程序中设置的相同。  (2)在保证上述已经完成的情况下,依然提示出错  Errorusingarduino(line54)  PortCOM8alreadyusedbyMATLAB  这很可能是你中间断开了Arduino的连线或者重新编译了程序,你需要在Matlab中执行  delete(instrfind({'Port'},{'COM8'}))  然后重新连接即可。  (3)Arduino连接至PC端,但是不能烧写上期Blogger中的pde文件,这时候要排除IDE编译环境中可能存在的问题  1下载最新的IDE环境(http://arduino.cc/en/Main/Software#toc2)  2安装手动方式更新驱动  3注意更改软件中TOOLs下面的&Board&和&serialport&选项,按照自己所使用Arduino进行修改。  下面将介绍如何配置硬件外围电路,来为实验做最后准备。  为ArduinoUNO开发板连接外围电路,包括直流电机、led灯等外围器件。  使用到的元器件  下图是Arduino与直流电机的接口电路。  我们再分析各部分功能  1开关  2直流电机  3二极管  4MOSFE管  5电机驱动电源(9V)  由于Arduino的最大驱动电流是40mA,远远小于电机驱动所需的电流。这里我们使用一个MOSFET(当然可以使用三极管代替),来使Arduion的小电流来控制电机的通断  而电机属于电感性负载,在启停阶段可能会由于电感存在产生一个很大反向电压,可能会损害我们的MOSFET,这里使用一个二极管来使电流沿着一个方向流动,从而保证电机对其余电路的影响。  9V电源为电机转动供电,当我们直接将其连接至直流电机两侧时,会发现电机将会全速转动。  在实验中,我们手上只有一个直流电机,所以另外一只的控制我们使用led灯来模拟,注意要接上一只220欧的电阻进行限流。  在完成基本的软件和硬件的准备工作后,我们现在进入最终的测试阶段。  操作顺序:  1将Arduino通过usb线缆连接至PC  2打开Matab,将当前文件夹设为我们从matlab官网下载的并解压缩的ArduinoIO  3双击打开Arduinomatlab.fig,弹出控制界面  4点击按钮观察电机的转动,如果在Matlab提示出错信息,请尝试下面解决方法  5执行&clear&清除变量;执行&delete(instrfind({'Port'},{'COM8'}))&,并重新拔掉再插上线缆以创建新的通信连接,重复操作步骤1。
本文由入驻OFweek公众平台的作者撰写,除OFweek官方账号外,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
邮箱/用户名:
忘记密码?
用其他账号登录: QQ
请输入评论
广东省/深圳市
四川省/成都市
广东省/深圳市
广东省/深圳市
广东省/深圳市
广东省/深圳市
北京市/海淀区
广东省/深圳市
广东省/深圳市
广东省/惠州市
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:}

我要回帖

更多关于 arduino控制伺服电机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信