自平衡小车

合集下载

两轮自平衡小车双闭环PID控制设计

两轮自平衡小车双闭环PID控制设计

两轮⾃平衡⼩车双闭环PID控制设计两轮⾃平衡⼩车的研究意义1.1两轮平衡车的研究意义两轮平衡车是⼀种能够感知环境,并且能够进⾏分析判断然后进⾏⾏为控制的多功能的系统,是移动机器⼈的⼀种。

在运动控制领域中,为了研究控制算法,建⽴两轮平衡车去验证控制算法也是⾮常有⽤的,这使得在研究⾃动控制领域理论时,两轮平衡车也被作为课题,被⼴泛研究。

对于两轮平衡车模型的建⽴、分析以及控制算法的研究是课题的研究重点和难点。

设计的两轮平衡车实现前进、后退、转弯等功能是系统研究的⽬的,之后要对车⼦是否能够爬坡、越野等功能进⾏测试。

⼀个⾼度不稳定,其动⼒学模型呈现多变量、系统参数耦合、时变、不确定的⾮线性是两轮平衡车两轮车研究内容的难点,其运动学中的⾮完整性约束要求其控制任务的多重性,也就是说要在平衡状态下完成指定的控制任务,如在复杂路况环境下实现移动跟踪任务,这给系统设计带来了极⼤的挑战。

因此可以说两路平衡车是⼀个相对⽐较复杂的控制系统,这给控制⽅法提出了很⾼的要求,对控制理论⽅法提出来很⼤的挑战,是控制⽅法实现的典型平台,得到该领域专家的极⼤重视,成为具有挑战性的控制领域的课题之⼀。

两轮平衡车是⼀个复杂系统的实验装置,其控制算法复杂、参数变化⼤,是理论研究、实验仿真的理想平台。

在平衡车系统中进⾏解賴控制、不确定系统控制、⾃适应控制、⾮线性系统控制等控制⽅法的研究,具有物理意义明显、⽅便观察的特点,并且平衡车从造价来说不是很贵,占地⾯积⼩,是很好的实验⼯具,另外建⽴在此基础上的平衡系统的研究,能够适应复杂环境的导航、巡视等,在⼯业⽣产和社会⽣中具有⾮常⼤的应⽤潜⼒。

两轮平衡车所使⽤的控制⽅法主要有:状态回馈控制、PID控制、最优控制、极点回馈控制等,这些控制⽅法被称为传统控制⽅法。

1.2 本⽂研究内容(1)两轮⾃平衡⼩车的简单控制系统设计。

(2)基于倒⽴摆模型的两轮⾃平衡⼩车的数学建模。

(3)利⽤MATLAB⼯具进⾏两轮⾃平衡⼩车的系统控制⽅法分析。

两轮平衡小车实习报告

两轮平衡小车实习报告

两轮平衡小车实习报告一、前言随着科技的不断发展,机器人技术逐渐应用于各个领域,其中两轮平衡小车作为一种具有自平衡能力的新型轮式车,引起了广泛的关注。

本次实习报告主要介绍了两轮平衡小车的原理、设计及实际操作过程。

二、两轮平衡小车原理两轮平衡小车主要由控制系统、传感器、执行器等部分组成。

其工作原理是通过传感器实时检测车体姿态,将车体姿态信息传输给控制系统,控制系统根据车体姿态信息计算出相应的控制策略,并通过执行器实现对车轮的动态调整,使小车保持平衡。

三、两轮平衡小车设计1.硬件设计本次设计的两轮平衡小车采用STM32单片机作为控制核心,配备有MPU6050传感器用于姿态检测,使用TB6612FNG电机驱动模块实现车轮的控制。

此外,还使用了OLED显示屏用于显示实时数据。

2.软件设计在软件设计方面,主要采用了PID控制算法来实现车体的平衡控制。

首先,对MPU6050传感器采集到的数据进行处理,计算出车体的倾角;然后,根据倾角信息计算出控制电压,通过TB6612FNG电机驱动模块对车轮进行控制,以保持车体的平衡。

四、两轮平衡小车实际操作过程1.调试过程在实际操作过程中,首先需要对小车进行调试。

通过调整小车的重心位置,使其能够稳定站立。

