【雕爷学编程】Arduino动手做(157)---MX1508双路电机驱动模块

news/2025/1/12 22:06:13/

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十七:MX1508 四通道双路有刷直流电机驱动模块 2路直流马达驱动模块 双H桥步进电机 正反转PWM调速

在这里插入图片描述

知识点:MX1508芯片

是专用单芯片解决方案,芯片内部集成两路 H 桥驱动电路,可同时驱动转向电机以及前进后退电机。为电池供电的玩具、低压或者电池供电的运动控制应用提供了一种集成的有刷直流马达驱动解决方案。电路内部集成了两通道采用N沟和P沟功率MOSFET设计的H桥驱动电路,适合于驱动电动玩具车的转向轮及后轮驱动,(驱动有刷直流马达或者驱动步进马达的两个绕组)。该电路具备较宽的工作电压范围(从2V到9.6V)。

在这里插入图片描述
MX1508内部结构图

在这里插入图片描述
MX1508单通道工作时,左转/右转通道用于驱动转向电机,最大持续输出电流达到 1.2A,最大峰值输出电流达到 1.5A。前进/后退通道用于驱动前进后退电机,最大持续输出电流达到 1.4A,最大峰值输出电流达到 2A;双通道同时工作时,左转/右转通道持续输出 0.8A 的情况下,前进/后退通道能持续输出 1.2A。该芯片具备较宽的工作电压范围(VM 端供电从 2V 到 8V),可覆盖 2 节干电池至 5 节干电池的应用。

该专用芯片内置过热保护电路。驱动电路的负载电流远大于电路的最大持续电流时,受封装散热能力限制,封装内部芯片的结温将会迅速升高,一旦超过设定值,内部电路将立即关断输出功率管,切断负载电流,避免温度持续升高造成塑料封装冒烟、起火等安全隐患。内置的温度迟滞电路,确保电路恢复到安全温度后,才允许重新对电路进行控制。

应用中注意采用PWM控制时,PWM频率不可太高,高了后无法响应,输出端并非PWM信号,导致控制失败,建议采用较低控制频率,两路PWM控制,注意不能采用互补控制,有效波形必须全部非高,否则电机刹车。控制电压建议小于10V,逻辑电平5V为宜。

在这里插入图片描述
主要特性
a. 低待机电流 (小于0.1uA);
b. 低静态工作电流;
c. 集成的H桥驱动电路;
d. 内置防共态导通电路;
e. 低导通内阻的功率MOSFET管;
f. 内置带迟滞效应的过热保护电路 (TSD);
g. 抗静电等级:3KV (HBM);
  h. 集成的 H 桥驱动电路;
  i. 高度集成方案,集成 RX2 芯片和两个马达驱动芯片;
  j. 内置 2.5V 稳压 LDO 电路。

典型应用
  2-5 节 AA/AAA 干电池供电的玩具马达驱动;
  2-5 节镍-氢/镍-镉充电电池供电的玩具马达驱动;
  1-2 节锂电池供电的马达驱动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MX1508双路马达驱动模块特点
1.采用专业电机驱动芯片,内置低导通内阻MOS开关管,发热极小,无需散热片,体积小,省电,是您电池供电的理想选择。(相比较L298N内部为晶体管开关,效率低,发热高,需散热,体积笨重,市面上的L298N极容易烧坏,都没有采用原装芯片,本模块能够完美替代)。
2.双路1.5A*2,峰值电流可到2.5A, 内置过热保护电路,不用怕电机堵转烧坏,温度下降后自动恢复(目前市面上的智能小车电压和电流都在此范围内)。
3.体积小,质量轻,0待机电流,是各种模型车载的理想选择。

在这里插入图片描述
在这里插入图片描述
MX1508双路马达驱动模块主要参数
双路H桥电机驱动,可以同时驱动两路直流电机或者1个4线两相式步进电机;
模块供电电压2V-10V;
信号端输入电压1.8-7V;
单路工作电流1.5A,峰值电流可达2.5A,低待机电流 (小于 0.1uA);
内置防共态导通电路,输入端悬空时,电机不会误动作;
内置带迟滞效应的过热保护电路 (TSD),无需担心电机堵转;
产品尺寸: 24.7215mm (长宽高),超小体积,适合组装和车载;
安装孔直径:2 mm;
重量:5g 。

在这里插入图片描述
MX1508双路马达驱动模块电原理图

在这里插入图片描述
MX1508双路马达驱动模块接脚图
在这里插入图片描述
MX1508 电机驱动逻辑真值表

在这里插入图片描述

MX1508双路电机驱动模块接线示意图
在这里插入图片描述
下载安装MX1508库

链接 https://codeload.github.com/Saeterncj/MX1508/zip/master

在这里插入图片描述
Arduino实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百五十七:MX1508 四通道双路有刷直流马达驱动模块2路直流电机驱动模块 双H桥步进电机 正反转PWM调速1、安装库:下载链接 https://codeload.github.com/Saeterncj/MX1508/zip/master2、实验接线方法MX1508模块  Ardunio UnoGND---------GND接地线VCC---------5V 接电源IN1---------D9(PWM)IN2 ------- D10(PWM)3、实验之一:简易控制电机(MOTOR-A)连续正转,PWM设置为180,运转电流大约70MA*/#include <MX1508.h>#define PINA 9#define PINB 10#define NUMPWM 2#define PWM 180MX1508 motorA(PINA, PINB, FAST_DECAY, NUMPWM);void setup() {}void loop() {motorA.motorGo(PWM);}

