电路设计为什么要分数字地和模拟地?如何对模拟地与数字地隔离?

  做过电路设计的同学都会知道,电路设计中对于数字地,模拟地和电源地的区分在某些应用中要求是十分严格的。有的同学就会不明白:那么这些地有什么区别呢,为什么要区分这些地呢?

  首先要明确数字(DIGTAL)和模拟(ANALOG)的概念。

  所谓数字,即0和1、真(TRUE)和假(FALSE)、低(LOW)和高(HIGH)。也就是说在数字电路里,1代表着高电平,0代表着低电平在不同的数字电路中,这些高电平代表的范围也不同。现在我们参考常用的TTL电平,在TTL电平中+5V代表高电平即1,0V代表低电平即0。但是实际中高低电平是有一个范围的,例如0~0.8V都是低电平,当这个范围内的电压输入到数字器件里,比如我输入0.2V就会被识别为低电平,高电平也是同理。通过这个例子可以看出来数字电路对于噪声是有一定的容忍能力的。

  所谓模拟,就是线性的量,只要是线性变化的就可以看做是模拟量。例如电压、电流就是典型的模拟量。很多模拟器件输出都是电压。模拟量不同于数字,它对于噪声是零容忍,对于模拟量来说,噪声越低越好,对于数字量而言0.2V的噪声可能不会带来什么影响,但是对于模拟量来说,0.2V的噪声就会对结果造成十分巨大的误差。例如我使用STM32的ADC来读取光强传感器的数值 ,STM32ADC的读取范围是0~3.3V,假设本来我读出来的光强转换为电压为0.4V,这个时候来一个0.2V的噪声,就变成了0.2V或者0.6V,相比0.4V来说就产生了50% 的误差,最终我转换出来的光强值就相差了50%。从这个例字就可以看出来,模拟量对噪声是不可容忍的。

  既然明白了模拟和数字,那么为什么他们要隔离呢?既然都知道数字是无数的0和1组成的,那么也以将数字量看成无数脉冲。根据信号与系统中学习的傅里叶变换,这些脉冲是可以分解成无数频率不同的正弦/余弦曲线的,也就是噪声。如果将数字地与模拟地直接相连,这些噪声将会进入模拟端,对模拟量产生影响。所以,模拟地和数字地要进行隔离。

  常见的模拟地与数字地的隔离方式有:串联一个小磁珠或者电感在模拟地与数字地中间,设置一小块铜皮连接模拟地与数字地。串联一个0R电阻在数字地与模拟地中间。

  先来看串联磁珠和电感。这两个相当于带阻限波器,只对某个频点的噪声有显著的抑制作用,选用这种隔离方式的时候,要计算噪声的主要频率为多少,选择合适型号的磁珠或电感,如果对于噪声频率来源、计算都不确定,那么不建议使用这种方法;

  0R电阻相当于很窄的电流通路,使用0R电阻对任意频带上的噪声都有衰减作用,设置一小块铜皮的作用类似串联0R电阻。

  至于电源地,这个可以直接和数字地相连,但是要注意电源地中的电流回路,要设计好电源地中通过大电流的路径。一般有两种方式,第一种是大电流环绕板子一圈,第二种是大电流从输入端引向板子中心,然后呈树干状发散,最后汇聚在一起。

原文地址:https://www.cnblogs.com/Wishengine/p/12611556.html

时间: 2024-07-31 09:31:46

电路设计为什么要分数字地和模拟地?如何对模拟地与数字地隔离?的相关文章

4个线程例子,2个线程对同一数字加法运算另外2个线程对同一共享数字减法运算

package com.saic.grape.controller; public class Data { private int j = 0; /** * 加法 */ public synchronized void inc() { j++; System.out.println("inc 加法运算>>" + j); } /** * 减法 */ public synchronized void dec() { j--; System.out.println("

有1、2、3、4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?并把他们都输出。

/** * 有1.2.3.4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?并把他们都输出. * */ public class Test1 { public static void main(String[] args) { int num = 0, c = 0; for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { if (i != j &

61. 从1到n,共有n个数字,每个数字只出现一次。从中随机拿走一个数字x,请给出最快的方法,找到这个数字。如果随机拿走k(k&gt;=2)个数字呢?[find k missing numbers from 1 to n]

[本文链接] http://www.cnblogs.com/hellogiser/p/find-k-missing-numbers-from-1-to-n.html  [题目] 从1到n,共有n个数字(无序排列),每个数字只出现一次.现在随机拿走一个数字x,请给出最快的方法,找到这个数字.要求时间复杂度为O(n),空间复杂度为O(1).如果随机拿走k(k>=2)个数字呢? [分析] 题目给出的条件很强,数字是从1~n的数字,限制了数字的范围:每个数字只出现一次,限制了数字出现的次数:随即拿走了一

面试题3:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

package siweifasan_6_5; /** * @Description:在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2. * @Parameters: // Parameters: // numbers: an array of integers //

给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。

#include<iostream>#include<math.h>#include<stdlib.h>using namespace std;int main(){ /* * 给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入格式: 输入在一行中先给出N(1<N<10),随后是N个不同的非0个位数字.数字间以

【数字中国太极在行动系列报道】 “心中有数”的数字海南

作者 | 张戈 (公众号ID:TechECR) 海南省数据大厅已汇集各领域数据,全省运行状况均将实现"心中有数".海南省在国内率先建成贯穿"省-市县-乡镇-行政村"四级的"一张审批网".太极已逐步形成"云+数+应用"三位一体的"数字政府"建设模式. 海南省数据大厅,20米开外的弧形LED大屏,13个热点专题.来自全省558个系统的共享数据.3000多项核心特征指标尽在此屏幕中显示.这就是海南全省政务数据融合

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

题目描述: 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和. 思路: 1.创建输入对象2.输入字符串3.利用正则将字母分离出,剩余的每一个字符串即为待统计的每一个数字,存入字符串数组中 4.遍历数组,拿到字符串,存入创建的hashMap中,且键为该字符串,值为出现的次数:这里我使用的判断出现几次的技巧是借助hashSet的存储非重复元素的性质,每次拿到数组元素时同时进行存入hashSet的操作(具体代码中会有) 4.此时的hashMap中存储的即为出现的数字及其出现次数的对应键值对

身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X

function checkIdCardNo(idCardNo) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(idCardNo) === false) { wx.showToast({ title: '身份证号码不正确!', icon: 'none', }) return false; }

剑指offer(Java版)第一题:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 *请找出数组中任意一个重复的数字。 *例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。

/*在一个长度为n的数组里的所有数字都在0到n-1的范围内. * 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. * 请找出数组中任意一个重复的数字. * 例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3.*/ import java.util.*; public class Class1 { static class findRepeatedNumber{ public int findRepeatedN