调试过程中,发现小车在高速运动时容易失去平衡,通过减小驱动电压,提高小车的稳定性。

2.平衡控制实现在平衡控制实现方面,通过实时检测车体姿态,并根据姿态信息计算出控制电压,实现对车轮的控制。

在实际操作中,发现小车在平衡状态下运行平稳,能够实现前进、后退、转向等基本功能。

3.避障功能实现为了提高小车的实用性,我们为其添加了避障功能。

通过使用HC-SR04超声波传感器,实时检测小车前方的障碍物距离,并在检测到障碍物时,自动调整小车方向,实现避障。

五、总结通过本次实习,我们对两轮平衡小车的原理、设计及实际操作过程有了深入的了解。

两轮平衡小车作为一种具有自平衡能力的新型轮式车,具有占地面积小、转弯灵活等优点,其在未来的应用前景广阔。

自平衡小车控制代码

自平衡小车控制代码

#include <PID_v1.h>#include "Wire.h"#include "I2Cdev.h"#include "MPU6050_6Axis_MotionApps20.h"MPU6050 mpu(0x68);#define center 0x7Fchar flag=0;char num=0;double time;signed int speeds = 0;signed int oldspeed =0;byte inByte ;// MPU control/status varsbool dmpReady = false;uint8_t mpuIntStatus;uint8_t devStatus;uint16_t packetSize;uint16_t fifoCount;uint8_t fifoBuffer[64];signed int speedcount=0;// orientation/motion varsQuaternion q; // [w, x, y, z] quaternion containerVectorFloat gravity; // [x, y, z] gravity vectorfloat ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector float angle;double Setpoint, Input, Output;double kp = 18.8,ki = 185.0,kd = 0.29;//需要你修改的参数double Setpoints, Inputs, Outputs;double sp = 0.8,si = 0,sd = 0.22;//需要你修改的参数unsigned char dl=17,count;union{signed int all;unsigned char s[2];}data;volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone highvoid dmpDataReady() {mpuInterrupt = true;}PID myPID(&Input, &Output, &Setpoint,kp,ki,kd, DIRECT);PID sPID(&Inputs, &Outputs, &Setpoints,sp,si,sd, DIRECT);void motor(int v){if(v>0){v+=dl;digitalWrite(6,0);digitalWrite(7,1);digitalWrite(8,1);digitalWrite(9,0);analogWrite(10,v);analogWrite(11,v);}else if(v<0){v=-v;v+=dl;digitalWrite(6,1);digitalWrite(7,0);digitalWrite(8,0);digitalWrite(9,1);analogWrite(10,v);analogWrite(11,v);}else{analogWrite(10,0);analogWrite(11,0);}}void motort(int v){if(v>0){v+=dl;digitalWrite(8,1);digitalWrite(9,0);analogWrite(10,v);}else if(v<0){v=-v;v+=dl;digitalWrite(8,0);digitalWrite(9,1);analogWrite(10,v);}else{analogWrite(10,0);}}void setup(){pinMode(6,OUTPUT);pinMode(7,OUTPUT);pinMode(8,OUTPUT);pinMode(9,OUTPUT);pinMode(10,OUTPUT);pinMode(11,OUTPUT);digitalWrite(6,0);digitalWrite(7,1);digitalWrite(8,1);digitalWrite(9,0);analogWrite(10,0);analogWrite(11,0);Serial.begin(115200);Wire.begin();delay(100);Serial.println("Initializing I2C devices...");mpu.initialize();Serial.println("Testing device connections...");Serial.println(mpu.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");delay(2);Serial.println("Initializing DMP...");devStatus = mpu.dmpInitialize();if (devStatus == 0)Serial.println("Enabling DMP...");mpu.setDMPEnabled(true);Serial.println("Enabling interrupt detection (Arduino external interrupt 0)...");attachInterrupt(0, dmpDataReady, RISING);mpuIntStatus = mpu.getIntStatus();Serial.println("DMP ready! Waiting for first interrupt...");dmpReady = true;packetSize = mpu.dmpGetFIFOPacketSize();}else{Serial.print("DMP Initialization failed (code ");Serial.print(devStatus);Serial.println(")");}Setpoint = 22.0;myPID.SetTunings(kp,ki,kd);myPID.SetOutputLimits(-255+dl,255-dl);myPID.SetSampleTime(5);myPID.SetMode(AUTOMATIC);sPID.SetTunings(sp,si,sd);sPID.SetOutputLimits(-10,70);sPID.SetSampleTime(200);sPID.SetMode(AUTOMATIC);attachInterrupt(1,speed,RISING);}void loop(){if (!dmpReady)return;// wait for MPU interrupt or extra packet(s) availableif (!mpuInterrupt && fifoCount < packetSize)return;mpuInterrupt = false;mpuIntStatus = mpu.getIntStatus();fifoCount = mpu.getFIFOCount();if ((mpuIntStatus & 0x10) || fifoCount == 1024){mpu.resetFIFO();else if (mpuIntStatus & 0x02){while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();mpu.getFIFOBytes(fifoBuffer, packetSize);fifoCount -= packetSize;mpu.dmpGetQuaternion(&q, fifoBuffer);mpu.dmpGetGravity(&gravity, &q);mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); //从DMP中取出Yaw、Pitch、Roll三个轴的角度,放入数组ypr。

