Arduino平衡小车

一,TB6612FNG电机驱动芯片

TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机.

参数名称参数值
电压范围2.7-5.5V
最大输入电压15V
输出电流1.2A(平均)/3.2A(峰值)
输出低通电阻0.5Ω
封装形式SSOP24
电机驱动路数2通道
功能模式顺时针/逆时针/短刹车/停止
保护功能内置热关断电路和低压检测电路
接口方式2.54mm间距排针
模块尺寸20×19.5mm

tb6612fng

 二、与Arduino的连接如下

 

ArduinoTB6612FNG
3PWMA
2AIN1
4AIN2
7STBY
8BIN1
12BIN2
9PWMB
GNDGND
12VVM
5VVCC

三、电机与TB6612FNG连线

电机ATB6612FNG电机B
+AO1
-AO2
BO2-(负极)
BO1+(正极)

 四、编码器介绍

4.1、编码器简介

电机编码器是安装在电机上的旋转编码器,它通过跟踪电机轴的速度和/或位置来提供闭环反馈信号。监视的参数由应用的类型确定,可以包括速度、距离、RPM、位置等。利用编码器或其他传感器控制的特定参数的应用称为闭环反馈或闭环控制系统。

电机编码器的工作原理可以分为几个主要步骤:光线通过编码盘(其上有透光和遮光条纹),光学传感器将时通时断的光信号转换成电信号,这些电信号经过电子信号处理器的处理变成一系列方波脉冲信号,最后电子信号处理器会对这些方波脉冲信号进行解码和计算,从而得到电机的旋转位置、速度以及方向等信息。

电机编码器的种类繁多,其中常见的包括增量电机编码器和绝对电机编码器。增量电机编码器的输出主要用于控制电机轴的速度,而绝对电机编码器的输出则指示电机轴的运动和位置。绝对式电机编码器最常用于需要位置精度的应用中的伺服电机上。

此外,电机编码器按检测原理还可以分为光电编码器、磁编码器和感应式编码器。光电编码器使用光电头来检测光栅的位置变化,磁编码器利用霍尔元件来检测磁场的变化,而感应式编码器则通过放出磁力线来检测齿轮上的刻度变化。

电机编码器在现代工业中有广泛的应用,如位置反馈、速度反馈、角度测量和控制应用等。例如,它们可以用于测量机器人、CNC机床、印刷机、自动控制门等运动物体的位置和方向,监测供应链上的输送带和传送机、工厂中的马达系统等物体的速度,以及测量风力发电机的转子、摩天轮、汽车安全气囊、船舶方向控制等被旋转对象的转角。

总的来说,电机编码器是实现精确运动控制的关键部件,对于提高工业自动化和机器人技术的性能和可靠性具有至关重要的作用。

由于霍尔编码器是由一个磁圈和两个感应磁性的传感器组成,当编码器N极转到A的传感器时,就会产生高电平,否则产生低电平;B传感器也亦然。


