AD转换基准电压总结(飞思卡尔电磁组)

合集下载

飞思卡尔智能车 电磁组 技术报告

飞思卡尔智能车 电磁组 技术报告
#defineZSPEED130//100
//#define K10
//#define Kp 1;//PID的//#define Kd 1;
#include <hidef.h>
#include <stdio.h>
#include <math.h>
#include <MC9S12XS128.h>
3.1.3
考虑到适当增加力臂来提高舵机的灵敏度和为了赛车布局的的紧凑,采取了如图3.2所示的安装方法。
图3.2舵机安装结构
3.1.4
采用接插件与焊接结合的方式连接传感器、主控板、编码器、电机驱动电路、电机、赛道起始检测等单元,既考虑可靠性,又兼顾结构调整与安装的便利性。具体安装结构如图3.3所示,
图3.3主控板安装结构
[6]卓晴.基于磁场检测的寻线小车传感器布局研究[J].清华大学.2009
[7]杨延玲.载流直导线的电磁场特性分析[J].山东师范大学.2007
[8]王毅敏.马丽英等.一种改进的数字PID控制算法及其在励磁系统中的应用电网技术[J].1998
[9]高金源,夏洁.计算机控制系统[M].清华大学出版社.2007
本校积极组队参加第六届“飞思卡尔”杯全国大学生智能汽车竞赛。从2010年底着手准备,历时半年多,经过不断试验设计,最终设计出较为完整的智能赛车。在赛区比赛中获得了较好的综合性能和成绩。
在本次比赛中,采用大赛组委会统一提供的竞赛车模,采用飞思卡尔16位微控制器MC9S12XS128作为核心控制单元,构思控制方案及系统设计,进行包括机械结构的调整与优化,硬件的设计与组装、软件控制算法的编写与改进等过程(小车上的具体方案模块有传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等)从而实现小车智能化的识别道路,最终实现智能化竞速。

第八届飞思卡尔智能车电磁组技术报告华德思源队

第八届飞思卡尔智能车电磁组技术报告华德思源队
1.1 大赛简介........................................................................................................ 1 1.2 智能车系统介绍............................................................................................ 2 1.3 章节安排........................................................................................................ 3 第二章 智能车机械调校..........................................................................................5 2.1 前轮调整........................................................................................................ 5 2.2 舵机固定........................................................................................................ 8 2.3 降低虚位........................................................................................................ 9 2.4 差速调整........................................................................................................ 9 2.5 齿轮啮合...................................................................................................... 10 2.6 调整重心...................................................................................................... 10 2.7 零件制作...................................................................................................... 11 第三章 智能车硬件系统........................................................................................13 3.1 单片机最小系统.......................................................................................... 13 3.2 电源模块...................................................................................................... 14 3.3 传感器模块.................................................................................................. 15

飞思卡尔电磁组

飞思卡尔电磁组

