手把手教你智能硬件开发(六)直流马达

第6节 直流马达

马达是我们经常使用到的电动装置,它可以将电能转化成动能,驱动其他东西的运动。听起来很抽象,举几个例子吧。

我们小时候玩的四驱车,带动轮子转动的那个小装置就是马达;夏天让风扇旋转带给我们凉意,也是马达的功劳。

根据使用电源的不同,可以将马达分成直流马达和交流马达。我们做智能硬件使用的基本都是直流马达,通过马达来驱动外接设备运动。

6.1 工作原理

将电能转化成动能的物理原理,我们在中学已经学过,这里利用了两个原理:电磁感应和磁铁的同性相斥异性相吸。

  1. 将一根磁棒放在金属罩中间,两端悬上一个金属柱子,金属柱子上面有线圈;
  2. 当线圈通过电流的时候,就能产生磁场,磁棒根据极性改变位置;
  3. 改变电流方向,线圈磁场方向发生调换,磁棒再次根据极性改变位置;
  4. 如此往复,磁棒就旋转了起来。

一个马达的外形大致如此,

马达加上一些结构,与轮胎结合起来就成了轮子

它有两个接线的地方,一处接正极,另一处就接负极,

  1. 在不超过极限电压的情况下,对马达施加的电压越大,马达就转动的越快;
  2. 调转正负极的连接顺序,马达的旋转方向也发生调转;

6.2 连接方式

马达的正负极不能直接连接到Arduino开发板的引脚上,必须使用一个转换电路。否则马达在转动的过程中可能会产生强大的电流,击穿开发板上的元器件。

为此,可以使用专门的马达扩展板,来连接使用马达,

也可以使用集成了转换电路的马达模块,例如风扇马达模块,

在此我们选用集成了转换电路的风扇马达模块来讲解。

该模块有4个引脚,

模块引脚 功能说明
INA 控制接口A
INB 控制接口B
VCC 直流电
GND 接地

因为要调整直流马达的转动速度,INAINB最好接到具有PWM功能的接口上,通过设置该引脚的级数数,来调节马达的转速。这里,我们将INA连接到D9INB连接到D8

模块引脚 连接 Arduino扩展板
INA <–> D9组S引脚
INB <–> D8组S引脚
VCC <–> D8组V引脚
GND <–> D8组G引脚

6.3 代码设计

首先要初始化INAINB连接的接口,让Arduino开发板拥有向它们输出的能力,

//INA使用具有PWM功能的D9引脚
int INA = 9;
//INB使用具有PWM功能的D8引脚
int INB = 8;

void setup() {
    //设置引脚为输出
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
}

INA引脚设置成低电平LOW,改变INB引脚的值,来达到控制马达转速的效果,

void setup() {
    //设置引脚为输出
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
    digitalWrite(INA, LOW);
}

void loop() {
    //从0级到100级
    for(int level = 0 ; level < 100+1; level++)
    {
        //调整INB上的电压级数,达到改变风扇转速的效果
        analogWrite(INB, level);
        delay(100);
    }
}

这里将调整的级数,调整在了0~100。理论上可以调整的级数应该是0~255级。但是由于马达电流负载的原因,设置到高级数时,例如245级,会让开发板过载。因此可以把最大级数设置的稍微小一点,例如230级

int INA = 9;
int INB = 8;

int START_LEVEL = 0;
int END_LEVEL = 230;

void setup() {
  pinMode(INA, OUTPUT);
  pinMode(INB, OUTPUT);
  digitalWrite(INA, LOW);
}

void loop() {

    //从9级慢慢加速到230级
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        analogWrite(INB, level);
        delay(100);
    }

    //从230级慢慢减速到0级
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        analogWrite(INB, level);
        delay(100);
    }
}

6.4 结果观察

马达开始缓慢的旋转,越转越快;达到最快转速时,又开始减速,直到停止;整个过程周而复始。

6.5 马达的反转

如果想修改马达旋转的方向,可以将INB设置为低电平LOW,改变INA引脚的值,

int INA = 9;
int INB = 8;

int START_LEVEL = 0;
int END_LEVEL = 230;

void setup() {
  pinMode(INA, OUTPUT);
  pinMode(INB, OUTPUT);
}

void loop() {
    //朝着一个方向旋转,先加速,再减速
    //INA设置为LOW
    digitalWrite(INA, LOW);
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        //改写INB的级数
        analogWrite(INB, level);
        delay(100);
    }
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        //改写INB的级数
        analogWrite(INB, level);
        delay(100);
    }

    //朝着另一个方向旋转,先加速,再减速
    //INB设置为LOW
    digitalWrite(INB, LOW);
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        //改写INA的级数
        analogWrite(INA, level);
        delay(100);
    }
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        //改写INA的级数
        analogWrite(INA, level);
        delay(100);
    }
}


/*******************************************************************/

* 版权声明

* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。

*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店安豆的杂货铺中购买相关硬件。同时也感谢大家对我们这些码农的支持。