///TB6612引脚接线///
//直流电机----------TB6612丝印标识----------ArduinoUNO主板引脚
//                     PWMA-----------------3
//                     AIN2-----------------4
//                     AIN1-----------------2
//                     STBY-----------------7
//                     BIN1-----------------8
//                     BIN2-----------------12
//                     PWMB-----------------9
//                     GND------------------GND
//                     VM-------------------12V电池
//                     VCC------------------5V
//                     GND------------------GND
//电机A正极-------------AO1
//电机A负极-------------A02
//电机B负极-------------BO2
//电机B正极-------------BO1
//                     GND-----------------GND
//直流电机----------TB6612丝印标识----------ArduinoUNO主板引脚//定义引脚名称
#define PWMA 3  //3为模拟引脚,用于PWM控制
#define AIN1 2
#define AIN2 4
#define PWMB 9  //9为模拟引脚,用于PWM控制
#define BIN1 8
#define BIN2 12
#define STBY 7  //2、4、8、12、7为数字引脚,用于开关量控制int PwmA, PwmB;void setup() {//TB6612电机驱动模块控制信号初始化pinMode(AIN1, OUTPUT);pinMode(AIN2, OUTPUT);pinMode(BIN1, OUTPUT);pinMode(BIN2, OUTPUT);pinMode(PWMA, OUTPUT);//A电机PWMpinMode(PWMB, OUTPUT);//B电机PWMpinMode(STBY, OUTPUT);//初始化TB6612电机驱动模块digitalWrite(AIN1, 1);//控制电机A的方向,(AIN1, AIN2)=(1, 0)为正转,(AIN1, AIN2)=(0, 1)为反转digitalWrite(AIN2, 0);digitalWrite(BIN1, 0);//控制电机B的方向,(BIN1, BIN2)=(0, 1)为正转,(BIN1, BIN2)=(1, 0)为反转digitalWrite(BIN2, 1);digitalWrite(STBY, 1);//TB6612FNG使能, 置0则所有电机停止, 置1才允许控制电机analogWrite(PWMA, 0);analogWrite(PWMB, 0);}/**************************************************************************
函数功能:设置指定电机转速
入口参数:指定电机motor,motor=1(2)代表电机A(B); 指定转速pwm,大小范围为0~255,代表停转和满速
返回  值:无
**************************************************************************/
void SetPWM(int motor, int pwm)
{if(motor==1&&pwm>=0)//motor=1代表控制电机A,pwm>=0则(AIN1, AIN2)=(1, 0)为正转{digitalWrite(AIN1, 1);digitalWrite(AIN2, 0);analogWrite(PWMA, pwm);}else if(motor==1&&pwm<0)//motor=1代表控制电机A,pwm<0则(AIN1, AIN2)=(0, 1)为反转{digitalWrite(AIN1, 0);digitalWrite(AIN2, 1);analogWrite(PWMA, -pwm);}else if(motor==2&&pwm>=0)//motor=2代表控制电机B,pwm>=0则(BIN1, BIN2)=(0, 1)为正转{digitalWrite(BIN1, 0);digitalWrite(BIN2, 1);analogWrite(PWMB, pwm);}else if(motor==2&&pwm<0)//motor=2代表控制电机B,pwm<0则(BIN1, BIN2)=(1, 0)为反转{digitalWrite(BIN1, 1);digitalWrite(BIN2, 0);analogWrite(PWMB, -pwm);}
}void loop() 
{SetPWM(1, 255);//电机AB同时满速正转SetPWM(2, 255);delay(3000);//正转3s//  SetPWM(1, 0);//电机AB停止
//  SetPWM(2, 0);
//  delay(1000);//停止1s
//  
//  SetPWM(1, 128);//电机AB同时半速正转
//  SetPWM(2, 128);
//  delay(3000);//半速正转3s
//  
//  SetPWM(1, 0);//电机AB停止
//  SetPWM(2, 0);
//  delay(1000);//停止1s
//  
//  SetPWM(1, -255);//电机AB同时满速反转
//  SetPWM(2, -255);
//  delay(3000);//反转3s
//  
//  SetPWM(1, 0);//电机AB停止
//  SetPWM(2, 0);
//  delay(1000);//停止1s
//  
//  SetPWM(1, 255);//电机A满速正转
//  SetPWM(2, -255);//电机B满速反转
//  delay(3000);//持续3s
//  
//  SetPWM(1, 0);//电机AB停止
//  SetPWM(2, 0);
//  delay(1000);//停止1s
}

以上是Arduino的代码。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vitis HLS 学习笔记--HLS入门示例集合-目录

目录 1. 示例集合概述 2. Interface 接口 2.1 Aggregation_Disaggregation 聚合与解聚 2.1.1 aggregation_of_m_axi_ports 2.1.2 aggregation_of_nested_structs 2.1.3 aggregation_of_struct 2.1.4 auto_disaggregation_of_struct 2.1.5 disaggregation_of_axis_port …