智能车简介
飞思卡尔智能车大赛分三种赛组:
摄像头组
光电组
电磁组
调试视频
调试视频
电磁组原理概述
车模直立行走比赛是要求仿照两轮自平衡电动车的行进模式,让车模以两
个后轮 驱动进行直立行走。 在电磁组比赛中,利用 车模双后轮驱动的特点,实现两轮自平衡行走。相 对于传统的四轮行走的车 模竞赛模式,车模直立行走在硬件设计、控制软件开发 以及现场调试等方面提出了更高 的要求。
原理篇
原理篇
• 1.路径检测 • 2.直立控制 • 3.算法设计
• 路径检测的整体思路流程:
• 磁场感应 选频 放大 检波 A/D采集(单片机萨法尔定律可求得通电的导线周 围空间上某一定点的磁场强度。
• 再由法拉利定律和楞次定律可得处在该点处磁感线圈的感应 电动势大小
算法设计
• 在车模控制中的直立、速度和方向控制三个环节中,都使用 了比例微分(PD)控制,这三种控制算法的输出量最终通过 叠加通过电机运动来完成。 • (1)车模直立控制:使用车模倾角的PD(比例、微分)控 制;
• (2)车模速度控制:使用PD(比例、微分)控制; • (3)车模方向控制:使用PD(比例、微分)控制。
单 管 共 射 交 流 放 大 电 路
检波电路
• 测量放大后的感应电动势的幅值E可以有多种方法。最简单的 方法就是使用二极管检波电路将交变的电压信号检波形成直 流信号,然后再通过单片机的AD采集获得正比于感应电压幅 值的数值。
A/D输入
单片机
检测部分的系统框图
直立行走的原理
• 车模直立行走比赛是要求仿照两轮自平衡电动车的行进模式, 让车模以两个后轮驱动进行直立行走。
车模控制任务分解图
• 三个分解后的任务各自独立进行控制。由于最终都是对同一 个控制对象(车模的电机)进行控制,所以它们之间存在着 耦合。这三个任务中保持车模平衡是关键。由于车模同时受 到三种控制的影响,从车模平衡控制的角度来看,其它两个 控制就成为它的干扰。因此对车模速度、方向的控制应该尽 量保持平滑,以减少对于平衡控制的干扰

电磁组_飞思卡尔

电磁组_飞思卡尔

小车代码源程序RouteTest.c#include <hidef.h> /* common defines and macros */#include <MC9S12XS128.h> /* derivative information */#include "main.h"#define uint unsigned intuint AD0,AD1,AD2,AD3,AD4,AD5,AD6,AD7,AD8,AD9,ADFULL=0; uint A0=0,A1=0,MAXTEMP0,MINTEMP0,MAXTEMP1,MINTEMP1; uint A2=0,A3=0,MAXTEMP2,MINTEMP2,MAXTEMP3,MINTEMP3; uint A4=0,A5=0,MAXTEMP4,MINTEMP4,MAXTEMP5,MINTEMP5; uint A6=0,A7=0,MAXTEMP6,MINTEMP6,MAXTEMP7,MINTEMP7; uint A8=0,A9=0,MAXTEMP8,MINTEMP8,MAXTEMP9,MINTEMP9;void RouteTest(void){while(!ATD0STAT2_CCF0); //判断通道0是否转换完成AD0=ATD0DR0;if(A0==0){MAXTEMP0=AD0;MINTEMP0=AD0;}else{if(MAXTEMP0<AD0) MAXTEMP0=AD0;if(MINTEMP0>AD0) MINTEMP0=AD0;}A0++;if(A0==LENGTH) {MAXTEMP0=MAXTEMP0-MINTEMP0;}while(!ATD0STAT2_CCF1); //判断通道1是否转换完成 AD1=ATD0DR1;if(A1==0){MAXTEMP1=AD1;MINTEMP1=AD1;}else{if(MAXTEMP1<AD1) MAXTEMP1=AD1;if(MINTEMP1>AD1) MINTEMP1=AD1;}A1++;if(A1==LENGTH) {A1=0;MAXTEMP1=MAXTEMP1-MINTEMP1;}while(!ATD0STAT2_CCF2); //判断通道2是否转换完成 AD2=ATD0DR2;if(A2==0){MAXTEMP2=AD2;MINTEMP2=AD2;}else{if(MAXTEMP2<AD2) MAXTEMP2=AD2;if(MINTEMP2>AD2) MINTEMP2=AD2;}if(A2==LENGTH) {A2=0;MAXTEMP2=MAXTEMP2-MINTEMP2;}while(!ATD0STAT2_CCF3); //判断通道3是否转换完成 AD3=ATD0DR3;if(A3==0){MAXTEMP3=AD3;MINTEMP3=AD3;}else{if(MAXTEMP3<AD3) MAXTEMP3=AD3;if(MINTEMP3>AD3) MINTEMP3=AD3;}A3++;if(A3==LENGTH) {A3=0;MAXTEMP3=MAXTEMP3-MINTEMP3;}while(!ATD0STAT2_CCF4); //判断通道4是否转换完成 AD4=ATD0DR4;if(A4==0){MAXTEMP4=AD4;MINTEMP4=AD4;}else{if(MAXTEMP4<AD4) MAXTEMP4=AD4;if(MINTEMP4>AD4) MINTEMP4=AD4;}A4++;if(A4==LENGTH) {A4=0;MAXTEMP4=MAXTEMP4-MINTEMP4;}while(!ATD0STAT2_CCF5); //判断通道5是否转换完成 AD5=ATD0DR5;if(A5==0){MAXTEMP5=AD5;MINTEMP5=AD5;}else{if(MAXTEMP5<AD5) MAXTEMP5=AD5;if(MINTEMP5>AD5) MINTEMP5=AD5;}A5++;if(A5==LENGTH) {A5=0;MAXTEMP5=MAXTEMP5-MINTEMP5;}while(!ATD0STAT2_CCF6); //判断通道6是否转换完成 AD6=ATD0DR6;if(A6==0){MAXTEMP6=AD6;}else{if(MAXTEMP6<AD6) MAXTEMP6=AD6;if(MINTEMP6>AD6) MINTEMP6=AD6;}A6++;if(A6==LENGTH) {A6=0;MAXTEMP6=MAXTEMP6-MINTEMP6;}while(!ATD0STAT2_CCF7); //判断通道7是否转换完成 AD7=ATD0DR7;if(A7==0){MAXTEMP7=AD7;MINTEMP7=AD7;}else{if(MAXTEMP7<AD7) MAXTEMP7=AD7;if(MINTEMP7>AD7) MINTEMP7=AD7;}A7++;if(A7==LENGTH) {A7=0;MAXTEMP7=MAXTEMP7-MINTEMP7;}while(!ATD0STAT2_CCF8); //判断通道8是否转换完成if(A8==0){MAXTEMP8=AD8;MINTEMP8=AD8;}else{if(MAXTEMP8<AD8) MAXTEMP8=AD8;if(MINTEMP8>AD8) MINTEMP8=AD8;}A8++;if(A8==LENGTH) {A8=0;MAXTEMP8=MAXTEMP8-MINTEMP8;}while(!ATD0STAT2_CCF9); //判断通道9是否转换完成 AD9=ATD0DR9;if(A9==0){MAXTEMP9=AD9;MINTEMP9=AD9;}else{if(MAXTEMP9<AD9) MAXTEMP9=AD9;if(MINTEMP9>AD9) MINTEMP9=AD9;}A9++;if(A9==LENGTH) {A9=0;MAXTEMP9=MAXTEMP9-MINTEMP9;}ADFULL=ADFULL+1;}CarControl.c#include <hidef.h> /* common defines and macros */ #include <MC9S12XS128.h> /* derivative information */ #include "SetPwm.h"#include "main.h"#include "RouteTest.h"#define uint unsigned int#define uchar unsigned char#define value01L -43#define value23L -94#define value45L -90#define value67L -120#define value89L -60#define value01R 43#define value23R 90#define value45R 110#define value67R 130#define value89R 60//#define bentspeed 45//#define dirspeed 45#define valueDL -220#define valueDR 220uint SPEED;//小车速度int CARREL01=0,CARREL23=0,CARREL45=0,CARREL67=0,CARREL89=0; //小车偏移量int ERROR=4050,D_ERROR=0,LASTERROR=4050,E_ERROR=4050,ERRORREL=0; int speedrel=0;uint setspeed=60,realspeed=0;void Delay10us(uint m) //延时10us{uint u;for(;m>0;m--)for(u=0;u<38;u++);}void CarControl(void){//采样100个数据if(ADFULL==LENGTH) {ADFULL=0;//***********************************************CARREL01=MAXTEMP0-MAXTEMP1;CARREL23=MAXTEMP2-MAXTEMP3;CARREL45=MAXTEMP4-MAXTEMP5;CARREL67=MAXTEMP6-MAXTEMP7;CARREL89=MAXTEMP8-MAXTEMP9;if(CARREL01>value01R)//01右转处理{ERROR=4050+CARREL01-value01R;if(ERROR>=4100)ERROR=4100;setspeed=dirspeed;}if(CARREL23>value23R)//23右转处理{ERROR=4100+2*(CARREL23-value23R);if(ERROR>=4264)ERROR=4264;setspeed=dirspeed;}if(CARREL45>value45R)//45右转处理{ERROR=4264+6*(CARREL45-value45R);if(ERROR>=4411)ERROR=4411;setspeed=40;}if(CARREL67>value67R)//67右转处理{ERROR=4411+6*(CARREL67-value67R);if(ERROR>=4600)ERROR=4600;setspeed=bentspeed;}//以上是右转弯处理//******************************************************************* ******//以下是左转弯处理if(CARREL01<value01L)//01{ERROR=4050+CARREL01-value01L;if(ERROR<=4000)ERROR=4000;setspeed=dirspeed;}if(CARREL23<value23L)//23{ERROR=4000+3*(CARREL23-value23L);if(ERROR<=3886)ERROR=3886;setspeed=dirspeed;}if(CARREL45<value45L)//45{ERROR=3886+4*(CARREL45-value45L);if(ERROR<=3794)ERROR=3794;setspeed=(dirspeed+bentspeed)/2;}if(CARREL67<value67L){ERROR=3794+8*(CARREL67-value67L);if(ERROR<=3600)ERROR=3600;setspeed=bentspeed;}D_ERROR=D_ERROR+ERROR-LASTERROR; //误差累积计算 if(D_ERROR>valueDR || D_ERROR<valueDL ) {ERRORREL=D_ERROR;}LASTERROR=ERROR; //保存前一次误差E_ERROR=ERROR+ERRORREL; //叠加误差累计值if(E_ERROR>4600) E_ERROR=4600;if(E_ERROR<3600) E_ERROR=3600;PWMDTY23=E_ERROR;ERRORREL=0;//PWMDTY01=bentspeed;//**************速度控制*************************realspeed=(xishu+1)*speed;speedrel=setspeed-realspeed;if(speedflag==0){if(speedrel<=-10 && (E_ERROR>4400 ||E_ERROR<3800)){PWMDTY45=90; //反转迅速减速PWMDTY01=0;}else{PWMDTY45=0;PWMDTY01=setspeed;}}else{PWMDTY01=setspeed;PWMDTY45=0;}}}Main.c#include <hidef.h> /* common defines and macros */#include <MC9S12XS128.h> /* derivative information */#include "RouteTest.h"#include "CarControl.h"#include "SetPwm.h"#define uint unsigned int#define uchar unsigned char//#define dirspeed 60uint STOPCAR=0,speed,speedsum=0,xishu=0,flag=0,jishi=0; uint bentspeed=0,dirspeed=0;uint speedflag=0;void Delay10(uint m) //延时10us{uint u;for(;m>0;m--)for(u=0;u<38;u++);}void Delay(int k) //延时k*1ms{int u;for(;k>0;k--)for(u=0;u<3998;u++);}//总线时钟设置void setbusclock(void){SYNR = 0x02;REFDV = 0x01;while (!(CRGFLG&0x08));CLKSEL =0x80;}/*****************************************************功能:时基中断初始化,实现5ms中断500us进行一次测速。

电磁组-华南理工大学-Crusader技术报告

电磁组-华南理工大学-Crusader技术报告

第七届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学校:华南理工大学队伍名称:Crusader参赛队员:施尚军陈迪王艺霖带队老师:陈安关于技术报告和研究论文使用授权的说明本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。

参赛队员签名:带队教师签名:日期:目录第一章引言 (1)1.1 概述 (1)1.2 系统框架图及车模 (1)第二章硬件设计 (3)2.1 电源模块 (3)2.2 K10最小系统模块 (4)2.2.1 电源稳压电路 (4)2.2.2 J-TAG调试接口 (4)2.2.3 单片机外部接口 (5)2.2.4 其他外围电路 (5)2.3 加速度及陀螺仪模块 (6)2.4 电磁传感器运放电路 (7)2.5 电机驱动模块 (8)2.6 速度检测模块 (9)2.7 调试模块 (10)2.7.1 无线调试模块 (10)2.7.2 液晶调试模块 (10)2.7.3 拨码开关 (11)第三章软件设计 (12)3.1 程序流程图 (12)3.2 自平衡环节 (12)3.3 赛道检测 (15)3.4 软件滤波 (17)3.5 PID控速 (18)3.6 上位机分析数据 (19)第四章车模主要技术参数 (21)第五章结论 (22)参考文献 (23)第一章引言1.1 概述“飞思卡尔”全国大学生智能车比赛今年进行到第七届,比赛规则完善,为广大同学提供了一个良好的学习提高的平台。

第七届比赛,在原来电磁组的基础上要求车子只用两个轮子直立前进,这使得参赛选手对传感器的使用有更高的要求。

两轮直立车是一个倒立摆的模型,如何通过加速度计、陀螺仪控制车子稳定直立,这个早已有研究,大赛秘书处也给出了参考方案,这使得参赛队员比较容易入门,大赛的门槛很低。

飞卡知识竞赛题目

飞卡知识竞赛题目

山东大学(威海)飞思卡尔知识竞赛初赛试题(样题)姓名:年级:学号:手机号:一填空题(每空2分,共22分)(1)HCS12微控制的工作电压为()(2)飞思卡尔智能车竞赛最初起源于哪个国家()(3)摄像头组一般使用的摄像头是CCD和()(4)第七届全国飞思卡尔智能车山东赛区在哪个学校举办()(5)飞思卡尔智能车赛要求使用的传感器不能超过()个(6)伺服电机不超过几个()(7)PWM即()(8)第八届全国飞思卡尔智能车赛中电磁组中如果选用陀螺仪,则必须选择()公司的()系列的陀螺仪。

(两空可选答一空,如果两空均答对则得4分但本题最多不超过20分)(9)AD转换中A表示的是()信号,D表示的是()信号。

(10)如果有一车模通过连续扫描赛道反射点的方式进行路径检测的属于()组车模。

二选择题(每题2分,共20分)(请勿在A、B、C、D上打勾否则不得分)1、以下学校中哪所学校是第七届飞思卡尔智能车全国总决赛举办地()A.南京师范大学B.北京科技大学C.常熟理工学院D.杭州电子科技大学2、请问CCD摄像头的额定工作电压是()A.3.3VB.5VC.7.2VD.12V3、程序的灵魂是()A.算法B.函数C.数据结构D.表达式4、以下哪种软件是用来绘制PCB(电路板)的?()A. KeilB.ProteusC.Visual C++D.Altium Designer5、请问二进制数100101011110011110是()A.奇数B.偶数6、请把十六进制数5A1D转化为二进制()A.1000100011000110B.110101********* C101101001011101 D.1011010000111017、飞思卡尔是()制造商。

A.汽车B.半导体C.汽车芯片D.手机8、第六届与第七届比赛规则变动最大的是以下哪个组()A.摄像头组B.光电组C.电磁组D.光电平衡组9、第七届比赛规则中要求摄像头组用()车模,光电组用()车模,电磁组用()车模。

飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍写在之前的话:1、⽬前我是⼀名在校学⽣,这也是我第⼀次写博客,不周之处,请多谅解;2、此算法并⾮原创,借鉴⾃⼭东德州学院第⼋届⽩杨队(PS:个⼈看法,对于⼀些⼈把别⼈的开源东西改头换⾯⼀下就说是⾃⼰的原创⾏为⼗分鄙视);3、对于此算法的理解和说明并⾮纸上谈兵,算法已经被我运⽤到了⼩车⽐赛中并取得好的成绩(具体就不多说了,⽐赛时车莫名其妙坏了,⽐赛前调试的速度绝对能进国赛,⽐较遗憾),总之这算法是我尝试过的最好的算法;4、这⼀次所介绍的只是路径算法和⼀些知识普及,后⾯有时间会介绍其余部分算法及许多好的思路(舵机电机控制思路(不只是简单的PID),双车策略);5、希望对于这⽅⾯有涉及的⼈能与我联系并交流或指出不⾜之处。

---------------------------------------------------------------分割线-----------------------------------------------------------------------------⼀、没有这⽅⾯了解的可以看看 飞思卡尔智能车分为三组:摄像头、光电、电磁,我做的是电磁车,三种车队区别在于传感器的不同,所以获得路径信息的⽅法也不⼀样,摄像头和光电识别的是赛道上的⿊线(⽩底赛道),⽽电磁车则是检测埋在赛道下的通⼊100mh电流的漆包线,摄像头和光电采⽤的是摄像头和ccd作为传感器,电磁则是⽤电感放在漆包线周围,则电感上就会产⽣感应电动势,且感应电动势的⼤⼩于通过线圈回路的磁通量成正⽐,⼜因为漆包线周围的磁感应强度不同,因此不同位置的电感的感应电动势就不同,因此就可以去确定电感位置;因此在车⼦前⾯设置了50cm的前瞻,电感布局如下(怎么发不了图⽚):分为两排,前排3个,编号0,1,2(前期还加了两个竖直电感⽤来帮助过直⾓弯,后来改为了⼋字电感);后排2个,编号3,4;现在车⼦获得了不同位置的感应电动势的⼤⼩了,但这些值是不能处理的:1、感应电动势太微弱;2、是模拟信号,信号太微弱就放⼤它;这就涉及到模拟电路的知识了,就不多说了(因为要把这讲完到PCB绘制的篇幅就⾜够写另开⼀号专门写这些⽅⾯来(PS:题外话(我的题外话⽐较多)):放⼤部分外围你设计的再好也抵不过⼀个更好的芯⽚,有两个例⼦,⼀个是我⾃⼰的:之前⽤的是NE5532,但是效果不理想,加了好多什么滤波,补偿,都⽤上,没⽤,软件⾥处理后⾯再说,后来⼀狠⼼换了AD620,感觉像是春天来了,因为它是仪⽤放⼤器,还有就是贵。

飞思卡尔AD模块总结

飞思卡尔AD模块总结

飞思卡尔H12系列AD(模数转换)模块总结————下面对CodeWarrior IDE中生成的有关AD的函数做个总结一、函数用法。

1.void ADC_PE_Init(void){。

}初始化函数,在主函数中PE_low_level_init();语句中执行,不用用户调用。

初始化中EnUser=1。

2.ISR(ADC_PE_Interrupt){。

}AD中断入口函数,AD中断时系统自行调用,用户可忽略。

3.static void HWEnDi(void){ }使能或禁止AD转换。

系统调用4byte ADC_PE_Enable(void){if (EnUser) { /* Is the device enabled by user? */return ERR_OK; /* If yes then set the flag "device enabled" */}EnUser = TRUE; /* Set the flag "device enabled" */HWEnDi(); /* Enable the device */return ERR_OK; /* OK */}有事件发生时,使能AD5.byte ADC_PE_Disable(void){if (!EnUser) { /* Is the device disabled by user? */return ERR_OK; /* If yes then OK */}EnUser = FALSE; /* If yes then set the flag "device disabled" */ HWEnDi(); /* Enable the device */return ERR_OK; /* OK */}没有事件发生时,禁止AD6.byte ADC_PE_Start(void){if (!EnUser) { /* Is the device disabled by user? */return ERR_DISABLED; /* If yes then error */}if (ModeFlg != STOP) { /* Is the device in running mode? */return ERR_BUSY; /* If yes then error */}ModeFlg = CONTINUOUS; /* Set state of device to the continuos mode */HWEnDi(); /* Start measurement */return ERR_OK; /* OK */}调用这个函数可让所有在bean中设置的AD通道,连续转换一次,每次转换的数据存储在文件开头定义的ADC_PE_OutV [ ]数组中。

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

基准电压总结
通常AD/DA芯片都有两个电压输入端,一个是Vcc,一个是Vref,上图所示的芯片是DAC0832,Vcc是芯片的工作电压,Vref是DA转换的基准电压,AD/DA芯片对Vcc 的要求不是很高,但对基准电压Vref的要求就比较高。

S12的VRH引脚就是AD转换的基准电压输入端,在最小系统板上通过0Ω电阻和Vcc连在了一起。

一、什么叫基准电压
我们知道,AD/DA转换时需要一个电压参考值,而且要求这个参考值要稳定,这个稳定的电压参考值就叫做基准电压。

比如AD(8位)转换时,假设参考电压时5V,输入量是2V,则转换后得到的数字量就是(2/5)*255=102。

二、智能车制作过程中遇到的问题
最开始我们组是利用LM2940稳压芯片输出的5V电压作为S12芯片内部AD转换的电压参考值,但采集回来的电磁信号AD值时常出现跳变,为什么?经过排除其他原因后,我们发现原因就在于基准电压不稳定,夸张地举个例子(8位AD),假设参考电压是5V,采集到的电磁模拟信号是2V,那么得到的数字量是102,但是由于某种原因参考电压突然变为4V,那么得到的数字量就突变为127,转换不准确,使得S12单片机产生误动作,要是时常发生这类突变,后果可想而知,车子根本跑不了!!!
三、LM2940与MC1403芯片
通过上面举的例子,我想说的是,LM2940输出的5V电压并非稳定,因为LM2940属于功率型稳压芯片,就是说其输出的电压会受流过LM2940的电流的影响,电流短时间发生较大变化时,其输出电
压也会相应发生变化(1V以内,典型值是0.5V),由于挂在LM2940上的负载较多,电流值变化较大,也就是说输出电压也会变化,而AD转换需要的却是一个稳定的参考电压,显然LM2940无法满足这个条件,因此AD值跳变是肯定的;
那么用哪个芯片作为基准电压更为恰当呢,答案肯定是有很多的,我们后来采用的芯片是MC1403,其输出电压很稳定,输出电压值为2.5V,关键在于即使输入电压变化较大,MC1403的输出误差也在1%以内,显然这可以满足我们AD转换所需基准电压的要求。

下图是MC1403芯片的一个简介。

但是,2.5V作为基准电压显然是太低啦,因此我们需要对其进行升压,利用运算放大器的放大功能,采用的运算放大器是LMV358,电路图如下:
图中VRH为S12芯片的AD转换参考电压输入引脚,在最小系统板上通过0欧姆电阻与S12芯片的电源输入端VCC相连,把0欧姆电阻去掉就可以使用LMV358输出的精准电压啦。

那么升压后的电压多少才合适呢?升为5V?
肯定是不能升为5V的,升到5V的话就跟使用LM2940作为基准电压的效果是一样的,我们知道,运算放大器工作分为线性放大区和饱和区,工作在线性放大区时,VRH=(1+R11/R10)*2.5,输出电压与LMV358工作电压VCC无关,工作在饱和区时,VRH=VCC=DC5V,此时LMV358也就失去了线性放大的作用,VRH 还是会跟随LM2940输出电压变化,所以我们把VRH定为4V (LM2940的输出电压不会低于4V),也可以定为4V以下,这样LMV358就工作在线性放大区,AD转换的基准电压VRH就精准啦,也就消除了AD值跳变。

电磁组:李旺旺。

相关文档
最新文档