*最后再次感谢各位读者对安豆的支持,谢谢:)

/*******************************************************************/

时间: 2024-12-27 03:56:29

手把手教你智能硬件开发(六)直流马达的相关文章

手把手教你智能硬件开发(一) 我选Arduino

第1节 我选Arduino 高大上的无人机玩过吗?智能的家庭空气检测仪见过吗?手机控制的电子体重秤.血压仪用过吗?这些"高科技"都属于智能硬件. 作为软件开发者的你,有没有想过自己开发一个智能硬件呢? 也许你会觉得硬件开发的门槛很高,作为小白或者软件开发者难以企及,那么这你就想错了.其实,现在已经有了很多专门为软件开发者设计的智能硬件开发平台.例如现在火爆的树莓派-raspberry pi.英特尔推出的爱迪生-Edison,以及本系列讲重点介绍的Arduino. 有了它们,即使你对硬件

手把手教你使用 Clion 开发 Linux C++ 项目

手把手教你使用 Clion 开发 Linux C++ 项目 关于CLion CLion是一款专为开发C及C++所设计的跨平台IDE.它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力,提高开发人员的工作效率.这种强大的IDE帮助开发人员在Linux.OS X和Windows上来开发C/C++,同时它还使用智能编辑器来提高代码质量.自动代码重构并且深度整合CMake编译系统,从而提高开发人员的工作效率.重要功能有:提供C及C++支持(包含C++11, libc++ 和Bo

CSS3实战开发:手把手教你照片墙实战开发

在<CSS3 2D转换技术之translate实战开发>文章中,我给大家列出了CSS3中的2D转换方法: 1.    translate() 2.    rotate() 3.    scale() 4.    skew() 5.    matrix() 同时对第一个方法 translate()做了非常详尽的介绍,并带领大家实战开发了一个导航条.如果你对translate不了解或不是太熟悉,请阅读我的博文 <CSS3 2D转换技术之translate实战开发> . 在讲解知识点之前

手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引

近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开发一个小型的b/s结构的管理系统,已达到帮助团队成员快速掌握b/s结构信息系统的开发方法. 源码位置:https://github.com/kamiba/FineUIDemo 源码下载办法:安装SVN客户端(本文最后提供下载地址),然后checkout以下的地址:https://github.com

如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试&#183;把温湿度给收集了(下)!

一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计硬件积木的! 三.MCU选型:如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢? 四.温湿度传感器DHT11驱动封装(上):如何为编程爱好者设计一款好玩的智能硬件(四)——初尝试·把温湿度给收集了(上)! 五.温湿度传感器DHT11驱动封装(中):如何为编程爱好者设计一款好玩的智能硬件(五)

微信智能硬件开发的理解

微信智能硬件开发过程 1.申请服务号 2.申请服务号设备功能 3.提交设备基本资料 4.测试开发 5.寄送设备到[微信总部] 6.审核通过后,测试设备限额为100个 7.测试开发 8.提交微信互联网设备技术认证,该认证由[第三方认证机构]完成. 9.审核通过后,可申请更多授权二维码 10.批量生产 具体开发过程 1.申请服务号,填写信息,认证服务号(300块钱认证费),得到公众号信息,提交接入设备基本资料,寄送承诺函. 2.开发硬件,可以自己找厂商开发,也可以用微信合作厂商的芯片. 要做一个智能

手把手教你搭建PHP开发“黄金自由新搭档”

引言:随着PHP广泛应用白热化,大家使用的开发工具从重量级的ZendStudio到轻量级的Notepad++可以说是五花八门.应有尽有,这给初学者带来不少困惑,工具太多了就无从下手选择适合自己需要的东东.笔者亲自测试和比较,选择适合大多数开发人员追求既"自由.快捷.简便"又满足功能强大的实际需要,从自定义PHP运行环境配置文件着手搭建PHP开发平台,并给出详细的操作步骤.手把手教你用网络风暴WebStorm+集成开发工具PhpStorm+自定义运行环境phpRE搭建PHP开发"

东方耀 手把手教React Native实战开发视频教程+源码笔记全集

课程序号标题 第0课0.手把手教React Native实战之开山篇_视频 第1课1.手把手教React Native实战之环境搭建_视频_Windows环境 第1课1.手把手教React Native实战之环境搭建[Mac真机]同时调试开发Android&IOS 第2课2.手把手教React Native实战之从React到RN 第3课3.手把手教React Native实战之flexbox布局(RN基础) 第4讲4.手把手教React Native实战之flexbox布局(伸缩属性) 第5讲

手把手教你视频直播开发

#pragma mark viewDidLoad - (void)viewDidLoad { [super viewDidLoad]; self.liveRoomVC = LiveRoomVC_LiveRoomViewController; self.isTouchHomeEd = NO; NSLog(@"!!!%ld",(long)self.staruserid); [AppDelegate shareAppDelegate].isNeedReturnLiveRoom = YES;