两轮自平衡小车系统制作研究

两轮自平衡小车系统制作研究

两轮自平衡小车系统制作研究[摘要] 自平衡小车是学习和研究各种控制方法的理想实验平台。

而系统灵敏度是研究参数不确定性对系统性能影响的理论,对两轮自平衡小车进行灵敏度分析是深入研究必须要做的工作。

[关键字] 两轮自平衡小车,系统制作,灵敏度两轮自平衡小车是一个集环境感知,动态决策与规划,行为控制与执行等多种功能于一体的综合系统,是动力学理论和自动控制理论与技术相结合的研究课题,其关键是解决在完成自身平衡的同时,还能够适应各种环境下的控制任务。

利用外加的红外传感器、速度传感器、倾角传感器、防碰撞开关等,来实现小车的自主避障、跟踪、路径规划等复杂功能。

一、两轮自平衡小车的工作原理当未做控制时,不论车身向前倾斜或者向后倾斜,左右轮都处于静止状态,也就是说车身前后摆动与车轮转动是相互独立的。

当开始控制时,车身在竖直站立的状态下释放,小车有静止、前进、后退三种运动的方式,在正确的控制策略下,小车能够保持自身的平衡。

这三种运动方式与控制策略如下所述:(1)静止:如果车身重心位于电机轴心线的正上方,则小车将保持平衡静止状态,不需要做任何控制。

(2)前倾:如果车身重心靠前,车身会向前倾斜,则驱动车轮向前滚动,以保持小车平衡。

(3)后退:如果车身重心靠后,车身会向后倾斜,则驱动车轮向后滚动,以保持小车平衡。

因此,两轮自平衡小车平衡控制的基本思想是:通过测量,得知车身与垂线的之间的相对角度及角速度,控制电机转动的方向以及输出力矩的大小,以此来保持小车自身的动态平衡[1]。

二、两轮自平衡小车系统的模型与分析1.小车的物理模型为了方便两轮自平衡小车系统的建模,将其物理结构简化,小车可绕x轴在yoz平面旋转也可在xoy平面中沿着任意方向平移和旋转。

为简化计算,假设驱动电机转子转轴与两轮圆心的连线完全重合,电机安装于可俯仰运动的小车车体上,但除了驱动电机外,不会对机器人的运动产生其他任何作用。

系统建模时以机器人的俯仰角和机器人的位置p(x,y)为系统输入量,以两个驱动电机的输出力矩为系统输出量,不考虑减速齿轮的配合误差及轴承的摩擦的影响。

基于数据融合的两轮自平衡小车控制系统设计

