×

由MPU 6050控制的简单2轴伺服机械臂

消耗积分:0 | 格式:zip | 大小:0.11 MB | 2022-11-23

蒲泛粟

分享资料个

描述

我将向您介绍 MPU-6050(加速度计+陀螺仪)传感器模块以及由它控制由微型伺服电机制成的简单 2 轴机械臂。

什么是 MPU-6050 传感器模块?

pYYBAGN678eAAr-BAAOjydttXqE772.jpg
MPU-6050(加速度计+陀螺仪)传感器模块
 

InvenSense MPU-6050 是具有六个自由度 (DOF)的低成本、高精度惯性测量单元 (IMU )。IMU 可以测量加速度、惯性和许多其他参数,以便您确定它们的空间位置和速度。它在单个芯片中包含一个 MEMS 3 轴加速度计和一个 MEMS 3 轴陀螺仪。它还有一个板载数字运动处理器 (DMP),可处理复杂的 6 轴 MotionFusion 算法。该传感器模块还能够通过辅助主 IIC 总线访问外部磁力计或其他传感器,以提供完整的 9 轴 MotionFusion 输出。MPU-6050 传感器模块还包含一个温度传感器,但精度较低。

可以使用 MPU-6050 的示例

  • 汽车行业 - 部署安全气囊、车辆侧倾处理
  • 游戏控制器 - Wii 遥控器/Wiimote
  • 云台/相机稳定系统
  • 硬盘驱动器
  • 个人数字助理 - 智能手机、平板电脑
  • 机器人技术
  • 无人驾驶飞行器 (UAV) - 无人机、直升机
  • 车辆导航

加速度计

该设备用于测量加速度,即特定物体的速度变化率。以恒定速度行进的物体将具有零加速度。

MPU-6050 中的加速度计是一个三轴加速度计,这意味着它可以感应 X、Y 和 Z 轴上的加速度。

陀螺仪

这是 MPU-6050 中的另一个关键组件,可以测量角动量或绕 X、Y 和 Z 轴的旋转。

MEMS 陀螺仪由三个传感器组成,每个轴一个,旋转时会产生电压。该电压使用 16 位模数转换器在内部进行采样。

引脚排列

poYBAGN679WAIYzOAAAnRi9wLW0916.jpg
 
  • VCC - 3.3V 直流电源
  • GND - 接地
  • SCL - 串行时钟
  • SDA - 串行数据
  • XDA - 辅助串行数据(当另一个传感器连接到此模块时使用)
  • XCL - 辅助串行时钟(当另一个传感器连接到此模块时使用)
  • AD0 - I2C 地址位。允许您更改 MPU-6050 模块的内部 I2C 地址。如果模块与另一个 I2C 设备发生冲突,或者您希望在同一 I2C 总线上使用两个 MPU-6050,则可以使用它。
  • INT - 中断输出

将 MPU-6050 传感器模块与 Arduino 连接

 
 
 
pYYBAGN679mAZBbhAAHljT9LPJg696.jpg
 
1 / 2如何将 MPU 6050 传感器模块连接到 Arduino Mega 2560
 

要将 MPU-6050 与 Arduino 连接,您将需要 Jeff Rowberg 的I2C 开发库MPU-6050 库。要了解有关图书馆的更多信息,请访问Jeff 的网站。

这些库将以 .ZIP 格式下载,您可以直接将这些文件夹添加到您的 Arduino IDE。

  • 打开你的 Arduino IDE。
  • 从顶部菜单栏中转到草图菜单。
  • 选择包括库。
  • 选择 Add.ZIP library... 选项。
  • 导航到下载文件夹或保存 .ZIP 库的任何其他文件夹并选择它。
  • 您将在 Arduino IDE 底部看到一条消息,说明该库已添加到您的列表中。
  • 重复这些步骤以添加您的第二个库。

现在您已经添加了两个基本库,请尝试打开示例草图并将其上传到您的 Arduino 微控制器板上。通过旋转 MPU-6050 传感器模块进行试验,并观察串行监视器中显示的读数产生的变化。

设置

 
 
 
poYBAGN67-GALEZYAAbze49Q8RY708.jpg
 
1 / 3
 

连接

pYYBAGN67-eAZIiAAAaRGH1S9H4234.jpg
 

*注:原理图可在原理图部分找到。

MPU-6050 传感器模块

  • VCC - 3.3V
  • GND - 接地
  • SDA - D20(Arduino Mega 2560)、A4(Arduino Uno 和 Nano)
  • SCL - D21(Arduino Mega 2560)、A5(Arduino Uno 和 Nano)
  • INT - D2

微型伺服电机(滚轮)

  • S(黄色/橙色)- D9
  • + (红色) - 5V
  • - (黑色/棕色) - GND

微型伺服电机(螺距)

  • S(黄色/橙色)- D10
  • + (红色) - 5V
  • - (黑色/棕色) - GND

编码

正如我在上面已经提到的,您将需要 Jeff Rowberg 的I2C 开发库MPU-6050 库来将 MPU-6050 传感器模块与 Arduino 微控制器板连接。要了解有关图书馆的更多信息,请访问Jeff 的网站。

从顶部菜单栏中转到文件菜单,然后从 MPU6050 库中选择 MPU6050_DMP6 示例草图。将其上传到您的 Arduino 微控制器板并观察传感器模块产生的读数。旋转传感器模块以注意变化并识别横滚、俯仰和偏航。横滚(纵轴)、俯仰(横轴)和偏航(纵轴)是飞机的主轴。

对于这个项目,我们将仅使用滚动和俯仰测量来控制简单的机械臂。机械臂由两个微型伺服电机制成,因此您需要微控制器的伺服库来控制伺服电机的运动。

使用attach() 函数声明伺服电机所连接的引脚,并在 void setup() 中将伺服电机的初始位置设置为零。如果您仔细阅读代码,您会注意到滚动测量值(以度为单位)表示为 ypr[2] * 180/M_PI。

旋转传感器模块并观察产生的测量值以计算偏移量和范围。最后,您应该使用此范围将测量值映射到伺服电机的位置。

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'由MPU 6050控制的简单2轴伺服机械臂',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);