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

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

3天内不再提示

Arduino篇—直流电机控制在轮式机器人中的应用

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-02 10:41 次阅读

课程目标

  • 最简小车的设计
  • 电机控制车辆运动
  • 小车的多种运动形态实现

电路搭建

所需材料

ArduinoUNO * 1
L298N驱动模块 * 1
直流电机 * 2
7~12V外接电源 * 1
杜邦线若干
小车组件

电路连接

图片

程序编写

练习一:小车的循环运动

通过编写程序,循环实现小车的前进一秒、后退一秒、左转一秒、右转一秒、停止一秒功能。

图形化方式:

如果有同学发现,按照下面的程序上传后,小车的运动有问题,那么可以通过改变直流电机的接线或者修改数字输出引脚的高低电平即可。

图片

代码方式:

/* 项目名称:循环控制小车运动
 * 项目时间:2022.03.28
 * 项目作者:MRX
 */
int IN1 = 4;   // IN1连接 D4
int IN2 = 5;   
int ENA = 9; 
int IN3 = 6;   // IN3连接D6
int IN4 = 7;   
int ENB = 10; 

unsigned long delaytime = 1000;  //等待时间
int value = 100;   // 模拟输出的值


//前进
void forward() {
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,value);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,value);
}


//后退
void back() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


//右转
void right() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,0);
}


//左转
void left() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


// 停止
void stop() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,0);
}


void setup(){
    for (int i = 4;i <= 10;i++){
      pinMode(i, OUTPUT);
    }
}

void loop(){
    forward();
    delay(delaytime);
    forward();
    delay(delaytime);
    left();
    delay(delaytime);
    right();
    delay(delaytime);
    stop();
    delay(delaytime);
}

练习二:可调速的小车

通过读取可调电位器的值,来实现车速的变化。

电路接线:

在上图的基础上,增加一个可调电位器连接到UNO的A0脚。

图形化方式:

图片

代码方式:

/* 项目名称:电位器控制小车速度
 * 项目时间:2022.03.28
 * 项目作者:MRX
 */
int IN1 = 4;   // IN1 connected to pin 4
int IN2 = 5;   
int ENA = 9; 
int IN3 = 6;   // IN3 connected to pin 6
int IN4 = 7;   
int ENB = 10; 

unsigned long delaytime = 1000;  //delay time
int value = 0;   // the duty cycle


void forward() {
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,value);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,value);
}


void back() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,value);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,value);
}


void right() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,100);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,0);
}


void left() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  analogWrite(ENB,100);
}


void stop() {
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  analogWrite(ENA,0);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  analogWrite(ENB,0);
}


void setup(){
    for (int i = 4;i <= 10;i++){
      pinMode(i, OUTPUT);
    }
    pinMode(A0,INPUT);
}

void loop(){
    value = (map(analogRead(A0), 0, 1023, 0, 255));
    forward();
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机控制
    +关注

    关注

    3526

    文章

    1855

    浏览量

    268369
  • 电位器
    +关注

    关注

    14

    文章

    1005

    浏览量

    66718
  • 直流电机
    +关注

    关注

    36

    文章

    1708

    浏览量

    70072
  • 轮式机器人
    +关注

    关注

    0

    文章

    7

    浏览量

    8999
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186639
收藏 人收藏

    评论

    相关推荐

    如何使用MATLB和Arduino控制直流电机

    本教程中,我们将向您展示如何使用 MATLB 和 Arduino 控制直流电机
    发表于 11-03 17:18 1343次阅读
    如何使用MATLB和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    如何使用Arduino控制直流电机

    如何使用Arduino控制直流电机
    发表于 10-19 07:38

    直流电机

    什么是直流电机 使用直流电源的电机叫做直流电机。因此只要把直流电机的端子接到直流电源上,就可以
    发表于 01-09 15:05 4014次阅读
    <b class='flag-5'>直流电机</b>

    直流电机PWM控制

    直流电机PWM控制设计:基于VHDL语言实现直流电机PWM控制设计,有仿真,有程序,有结论
    发表于 11-08 18:51 51次下载

    直流电机PWM控制

    直流电机PWM控制(电源技术属于哪个期刊)-直流电机PWM控制,有需要的可以参考!
    发表于 09-15 15:29 141次下载
    <b class='flag-5'>直流电机</b>PWM<b class='flag-5'>控制</b>

    Arduino直流电机调速

    Arduino直流电机调速(深圳市核达中远通电源技术有限公司招聘电话)-基于Arduino直流电机调速                        
    发表于 09-18 16:12 61次下载
    <b class='flag-5'>Arduino</b>的<b class='flag-5'>直流电机</b>调速

    动手玩转Arduino---运动控制直流电机步进电机舵机)

    动手玩转Arduino---运动控制直流电机步进电机舵机)(电源技术是中文核心吗)-该文档为动手玩转Arduino---运动
    发表于 09-23 09:22 36次下载
    动手玩转<b class='flag-5'>Arduino</b>---运动<b class='flag-5'>控制</b>(<b class='flag-5'>直流电机</b>步进<b class='flag-5'>电机</b>舵机)

    如何使用L298N和Arduino控制直流电机

    在这个Arduino教程中,我们将学习如何使用Arduino控制直流电机。我们来看看控制直流电机
    的头像 发表于 04-08 15:06 1.1w次阅读
    如何使用L298N和<b class='flag-5'>Arduino</b>板<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    ROS机器人中直流电机控制原理与驱动电路设计

    这篇文章来分享下,ROS学习平台中常常使用到的直流电机控制原理与驱动电路。
    的头像 发表于 03-17 10:45 1729次阅读
    ROS<b class='flag-5'>机器人中直流电机</b><b class='flag-5'>控制</b>原理与驱动电路设计

    arduino直流电机

    这一期我们来学习如何控制直流电机。 需要材料:Arduino UNO 直流电机——本文以12V额定电机为例
    发表于 03-30 13:46 3次下载
    <b class='flag-5'>arduino</b><b class='flag-5'>直流电机</b>

    使用Arduino和电位器控制直流电机速度

    直流电机机器人和电子项目中使用最多的电机。对于控制直流电机的速度,我们有多种方法,例如可以根据温度自动
    发表于 03-30 11:11 0次下载
    使用<b class='flag-5'>Arduino</b>和电位器<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>速度

    ros与arduino通信控制直流电机

    前言:成功通过arduino开发板控制直流电机后,开始尝试用ros与arduino通信来控制
    发表于 03-31 11:45 4次下载
    ros与<b class='flag-5'>arduino</b>通信<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    继电器控制直流电机

    Arduino、按键、继电器、直流电机 软件:Mixly IDE 四、实验过程(实验步骤、记录、数据、分析) 核心代码截图: (1)、完成使用继电器控制直流电机功能。
    发表于 04-03 11:01 4次下载
    继电器<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    使用Arduino直流电机MOSFET控制速度

    电子发烧友网站提供《使用Arduino直流电机MOSFET控制速度.zip》资料免费下载
    发表于 06-27 15:13 0次下载
    使用<b class='flag-5'>Arduino</b>的<b class='flag-5'>直流电机</b>MOSFET<b class='flag-5'>控制</b>速度

    使用Arduino控制直流电机

    电子发烧友网站提供《使用Arduino控制直流电机.zip》资料免费下载
    发表于 07-03 11:04 0次下载
    使用<b class='flag-5'>Arduino</b>来<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>