在线时间2 小时
UID3063011
注册时间2015-1-24
NXP金币0
该用户从未签到
新手上路

- 积分
- 17
- 最后登录
- 2015-2-1
|

楼主 |
发表于 2015-1-26 03:08:32
|
显示全部楼层
Day 2: 实现自平衡下两层抽象
虽然时间紧迫,正式动手之前还是需要整体规划一下,保证代码结构清晰并易于扩展。
按照抽象化和模块化思想,把系统分为三个抽象层,每个抽象层又包括几个模块(这里每个模块基本对应一个C语言源程序)。从下向上的三个抽象层分别是:
1. 驱动调用层:调用Beaglebone的驱动。
(1) GPIO: 读写GPIO信号;
(2) I2C: 通过I2C总线读写指定的bits或bytes;
(3) PWM:设置PWM信号的周期、极性等参数。
2. 芯片控制层:利用Beaglebone的驱动,来控制Beaglebone Cape上的芯片。
(1) MPU-9150:调用I2C模块,读取传感器的Yaw, Pitch, Roll角度;
(2) Motor:调用GPIO和PWM模块,控制两个步进电机的转速和方向。
3. 算法应用层:应用算法,实现自平衡以及前进、后退、转弯等操作。
(1) PID算法:根据MPU-9150的角度,控制两个步进电机的转速和方向,实现自平衡;
(2) 运动控制:在保持平衡的基础上,实现前进、后退、转弯、停止等操作。
附录:源程序列表
2015/01/25 22:31 5,429 gpio.c
2015/01/25 22:04 2,735 gpio.h
2015/01/25 23:01 7,059 i2c.c
2015/01/25 23:01 3,445 i2c.h
2015/01/26 02:25 5,170 main.c
2015/01/26 02:21 3,740 motor.c
2015/01/26 02:20 2,017 motor.h
2015/01/26 00:53 14,671 mpu9150.c
2015/01/26 00:24 16,331 mpu9150.h
2015/01/25 23:07 3,272 pwm.c
2015/01/25 23:07 1,844 pwm.h
|
|