SAR ADC 详细介绍

目录

SAR ADC简介

SAR ADC电路结构

逐次比较过程说明:


SAR ADC简介

为了能够使用数字电路处理模拟信号,必须将模拟信号转换为相应的数字信号,方能送入数字系统进行处理。压力、温度、声音等都是常见的模拟信号,将连续变化的模拟信号转换为离散的数字信号的器件就叫做模数转换器(ADC,Analog-Digital Converter)。

逐次逼近型ADC(Successive Approximation ADC)采用的是一种反馈比较型电路结构。它的构思是这样的:取一个数字量加到DAC上,于是得到一个对应的输出模拟电压。将这个模拟电压和输入的模拟电压信号相比较。如果两者不相等,则调整所取的数字量,直到两个模拟电压相等为止,最后所取的这个数字量就是所求的转换结果。

SAR ADC电路结构

SAR ADC的工作原理可以用图1所示的电路结构框图来说明。这种转换器的电路包含比较器CDAC寄存器时钟脉冲源控制逻辑等5个部分。

转换开始前先将寄存器清零,所以加到DAC的数字量也是全0.转换控制信号VL变为高电平时开始转换,时钟信号首先将寄存器的最高位置成1,使寄存器的输出为100...00。这个数字量被DAC转换成相应的模拟电压Vo,并送到比较器与输入信号VI进行比较。如果Vo>VI,说明数字过大了,则这个1应去掉;如果Vo<VI,说明数字还不够大,这个1应予保留。然后,再按同样的方法将次高位置1,并比较Vo与VI的大小以确定这一位的1是否应当保留。这样逐位比较下去,指导最低位比较完为止。这时寄存器里所存的数码就是所求的输出数字量。

上述的比较过程正如同用天平去称量一个未知重量的物体时所进行的操作一样,而所使用的砝码一个比一个重量少一半。

逐次比较过程说明:

如图2所示,这是一个输出为3位二进制数码的逐次逼近型ADC。图中的C为电压比较器,当VI≥Vo时,比较器的输出VB=0;当VI<Vo时,VB=1.FFA、FFB、FFC三个触发器组成了三位数码寄存器,触发器FF1~FF5和门电路G1~G9组成控制逻辑电路。
转换开始前先将FFA、FFB、FFC三个触发器置零,同时将FF1~FF5组成的环形移位寄存器置成Q1Q2Q3Q4Q5=10000状态。
转换控制信号VL变成高电平后,转换开始。第一个CLK脉冲到达后,FFA被置1而FFB、FFC被置0。这时寄存器的状态QAQBQC=100加到DAC的输入端上,并在DAC的输出端得到相应的模拟电压Vo。Vo和VI在比较器中比较,其结果不外乎两种:若VI≥Vo,则VB=0;若VI<Vo,则VB=1.同时,移位寄存器右移一位,使Q1Q2Q3Q4Q5=01000.
第二个CLK脉冲到达时FFB被置为1。若原来的VB=1,则FFB被置为0;若原来的VB=0,则FFB的1状态保留。同时移位寄存器右移一位,变成00100状态。
第三个CLK脉冲到达时FFC被置1。若原来的VB=1,则FFB被置为0;若原来的VB=0,则FFB的1状态保留。同时移位寄存器右移一位,变成00010状态。
第四个CLK脉冲到达时,同样根据这时的VB的状态决定FFC的1是否应当保留。这时FFA、FFB、FFC的状态就是所要的转换结果。同时,移位寄存器右移一位,变为00001状态。由于Q5=1,于是FFA、FFB、FFC的状态便通过们G6、G7、G8送到了输出端。
五个CLK脉冲到达后,移位寄存器右移一位,使得Q1Q2Q3Q4Q5=10000,返回初始状态。同时,由于Q5=0,门G6、G7、G8被封锁,转换输出信号随之消失。

为了减小量化误差,令DAC的输出产生-Δ/2的偏移量。这里的Δ表示DAC最低有效位输入1产生的输出模拟电压大小,它也就是模拟电压的量化单位。为使量化误差不大于Δ/2,在划分量化电平等级时应使第一个量化电平为Δ/2,而不是Δ。现在与VI比较的量化电平每次由DAC输出给出,所以应将DAC输出的所有比较电平同时向负的方向偏移Δ/2。
从这个例子中可以看出,3位输出的ADC完成一次转换需要5个时钟周期。如果是n位输出的ADC,则完成一次转换的所需的时间将为n+2个时钟周期。因此,SAR ADC的转换速度比并联型ADC低。
例如,一个输出为10位的SAR ADC完成一次转换需要12个时钟周期。然而,在输出位数较多时,SAR ADC的电路规模要比并联比较型小得多。因此,除了对转换速度要求特别高的场合,SAR ADC是集成ADC转换产品中用得最多的一种电路。


 参考视频:https://www.bilibili.com/video/BV1np4y1y7Yj?p=159