基于数据融合的两轮自平衡小车控制系统设计
平 衡 系统 的 抗 干扰 性 。
关 键 词 :数 据 融 合 ;卡 尔 曼 滤 波 ;两 轮 ; 自平 衡
中 图 分 类 号 :T P 2 7 3 文 献 标 识 码 :A 文 章 编 号 :0 2 5 8 — 7 9 9 8 ( 2 0 1 3 ) 0 5 - 0 0 7 9 - 0 3
T h e d e s i g n o f s e l f -b a l a n c i n g t wo -wh e e l v e h i c l e c o n t r o l s y s t e m b a s e d o n d a t a f u s i o n
We i We n ,Du a n C h e n d o n g ,Ga o J i n g l o n g ,L i C h a n g l e i
( C o l l e g e o f E l e c t r o n i c a n d C o n t r o l E n g i n e e r i n g ,C h a n g ’ a n U n i v e r s i t y ,X i ’ a n 7 1 0 0 6 4 ,C h i n a )
Mea s u r eme n t Con t r o l Te c hn o l o g y a n d I n s t r u men t s
基 于数据 融合 的两轮 自平衡小车控 制系统设计
魏 文 ,段 晨 东 ,高精 隆 ,李 常磊 ( 长 安 大 学 电 子 与 控 制 工 程 学 院 ,陕 西 西 安 ? 1 0 0 6 4 )
wh e e l v e h i c l e s y s t e m,a n d t o i mp r o v e t h e p r e c i s i o n a n d r e a l -t i me p e fo r r ma n c e o f t h e s y s t e m a t t i t u d e a n g l e me a s u r e me n t ,a me t h o d b a s e d o n g y r o s c o p e a n d a c c e l e r o me t e r d a t a f u s i o n i s p r e s e n t e d.O n t h e b a s i s o f t h e e s t a b l i s h me n t o f s e l f — b a l a n c i n g t wo — wh e e l s y s - t e m d y n a mi c s mo d e l ,Ka l ma n —F i l t e r i n g lg a o r i t h m i s u s e d t o f u s e t h e g y r o s c o p e a n d a c c e l e r o me t e r s i g n ls a i n o r d e r t o g e t t h e o p t i ma l e s t i ma t e o f s y s t e m a t t i t u d e a n g l e a n d a n g u l a r v e l o c i t y.T h e s e l f - b a l a n c i n g t w o- wh e e l v e h i c l e c o n t r o l s y s t e m i s a c h i e v e d b y d o u b l e

基于单片机的两轮自动平衡小车设计

基于单片机的两轮自动平衡小车设计
15 senseB 8 GND

