自制Raspberry Pi 两轮自平衡车
本文将介绍如何利用Raspberry Pi自行制作一台两轮自平衡车(segway)。
硬件需求
Raspberry Pi + 外壳 + WiFi网卡。请自行先刻录并安装 Raspbian 操作系统来开机。WiFi网卡是edimax的, 安装方法不另赘述
DC motors + 轮胎 + 车架 + 压克力板 + 铜柱
L293D IC 马达驱动IC
MPU6050六轴传感器
机构组装
安装车体, 包括L架, 马达, 轮胎, 最后把压克力板还有铜柱都装上去。装完以后的样子如下图.
安装线路
开始插面包板
这里简单说明一下电路,MPU6050模块是使用I2C接口,有四根线需要接上Raspberry Pi 的 GPIO脚位,分别是:
Vcc –> RPi GPIO header pin#1 (3.3V),
SDA–> RPi GPIO header pin#3 (SDA)
SCL–> RPI GPIO header pin#5 (SCL)
GND–> RPi GPIO header pin#6 (GND)
关于马达的部分,我使用常见的L293D 驱动IC。
GPIO header pin#11, pin#13, pin#15 控制左轮, 接到L293D的pin#2,pin#7, pin#1
GPIOheader pin#16, pin#18, pin#22 控制右轮, 接到L293D的pin#15, pin#10, pin#9
L293D的pin#3, pin#6接左轮马达
L293D的pin#14, pin#11 接右轮马达
Vs 接 12V DC
Vss 接 5V DC
(Vs& Vss 这两只脚不要搞混)
还有就是 L293D 需要有够高的电压来源才能驱动马达,我的做法是买一个 12V DC 1A 变压器,再配一个转接头再接上面包板,这样才能供应 L293D 的 Vs (pin#8)。
还要注意一点就是,请把车体前后的接线整理固定好,因为后面做平衡调校测试的时候一定会摔车好多次,前后的线路就是首当其冲, 最好都用束线带绑好。全部都固定完毕的样子
软件部份
这里我们要搞定I2C, 并且使用wiringPi函式库。它有基本GPIO功能又支持I2C 读取MPU6050数据,还有SoftPWM 功能可以控制DC motors转速,真是一举数得。
安装步骤如下
先安装i2c driver.
$ sudo apt-get install libi2c-dev
设定下次开机要启动 i2c driver,
$ sudo vi /etc/modules
增加以下两行到里面, 储存.
i2c-bcm2708
i2c-dev
有一个blacklist档案要检查
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf
确认里面没有以下两行, 如果有出现, 请在前面都加上#符号 (也就是把他comment掉), 储存.
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
然后Pi要重新启动
$ sudo bash; sync;sync;reboot
开机回来后, 要确认i2c driver kernel module 有正常启动
$ lsmod |grep i2c
i2c_dev 6027 0
i2c_bcm2708 4990 0
安装 git
$sudo apt-get install git-core
下载并安装 wiringPi
$ cd
$git clone git://git.drogon.net/wiringPi
$ cdwiringPi
$sudo ./build
测试MPU6050
先安装测试工具
$ sudo apt-get install i2c-tools
执行这个工具测试 i2c bus上是否有看到MPU6050.
$ sudo i2cdetect -y 0 (for a Revision 1board)
or
$sudo i2cdetect -y 1 (for a Revision 2 board)
如果看到以下输出…注意那个”68″, 就表示已经正常抓到MPU6050了.
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — 68 — — — — — — —
70: — — — — — — — —
再来我们要下载测试程序尝试抓取加速度计(accelerometer) & 陀螺仪(gyroscope meter)数据.
下载测试程序, 并编译
$ cd
$ cdmpu6050_in_c
$cat README.md
$ gcc -o mpu6050_accl ./mpu6050_accl.c -lwiringPi -lpthread -lm
$gcc -o mpu6050_gyro ./mpu6050_gyro.c -lwiringPi -lpthread -lm
现在来看看加速度的数据, 请执行以下程序:
$ sudo ./mpu6050_accl
应该要看到X, Y, Z 加速度数据, 如下:
My acclX_scaled: 0.140625
MyacclY_scaled: -0.031006
MyacclZ_scaled: 0.994141
My Xrotation: -1.768799
My Yrotation: -8.047429
其中 acclX, acclY, acclZ 是三轴加速度数据
(单位是g, 没错! 就是物理课本上面的重力加速度 g=9.8m/s^2)
MyX/Y rotation 是换算出来的角度 (单位是 degree).
请试着将车体前倾或后仰, 看看数据的变化.
如果您安装MPU6050 的方向正确的话, 车体前倾或后仰应该会看到 Y rotation 介于 -90度 ~ 90度.
再来看看陀螺仪的数据, 请执行以下程序:
$ sudo ./mpu6050_gyro
应该要看到X, Y, Z轴的角速度, 单位是 degree/s
MygyroZ_scaled: -1.954198
MygyroX_scaled: -4.312977
MygyroY_scaled: 0.458015
MygyroZ_scaled: 0.366412
MygyroX_scaled: -4.053435
MygyroY_scaled: 0.427481
MygyroZ_scaled: -0.160305
请尝试着观察转动瞬间与数据的变化, 就会理解陀螺仪数据了。这里说明一下,单纯用上面那个加速度计不就可以推算出倾斜角度不是吗? 为何需要用到陀螺仪数据呢?主要是因为加速度数据很容易浮动, 后来有人发明了使用陀螺仪数据再补上加速度数据的方法, 这样就能算出比较稳定可靠的倾斜角度这套方法叫做“complementary filter”.
测试DC motors
现在我们用 wiringPi 写一个程序测试 DC motors.
$ cd
$git cl,one https://github.com/wennycooper/dcMotor.git
$ cddcMotor
$cat README.md
$ gcc -o dcMotor0 dcMotor0.c -lwiringPi-lpthread
准备要让马达转啰!! 请确认12V电源有正常插上, 并把车体用手拿起来, 执行程序!!
$ sudo ./dcMotor0
如何?? 正常的话两个马达应该正转5秒钟, 再反转5秒钟, 最后停止.
马达如果没有转, 表示前面步骤执行有错, 请回头去检查.
如果有转, 请确认两个马达都有转同样方向, 如果反向, 请把一个马达接脚两根交换, 应该可以改善.
还要注意一点, 您的两个马达都有转得很“够快”吗??
如果转得很慢, 比方说每秒钟大约才2转, 很有可能是L293D 的部分接线有问题, 请回头再确认!!
转速太慢可能会造成车体倾斜时马达来不及将车体导正, 这样就无法平衡了.
最后整合
将上面所有的程序代码全部整合到一起!!
这程序会根据测到的数据, 努力保持车体平衡.
如果倾斜角度过大(>60度), 会自动让马达停止.
执行
由于每一台车体平衡角度不一样, 本程序开始执行的时候是假设车体已平衡, 并取出当下角度作为基准点, 再努力透过马达运作努力保持角度。这意思是说: “程序启动瞬间请保持车体平衡”
有一点点难度,我的做法是左手放车子到地面,扶着它尽量保持车体平衡,然后平衡瞬间右手敲键盘执行程序。以下是结果录像
作者:马岗阿文
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
精彩回顾立即查看>> 【线下论坛】华邦电子与莱迪思联合技术论坛
-
精彩回顾立即查看>> 【线下论坛】华邦电子与恩智浦联合技术论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
-
精彩回顾立即查看>> 【限时免费下载】TE暖通空调系统高效可靠的组件解决方案
-
精彩回顾立即查看>> 2024德州仪器嵌入式技术创新发展研讨会
推荐专题
- 1 格科微5000万像素产品再传佳讯 剑指中高端手机后主摄市场
- 2 Kvaser发布全新软件CanKing 7:便捷CAN总线诊断与分析!
- 3 Intel酷睿Ultra 9 285K首发评测:游戏性能一言难尽
- 4 小米15供应链谁是大赢家?市场高度关注这家企业
- 5 锐龙7 9800X3D首发评测:网游断崖式领先
- 6 国补加持!双11最值得入手的Mini Led电视来了!不买真亏大了
- 7 小米入局家用NAS市场!手机厂商要做NAS普及推手?
- 8 HUAWEI SOUND 用科技开创智慧音响新世代
- 9 工业加热技术创造烘焙奇迹:Kanthal AF加热元件以37.55秒创造世界最短披萨烘焙时间
- 10 瑞典Ionautics HiPSTER 25重磅新品! SiC晶体管引领HiPIMS高效镀膜新时代,镀膜效率显著提升
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论