模块化 手写实现webpack

模块化 common.js 的导入导出方法&#xff1a; require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别&#xff1a; require属于动态类型&#xff1a;加载执行 同步 esmodul是静态类型&#xff1a;引入时并不会真的去…

Autosar AP的基本构成

1. 引言 Autosar AP的体系结构是怎样的呢&#xff1f;从整体的宏观的方向上划分&#xff0c;分为 1&#xff09;应用层&#xff0c;其中放置各种应用组件SWCs。2&#xff09;运行时基本功能软件族群&#xff0c;提供基本AutoSar基本软件中间件&#xff0c;比如经典的通信服务…

【漏洞复现】云时空社会化商业ERP系统slogin SQL注入漏洞

漏洞描述&#xff1a; 云时空社会化商业ERP系统slogin存在SQL注入漏洞&#xff0c;攻击者可以通过此漏洞获取数据库敏感信息。 搜索语法: Fofa-Query: app"云时空社会化商业ERP系统" 漏洞详情&#xff1a; 1.云时空社会化商业ERP系统。 2.漏洞POC&#xff1a; …

智慧园区引领未来产业趋势:科技创新驱动园区发展,构建智慧化产业新体系

目录 一、引言 二、智慧园区引领未来产业趋势 1、产业集聚与协同发展 2、智能化生产与服务 3、绿色可持续发展 三、科技创新驱动园区发展 1、创新资源的集聚与整合 2、创新成果的转化与应用 3、创新文化的培育与弘扬 四、构建智慧化产业新体系 1、优化产业布局与结构…

JavaScript:将input标签中的内容打印到控制台

使用浏览器进行开发时&#xff0c;按F12可以查看网页信息。 目标&#xff1a;实现将input标签中的内容&#xff0c;打印到控制台&#xff08;console&#xff09; HTML页面的关键代码实现&#xff1a; 登录功能&#xff1a; HTML代码&#xff1a; <div class"form-…

Node.js 22 发布,原生支持 WebSocket 客户端

昨日&#xff0c;Node.js 官方博客正式宣布 Node.js 22 的发布&#xff01;新版本亮点包括 require() ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等&#xff01; Node.js 22 将在 10 月进入长期支持 (LTS)&#xff0c;但在此之前&#xff0c;它将是接下来六个月的 …

【AI相关】数学和统计学知识

数学和统计学的知识可以分为两部分&#xff1a; 一部分是线性代数中的基础概念&#xff0c;比如标量、向量和张量。 另一部分是概率统计中常见的分布类型&#xff0c;比如正态分布和伯努利分布。 线性代数 什么是标量&#xff1f; 标量是一个单独的数&#xff0c;可以是整…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(二)

09 电路设计 前面介绍了系统的硬件框图如下&#xff1a; 硬件基本分为三块&#xff0c;两个摄像节点&#xff0c;一个终端节点。 1. 摄像节点硬件 摄像节点由一个DE10-Nano开发板和一个D8M摄像头实现&#xff0c;DE10-Nano开发板的HDMI接口外接HDMI显示器来显示拍摄到的视频。…

vue3的getCurrentInstance获取当前组件实例

vue3的setup中没有this时需要使用getCurrentInstance()来获取。 在 Vue 3 中&#xff0c;getCurrentInstance 方法可以在组合式 API&#xff08;Composition API&#xff09;中获取当前组件实例。这个方法返回一个包含了组件实例的对象&#xff0c;你可以用它来访问组件的 pro…

详解MySQL C API 相关接口(大白话就是:MySQL的c语言怎么写)

文章目录 1、C API 官方文档2、初始化 MYSQL3、连接 MySQL设置连接字符集&#xff08;使得客户端编码方式匹配&#xff09; 4、下发 mysql 指令5、获取 mysql 查询结果(保存起来)获取行与列遍历存储结果 6、释放 MYSQL\_RES 对象7、关闭 MySQL 连接8、总结 1、C API 官方文档 …