6 11 enableA
enableA
vVcCcC6I l 4. V Vs s s
D D8 D。 Dl{1
VCC 6

o UT C 0 U TC 0 U TB 0 U T
.......LI
in4007

L298N
VC C6

D2 D3 D |D
参 考 文
P13 一
5K
P23
D6
5 IN 1 0 U T1 2
P22
7 IN 2 0 U T2 3
P21
10 1N 3 o U T3 13
P20 只2



12 IN 4 o U T4 14
1 senseA
应用技一
是将 控制 直立 和方 向 的控制 信号 叠加 在一起 加 载 电 机上 .只要 电机处 于线 性状 态就 可 以同 时完成 上面 两个 任务 。速 度是 通过 调节 车模倾 角 来完 成 的 ,不 同的倾角 会 引起小 车 的加减 速 。从 而达 到对 于速度 的控制。两轮 自平衡小车的系统方程式如下 :
图 3 陀 螺 仪 电 路接 口图
3.2 加速度传感器 电路设计 MMA736 1是三 轴小 量程 的加速 传感 器 ,用 于检
测 物件 运 动 和方 向 .它 根 据 物件 运 动 和方 向改变 输 出信号 的电压值 。三轴 的信号在不运动或不被重力 作用的状态下 ,其输 出电压为 1.65 V。如果 沿着某 一 个方 向活 动 ,或 者受 到 重力 作 用 ,输 出 电压就 会 根 据其 运 动方 向 以及 设 定 的传 感 器 灵敏 度 而 输 出相 应的电压值 。采用单片机的片内 A/D转换器就可 以 检 测其 运 动 方 向 。但 是 小 车 运动 所 产 生 的加 速度 会 产生很大的干扰信号叠加在上述测量信号上 ,使得 输 出信号无法准确反映车模的倾角 ,因此 ,采用加 角速度传感 器和陀螺可使小车的直立控制取得 良好 的效果 (见 第 92页 图 4)。 3.3 电机驱 动 电路 的设计

D-自平衡小车系统

D-自平衡小车系统

2013年福建师范大学大学生电子设计竞赛赛题
自平衡小车系统(D题)
一、设计任务
设计并制作一个自平衡小车。

两轮驱动、一轮为万向轮,如图1所示。

车体重心必须在驱动轮轴与万向轮之间,小车可以按图2所示场地运行一周。

图1 小车结构示意
图2 场地示意图
图3 小车直立状态示意
二、设计要求
1.基本要求
(1) 三轮着地,万向轮在前,可沿引导线逆时针方向运行一周,全程时间不超过3分钟;
(2) 引导线A、B点之间为加速区,B、C区为减速区,车速应有明显变化(时间比约1:2);
(3) D、E两点为引导线断开区域,小车经过D点时能正常运行,并能寻迹至E点后继续行驶;
(4) E点到F点区域必须按S形路线行驶。

2.发挥部分
(1) 由人手持小车为直立状态(两轮着地)开始保持平衡,放手后沿引导线逆时针方向运行一周;
(2)(3)(4)项与基本部分的(2)(3)(4)一致;
(5) 其他创新功能。

三、设计说明
(1) 场地为4张0号图纸拼接而成,边界线、引导线为黑色1.8cm宽防水电工胶带;
(2) 小车车体图3所示,宽W、长L比小于1;小车驱动轮不应有水平转向功能;
(3) 不论在任何时候,小车均不能有伸缩、移动部件等其他任何方式使重心发生变化;
(4) 小车不能使用外接供电,不能在外力帮助下保持两轮着地平衡;
(5) 小车任何一个驱动轮超出边界线时,或引导线在两个驱动轮外,或在基本要求中万向轮离地,该次测试失败;
(6) 测试时小车的运行起点为F、A或C、D之间任意点随机放置。

四、评分标准。

毕业设计(论文)-两轮自平衡小车的设计

毕业设计(论文)-两轮自平衡小车的设计

本科毕业设计(论文)题目两轮自平衡小车的设计学院电气与自动化工程学院年级专业班级学号学生姓名指导教师职称论文提交日期两轮自平衡小车的设计摘要近年来,两轮自平衡车的研究与应用获得了迅猛发展。

本文提出了一种两轮自平衡小车的设计方案,采用陀螺仪ENC-03以及MEMS加速度传感器MMA7260构成小车姿态检测装置,使用卡尔曼滤波完成陀螺仪数据与加速度计数据的数据融合。

系统选用飞思卡尔16位单片机MC9S12XS128为控制核心,完成了传感器信号的处理,滤波算法的实现及车身控制,人机交互等。

整个系统制作完成后,各个模块能够正常并协调工作,小车可以在无人干预条件下实现自主平衡。

同时在引入适量干扰情况下小车能够自主调整并迅速恢复稳定状态。

小车还可以实现前进,后退,左右转等基本动作。

关键词:两轮自平衡陀螺仪姿态检测卡尔曼滤波数据融合IDesign of Two-Wheel Self-Balance VehicleAbstractIn recent years, the research and application of two-wheel self-balanced vehicle have obtained rapid development. This paper presents a design scheme of two-wheel self-balanced vehicle. Gyroscope ENC-03 and MEMS accelerometer MMA7260 constitute vehicle posture detection device. System adopts Kalman filter to complete the gyroscope data and accelerometer data fusion.,and adopts freescale16-bit microcontroller-MC9S12XS128 as controller core. The center controller realizes the sensor signal processing the sensor signal processing, filtering algorithm and body control, human-machine interaction and so on.Upon completion of the entire system, each module can be normal and to coordinate work. The vehicle can keep balancing in unmanned condition. At the same time, the vehicle can be adjusted independently then quickly restore stability when there is a moderate amount of interference. In addition, the vehicle also can achieve forward, backward, left and right turn and other basic movements.Key Words: Two-Wheel Self-Balance; Gyroscope; Gesture detection; Kalman filter; Data fusionII目录1.绪论 (1)1.1研究背景与意义 (1)1.2两轮自平衡车的关键技术 (2)1.2.1系统设计 (2)1.2.2数学建模 (2)1.2.3姿态检测系统 (2)1.2.4控制算法 (3)1.3本文主要研究目标与内容 (3)1.4论文章节安排 (3)2.系统原理分析 (5)2.1控制系统要求分析 (5)2.2平衡控制原理分析 (5)2.3自平衡小车数学模型 (6)2.3.1两轮自平衡小车受力分析 (6)2.3.2自平衡小车运动微分方程 (9)2.4 PID控制器设计 (10)2.4.1 PID控制器原理 (10)2.4.2 PID控制器设计 (11)2.5姿态检测系统 (12)2.5.1陀螺仪 (12)2.5.2加速度计 (13)2.5.3基于卡尔曼滤波的数据融合 (14)2.6本章小结 (16)3.系统硬件电路设计 (17)3.1 MC9SXS128单片机介绍 (17)3.2单片机最小系统设计 (19)3.3 电源管理模块设计 (21)3.4倾角传感器信号调理电路 (22)III3.4.1加速度计电路设计 (22)3.4.2陀螺仪放大电路设计 (22)3.5电机驱动电路设计 (23)3.5.1驱动芯片介绍 (24)3.5.2 驱动电路设计 (24)3.6速度检测模块设计 (25)3.6.1编码器介绍 (25)3.6.2 编码器电路设计 (26)3.7辅助调试电路 (27)3.8本章小结 (27)4.系统软件设计 (28)4.1软件系统总体结构 (28)4.2单片机初始化软件设计 (28)4.2.1锁相环初始化 (28)4.2.2模数转换模块(ATD)初始化 (29)4.2.3串行通信模块(SCI)初始化设置 (30)4.2.4测速模块初始化 (31)4.2.5 PWM模块初始化 (32)4.3姿态检测系统软件设计 (32)4.3.1陀螺仪与加速度计输出值转换 (32)4.3.2卡尔曼滤波器的软件实现 (34)4.4平衡PID控制软件实现 (36)4.5两轮自平衡车的运动控制 (37)4.6本章小结 (39)5. 系统调试 (40)5.1系统调试工具 (40)5.2系统硬件电路调试 (40)5.3姿态检测系统调试 (41)5.4控制系统PID参数整定 (43)5.5两轮自平衡小车动态调试 (44)IV5.6本章小结 (45)6. 总结与展望 (46)6.1 总结 (46)6.2 展望 (46)参考文献 (47)附录 (48)附录一系统电路原理图 (48)附录二系统核心源代码 (49)致谢 (52)V常熟理工学院毕业设计(论文)1.绪论1.1研究背景与意义近年来,随着电子技术的发展与进步,移动机器人的研究不断深入,成为目前科学研究最活跃的领域之一,移动机器人的应用范围越来越广泛,面临的环境和任务也越来越复杂,这就要求移动机器人必须能够适应一些复杂的环境和任务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

两轮自平衡小车设计报告摘要:本文采用 STM32 单片机作为主控制器,用 MMA7361 加速度传感器和两个陀螺仪传感 器来检测车的状态,通过 LM298 控制小车两个电机,来使小车保持平衡状态。

关键字:智能小车;单片机;陀螺仪;加速度传感器。

一、系统完成的功能根据老师的指导要求,在规定的时间内,由团队合作完成两轮自平衡小车的制作, 使小车在一定时间内能够自助站立并且自由行走。

二、系统总体设计原理框架图加速度传感器 AD1 两路 PWM LM298陀螺仪传感器AD2STM32 单片机定时器电机检测、控制模 块三.系统硬件各个组成部分介绍3.1.STM32 单片机简介主控模块的 STM32 单片机是控制器的核心部分。

该单片机是 ST 意法半导体公司生 产的 32 位高性能、低成本和低功耗的增强型单片机,它的内核采用 ARM 公司最新生产 的 Cortex—M3 架构,最高工作频率可达 72MHz,256K 的程序存储空间、48K 的 RAM,8 个定时器/计数器、两个看门狗和一个实时时钟 RTC,片上集成通信接口有两个 I2C、3 个 SPI、5 个 USART、一个 USB、一个 CAN、两个和一个 SDIO,并集成有 3 个 ADC 和一个 DAC,具有 80 个 I/0 端口。

图 2 STM32 单片机STM32 单片机要求 2.0~3.6V 的操作电压(VDD), 本设计采用 5.0V 电源通过 AMSlll7 电压转换芯片为单片机提供 3.3V 的工作电压,其电源电路如图 2 所示。

图 3 电源转换电路图3.2 加速度传感器测量角度的加速度传感器很多,由于本设计所用的加速度传感器是飞思卡尔公司的 MMA7361 这一款传感器,所以重点介绍 MMA7361 传感器。

加速度传感器可以测量由地球引力作用或者物体运动所产生的加速度。

该系列的传 感器采用了半导体表面微机械加工和集成电路技术,传感器体积小,重量轻。

它的基本 原理如图 3 所示图 、加速度计工作原理图通过微机械加工技术在硅片上加工形成了一个机械悬臂。

它与相邻的电极形成了两 个电容。

由于加速度使得机械悬臂与两个电极之间的距离发生变化,从而改变了两个电 容的参数。

通过集成的开关电容放大电路量测电容参数的变化,形成了与加速度成正比 的电压输出。

MMA7361 是 3 轴小量程加速传感器,它检测物件运动和方向的传感器,它根据物件 运动和方向改变输出信号的电压值。

各轴的信号在不运动或不被重力作用的状态下 (0g) , 其输出理论上为 1.65V。

如果沿着某一个方向活动,或者受到重力作用,输出电压就会 根据其运动方向以及设定的传感器灵敏度而改变其输出电压。

用单片机的 A/D 转换器读 取此输出信号,就可以检测其运动和方向。

图 、加速度传感器只需要测量其中一个方向上的加速度值,就可以计算出车模倾角,比如使用 Z 轴方 向上的加速度信号。

车模直立时,固定加速度器在 Z 轴水平方向,此时输出信号为零偏 电压信号。

当车模发生倾斜时,重力加速度 g 便会在 Z 轴方向形成加速度分量,从而引 起该轴输出电压变化。

变化的规律为 (2.1)式中, 为重力加速度;  为车模倾角;k 为加速度传感器灵敏度系数系数。

当倾 角θ 比较小的时候,输出电压的变化可以近似与倾角成正比。

似乎只需要加速度就可以获得车模的倾角,再对此信号进行微分便可以获得倾角速 度。

但在实际车模运行过程中,由于车模本身的摆动所产生的加速度会产生很大的干扰 信号,它叠加在上述测量信号上使得输出信号无法准确反映车模的倾角。

下面简单分析运动所产生的干扰信号。

加速度传感器安装在车模上,距离车模高度 为 H。

车模转动具有角角速度   ,运动加速度 a。

那么在加速度传感器 Z 轴上出现由于 车模运动引起的加速度为 H   +a.为了减少运动引起的干扰,加速度传感器应该安装的 高度越低越好,但是无法彻底消除车模运动的影响。

车模运动产生的加速度使得输出电压在实际倾角电压附近波动。

这些波动噪声可以 通过数据平滑滤波将其滤除。

但是平滑滤波一方面会使得信号无法实时反映车模倾角变 化,从而减缓对于车模车轮控制。

另一方面也会将车模角速度变化信息滤掉。

上述两方 面的滤波效果使得车模无法保持平衡。

因此对于车模直立控制所需要的倾角信息需要通 过另外一种器件获得,那就是角速度传感器-陀螺仪。

3.3 陀螺仪传感器陀螺仪可以用来测量物体的旋转角速度。

本设计选用村田公司出品的 ENC-03 系列 的加速度传感器。

它利用了旋转坐标系中的物体会受到科里奥利力的原理,在器件中利 用压电陶瓷做成振动单元。

当旋转器件时会改变振动频率从而反映出物体旋转的角速 度。

ENC-03 角速度传感器以及相关参考放大电路如图 5 所示。

图 、角速度传感器及其参考放大电路在车模上安装角速度传感器,可以测量车模倾斜角速度,再对倾斜角速度进行积分 就得到了车模的倾角。

由于陀螺仪输出的是车模的角速度,不会受到车体运动的影响,因此该信号中噪声 很小。

车模的角度又是通过对角速度积分而得,这可进一步平滑信号,从而使得角度信 号更加稳定。

因此车模控制所需要的角度和角速度可以使用陀螺仪所得到的信号。

由于从陀螺仪角速度获得角度信息,需要经过积分运算。

如果角速度信号存在微小 的偏差和漂移,经过积分运算之后,变化形成积累误差。

这个误差会随着时间延长逐步 增加,最终导致电路饱和,无法形成正确的角度信号。

如何消除积分漂移,这就必须引 入姿态测量的方法。

3.4电机控制3.4.1 L298N 的工作原理 此系统的电机控制我们使用的是电机控制专用芯片 L298N,L298N 是 SGS 公司的产 品, 其内部包含 4 通道逻辑驱动电路, 即内含二个 H 桥的高电压大电流双全桥式驱动器, 接收标准 TTL 逻辑电平信号,可驱动 46V、2A 以下的电机。

由 L298N 构成的 PWM 功率放 大器的工作形式为单极可逆模式,2 个 H 桥的下侧桥晶体管发射极连在一起,其引脚排 列如图 6 所示,1 脚和 15 脚可单独引出连接电流采样电阻器,形成电流传号。

L298 可 驱动 2 个电机,OUTl、OUT2 和 OUT3、0UT4 之间分别接 2 个电动机。

5、7、10、12 脚接 输入控制电平,控制电机的正反转,ENA、ENB 接控制使能端,控制电机的停转。

这些特 性使得 L298N 很适合用作小型直流电机控制芯片。

我们使用 9V 电压作为它的动力电压, 5V 作为它的逻辑电压,如下图所示。

图6 3.4.2 PWM 基本原理 PWM 即脉冲宽度调制, 它是指将输出信号的基本周期固定,通过调整基本周期内工 作周期的大小来控制输出功率的方法。

在 PWM 驱动控制的调整系统中,按一个固定的频 率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。

因 此,PWM 又被称为“开关驱动装置”。

如图 7 所示,在脉冲作用下,当电机通电时,速 度增加;电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让 电机转速得到控制。

图7 设电机始终接通电源时,电机转速最大为 Vmax,设占空比为 D=t/T,则电机的平均 速度为:Vd = Vmax·D (1)式中:Vd 表示电机的平均速度;Vmax 表示电机全通电时的速度(最大);D=t/T 表示占空比。

由公式(1)可见,当改变占空比 D 时,就可以得到不 同的电机平均速度,从而达到调速的目的。

四、软件设计软件部分实现的主要功能是:传感器的数据采集、PWM 信号的输出、车模控制:包 括直立控制,速度控制。

软件流程如下:开始初始化读取传感器数 据并处理获取电机控制参数发 送到电机控制端口检测车模状态图 6 软件流程图初始化完成以后,首先进入车模直立检测子程序。

该程序通过读取加速度传感器以 及陀螺仪传感器的数值判断车模是否处于直立状态。

在中断程序中不断的读取传感器数据,获取车模状态信息,然后通过读取的数据 控制车模。

中断程序可以通过一个 定时中断完成,每次进入中断进行如下操作: 、获取传感器数据; 、数据滤波; 、电机控制;.模块初始化、 模块初始化 模块的初始化是通过设置相关寄存器来完成的,包括时钟、通道、采样周期、 工作方式等。

在这里采用了两通道 的数据。

和 采集陀螺仪和加速度计传感器、定时器的初始化 采用定时器 来产生 输出, 能产生 路 输出,这里用和两路来控制控制电机。

在这里主要用到了捕获 比较模式寄存器、捕获比较使能寄存器、捕获 比较寄存器。

4.2、kalman 算法:本程序读取 采用数值,采用 滤波后计算车模的倾角,倾角速度。

对于陀螺仪要减去零点时候的数值,加速度传感器的数据进行归一化处理,相应的数值均通 过实验确定。

下面对 滤波算法做一简单介绍。

卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其 基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测 值来更新对状态变量的估计,求出现时刻的估计值。

它适合于实时处理和计算机运算。

现设线性时变系统的离散状态防城和观测方程为: X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1) Y(k) = H(k)·X(k)+N(k) 其中: 和 分别是 时刻的状态矢量和观测矢量为状态转移矩阵 为 时刻动态噪声 为系统控制矩阵 为 为 时刻观测矩阵 时刻观测噪声则卡尔曼滤波的算法过程如下: 预估计 ·1. 计算预估计协方差矩阵 C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)' Q(k) = U(k)×U(k)' 2. 计算卡尔曼增益矩阵 K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1) R(k) = N(k)×N(k)'3. 更新估计 X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^] 4. 计算更新后估计协防差矩阵 C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)' 5. X(k+1) = X(k)~ C(k+1) = C(k)~ 重复以上步骤五、总结通过这次课程设计,我们接触到了很多之前没有接触的理论知识。

相关文档
最新文档