### 回答1: 要在ROS Noetic中安装Cartographer,可以按照以下步骤进行操作: 1. 首先,确保已经安装了ROS Noetic。如果没有安装,请先安装ROS Noetic。 2. 打开终端,输入以下命令来安装Cartographer: ``` sudo apt-get install -y python-wstool python-rosdep ninja-build ``` 3. 然后,创建一个工作空间并初始化wstool: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/cartographer-project/cartographer.git git clone https://github.com/cartographer-project/cartographer_ros.git cd .. rosdep update rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y ``` 4. 编译Cartographer: ``` catkin_make_isolated --install --use-ninja ``` 5. 设置环境变量: ``` source ~/catkin_ws/install_isolated/setup.bash ``` 6. 测试Cartographer是否安装成功: ``` roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=`rospack find cartographer_ros`/test/backpack_2d/cartographer_paper_deutsches_museum.bag ``` 如果一切正常,Cartographer就已经成功安装了。 希望这些步骤能够帮助你安装Cartographer。 ### 回答2: 首先,安装ROS Noetic。ROS Noetic 是一个特定版本的ROS,我们需要先安装 ROS Noetic,才能安装 Cartographer。 安装完 ROS Noetic 后,接下来是安装 Cartographer。 1. 添加 Cartographer 的软件源: ```bash sudo apt-get install -y python-wstool python-rosdep ninja-build stow cd ~/ mkdir -p cartographer_ws/src cd cartographer_ws wstool init src wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall wstool update -t src ``` 2. 安装依赖: ```bash src/cartographer/scripts/install_proto3.sh sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src --rosdistro=noetic -y ``` 3. 编译 Cartographer: ```bash catkin_make_isolated --install --use-ninja source install_isolated/setup.bash ``` 现在,Cartographer 的安装就完成了! 如果要验证是否安装成功, 转到某个已经运行的用于创建地图的ROS包目录中,并以仿真方式运行数据采集: ```bash source /opt/ros/noetic/setup.bash source /path/to/your/catkin_ws/devel/setup.bash roslaunch your_mapping_package your_cartographer_mapping.launch bag_filename:=/path/to/your/input.bag ``` 注意,这是一个示例,有关使用Cartographer的详细说明将涉及更多内容,例如如何运行机器人,生成bag文件和使用主题等等,还有一些常见的参数,用于地图构建,对于不同的应用程序可以配置各种也是不一样的。 ### 回答3: ROS Noetic是ROS的最新版本,其中包含了许多新的功能和统一的开发环境,使得ROS的开发和运行更加高效可靠。Cartographer是ROS下用于2D或3D SLAM的工具,其功能强大,使用也相对简单,是目前ROS下最受欢迎的SLAM算法之一。 那么如何在ROS Noetic中安装Cartographer呢?以下是一个简单的步骤: 1.首先,确保您已经安装了ROS Noetic并且ROS环境已经正常配置了,这可以通过运行以下几个命令来查看: $ echo $ROS_DISTRO noetic $ env | grep ROS 2.安装Cartographer依赖的一些库: $ sudo apt-get update $ sudo apt-get install -y python-wstool python-rosdep ninja-build $ sudo rosdep init $ rosdep update 3.使用wstool来获取Cartographer代码并建立软连接: $ cd ~/ $ mkdir catkin_ws $ cd catkin_ws/ $ wstool init src $ wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall $ wstool update -t src $ rm -rfv src/cartographer_ros/cartographer_ros/reading/* src/cartographer_ros/cartographer_ros/urdf/* src/cartographer_ros/cartographer_ros/tf/* src/cartographer_ros/cartographer_ros/msg/* src/cartographer_ros/cartographer_ros/srv/* $ rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y 4.编译Cartographer: $ sudo apt-get install -y google-mock libboost-all-dev $ sudo apt-get remove -y ros-${ROS_DISTRO}-catkin $ sudo apt-get install -y python-catkin-tools $ catkin_make_isolated --install --use-ninja 5.运行Cartographer: $ source ~/catkin_ws/install_isolated/setup.bash $ roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag 以上就是在ROS Noetic上安装Cartographer的简单步骤,当然,如果你是第一次安装ROS和Cartographer,在这个过程中可能会遇到一些错误,不过不要紧,通过搜索搜索引擎,或者参考Cartographer官方文档,你一定能够顺利完成安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值