L9110S电机驱动模块demo

0.资料

项目工程文件夹

分文件原理


1.认识L9110S

1、概述:

一个L9110S驱动可以控制一个电机,图中左右两个黑色芯片就是L9110S驱动。当然如果会硬件也可以直接把它们设计到单片机开发板上。

一个电机由两个针脚控制,我们用杜邦线让L9110S和单片机连接,两个针脚的电平高低会决定电机正转还是反转。

2、引脚说明:

  • L9110S模块有6根引脚,如下:
    编号符号说明
    1VCC供电,3~5,5V,DC
    2GND接地,电源负极
    3A-1A如上图中,与MotorA左侧端子相连。
    4A-1B如上图中,与MotorA右侧端子相连。
    5B-1A如上图中,与MotorB左侧端子相连。
    6B-2A如上图中,与MotorB右侧端子相连。
  • 值得注意的是,最好不要直接由开发板来给模块供电,因为L9110S模块可能会因为需求的驱动功率太高而导致板子上的供电不平衡。

2.L9110s驱动测试

1、和单片机的接线方式:注意一开始把电池电源切断,防止接线的时候出错烧毁L9110S模块。

  • 为了适配接下来的代码:以车头方向超前为准,小车上L9110S驱动模块和两个电机的连接方式如下:
    • 驱动模块上motor A的白色线锡焊在左边电机的上面、黑色线锡焊在左边电机的下面
    • 驱动模块上motor B的褐色线锡焊在右边电机的上面、红色线锡焊在右边电机的下面。
  1. 电源线
    1. L9110S上的VCC——电源VCC
    2. L9110S上的GND——电源GND
    3. 单片机GND——电源GND。原因:要想实现单片机和L9110S驱动模块的信号传输,不仅需要连接好相应的I/O口,还需要将两者共地。
  2. 控制线
    1. L9110S上的B-1A——P3.2。此时单片机这个引脚间接连接到右电机下触点,作用是通过电平切换控制右电机正反转。
    2. L9110S上的B-1B——P3.3。此时单片机这个引脚间接连接到右电机上触点,作用是通过电平切换控制右电机正反转。
    3. L9110S上的A-1A——P3.4。此时单片机这个引脚间接连接到左电机下触点,作用是通过电平切换控制左电机正反转。
    4. L9110S上的A-1B——P3.5。此时单片机这个引脚间接连接到左电机上触点,作用是通过电平切换控制左电机正反转。

2、电机正反转测试:

  1. 说明:网上给的说明和L9110S的引脚编号对不上,自己测试一下即可。电机的上下接触点的电平可高可低,所以一个电机最多共有4种转动情况,依次验证即可。
  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 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. 电机正转(向前):下接触点为高电平、上接触点为低电平。
    2. 电机反转(向后):下接触点为低电平、上接触点为高电平。
    3. 其余两种电平情况电机均不转动。

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);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29360.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Modbus通信介绍 网络高级工具使用

目录 Modbus简介 ModbusTCP协议格式 》1.报文头(共7字节) 》2.功能码 》3.数据 练习:读传感器数据,读1个寄存器数据,写出主从数据收发协议。 练习:写出控制IO设备开关的协议数据,操作1个…

【2】Midjourney注册

随着AI技术的问世,2023年可以说是AI爆炸性成长的一年,近期最广为人知的AI服务除了chatgpt外,就是从去年五月就已经问世的AI绘画工具mid journey了。 ▲几个AI工具也代表了人工智能的热门阶段 只要输入一段文字,AI就会根据语意计算…

JAVA如何学习爬虫呢?

学习Java爬虫需要掌握以下几个方面: Java基础知识:包括Java语法、面向对象编程、集合框架等。 网络编程:了解HTTP协议、Socket编程等。 HTML、CSS、JavaScript基础:了解网页的基本结构和样式,以及JavaScript的基本语…

