模拟量输入在使用过程中也十分常见,它在很多场合都应用到,但其用法又各有不同,下面列举一些常见的类型进行说明。
  第一种为采用模拟口读取离散量的状态,如某开关可能有高、低、悬空三种状态均需能准确判断,这种情况下可以采用一个模拟口来采集。进一步的看,可能某些开关并不仅仅只有三种状态,四、五、六甚至更多均有可能,如一些常见的方向盘上的音响开关、巡航开关等,可能有更多状态,通常的做法便是用模拟口来采集。
  第二种为采用模拟口来读取连续量的状态,常用于一些传感器上,如悬架高度传感器、加速位置或油门踏板位置传感器、光线亮度调节开关、光照强度传感器等等。
  下图分别为方向盘上的开关和高度传感器(红框里圈出来的是传感器下摆臂、其感应部分在红框左上角处)。

  采样精度取决于AD转换位数,对于有特别的精度要求的状况,需进行强调,不过一般车用MCU自带的AD口均能满足车上使用的要求,如12位的电压采样可达到2048分之一伏精度,一般情况下这是足够用的。
  谈到AD采样必须提到它的参考电和参考地,其实理论上而言低端输入和高端输入也是有参考电和参考地的,只不过低端输入的参考地直接接车身地了,高端输入的参考电源来自于输入端。对于参考电源,模拟量输入很多时候均应由本模块提供,这块主要由硬件工程师进行worst case分析及在工作电压范围(至少9~16V)内是否能实现准确采样的分析及结合地漂情况来确认是要由本模块提供参考电源及将地返回。如果说不会计算又实在没有比较专业的硬件工程师来帮忙,则建议按经验来做,要是经验也没有就参考别人的做法去做(比如参考其他大厂家的电路)。对于接地,如果输入量是一些实时变化的传感器信号,是需要返回至采样模块的;一些要求高的系统如电源管理相关的,最好也是返回。但有时也要看具体情况,因为若一个AD采样口只用于某个单档开关的状态判定,是很可能不需要返回地的,电源也可接在模块内部、直接采用上拉形式搞定。即实际上外部有可能只接一根线便可。所以在设计时,参考电源的线是接到输入端去还是在模块内部就可以、地线是就近接车身还是接回本模块,可以详细考虑清楚,因为这些均和成本有关(不接回来可以省线束和端口、都是要成本的)。对于这块的系统经验,如果没有很强的分析能力,最好的办法就是对对标车型的电路进行统计分析(因为对标车型的设计一般是经过了实践验证的、可信度高),在保证最设计最简的同时又达到成本最优。
  另一项需要说明的是由于车上的电压变化比较大,一般我们说的9~16V的工作电压范围只是一个概括性的说明,而很多功能或模块的工作电压需根据实际需求定义更细的要求。而通常我们所说的工作电压范围均是指电源电压,而这个“电源电压”并不一定就是模拟采样的参考电源电压,对于不同的使用场合,模拟采样的参考电源可以直接采用整车的12V电源、也可采用进行完电压转换的“5V”(实用时根本不会是精确的5V)电源,后者用于工作电压范围要求更高的场合;实际使用时对于输入量的大小判定采用百分比判定(输入电压比参考电压)比采用绝对值来判定来得更为可靠,但前者要多占用一个MCU口以用于参考电压的采样,而同时该口也兼具了参考电源的诊断功能。
  与前面的开关类似,对于开关式的AD输入也要讲究湿电流、休眠唤醒之类的。这里有人会提及AD信号的唤醒如何处理,现行的做法:对于该AD周期采样,休眠前将采样值存起来(存于哪种内存看具体要求和策略),休眠后周期性醒来检测,如果检测到的新值与旧值之差大于某值(预先定义或标定),则唤醒、进行初始化操作。

  以下是模拟量输入的示意和说明。

A.01.03-模块的输入—模拟量输入的更多相关文章

  1. A.01.02—模块的输入—高端输入

    高端输入即一个高电平信号输入到模块,模块采样时最典型的是采用下拉电阻采样,当然,还有限流电阻和分压电阻,具体可以参见实际电路. 高端输入在汽车上用得不多,这种类型的输入既可以是开关提供的也可以是模块提 ...

  2. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  3. Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...

  4. A.01.01—模块的输入—低端输入

    汽车电子模块的输入一般包含数字量低端输入.数字量高端输入.模拟量输入.脉宽调制输入.总线信号输入.脉冲信号输入,对于无线信号输入和视频信号音频信号我们不做讨论. 数字量低端输入是应用最为广泛的一种输入 ...

  5. 19 01 03 css 中 reset 模块 设置

    主要就是让到时候 打入代码时候  把一些bug去除   或者 让一些固有的格式取消 /* 将标签默认的间距设为0 */ body,p,h1,h2,h3,h4,h5,h6,ul,dl,dt,form,i ...

  6. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  7. 01. Numpy模块

    1.科学计算工具-Numpy基础数据结构 1.1.数组ndarray的属性 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成:① 实际的数据② 描述这些数据的元数据 注意数组格式, ...

  8. 01: socket模块

    网络编程其他篇 目录: 1.1 socket理论部分 1.2 socket处理单个连接 和 同时接受多个连接 1.3 socket实现远程执行命令,下载文件 1.4 通过socket实现简单的ssh ...

  9. day 21 01 序列化模块和模块的导入的复习以及包的初识

    day 21 01 序列化和模块的导入的复习以及包的初识 1.序列化模块 什么是序列化模块:数据类型转化成字符串的过程就是序列卷 为什么要使用序列化模块:为了方便存储和网络传输 三种序列化模块: (1 ...

随机推荐

  1. sql学习内容记录

    1.left函数 left(字段,长度):获取指定字段左侧的数据,类似substring函数 2.union / union all 将多个记录合并成一个完整的数据集 3.insert into se ...

  2. JS 获取链接中的参数

    1.获取链接全部参数,以对象的形式返回 //获取url中参数 function GetRequest() { var url = location.search; //获取url中"?&qu ...

  3. C#复习笔记(1)--C#开发的进化史

    前言:陆续使用C#已经有一年半的时间.中间做过一些应用,现在为了有更高的提升,决定重新看一遍C# in depth,并总结一些笔记. 一.从简单的数据类型开始 上面是C#1到C#4中的一部分演变历程. ...

  4. Oracle列转行函数LISTAGG()

    --Oracle列转行函数LISTAGG() with tb_temp as( select 'China' 国家,'Wuhan' 城市 from dual union all select 'Chi ...

  5. day 7-14 数据库完整性约束

    一. 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY 标示该字段为表的主键,可以唯一的标示记录 FOREIGN KEY 标示该 ...

  6. Eclipse的智能提示的设置

    智能提示修改方式是: Windows——>Preferences——>Java-->Editor-->Content Asist,在Auto activation trigge ...

  7. git reset 版本回退的三种用法总结

    git reset (–mixed) HEAD~1 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) git reset –soft ...

  8. 线程同步Volatile与Synchronized(一)

    volatile 一.volatile修饰的变量具有内存可见性 volatile是变量修饰符,其修饰的变量具有内存可见性. 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改 ...

  9. rediret 加/与不加/的区别

  10. 【Python】Python-Numpy教程

    Numpy的使用 读txt数据: · genfromtxt import numpy as np print(help(np.genfromtxt)) #data = np.genfromtxt(&q ...