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

    关注

    3467

    文章

    1709

    浏览量

    264542
  • 电位器
    +关注

    关注

    14

    文章

    964

    浏览量

    66047
  • 直流电机
    +关注

    关注

    35

    文章

    1626

    浏览量

    69480
  • 轮式机器人
    +关注

    关注

    0

    文章

    7

    浏览量

    8984
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184862
收藏 人收藏

    评论

    相关推荐

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

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

    使用Arduino控制直流电机的技巧指南

    基于ROS使用Arduino控制直流电机
    发表于 09-16 08:25

    Arduino开发板如何控制直流电机

    Arduino开发板控制直流电机
    发表于 07-16 17:28

    一般机器人驱动机构中电机的选择问题

    机器人中,执行机构一般分为液压驱动和电机驱动两种类型,其中又以电机驱动最为常见。本文主要讨论一般机器人驱动机构中
    发表于 09-01 06:12

    如何使用Arduino开发板控制直流电机

    如何使用Arduino开发板控制直流电机
    发表于 09-23 08:42

    ROS怎么使用Arduino控制直流电机

    ROS怎么使用Arduino控制直流电机
    发表于 09-24 06:42

    请问Arduino是怎么控制直流电机转动的?

    请问Arduino是怎么控制直流电机转动的?
    发表于 10-13 08:08

    如何使用Arduino控制直流电机

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

    直流电机控制原理及C程序

    直流电机控制原理及C程序(通讯电源技术的组成)-直流电机控制原理及C程序,有需要的可以参考!
    发表于 09-15 14:08 42次下载
    <b class='flag-5'>直流电机</b><b class='flag-5'>控制</b>原理及C程序

    Arduino直流电机调速

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

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

    在这个Arduino教程中,我们将学习如何使用Arduino控制直流电机。我们来看看控制直流电机
    的头像 发表于 04-08 15:06 9971次阅读
    如何使用L298N和<b class='flag-5'>Arduino</b>板<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 1次下载
    ros与<b class='flag-5'>arduino</b>通信<b class='flag-5'>控制</b><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>