Web网页制作期末复习(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接

目录 HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 标题标签 段落、换行、水平线 图片 图片路径* 超链接 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾 HTML是一种标记语言,标…

基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境安装pytesseract注册百度云账号 模块实现1. 数据模块2. 模型构建3. 附加功能 系统测试1. 文字邮件测试准确率2. 网页测试结果 工程源代码下载其它资料下载 前言 本项目采用朴素贝叶斯和支持向量机(S…

MySQL-SQL视图详细

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

原型模式(七)

不管怎么样,都要继续充满着希望 上一章简单介绍了抽象工厂模式(六), 如果没有看过,请观看上一章 一. 原型模式 引用 菜鸟教程里面的原型模式介绍: https://www.runoob.com/design-pattern/prototype-pattern.html 原型模式(Prototype Pattern&#xf…

Camera | 11.瑞芯微摄像头采集图像颜色偏绿解决笔记

前言 在实际调试基于瑞芯微平台的camera过程中,发现显示的图片发绿, 现在把调试步骤分享给大家: 1、修改iq文件 sdk中位置: external/camera_engine_rkaiq/iqfiles/isp21/ov13850_ZC-OV13850R2A-V1_Largan-50064B31.xml【现在…

QT基础教程之一创建Qt项目

QT基础教程1创建Qt项目 根据模板创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,…

javaScript蓝桥杯---用什么来做计算

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 古以算盘作为计算工具。算盘常为木制矩框,内嵌珠子数串,定位拨珠,可做加减乘除等运算。站在前人的肩膀上,后人研究出计算器,便利了大家的生活,我…

element-plus布局排版问题总结(更新ing)

文章目录 el-container空隙修改app组件 el-header容器空隙检查前端修改el-headerel-container el-container空隙 源码-更改了容器的显示&#xff0c;占满屏幕 <template><div class"common-layout"><el-container><el-header><el-row cl…

SpeechGen:用提示解锁语音语言模型(Speech LM)的生成能力

论文链接&#xff1a; https://arxiv.org/pdf/2306.02207.pdf Demo: https://ga642381.github.io/SpeechPrompt/speechgen.html Code: https://github.com/ga642381/SpeechGen 引言与动机 大型语言模型 &#xff08;LLMs&#xff09;在人工智能生成内容&#xff08;AIGC…

微服务技术简介

微服务技术简介 服务架构的演变微服务架构的常见概念微服务常见的解决方案Spring CloudSpring Cloud Alibaba微服务技术对比常用的微服务组件 微服务架构图 服务架构的演变 单体架构&#xff1a;当一个系统业务量很小的时候&#xff0c;将业务的所有功能集中在一个项目中开发&…

STM32速成笔记—串口通信

文章目录 一、什么是串口通讯二、串口通讯有什么用三、STM32的串口通信四、串口通信相关概念4.1 波特率4.2 全双工和半双工4.3 同步通信和异步通信 五、硬件连接六、串口通讯程序配置6.1 使能串口时钟和GPIO时钟6.2 初始化GPIO6.3 初始化串口参数6.4 使能串口6.5 串口接收中断6…

用python写网络爬虫

第二章 数据抓取 首先 &#xff0c; 我们会介绍一个叫 做Firebug Lite 的浏览器扩展&#xff0c; 用 于检查网页 内容 &#xff0c; 如 果你有一些网络开发背景的话&#xff0c; 可能 己经对该扩展十分熟悉 了 。 然后 &#xff0c;我们会介绍三 种抽取网 页数据的 方法 &…

java【抽象类与接口】

抽象类与接口 1 抽象类1.1 定义与使用1.2 抽象类和抽象方法使用原则 2 接口2.1 定义2.2 使用规则 3. JDK中内置接口3.1 Comparable接口3.2 Cloneable接口 抽象类与接口的对比 前言&#xff1a;如果强制要求子类必须覆写一些方法&#xff0c;则就会用到抽象类和抽象方法 1 抽象类…

使用 MATLAB 进行气象激光雷达图像分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

STM32——01-开发软件Keil5及STM32CubeMX的安装

1.1开发环境的安装 编程语言&#xff1a;C语言 需要安装的软件有两个&#xff1a;Keil5和STM32CubeMX 安装 安装包&#xff08;不需要太新&#xff0c;以 MDK324 为例&#xff0c;最新的 MDK327 有问题&#xff09; 安装过程一路下一步即可&#xff08;建议不要安装在 C …

2023-06-09:什么是Redis事务?原理是什么?

2023-06-09&#xff1a;什么是Redis事务&#xff1f;原理是什么&#xff1f; 答案2023-06-09&#xff1a; Redis中的事务是以一组命令的形式出现的&#xff0c;这些命令被认为是最小的执行单位。事务可以保证在一个单独独立的隔离操作中执行所有命令&#xff0c;而且所有命令…

深度研究微软的资产负债表和财务状况以及未来投资价值

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 微软股票的关键指标 猛兽财经认为&#xff0c;微软公布的2023财年第三季度财务业绩&#xff0c;有三个关键指标值得投资者关注。 第一个关键指标是利息收入。微软的利息收入目前已经同比增长了44%&#xff0c;从2022财年第…