动态规划---斐波那契数列模型

目录 一、斐波那契数列的基本概念 二、动态规划在斐波那契数列中的应用与优势 三、实际案例&#xff1a;使用动态规划解决斐波那契数列问题 四、动态规划问题的做题步骤 五、例题 1、第N个泰波那契数---点击跳转题目 2、三步问题----点击跳转题目 3、最小花费爬楼梯---…

FANUC机器人socket通讯硬件配置

一、添加机器人选配包 Fanuc机器人要进行socket通讯&#xff0c;需要有机器人通讯的选配包&#xff0c;1A05B-2600-R648 User Socket Msg&#xff0c;1A05B-2600-R632 KAREL&#xff0c;1A05B-2600-R566 KAREL Diagnostic&#xff0c;1A05B-2600-J971 KAREL Use Sprt FCTN。 二…

【漏洞复现】WebLogic XMLDecoder反序列化(CVE-2017-10271)

1、漏洞描述 CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其中使用了XMLDecoder来解析用户传入的XML数据&#xff0c;在解析的过程中出现反序列化漏洞&#xff0c;导致可执行任意命令。攻击者发送精心构造的xml数据甚至能…

clickhouse数据去重函数介绍(count distinct)

非精确去重函数&#xff1a;uniq、uniqHLL12、uniqCombined 精确去重函数&#xff1a;uniqExact、groupBitmap 测试数据量&#xff1a;2000w 结论&#xff1a; 1.整形值精确去重场景&#xff0c;groupBitmap 比 uniqExact至少快 2x 2.groupBitmap仅支持无符号整形值去重&#x…

文化旅游3D数字孪生可视化管理平台推动文旅产业迈向更加美好的未来

随着数字化、智能化管理成为文旅产业发展的必然趋势&#xff0c;数字孪生公司深圳华锐视点创新性地推出了景区三维可视化数字孪生平台&#xff0c;将线下的实体景区与线上的虚拟世界完美融合&#xff0c;引领智慧文旅新潮流。 我们运用先进的数字孪生、web3D开发和三维可视化等…

详解Qt中的鼠标事件

在Qt中&#xff0c;处理鼠标事件是构建交互式界面的关键。Qt提供了一系列与鼠标相关的事件处理函数&#xff0c;允许开发者捕获鼠标的各种动作&#xff0c;如按下、释放、移动、双击等。以下是鼠标事件的使用方法、技巧以及注意事项&#xff0c;并附带C代码示例。 基础使用方法…

GDB多线程调试:Redis的IO多线程

Redis采用的网络模型是单线程的Reactor网络模型&#xff0c;异步处理&#xff0c;因为性能很高。 Reactor先从客户端获取请求&#xff0c;然后dispatch给具体的执行的线程。处理的流程即为read->decode->compute->encode->send。 而Redis的IO多线程的处理时&…

【C++】:拷贝构造函数和赋值运算符重载

目录 一&#xff0c;拷贝构造函数1. 什么是拷贝构造函数2. 拷贝构造函数的特性3. 实践总结 二&#xff0c;赋值运算符重载2.1 运算符重载2.2 赋值运算符重载 一&#xff0c;拷贝构造函数 1. 什么是拷贝构造函数 拷贝构造函数是特殊的构造函数。是用一个已经存在的对象&#x…

SAP采购订单-条件类型-配置开发步骤

由于采购业务变更&#xff0c;需要创建新的价格类型&#xff0c;并添加新的计算逻辑计算。首先在例程&#xff08;VOFM&#xff09;中创建计算逻辑&#xff0c;然后在系统配置&#xff08;SPRO&#xff09;中找到配置点&#xff0c;创建新的条件类型‘ZMM00’,创建定价过程‘ZM…