看到别人做的自动行驶自行车,觉得好玩,自己也做一个,用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

基于 arduino 的两轮自行车相关推荐

  1. 基于stm32的两轮自平衡小车3(硬件篇)

    此篇为硬件篇,接上一篇"基于stm32的两轮自平衡小车2(原理篇)".包含自行设计电路板原理图与PCB电路图的过程.详见目录. 目录 stm32管脚分配 硬件原理图 PCB电路图 ...

  2. 基于stm32的两轮自平衡小车4(软件调试篇)

    本篇是软件调试篇,接上一篇硬件篇:基于stm32的两轮自平衡小车3(硬件篇),本篇内容是对硬件部分的软件实现,具体模块详见目录.这里先上效果:转B站 目录 定时器PWM驱动程序 定时器编码器模式驱动程 ...

  3. 基于stm32c8t6的两轮平衡小车 第二篇——原理图及CubeMx配置

    目录 1.原理图 2.CubeMx配置 (1)创建工程 (2)配置时钟树 (3)仿真模式选择 (4)TIM2配置为PWM输出模式 (5)定时器TIM3,TIM4设置为编码器模式 (6)蓝牙串口配置 ( ...

  4. matlab两轮自平衡小车,基于MATLAB的两轮自平衡小车系统模型辨识.pdf

    基于MATLAB的两轮自平衡小车系统模型辨识 学兔兔 第1期 (总第170期) 机 械 工程 与 自动 化 NO.1 2012年 2月 MECHANICAL ENGINEERING & AUT ...

  5. 基于32单片机两轮平衡小车控制系统设计

    主控MCU采用STM32F103C8T6单片机,电机驱动模块采用TB6612FNG模块,姿态监测传感器采用MPU6050芯片,蓝牙模块采用HC-05蓝牙模块. 小车的运动分为直立环.速度环和转向环分别 ...

  6. 基于AVR单片机: 两轮自平衡智能车

    寒假无所事事,决定做一个两轮平衡车来玩玩.个人觉得两轮自平衡车是集合所有算法的精髓.它就像蛋炒饭,最简单也是最困难.他可以用简单的算法实现,当然也可以用最复杂的控制理论来实现. 本质上来说它就是个倒立 ...

  7. matlab两轮自平衡小车,基于LQR算法两轮自平衡小车的系统设计与研究

    摘要: 本文旨在设计和研究两轮自平衡小车系统.两轮自平衡小车是一种非线性.强耦合.多变量.自然不稳定.具体的.实现起来相对便宜的复杂系统,给控制理论提出了很大的挑战,是检验各种控制方法处理能力的典型装 ...

  8. 基于RT-Thread的两轮平衡小车设计

    一.前言 最近参加了RT-Thread官方发起的RT-Robot Car DIY活动,借此机会想总结一些自己本科四年的所学的部分知识. 也可以帮助到那些需要的小伙伴(可以参考我的代码中对RT-Thre ...

  9. 基于stm32的两轮自平衡小车1(模块选型篇)

    有一段时间没有更新博客了,最近一段时间都在忙毕业和实习,闲暇的时候也在学习怎么写公众号推文,实在惭愧.毕业设计做的是平衡小车,这几天某宝买的器件还不知所踪,新的PCB电路板又不想画,所以在想要不把做过 ...

最新文章

  1. C#调用Oracle存储过程分页
  2. azure云数据库_使用Azure SQL数据库构建ASP.NET应用
  3. 蓝桥杯 ADV-91 算法提高 素数判断
  4. Gentoo解决Windows系统txt文本中文乱码问题
  5. Security+ 学习笔记25 硬件与数据安全
  6. jetty快速入门与嵌入使用 jetty
  7. TensorFlow开发者证书 中文手册
  8. 0基础入门CCNA视频学习(附链接和注意事项)
  9. 13.计蒜客ACM题库.A1147 结果填空:礼物盒
  10. 支付宝小程序前端开发简介
  11. MATLAB APP Designer设计之图片处理
  12. 分期付款“名义利率”和“实际利率”的公式及其套路
  13. python 机器视觉测量_用Opencv python实现精密测量
  14. java unicode 转换_Java unicode中文编码转换和反转
  15. python基金预测分析_Python爬虫抓取基金数据分析、预测系统设计与实现
  16. IDS入侵检测系统与开源IDS-snort的安装与编写规则
  17. 搭建可通过外网访问的内网服务器
  18. 【IDEA 教程系列第 6 篇】idea 快速定位到某一行
  19. 如何在本地磁盘安装PE系统
  20. u盘插电脑计算机卡了,U盘插入电脑就卡住的常用处理方法教程

热门文章

  1. c语言循环语句学习心得
  2. Cat3.0.0监控本地部署+springboot接入cat例子
  3. 全网最细------爬取4k高清大图
  4. 基因家族TBTools
  5. c语言大学教程答案pdf,C++大学教程(第九版) 保罗·戴特尔(Paul Deitel)等著 完整中文pdf扫描版[197MB]...
  6. 用SNMP协议实现系统监控
  7. vue element-ui之分页组件的封装
  8. 苹果“传奇”追授总统自由勋章——史蒂夫·乔布斯,未来还会有吗
  9. 【Java学习】JUC并发编程
  10. iOS 13适配汇总