实验一场景示意图

在这里插入图片描述
Arduino实验开源代码之二

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百五十七:MX1508 四通道双路有刷直流马达驱动模块2路直流电机驱动模块 双H桥步进电机 正反转PWM调速1、安装库:下载链接 https://codeload.github.com/Saeterncj/MX1508/zip/master2、实验接线方法MX1508模块  Ardunio UnoGND---------GND接地线VCC---------5V 接电源IN1---------D9(PWM)IN2 ------- D10(PWM)3、实验之二:控制电机(MOTOR-A)正转与反转,PWM为0-180,180-0,,逐步加速然后减速,循环*/#include <MX1508.h>#define PINA 9#define PINB 10#define NUMPWM 2MX1508 motorA(PINA, PINB, FAST_DECAY, NUMPWM);void setup() {Serial.begin(115200);}/*通过每50毫秒将pwm增加1来将斜坡增加到pwm = 180。然后通过每50毫秒降低pwm降低到pwm = -180。正值pwm表示正向。负值pwm的方向相反。*/void loop() {static unsigned long lastMilli = 0;static bool cwDirection = true; // 假设初始方向(正pwm)为顺时针static int pwm = 1;if (millis() - lastMilli > 50) { // 每50毫秒if (cwDirection && pwm++ > 180 ) {cwDirection = false;} else if (!cwDirection && pwm-- < -180) {cwDirection = true;}motorA.motorGo(pwm);lastMilli = millis();Serial.println(motorA.getPWM()); // 我们可以只打印pwm,但是仅显示成员函数getPWM()起作用。}}

MX1508库的几个函数

1、motorGo(pwmVal)

这将设置PWM val(速度)其值为0-200(数值太小,电机只是抖动而无法转动,合适的数值需要通过实验来确定)

2、stopMotor()

只需停止电动机

3、setResolution(pwmResolution)

可以更改pwm的分辨率。要使用此功能,必须使用arduino nano / uno的9和10的pwm可以实现16位PWM。理论上,该值可以在0-65535之间的任何值)

说明:

MX1508电机驱动器的主要缺点之一是需要PWM引脚,每1台电机需要2 pwm引脚。通过实验发现,仅使用一个PWM和任何数字引脚,而不是使用2个不同的PWM引脚是可能的。这是一个巨大的折衷。电机转动一个方向所获得的响应不同于电机转动另一个方向所获得的响应。在一种方式中,将获得FAST_DECAY响应(线性响应,看起来像一个“ V”),然后在另一种情况下,将获得SlOW_DECAY响应(积极反应,看起来像个“ U”)。仅当绝对没有更多的PWM引脚时才应使用此功能。

实验之三:通过D9和D10的pwm引脚来实现16位PWM

使用功能setPWM16(uint8_t预分频器,unsigned int分辨率)的Arduino Nano / Uno引脚9和10的分辨率。

快速pwm频率的公式= MPU(16Mhz)/预分频器/分辨率的频率, F_PWM = 16000000 /预分频器/分辨率

预分频器参数值必须在1-5之间,分别代表1、8、64、256、1024。分辨率必须为0-65535之间的值。

MX1508(uint8_t pinIN1,uint8_t pinIN2,DecayMode衰减模式,NumOfPwmPins numPWM);

DecayMode必须为FAST_DECAY或SLOW_DECAY,NumOfPwmPins,对于setPWM16()函数,其值必须为2,PINA和PINB必须!!! 是setPWM16()函数的引脚9和10 。

示例MX1508 myMotor(10,9,FAST_DECAY,2)。

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百五十七:MX1508 四通道双路有刷直流马达驱动模块2路直流电机驱动模块 双H桥步进电机 正反转PWM调速1、安装库:下载链接 https://codeload.github.com/Saeterncj/MX1508/zip/master2、实验接线方法MX1508模块  Ardunio UnoGND---------GND接地线VCC---------5V 接电源IN1---------D9(PWM)IN2 ------- D10(PWM)3、实验之三:通过D9和D10的pwm引脚来实现16位PWM*/#include <MX1508.h>#define PINA 9#define PINB 10#define NUMPWM 2MX1508 motorA(PINA, PINB, FAST_DECAY, 2);int resolution = 1000;void setup() {Serial.begin(115200);motorA.setPWM16(2, resolution); // 预分频器为8,分辨率1000,PWM频率= 16Mhz / 8/1000 = 2000Hz// prescalar 1=1, 2=8, 3=64, 4=256, 5 =1028/*------------ setPWM16 Class function is defined as below-----------------void MX1508::setPWM16(uint8_t prescaler, unsigned int resolution){if(prescaler > 5 || prescaler == 0) prescaler = 3; // default to 64 if not in range.DDRB |= _BV(PB1) | _BV(PB2);    // set pin 9and 10 as outputsTCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM11);  // non-inverting PWM, mode 14 fastPWM, TOP =ICR1TCCR1B = _BV(WGM13) | _BV(WGM12) | prescaler ;ICR1 = resolution;_pwmResolution = resolution;_useAnalogWrite16 = true;}*/}/*通过每50毫秒将pwm增加1,将斜率提高到pwm =分辨率/ 2。然后通过每50毫秒降低pwm降低到pwm = -resolution / 2。正值pwm表示正向。负值pwm的方向相反。*/void loop() {static unsigned long lastMilli = 0;static bool cwDirection = true; // 假设初始方向(正pwm)为顺时针static int pwm = 1;if (millis() - lastMilli > 50) { // 每50毫秒if (cwDirection && pwm++ > resolution / 2 ) {cwDirection = false;} else if (!cwDirection && pwm-- < -(resolution / 2)) {cwDirection = true;}motorA.motorGo(pwm);lastMilli = millis();Serial.println(motorA.getPWM()); // 我们可以只打印pwm,但是仅显示成员函数getPWM()起作用。}}

