L9110S电机驱动模块demo
0.资料
项目工程文件夹
分文件原理
1.认识L9110S
1、概述:
一个L9110S驱动可以控制一个电机,图中左右两个黑色芯片就是L9110S驱动。当然如果会硬件也可以直接把它们设计到单片机开发板上。
一个电机由两个针脚控制,我们用杜邦线让L9110S和单片机连接,两个针脚的电平高低会决定电机正转还是反转。
2、引脚说明:
- L9110S模块有6根引脚,如下:
编号 符号 说明 1 VCC 供电,3~5,5V,DC 2 GND 接地,电源负极 3 A-1A 如上图中,与MotorA左侧端子相连。 4 A-1B 如上图中,与MotorA右侧端子相连。 5 B-1A 如上图中,与MotorB左侧端子相连。 6 B-2A 如上图中,与MotorB右侧端子相连。 - 值得注意的是,最好不要直接由开发板来给模块供电,因为L9110S模块可能会因为需求的驱动功率太高而导致板子上的供电不平衡。
2.L9110s驱动测试
1、和单片机的接线方式:注意一开始把电池电源切断,防止接线的时候出错烧毁L9110S模块。
- 为了适配接下来的代码:以车头方向超前为准,小车上L9110S驱动模块和两个电机的连接方式如下:
- 驱动模块上motor A的白色线锡焊在左边电机的上面、黑色线锡焊在左边电机的下面
- 驱动模块上motor B的褐色线锡焊在右边电机的上面、红色线锡焊在右边电机的下面。
- 电源线:
- L9110S上的VCC——电源VCC
- L9110S上的GND——电源GND
- 单片机GND——电源GND。原因:要想实现单片机和L9110S驱动模块的信号传输,不仅需要连接好相应的I/O口,还需要将两者共地。
- 控制线:
- L9110S上的B-1A——P3.2。此时单片机这个引脚间接连接到右电机下触点,作用是通过电平切换控制右电机正反转。
- L9110S上的B-1B——P3.3。此时单片机这个引脚间接连接到右电机上触点,作用是通过电平切换控制右电机正反转。
- L9110S上的A-1A——P3.4。此时单片机这个引脚间接连接到左电机下触点,作用是通过电平切换控制左电机正反转。
- L9110S上的A-1B——P3.5。此时单片机这个引脚间接连接到左电机上触点,作用是通过电平切换控制左电机正反转。
2、电机正反转测试:
- 说明:网上给的说明和L9110S的引脚编号对不上,自己测试一下即可。电机的上下接触点的电平可高可低,所以一个电机最多共有4种转动情况,依次验证即可。
- 测试代码:
/* 公共代码 */ #include "reg52.h"sbit RightCon_1A = P3^2; //L9110S的MotorB_1A--右轮电机下接触点 sbit RightCon_1B = P3^3; //L9110S的MotorB_1B--右轮电机上接触点 sbit LeftCon_1A = P3^4; //L9110S的MotorA_1A--左轮电机下接触点 sbit LeftCon_1B = P3^5; //L9110S的MotorA_1B--左轮电机上接触点/* 情形一: */ void main(void) {/* 右轮测试:不转 */RightCon_1A = 0;RightCon_1B = 0;/* 左轮测试:不转 */LeftCon_1A = 0;LeftCon_1B = 0; }/* 情形二: */ void main(void) {/* 右轮测试:前进 */RightCon_1A = 0;RightCon_1B = 1;/* 左轮测试:前进 */LeftCon_1A = 0;LeftCon_1B = 1; }/* 情形三: */ void main(void) {/* 右轮测试:倒退 */RightCon_1A = 1;RightCon_1B = 0;/* 左轮测试:倒退 */LeftCon_1A = 1;LeftCon_1B = 0; }/* 情形四: */ void main(void) {/* 右轮测试:不转 */RightCon_1A = 1;RightCon_1B = 1;/* 左轮测试:不转 */LeftCon_1A = 1;LeftCon_1B = 1; }
- 测试结果:
- 电机正转(向前):下接触点为高电平、上接触点为低电平。
- 电机反转(向后):下接触点为低电平、上接触点为高电平。
- 其余两种电平情况电机均不转动。
3.前后左右控制小车
1、小车前进函数封装 :
- 逻辑:左轮和右轮都正转
void goForward() {/* 右轮:前进 */RightCon_1A = 0;RightCon_1B = 1;/* 左轮:前进 */LeftCon_1A = 0;LeftCon_1B = 1; }
2、小车后退函数封装:
- 逻辑:左轮和右轮都反转
void goBack() {/* 右轮:倒退 */RightCon_1A = 1;RightCon_1B = 0;/* 左轮:倒退 */LeftCon_1A = 1;LeftCon_1B = 0; }
3、小车向前左转函数封装:
- 逻辑:左轮停止、右轮正转
void goForward_left() {/* 右轮:前进 */RightCon_1A = 0;RightCon_1B = 1;/* 左轮:不转 */LeftCon_1A = 0;LeftCon_1B = 0; }
4、小车向前右转函数封装:
- 逻辑:右轮停止、左轮正转
void goForward_right() {/* 右轮:不转 */RightCon_1A = 0;RightCon_1B = 0;/* 左轮:前进 */LeftCon_1A = 0;LeftCon_1B = 1; }
5、小车向后左转函数封装:
- 逻辑:左轮停止、右轮反转
void goBack_left() {/* 右轮:倒退 */RightCon_1A = 1;RightCon_1B = 0;/* 左轮:不转 */LeftCon_1A = 0;LeftCon_1B = 0; }
6、小车向后右转函数封装:
- 逻辑:右轮停止、左轮反转
void goBack_right() {/* 右轮:不转 */RightCon_1A = 0;RightCon_1B = 0;/* 左轮:倒退 */LeftCon_1A = 1;LeftCon_1B = 0; }
4.电机转动测试demo_分文件
1、主程序“main”:
- 代码:
#include "reg52.h" #include "motor.h" #include "delay.h"void main(void) {goForward(); //测试:前进Delay1000ms();Delay1000ms();goBack(); //测试:后退Delay1000ms();Delay1000ms(); goForward_left(); //测试:向前左转Delay1000ms();Delay1000ms();goForward_right(); //测试:向前右转 Delay1000ms();Delay1000ms();goBack_left(); //测试:向后左转Delay1000ms();Delay1000ms();goBack_right(); //测试:向后右转Delay1000ms();Delay1000ms(); }
2、“电机”模块:
- 代码:
#include "reg52.h"sbit RightCon_1A = P3^2; //L9110S的MotorB_1A--右轮电机下接触点 sbit RightCon_1B = P3^3; //L9110S的MotorB_1B--右轮电机上接触点 sbit LeftCon_1A = P3^4; //L9110S的MotorA_1A--左轮电机下接触点 sbit LeftCon_1B = P3^5; //L9110S的MotorA_1B--左轮电机上接触点void goForward() {/* 右轮:前进 */RightCon_1A = 0;RightCon_1B = 1;/* 左轮:前进 */LeftCon_1A = 0;LeftCon_1B = 1; }void goBack() {/* 右轮:倒退 */RightCon_1A = 1;RightCon_1B = 0;/* 左轮:倒退 */LeftCon_1A = 1;LeftCon_1B = 0; }void goForward_left() {/* 右轮:前进 */RightCon_1A = 0;RightCon_1B = 1;/* 左轮:不转 */LeftCon_1A = 0;LeftCon_1B = 0; }void goForward_right() {/* 右轮:不转 */RightCon_1A = 0;RightCon_1B = 0;/* 左轮:前进 */LeftCon_1A = 0;LeftCon_1B = 1; }void goBack_left() {/* 右轮:倒退 */RightCon_1A = 1;RightCon_1B = 0;/* 左轮:不转 */LeftCon_1A = 0;LeftCon_1B = 0; }void goBack_right() {/* 右轮:不转 */RightCon_1A = 0;RightCon_1B = 0;/* 左轮:倒退 */LeftCon_1A = 1;LeftCon_1B = 0; }
3、“软件延时”模块:
- 代码:
#include "intrins.h"void Delay1000ms() //@11.0592MHz {unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i); }
L9110S电机驱动模块demo相关推荐
- 测试Risym 2.5A双路电机驱动模块:MX1919
简 介: 测试了MX1919双电机驱动模块的基本功能.利用MM32F3273实验电路板作为信号来源,驱动了MX1919,并驱动一个小型步进电机运行.验证了模块的基本驱动功能. 关键词: MX1919, ...
- TB6612FNG电机驱动模块的简单使用
TB6612FNG电机驱动模块的简单使用: 文 小波 QQ463431476 博客 http://www.cnblogs.com/xiaobo-Linux/ 欢迎学习转载!
- 备战全国电子设计大赛-TB6612FNG电机驱动模块
TB6612FNG电机驱动模块 TB6612模块简介: TB6612FNG是一款直流电机驱动器件,具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机. 每个通道输出最高1A的连续驱动 ...
- 【Arduino学习笔记】使用L298N电机驱动模块驱动直流电机
L298N是Arduino的电机驱动模块,能驱动步进电机和两路直流电机,驱动步进电机和直流电机的文章网上百度一大堆,这里我想说的是L298N模块外接独立12V电压驱动电机的方法.我使用的L298N模块 ...
- STM32F103C8T6控制电机驱动模块298N驱动电机调速以及正反转(附代码资源包)
STM32F103C8T6控制电机驱动模块298N驱动电机调速以及正反转 一. 硬件选型 1. stm32f103c8t6 2. L298N 3. 电机 4. 其他 二. 硬件连接(连接以接一路电机为 ...
- 模块电路选型(5)----电机驱动模块
系列文章目录 1.电源模块 2.主控模块 3.传感器模块 4.通信模块 5.电机驱动模块 6.存储模块 7.人机交互模块 文章目录 前言 前言 送给大学毕业后找不到奋斗方向的你(每周不定时更新) [牛 ...
- 继电器模块和L298N电机驱动模块的使用
单片机如何与L298N和继电器连接?什么时候选择L298N或继电器模块? L298N模块 主控芯片为L298N的双H桥电机驱动模块,驱动电压为5~35V,一般驱动直流电机正反转一般使用L298N. 接 ...
- l298n电机驱动模块驱动直流电机(佛科院——深夜学习)
目录 一.为什么不能直接用单片机IO口驱动电机,要用电机驱动模块? 二.使用步骤: 1.L298n各引脚作用: 2.推荐的供电方式: 3.推荐的控制方式: 一.为什么不能直接用单片机IO口驱动电机,要 ...
- 用寻迹模块L298n电机驱动模块制作Arduino寻迹小车四路(含清单,代码,接线,注意事项)
本帖是在参考了很多博客之后进行的一次实战加总结,参考连接如下: Arduino智能小车寻迹篇 不适用PWM调速彻底解决L298n电机驱动转速不同的问题 1.工作原理 总体思想:小车通过四路寻迹模块得到 ...
最新文章
- XP/Vista 彻底休矣!Firefox 浏览器放弃支持
- 到外国的网站写英语留言
- Oracle常见五个服务的作用
- python向上取整_python向上取整-取整,向上
- 地图poi数据库下载
- html英文期刊参考文献,外文期刊参考文献标准格式
- 高效程序员的45个习惯
- BOM有效日期的设置
- 成就:优秀的管理者成就自己,卓越的管理者成就他人(读后感)
- Python 爬取所有51VOA网站的Learn a words文本及mp3音频
- 微信小程序---购物车功能(选中与取消选中,全选与取消全选)
- 如何在 Bios 中更改硬盘模式?
- 模块划分-4 模块划分
- 在电脑端下载google play上的app,将其下载成apk
- 30分钟java桌球小游戏_Java桌球小游戏(兴趣制作)
- 阿里巴巴2019实习生招聘正式启动!
- php组件化开发composer,composer组件化开发,个人总结
- 那些年,我所接触过的采集器...
- Docker Compose 练习:投票 App
- 【Python】turtle小海龟画兔子