基于 arduino 的两轮自行车

news/2024/10/30 15:27:16/

看到别人做的自动行驶自行车,觉得好玩,自己也做一个,用arduino可以轻松实现。

因为开始是在做无人机,所以带着遥控器接收机等装备,一起开始设计自行车,就做个遥控的自行车吧,一个马达后轮驱动,MPU6050控制平衡,一个舵机控制前轮掌握方向,如此而已。

主要模块:
1、接收机程序(接收控制命令)
2、马达驱动程序(驱动后轮转动前行,速度可调)
3、舵机驱动程序(驱动前轮转向,以纠正车身意外倾斜)
4、陀螺仪读取
陀螺仪数据的作用:当车身发生倾斜时,要用舵机驱动前轮转向,在前进运动中,前轮的转向自然可以纠正车身的倾斜。

程序框架:
1、读取接收机数据 :re_da[0]-re_da[3]分别是1、2、3、4通道接收机数据。
2、读取陀螺仪数据:agx,agy,agz,其实就用一个agx就可以了。
3、根据接收机数据和陀螺仪数据计算马达和舵机。
4、用计算结果驱动马达和转向舵机。
用map函数直接把三通道(油门)接收机数据映射成合适的马达速度控制变量。
但是,方向舵机计算比较复杂,这也是自行车控制的特殊之处。

舵机控制前轮方向主要有如下考虑:
首先,假如转向舵为中间值(数值1500)

当陀螺仪数据X<0(车身向左倾斜)时,舵机操作前轮也向左拐。当X>0(车身向右倾斜)时,前轮也必须向右拐,以保持车身平衡。当陀螺仪数据趋近于零时,前轮直行。这就是基本的平衡控制。
但是,前轮向左,到底应该拐多少呢?按说,在速度快的时候,车把动作就要小,在车子速度慢的时候,车把动作就要大。这里没有速度数据,所以只好用油门量来代替。经实验,在油门1400的时候,转向参数20是比较合适的,在油门1800的时候,转向参数为10比较合适。于是据此得出计算公式:
kn=26-(re_da[2]-1100)/50; //转向参数,其中 re_da[2] 为油门通道数值,数值在1080-1920之间,kn就是转向参数(倍率)
val1=re_da[0]-(agx+k_x)*kn; //马达控制,其中 re_da[0] 为转向通道数值,数值在1080-1920之间,1500为中间值。agx为陀螺仪给出的倾斜度,val1就是计算出来的转向舵机的数值。

转弯实现
在上述基础上,如果转向通道re_da[0]朝一方倾斜,自行车肯定就会向另外一方倾斜,所以,要想左转,只要将车把稍微朝右偏转,在陀螺仪矫正下,车子就自动向左倾斜转弯了。

测试视频:https://v.youku.com/v_show/id_XNDMzMzQ2NDgzMg==.html?spm=a2hzp.8253869.0.0


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

相关文章

知识点滴 - 自行车分类

旅行车 旅行自行车&#xff08;Touring bicycle&#xff09;由公路自行车发展而来&#xff0c;适合超远程自给自足的旅行&#xff0c;有较舒适放松的车架几何设计&#xff0c;能够负重&#xff0c;有很低的最低档位&#xff0c;配件选择方面追求可靠耐用。 专业的长途旅行车均以…

自行车头盔骑行必备的装备

骑行过程中时常会发生摔倒碰撞&#xff0c;若撞击到头部就会对头部造成很大的损害&#xff0c;所以一定要佩戴自行车头盔。就算骑行爱好者是以较低的车速沿着坡度平稳的自行车道骑行&#xff0c;也同样不可忽视必须谨慎对待安全问题。 骑行头盔牌子不是最重要的考虑范围&a…

docker自动发现与注册consul

1&#xff09;什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0c;起初…

魅族16无信号服务器,魅族16信号差的解决办法

手机信号问题一直都是人们关注的问题&#xff0c;在日常使用时有些地方手机可能出现突然信号变差&#xff0c;可能别人的手机信号一直很好只有你的出现了问题。魅族手机最早的几个版本都很容易出现这种问题&#xff0c;新款的魅族16怎么样呢&#xff1f;魅族16信号差怎么解决呢…

魅族系统底层更新鸿蒙吗,魅族工程师回复网友:Flyme 8没有升级底层

中关村在线消息&#xff1a;在刚刚结束不久的魅族珠海发布会上&#xff0c;其除了带来全新旗舰机型16s Pro之外&#xff0c;还公布了全新的Flyme 8系统&#xff0c;采用Alive Design的全新设计理念&#xff0c;让体验轻快而鲜活。今天已经有不少煤油在加入Flyme 8的内测计划后收…

求C语言编写的国际象棋代码

谁有C语言编写的国际象棋代码&#xff0c;急急急。。。

中国象棋php实现

今天想着业余时间能不能干点什么&#xff0c;最后想着写一个中国象棋吧&#xff0c;先实现pc版&#xff0c;后实现微信小程序&#xff0c;希望今年年前能把pc版完成&#xff0c;加油&#xff01;

C语言经典100例---实例九:输出国际象棋棋盘

编译器&#xff1a;VS2019 不同的编译器打印出来的国际象棋棋盘是不同的&#xff0c;这里提供VS2019的代码。 菜鸟教程上给出的代码不适用VS2019&#xff0c;打印出来的国际象棋棋盘一点也不整齐&#xff01;&#xff01;&#xff01; 最后&#xff1a;一定要记得实践出真知…