实验开源图形编程(Mind+、编玩边学)

通过数字口12和13,简单控制电机A正转与反转

在这里插入图片描述
实验开源仿真编程(Linkboy V4.62)

使用按键控制电机1,按下正转,松开停止

在这里插入图片描述

实验仿真编程(linkboy V4.62)之二
通过设置延时器,控制电机1正转与反转

在这里插入图片描述
使用红外遥控和MX1508模块,控制二只电机正转2秒

实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述

Arduino实验场景图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【花雕动手做】超迷你哦,用商徽香烟盒做个智能小车!

在这里插入图片描述
在这里插入图片描述
【花雕动手做】超迷你哦,用商徽香烟盒做个智能小车!

https://v.youku.com/v_show/id_XNTAyMzQ4MzA4OA==.html?spm=a2hzp.8253869.0.0


http://www.ppmy.cn/news/819729.html

相关文章

配置Web网站服务

学会安装CentOS默认httpd服务器apache&#xff0c;熟悉httpd服务的部署过程及常见配置&#xff0c;学会MySQL安装与配置 1.设置好CentOS7的网络&#xff0c;保障能连上外网。(用nmtui设置即可&#xff09; 2.安装apache [rootwww ~]#yum –y install httpd 3.确认安装结果 …

Web 服务

下载 第34章Web 服务 作者&#xff1a;Neal S. Jamison 本章内容包括&#xff1a; • We b服务器工作概览 • 主流We b服务器 • 运行Apache HTTP We b服务器 • 浏览其他We b服务器 World Wide We b (万维网)已发展为互联网上最流行的服务。许多用户在We b上搜索信息、…

free网页服务器,Web网站服务(一)

1、Apache 主要特点: (1)开放源代码、跨平台应用 (2)支持多种网页编程语言。 (3)模块化设计、运行非常稳定、良好的安全性。 2、编译安装httpd服务器 准备工作: 卸载httpd及相关依赖包 rpm -e httpd --nodeps 解压缩软件包并进入源代码目录: tar zxf httpd--C /usr/src cd /usr…

「网站服务器硬件配置」网站服务器配置要求

本篇文章给大家谈谈网站服务器硬件配置&#xff0c;以及网站服务器配置要求对应的知识点&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 本文目录一览&#xff1a; 1、列出小型电子商务网站服务器的简要硬件指标&#xff0c;3-5万远的服务器硬件配置2、web服…

WEB服务(一)

Apache服务 一&#xff0c; Apache网站服务基础 Apache HTTP Server 是广泛应用的Web应用系统之一&#xff0c;要运用好它&#xff0c;必须先了解它的特点及其编译安装过程。 1.Apache简介 ​ Apache HTTP Server是开源软件项目的杰出代表&#xff0c;基于标准的HTTP网络协…

十六、网站服务Linux + Apache + MySQL + PHP

一、概念 1.前言 UI的转变&#xff1a;B/S架构 2.名词 HTML HyperText Markup Language 超级文本标记语言 网页 使用HTML,PHP,JAVA语言格式书写的文件。 主页 网页中呈现用户的第一个页面。 网站 多个网页组合而成的一台网站服务器 URL http://www.baidu.com:80/1…

如何选择网站建设的服务商?

在互联网已经应用广泛的今天&#xff0c;一个设计得好的网站能带来很好的宣传效果和实际收益&#xff0c;而一个差的网站设计只会给企业带来负担&#xff0c;也在浪费公司的金钱。 那么&#xff0c;作为客户的您在咨询网站建设的时候&#xff0c;肯定会有很多问题&#xff0c;…

Nginx 网站服务

目录 引言 一、Nginx 概述 1.什么是 Nginx 2.Nginx 特点 3.Nginx 应用场景 二、Nginx 服务基础 1. 编译安装 Nginx 1.1 布置环境 1.2 安装依赖包 1.3 编译安装 2. Nginx 的运行控制 2.1 检查配置文件 2.2 启动、停止 Nginx 2.3 添加 Nginx 系统服务 3. 配置文件 …