当前位置:首页 > 原理
  • 解析几种编码器技术原理及优缺点

    编排 | strongerHuang 来源 | 捷配电子工程师笔记 编码器在运动控制类产品中比较常见 ,旋转编码器都是组成运动控制反馈回路的关键元器件,包括工业自动化设备和过程控制、机器人技术、医疗设备、能源、航空航天等。 作为将机械运动转换为电信号的器件,编码器可为工程师提供位置、速度、距离和方向等基本数据,用以优化整个系统的性能。 光学式、磁式和电容式是可供工程师使用的三种主要编码器技术。不过,要确定哪种技术最适合最终应用,还需要考虑一些因素。 本文将概述光学式、磁式和电容式三种编码器技术,并且略述各种技术的利弊权衡。 嵌入式专栏 1 光学编码器 多年来,光学编码器一直都是运动控制应用市场的热门选择。它由 LED 光源(通常是红外光源)和光电探测器组成,二者分别位于编码器码盘两侧。 码盘由塑料或玻璃制成,上面间隔排列着一系列透光和不透光的线或槽。码盘旋转时,LED 光路被码盘上间隔排列的线或槽阻断,从而产生两路典型的方波 A 和 B 正交脉冲,可用于确定轴的旋转和速度。 图 1:光学编码器的典型 A 和 B 正交脉冲,包括索引脉冲(图片来源:CUI Devices) 尽管光学编码器应用广泛,但仍有几点缺陷,在工业应用等多尘且肮脏的环境中,污染物会堆积在码盘上,从而阻碍 LED 光透射到光学传感器。 由于受污染的码盘可能会导致方波不连续或完全丢失,因而极大地影响了光学编码器的可靠性和精度。 LED 的使用寿命有限,最终总会烧坏,从而导致编码器故障。此外,玻璃或塑料码盘容易因振动或极端温度而损坏,因而限制了光学编码器在恶劣环境应用中的适用范围;将其组装到电机上不仅耗时,而且受污染的风险更大。 最后,如果光学编码器的分辨率较高,则会消耗 100 mA 以上的电流,进一步影响了它应用于移动设备或电池供电设备。 嵌入式专栏 2 磁性编码器 磁性编码器的结构与光学编码器类似,但它利用的是磁场,而非光束。 磁性编码器使用磁性码盘替代带槽光电码盘,磁性码盘上带有间隔排列的磁极,并在一列霍尔效应传感器或磁阻传感器上旋转。 码盘的任何转动都会使这些传感器产生响应,而产生的信号将传输至信号调理前端电路以确定轴的位置。 相较于光学编码器,磁性编码器的优势在于更耐用、抗振和抗冲击。而且,在遇到灰尘、污垢和油渍等污染物的情况下,光学编码器的性能会大打折扣,磁性编码器却不受影响,因此非常适合恶劣环境应用。 不过,电机(尤其是步进电机)产生的电磁干扰会对磁性编码器造成极大的影响,并且温度变化也会使其产生位置漂移。 此外,磁性编码器的分辨率和精度相对较低,在这方面远不及光学和电容式编码器。 嵌入式专栏 3 电容式编码器 电容式编码器主要由三部分组成:转子、固定发射器和固定接收器。电容感应使用条状或线状纹路,一极位于固定元件上,另一极位于活动元件上,以构成可变电容器,并配置成一对接收器/发射器。 转子上蚀刻了正弦波纹路,随着电机轴的转动,这种纹路可产生特殊但可预测的信号。随后,该信号经由编码器的板载 ASIC 转换,以计算轴的位置和旋转方向。 图 2:编码器码盘的比较(图片来源:CUI Devices) 嵌入式专栏 4 电容式编码器的优点 电容式编码器的工作原理与数字游标卡尺相同,因此它所提供的解决方案克服了光学和磁性编码器的许多缺点。 事实证明,CUI Devices 的 AMT 编码器系列所采用的这种基于电容的技术具有高可靠性、高精度的特性。 由于无需 LED 或视距,即使遇到会对光学编码器产生不利影响的环境污染物(如灰尘、污垢和油渍),电容式编码器也能达到预期的效果。 此外,相比光学编码器使用的玻璃码盘,它更不容易受到振动和极高/极低温度的影响。 如前所述,因为电容式编码器不存在 LED 烧坏的情况,所以使用寿命往往比光学编码器长。 因此,电容式编码器的封装尺寸更小,在整个分辨率范围内电流消耗更小,只有 6 至 18 mA,这就使它更适合电池供电应用。 鉴于电容式技术的稳健性、精度和分辨率均比磁性编码器高,因而后者所面临的电磁干扰和电气噪声对它的影响并不大。 此外,在灵活性和可编程性方面,电容式编码器的数字特性也能带来关键优势。因为光学或磁性编码器的分辨率是由编码器码盘决定,所以需要其他分辨率时,每次都要使用新的编码器,以致于设计和制造过程的时间和成本均会有所增加。 然而,电容式编码器具有一系列可编程的分辨率,为设计人员免去了每次需要新的分辨率时就要更换编码器的麻烦,这不仅减少了库存,而且简化了 PID 控制回路的微调和系统优化。 涉及 BLDC 电机换向时,电容式编码器允许数字对准和索引脉冲设置,而这项任务对于光学编码器而言可能既反复、又耗时。 内置的诊断功能使设计人员可以进一步访问系统数据,用以优化系统或现场排除故障。 图 3:电容式、光学式和磁式技术的关键性能指标比较(图片来源:CUI Devices) 嵌入式专栏 5 权衡选项 在许多运动控制应用中,温度、振动和环境污染物都是编码器必须应对的重要挑战因素。 事实证明,电容式编码器可以克服这些挑战。 与光学式或磁式技术相比,它可为设计人员提供可靠、精准且灵活的解决方案。 此外,电容式编码器还增加了可编程性和诊断功能,这种数字特性使其更适合现代物联网 (IoT) 和工业物联网 (IIoT) 应用。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-03-12 关键词: 编码器 原理 优缺点

  • 你了解光耦吗?大佬从4方面带你了解光耦

    你了解光耦吗?大佬从4方面带你了解光耦

    光耦是电子元器件之一,为增进大家对光耦的了解,本文将对光耦定义、光耦的作用、光耦原理、光耦使用原则予以介绍。通过本文的介绍,小编相信大家对于光耦肯定能够具备初步的认识。如果你对光耦相关知识具有兴趣,不妨继续往下阅读哦。 一、光耦是什么 光耦合器(opticalcoupler equipment,英文缩写为OCEP)亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管,光敏电阻)封装在同一管壳内。当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长、无触点,抗干扰能力强,输出和输入之间绝缘,单向传输信号等优点,在数字电路上获得广泛的应用。 二、光耦的作用 在了解了什么是光耦后,我们再来看看光耦的作用。光耦的作用主要包含6点,下面,小编将对它们一一进行介绍。 ⑴ 在逻辑电路上的应用 ⑵ 作为固体开关应用 ⑶ 在触发电路上的应用 ⑷ 在脉冲放大电路中的应用光电耦合器应用于数字电路,可以将脉冲信号进行放大。 ⑸ 在线性电路上的应用 ⑹ 特殊场合的应用 三、光耦的作用原理 耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。目前它已成为种类最多、用途最广的光电器件之一。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。所以,它在长线传输信息中作为终端隔离元件可以大大提高信噪比。在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大提高计算机工作的可靠性。 又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。 四、光耦的使用原则 1、光耦合器的电流传输比(CTR)的允许范围是50%~200%。这是因为当CTR《50%时,光耦中的LED就需要较大的工作电流(IF》5.0mA),才能正常控制单片开关电源IC的占空比,这会增大光耦的功耗。若CTR》200%,在启动电路或者当负载发生突变时,有可能将单片开关电源误触发,影响正常输出。2、若用放大器电路去驱动光电耦合器,必须精心设计,保证它能够补偿耦合器的温度不稳定性和漂移。 2、推荐采用线性光耦合器,其特点是CTR值能够在一定范围内做线性调整。 上述使用的光电耦合器时工作在线性方式下,在光电耦合器的输入端加控制电压,在输出端会成比例地产生一个用于进一步控制下一级电路的电压,是单片机进行闭环调节控制,对电源输出起到稳压的作用。 为了彻底阻断干扰信号进入系统,不仅信号通路要隔离,而且输入或输出电路与系统的电源也要隔离,即这些电路分别使用相互独立的隔离电源。对于共模干扰,采用隔离技术,即利用变压器或线性光电耦合器,将输入地与输出地断开,使干扰没有回路而被抑制。在开关电源中,光电耦合器是一个是非常重要的外围器件,设计者可以充分的利用它的输入输出隔离作用对单片机进行抗干扰设计,并对变换器进行闭环稳压调节。 以上便是此次小编带来的“光耦”相关内容,通过本文,希望大家对光耦定义、光耦的作用、光耦原理、光耦使用原则具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2021-03-08 关键词: 光耦 指数 原理

  • 什么是ADC?SAR型ADC的工作原理是什么?

    什么是ADC?SAR型ADC的工作原理是什么?

    ADC,也即模拟数字转换器,在工业中具有重要应用。对于ADC,我们或多或少有所耳闻、了解。往期文章中,小编对高速ADC电源设计等知识有所介绍。为增进大家对ADC的了解,本文将对SAR型ADC的原理予以解读。如果你对ADC相关知识具有兴趣,不妨继续往下阅读哦。 一、ADC基本介绍 模拟数字转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小 。这种转换器的基本原理是把输入的模拟信号按规定的时间间隔采样,并与一系列标准的数字信号相比较,数字信号逐次收敛,直至两种信号相等为止。然后显示出代表此信号的二进制数,模拟数字转换器有很多种,如直接的、间接的、高速高精度的、超高速的等。每种又有许多形式。同模拟数字转换器功能相反的称为“数字模拟转换器”,亦称“译码器”,它是把数字量转换成连续变化的模拟量的装置,也有许多种和许多形式 。 二、SAR型ADC原理简析 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构。SAR ADC的分辨率一般为8位至16位,具有低功耗、小尺寸等特点。这些特点使该类型ADC具有很宽的应用范围,例如便携/电池供电仪表、笔输入量化器、工业控制和数据/信号采集等。 顾名思义,SAR ADC实质上是实现一种二进制搜索算法。所以,当内部电路运行在数兆赫兹(MHz)时,由于逐次逼近算法的缘故,ADC采样速率仅是该数值的几分之一。 (一)SAR ADC的架构 尽管实现SAR ADC的方式千差万别,但其基本结构非常简单(见图1)。模拟输入电压(VIN)由采样/保持电路保持。为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100.。。 .00,MSB设置为1)。这样,DAC输出(VDAC)被设为VREF/2,VREF是提供给ADC的基准电压。然后,比较判断VIN是小于还是大于VDAC。如果VIN大于VDAC,则比较器输出逻辑高电平或1,N位寄存器的MSB保持为1。相反,如果VIN小于VDAC,则比较器输出逻辑低电平,N位寄存器的MSB清0。随后,SAR控制逻辑移至下一位,并将该位设置为高电平,进行下一次比较。这个过程一直持续到LSB。上述操作结束后,也就完成了转换,N位转换结果储存在寄存器内。 (二)SAR型ADC原理简析 SAR原理框图: 组成:比较器、逐次比较寄存器、D/A转换器、数据寄存器、控制电路。 原理简析:首先逐次比较寄存器最高位置1,指示D/A转换器输出对应电压到比较器反相端与Vi比较,如果Vi大于该电压,则比较器输出为1,逐次比较寄存器采样到1保存最高位为1,反之为0。依次比较直到最后一位,届时所存数据并输出。 特点:从原理分析容易看出,该种ADC是一位一位比较,则每个时钟周期只能比较一次,N位则需比较N次,因此注定该种ADC不能运转在较快速度,同时输入端Vi的带宽也不会太宽,毕竟转换速率在那里了,你Vi变化太快,人家还没转换完你就变化了,转换还有啥意义呢?另一方面可看出该种ADC电路结构简单,硅片面积和功耗比较小,便于实现。同时分辨率完全取决于内部DAC(当然比较器的敏感度也很重要。),则可实现较高分辨率。总之,该种ADC适用于分辨率高、中等速度以下的场合。 网上搜索时无意中发现,然来教科书中常见芯片ADC0809即为SAR型,之前只知道拿过来就用,现在研究ADC才注意到。(后来使用C8051F410,发现集成的12位ADC竟然也是SAR型) 上ADC0809内部原理框图: 注意中间部分即之前所述SAR核心构成,不过这里是用开关数组和256R电阻分压器构成了一个DAC。 以上便是此次小编带来的“ADC”相关内容,通过本文,希望大家对SAR型ADC的工作原理具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2021-02-19 关键词: 指数 ADC 原理

  • 无人驾驶汽车我们买的起吗?是否需要考取无人驾驶驾照?

    无人驾驶汽车我们买的起吗?是否需要考取无人驾驶驾照?

    无人驾驶是当今的热门领域之一,很多高尖人才都在尝试突破无人驾驶技术。那么,无人驾驶技术的原理是什么呢?无人驾驶汽车还要多久才能上市呢?在未来的日子里,我们是否需要靠无人驾驶骑车驾照?最关心的问题是,无人驾驶汽车价格如何?如果你对无人驾驶相关内容具有兴趣,不妨继续往下阅读哦。 一、无人驾驶技术原理 无人驾驶汽车是通过车载传感系统感知道路环境,自动规划行车路线并控制车辆到达预定目标的智能汽车。 它是利用车载传感器来感知车辆周围环境,并根据感知所获得的道路、车辆位置和障碍物信息,控制车辆的转向和速度,从而使车辆能够安全、可靠地在道路上行驶。 集自动控制、体系结构、人工智能、视觉计算等众多技术于一体,是计算机科学、模式识别和智能控制技术高度发展的产物,也是衡量一个国家科研实力和工业水平的一个重要标志,在国防和国民经济领域具有广阔的应用前景 。 二、无人驾驶汽车需要驾照吗 无人驾驶车需要驾驶证。虽然无人驾驶的定义就是这种车辆在行驶时候不需要驾驶人。但是,在出现无人驾驶汽车的时代里,需要有人驾驶的汽车,还是需要驾驶人具有驾驶证的! 1、无人驾驶汽车还停留在酝酿和标准如何制定,技术上还有待进一步完善,可靠性有待提高。还没有到牌照如何办理的时候。与此同时无人驾驶的系统的安全性不可能100%。 2、无人驾驶系统有可能会出现故障,也有可能会被黑客攻击,虽然这种意外情况很低,但是只要有可能,我们就不得不去考虑这种状况。一旦遇到这种事情,就需要司机自己操纵方向盘,自己拯救自己,所以驾驶证还是需要的。 三、无人驾驶汽车多久上市 中国从20世纪80年代开始进行无人驾驶汽车的研究,国防科技大学在1992年成功研制出中国第一辆真正意义上的无人驾驶汽车。2005年,首辆城市无人驾驶汽车在上海交通大学研制成功。目前还没有具体量产上市。 目前看来在未来的2020年我们绝不可能开上无人驾驶汽车,但预计到2020年我国的辅助驾驶技术应用将达到50%,到2030年智能网联汽车的装车率接近100%。到2035年以后,无人驾驶车比例将会越来越高。 无人驾驶汽车是通过车载传感系统感知道路环境,自动规划行车路线并控制车辆到达预定目标的智能汽车。它是利用车载传感器来感知车辆周围环境,并根据感知所获得的道路、车辆位置和障碍物信息,控制车辆的转向和速度,从而使车辆能够安全、可靠地在道路上行驶。 集自动控制、体系结构、人工智能、视觉计算等众多技术于一体,是计算机科学、模式识:别和智能控制技术高度发展的产物,也是衡量一个国家科研实力和工业水平的一个重要标志,在国防和国民经济领域具有广阔的应用前景。 四、无人驾驶汽车多少钱一台 根据最新消息,现在不少企业公司都在研发着无人驾驶汽车,因为在未来也会大受欢迎的。而现在数据显示,最便宜的汽车是Model3,该车在美国起售价格为3.5万美元,在国内售价保守估计也是30万左右,而且,这样的售价并不包括自动驾驶技术套件,你觉得这样的价格是不是你能接受的呢? 要知道,无人驾驶汽车可自动识别交通指示牌和行车信息,具备雷达、相机、全球卫星导航等电子设施,并安装同步传感器。所以现在的无人驾驶小车售价都是十分昂贵的,对于这样的售价,不少市民都表示接受不起,因为太贵了。 以上便是此次小编带来的“无人驾驶”相关内容,通过本文,希望大家对无人驾驶技术原理、无人驾驶汽车的价格等具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2021-02-01 关键词: 无人驾驶 指数 原理

  • 电路中的大力士 自举电路原理

    时间:2021-01-29 关键词: 电路 自举电路 原理

  • MOS管N/P沟道如何区分?工作原理动图

    在绝缘栅型场效应管中,目前常用二氧化硅作金属铝栅极和半导体之间的绝缘层,称为金属一氧化物-半导体场效应晶体管,简称为MOSFET或者MOS管。 MOS管的电路符号 1)G、D、S极怎么区分? G极是比较好区分的,大家一眼就能区分。 不论是P沟道还是N沟道,两根线相交的就是S极。 不论是P沟道还是N沟道,单独引线的那边就是D极。 2)N、P沟道如何区分? 箭头指向G极的就是N沟道。 箭头背向G极的就是P沟道。 3)寄生二极管方向 N沟道,由S极指向D极。 P沟道,由D极指向S极。 如果觉得上面两条不是很好记,教大家一个识别方法:不论N沟道还是P沟道MOS管,中间衬底箭头方向和寄生二极管的箭头方向总是一致的,上面图片已经标出来了可以看一下。 MOS管导通条件 N沟道:Ug>Us时导通。(简单认为)Ug=Us时截止。 P沟道:Ug

    时间:2021-01-27 关键词: MOS管 P沟道 原理

  • 单片机红外电路设计原理

    电视、空调都离不开红外遥控器。空调遥控器其实就是一个红外信号发射装置,而空调机身具有红外接收探头,可以接收遥控器发出的红外信号并解析,从而实现遥控的功能,电视遥控器也是同样的原理。现在有很多手机具有红外功能,通过匹配通讯协议,就能实现手机遥控电视和空调的作用。下面通过 硬件 和 软件 两个方面来和大家分享,红外遥控实现的原理。 本部分内容包括, 红外发射部分原理 、 红外接收部分原理 以及 软件编码部分原理 。 2 红外接收部分电路原理 前文说过,红外发射和红外接收是一对,成对使用。发射管是白色的,接收管是黑色的。可以使用三极管搭建接收电路也可以使用比较器来搭建电路,下面用三极管电路展示红外接收的电路。如下图所示。 在没有接收到红外信号时,接收管不导通,三极管Q1不导通,三极管Q3不导通,单片机接收到持续的高电平;当接收管接收到红外信号时,单片机接收到低电平。当遥控器的按键被按下时,按键对应的编码脉冲就会被单片机所接收到,单片机解析该脉冲,就能知道遥控器上是哪个按键被按下,从而实现用户的操作。 但是,黑色的红外接收管抗干扰能力比较低,在设计电路的时候一般不选用,而是选用专用的红外接收头,最常用的型号为HS0038。而且,其红外接收电路简单,抗干扰能力强。 3 红外软件编码解析

    时间:2021-01-21 关键词: 单片机 红外电路 原理

  • 剖析RS-485原理以及与其他总线的区别

    转自 | 记得城 RS-485在很多场景都有,特别是在一些工业设备中,本文带你深入理解RS-485的原理。 ▉ RS-485概述 RS-485和RS-232一样,都是串行通信标准,现在的标准名称是TIA485/EIA-485-A,但是人们会习惯称为RS-485标准,RS-485常用在工业、自动化、汽车和建筑物管理等领域。 RS-485总线弥补了RS-232通信距离短,速率低的缺点,RS-485的速率可高达10Mbit/s,理论通讯距离可达1200米;RS-485和RS-232的单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B。 双绞线 ▉ RS-485物理层 RS-485的物理层负责在设备和物理传输介质之间传输原始数据。它处理电信号到数字数据的转换,同时定义电压、时序、数据速率等。 ① 差分信号 长距离布线会有信号衰减,而且引入噪声和干扰的可能性更大,在线缆A和B上的表现就是电压幅度的变化,但是,采用差分线的好处就是,差值相减就会忽略掉干扰依旧能输出正常的信号,把这种差分接收器忽略两条信号线上相同电压的能力称为共模抑制。 标准规定了,逻辑1:+2V to +6V;逻辑0:-6V to -2V。 RS-485不需要使用特定的总线电压,只看最小差分电压,在较长的电缆长度上,接收器接收到的电压可能会降低到+/- 200 mV,这对于RS-485仍然是完全可以接受的,这也是RS-485的优点之一。 很多收发器的标准达到甚至超过TIA/EIA-485A规范,在实际使用中,以器件的SPEC参数为主,如下某收发器的负输入阈值最小也是-200mV。 ② 信号定义 现在很多的RS-485转换器都是兼容RS-422的,所以看到很多转换器上面的信号都是T/R+、T/R-,即对应RS-485的A+和B-。 对于DB9针型的母头,RS-485有如下的接线定义示意,Pin6~Pin9为N/A不接。 DB9 输出信号 RS-422全双工接线 RS-485半双工接线 1 T/R+ 发(A+) RS-485(A+) 2 T/R- 发(B-) RS-485(B-) 3 RXD+ 收(A+) 空 4 RXD- 收(B-) 空 5 GND 地线 地线 ③ 拓扑结构 RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线拓扑结构,在同一总线上最多可以挂接32个节点。 RS-485总线同I2C,也是主从模式,支持点对点单从机模式,也支持多从机模式,不支持多主机模式。 ▉ RS-485收发器 RS-485是差分传输,如果用单片机控制RS-485接口的设备,需要用到收发器,这一点和CAN总线是类似的,如下是一个MCU控制一个RS-485的图示。 收发器内部是一个接收器(上半部分)加一个发送器(下半部分),下面简单说说收发器的原理,便于理解MCU是如何和485设备通信的。 RS-485收发器内部结构 其中: A和B为总线; R为接收器输入; RE为接收器使能信号; DE为发送器使能信号; D为发送器输出; 对于使能信号,字母上面加一横的为低电平有效(如上图RE),不加的为高电平有效(如DE)。 对于发送器,有如下的真值表: 1、当驱动器使能引脚DE为逻辑高时,差分输出A和B遵循数据输入D处的逻辑状态。D处的逻辑高导致A转为高,B转为低。在这种情况下,定义为VOD=VA-VB的差分输出电压为正。当D为低时,输出状态反转,B变高,A变低,VOD为负。 2、当DE低时,两个输出都变成高阻抗。在这种情况下,与D处的逻辑状态是不相关的。 发送器真值表 对于接收器,有如下的真值表: 1、当接收器使能引脚RE逻辑低时,接收器被激活。当定义为VID=VA–VB的差分输入电压为正且高于正输入阈值VIT+时,接收机输出R变高。当VID为负且低于负输入阈值VIT-,接收机输出R变低。如果VID在VIT+和VIT-之间,则输出不确定。 2、当RE为逻辑高或悬空时,接收机输出为高阻抗,VID的大小和极性无关。 接收器真值表 ▉ RS-485数据链路 上面讲到的RS-485收发器的工作原理,下面简单描述RS-485的数据链路,可以先看一下通俗易懂的UART协议帧格式 主机发送给从机或者从机发送给主机,都会占用到A和B线,所以RS-485多用在半双工模式。 主机的GPIO会控制RS-485收发器的DE管脚,设置发送模式,从UART TXD线向RS-485收发器的数据(D或DI)线发送一个字节,收发器将在A和B线上将单端UART位流转换为差分位流,数据离开收发器后,主机立即将收发器的模式切换为接收模式。 从机和主机是类似的,从机控制RS-485收发器的/RE管脚,设置为接收模式,接收主机发送的比特流,将其转换为单端信号,通过从机的UART RXD线接收,当从机准备好响应时,它按主机原来的方式进行发送,而主机变为接收。 ▉ RS-232和RS-485转换 RS-232和RS-485之间可以转换,一个方法是RS-232转换成TTL,再由TTL转换为RS-485,当然也有芯片支持将RS-232直接转换成RS-485,网上有很多模块。 RS-232和RS-485转换模块 ▉ RS-485和CAN的区别 虽说RS-485没有标准的数据协议格式,但和CAN总线在很多地方是有相似的,比如A&B和CANH&CANL都是差分信号,通信都需要收发器,都需要120欧姆的匹配电阻等等。 总线特性 CAN总线 RS-485总线 硬件成本 稍高 低廉 总线利用率 优先级自动仲裁,利用率高 采用轮询,利用率低 数据传输率 高 低 错误检测机制 控制器带校验机制,保证底层数据传输正确 只有物理层规范,无数据链路层规定 单节点故障影响 总线无影响 总线瘫痪 开发成本 软件开发灵活,时间成本低 开发难度较大 系统成本 较低 高 ▉ RS-485常用电路 网上找的一个常用的RS-485电路,其中需要注意两点: 1、使能信号RE和DE可采用一个GPIO控制,节省资源,GPIO25输出高电平,RE=DE=0V,进入接收模式;GPIO25输出低电平,RE=DE=3.3V,进入发送模式。 2、有一些电路中会在A上加上拉,B上加下拉电阻,主要原因是:RS-485总线在idle状态,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低,UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个start bit,会导致通信异常,关于Ru和Rd的阻值在这里不作过多赘述,后面有机会会详细写一篇文章。 关于第二点,需要注意: ① A上加上拉,B上加下拉,接反数据通信也可能出错。 ② 某些收发器内部集成上下拉电阻,则外部不需要再添加。

    时间:2021-01-21 关键词: 总线 RS-485 原理

  • 互联网大厂面试,谈索引就直逼这些底层?难的是我不懂这些原理

    01 为啥BAT大厂,在数据库上都喜欢深入的问索引呢? 一线大厂,是很多人梦寐以求的盛典天堂。因为存在的无限的可能,可以帮你实现自己的远大抱负。大平台机会、视野、格局往往都比小厂多很多。但随之而来也是那高挑的技术门槛需等你迈过。好事物大家都喜欢,但毕竟僧多粥少。外加任务有难度,如果你没过硬的本领,那很难踏入平台,领会一览众山小的风采。不知你心里有没有小九九? 大厂产品大多数都成型很久,数据库里面存储的数据都以海量计算,如何在这种规模下的数据中做到快速筛选呢?那就需要你来答。 大家思路肯定和我一样,话不多说,加索引再说!索引为的就是提高数据的检索效率,进而减少请求的响应时间。 这时,有内涵的人可能会反问你啦? 那你说说索引有哪些类型?索引底层实现是什么结构?B+Tree的优点?聚簇索引和非聚簇的区别?索引一次读读取多少数据合适?为什么说索引会降低插入、删除、修改等维护任务的速度? 这一套组合拳,可能虐的你是体无完肤。让人招教不住,心理一万个xxx省略。送他一个微笑,然后再尴尬而不失优雅的离去。 大家可能都知道查询慢了加索引,那为啥加?在哪些字段上加?以及索引的数据结构特点。索引优化、优点啥的都比较模糊或者不知道。 今天将是对索引来一次灵魂的拷问,在进一步对索引优化、常见大厂面试问题、SQL优化等内容进行分享。这是个大工程,大家得关注再看。深,那就得深出高度。MOG!太深啦 02 用索引,那你得知道索引是什么? 百度百科定义:索引是数据表中一列或多列的值进行排序的一种数据结构 故此,索引本质就是数据结构。这也是为什么每次数据表建立索引都需要设置在列字段上的原因。那常见数据结构有哪些? 常见数据结构大致可分为三大类,如下所示 线性表:顺序表、链表、栈和队列; 树结构:二叉树,堆、线索二叉树、红黑树、B-Tree等; 图存储结构 但在数据库中常用数据结构为B+Tree、Hash索引。 对于此,有人可能觉得有了Hash和那么多树结构(红黑树、B树、完全平衡二叉(AVL)树、B+树),为啥Mysql唯独喜欢B+树? 请听如下分解: 首先上场的是顽固不变Hash索引,这Hash索引又是什么? 哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才能生效额。切记!切记!切记! 哈希的思路很简单,以键-值( key-value )存储数据的结构,对于待查找每一行的数据值,用一个哈希函数把数据值换算成一个确定的位置即  key,位置就是哈希码,并且不同键值的行计算出来的哈希码也不一样。然后在 value 上存放每个数据行的指针。 对这样的索引结构,执行如下sql语句的过程是什么呢? select * from nezha where name='lianhua' MySQL首先计算'lianhua'的哈希值,并使用该值寻找对应的记录指针。然后根据指针寻找对应的数据,最后一步是比较读取的值是否为'lianhua', 从而来确保就是要查找的行。 那如果改变为范围性查找就会存在问题。还记得上面的切记吗?因为它不支持范围匹配,只支持等值匹配。例如: select * from nezha where name like '%lianhua' 那像Hash这种等值查询还有哪些场景? Hash故名思议体现的就是(key-value)结构。所以像 Redis、Memcached 及其他一些 NoSQL 引擎(如 Memory)。 那有没有既能快速查找,又可以支持范围型查找呢? 自然有,有序数组在等值查询和范围查询场景中的性能就都非常OK,足以满足你的口味。 那它就好的没天理啦?不,世上没得十全十美的! 有序数组索引只适用于静态存储引擎,因为数组的空间必须是连续的,这就造成数组在内存中分配空间时必须找到一块连续的内存空间。所以新增、删除、修改数据时就会改变它的结构。 一下掉入无底洞,这在业务场景上怎样使用? 静态数据简单点可以理解为不会在变化的数据,那你就可以用于历史归档性的业务。比如你去年酷狗歌单、每上月的支付记录等,这类不会再修改的数据。 接下来上场的是层次不齐的树结构 树结构基础就是普通二叉树,其它树结构都是基于它演进产生。二叉树会根据元素值的大小来创建树形结构。所以它是有序的,并支持范围查找。具体可查看数据结构相关书籍。 但普通二叉树,有个问题,就是当元素是递增或递减时,它就会退化为线性表。 为了解决这个问题,就出现了我们的完全平衡二叉树。可为何数据库没选择它呢? 数据库操作都是在内存里面完成的,但最终还是要落地到磁盘。如果数据多了,树会变得很高。然而查询数据时,那都是从磁盘里面把数据读取出来放入到内存中。这样I/O操作成本就会随着树的高度而增加。这也是常说完全平衡二叉树具有高瘦特点。 好像女孩子都喜欢这样的吧! 一般为节约成本,很多公司服务器采用的还是机械硬盘,这样一次千万级别的查询差不多就要10秒,这还不算网络传输、业务处理、CPU的执行时间,一但汇总那谁顶得住? 那这怎么解决呢?不可能一直让让它变高吧! 可使用B-Tree。 B-Tree的特征就是矮胖,也称为多叉树,就是在树的同一高度上开辟多个分叉来容纳元素。从而树在横向上面变宽了。这样减少了磁盘I/O的查询查找次数,从而提升了效率。 B-Tree的特点简写: 每个节点中的元素(关键字)从小到大排列。 每个节点都保存有数据 那为什么最终数据库选择了B+Tree,而不是B-Tree呢? B+Tree自然保持了B-Tree的矮胖特征,但它还做了升级的处理。就是让叶子节点保存数据,而非叶子节点保存关键字即可,并且会有指针指向下一个叶子节点。这样的好处是为了提高范围查找的效率。找到数据后直接根据指针向后读取即可,而B-Tree就不行,当它读取下一个数据,还需要再一次的进行索引树的查找。 B+Tree特点: 所有的非叶子节点只存储关键字信息 只有叶子节点存储数据 所有叶子节点之间都有一个链指针 小结:最终MySQL选用B+Tree作为索引,从而提高检索索引时的磁盘IO效率,并且提高范围查询的效率,整个B+树里的元素也是有序的。因为B+Tree默认就是按照主键索引来构建的树结构。那你说呢? 03 索引是怎么构建的? 开发过程中,MySQL都首先B+Tree。在MySQL下还拥有Hash索引,也就是它拥有2大索引类型。具体选择用什么,可在创建表时进行选择。 那这索引到底是怎么创建出来的? 那还得分情况而定,分为以下2种 建表建索引 创建表的时候,先把索引字段建立好。如: create table nezha(id int unsigned   AUTO_INCREMENT PRIMARY KEY, phone int not null,name varchar(16),index (phone))engine=InnoDB; 当添加数据时,数据库就会自动先去创建好索引结构,然后创建数据。最终在落地到磁盘上。 先建表,后添索引 这种情况需要注意,因为先建表,那可能你数据表已经拥有了大量数据,这时候你在添加索引,那你的整个数据库肯定会阻塞,因为数据库需要根据表中数据建立索引,这都是由数据库后台线程来完成。 这也是为什么线上数据库不要轻易变动索引,需根据用户低峰时间来操作。所以索引创建过多,那也算是需要耗费资源的。 一般还需要维护表和索引,你这里有什么建议吗?不妨留言说说你的提议,优化就留到下次。 所以当你的大表需要导入到其它数据库时,需在新数据库上先关闭索引,然后再添上索引,要不然效率就太低了。 04 索引的表现类型代表作有哪些? 乖乖,索引还有表现种类,这神马情况? 大家都知道B+Tree、Hash索引,但这些都底层实现的数据结构,而表现种类在明面上,我们常说的,例如:聚簇索引、非聚簇索引等,都包含了对应的数据结构。 问最多算聚簇索引、非聚簇索引,那它们是什么呢? 聚簇索引:索引和数据都存储在一起,代表作Innodb 非聚簇索引:索引和数据分开存储,代表作MyIASM 上述的特性,也和它们的物理存储文件有关系。文件放在数据库安装目录下的data目录中 /mysql-57/data/mysql MyISAM结构如下: .frm为表结构文件,存储像create alter等语句    .MYD为存储数据文件   .MYI为存储索引文件 InnoDb结构如下: .frm为表结构文件,.ibd为数据+索引文件 在InnoDB存储引擎中,就一定都是聚簇索引吗? 并不是,只有主键索引被称为聚簇索引( clusteredindex )。除开主键以外的字段上创建的索引被称为非主键索引,非主键索引也被称为二级索引( secondary index )。 注:现在你该知道,为啥面试都不问你什么唯一、普通、联合索引了吧,那都是属于二级索引呢 那这两者之间有什么区别吗?区别在非主键索引的叶子节点内容是主键,当找到主键后,还需要根据主键再一次的进行索引树的查找,这个过程称之为回表。 例如: 如果语句是 select * from nezha  where ID=7 ,即主键查询方式,那它只需搜索 ID 这棵 B+ 树; 如果语句是 select * from nezha  where name = '哪吒' ,即普通索引查询方式,则需要先搜索 name 索引树,得到 ID的值为 7,再到 ID 索引树搜索一次。这就是所谓的回表。 那这个问题怎么解决呀! 内心独白:哎呀!咋这么多问题,烦不烦。 这个好办,刚才我们是 select * ,查询所有记录,如果查询字段上只出现主键索引与创建索引的字段,那就不需要回表了。因为走二级索引时,就已经包含了你需要的字段列啦,那就不需要在回表了。这就被称之为索引覆盖,即索引已经包含了查询操作的值。 这也是为什么,当有多个字段需创建索引时,会创建联合索引,也是为了更好支持索引覆盖。 瞬间飞过,"我怎么这么好看,这么好看怎么办" 05 数据库内部利用索引是如何读取数据的? 搞了这么久,那这个索引查找数据的时候,是怎么个读取原理又是什么? 那这首先得说数据库中的读取数据单位,数据库中的数据是按照页读取的。默认一页的数据为16KB。而磁盘块(OS)默认为4KB show global variables like 'innodb_page%'; 那索引和数据都保存在节点里面,这个数据怎么个读法? 上面说到,数据库读取数据是根据页为单位,并且读的数据不满足1页或超过1页,那么也会读满1页。这也叫做预读 也就是说节点读取数据的大小应该控制在1页、2页、3页、4页等倍数页大小最为合适。 那你说说这个页吧! 每个数据页中的数据,采用单向链表的形式进行连接。 各个页之间采用双向链表链接。 查找数据时是根据页内分组定义的。首先在插入数据时就会根据主键大小做好排序结构,并按照最大和最小进行分组。 最小虚拟数据独自一组,它拥有一条数据,就是最小数据。然后剩下的数据再分成一组,即最大数据为另一组。当进行数据插入的时,都是先插入到最大数据组,当最大数据组装满后在进行分裂。 分组确立后,在进行数据查找的时就是根据二分查找法确定对应数据所在的槽位置,然后在使用记录头信息的next_record一条条进行查找。 当以(非主键)作为搜索条件:只能从最小虚拟数据记录,开始依次遍历单链表中的每条记录。 所以,当写 select * from nezha where name='nezha' 这样没有进行任何优化的sql语句,默认会这样做: 读取记录所在页的范围 根据双向链表,找到所在页 从所在页中查找相应的记录 由于不是主键查询,就遍历所在页的单链表 06 索引就不命中?前提你得知道规则 使用索引当中,最核心的就是最左匹配原则,索引命中都是根据它来定义的。 最左匹配原则: 索引可以的简单如单列 (a),也可以复杂如多列 (a,b,c,d),即联合索引。 如果是联合索引,那么key也由多个列组成,同时,索引只能用于查找key是否存在(相等),遇到范围查询 (>、<、BETWEEN、LIKE)等就不能进一步匹配了,后续退化为线性查找。因此,列的排列顺序决定了可命中索引的列数。 索引列不能是表达式的一部分,那样无法命中索引,例如 :SELECT * FROM nezha WHERE id + 1 = 5; date(create_time)='2020-03-05' 例如: 如有索引 (a,b,c,d),查询条件 a=7 and b=8 and c>15 and d=32,则会在每个节点依次命中a、b、c,无法命中d。(c已经是范围查询了,d就没办法进行对比查找了) 总结: 索引在数据库中是一个非常重要的内容! 最左前缀匹配原则。这是非常重要的原则,SQL查询都是基于它来。MySQL会一直向右匹配,直到遇到范围查询 (>,<,BETWEEN,LIKE)就停止匹配。 页也需要了解下,这个是数据库在内部的工作机制。 索引的表现形式针对于不同的存储引擎,表现也不一样,并且2者之间的存储引擎区别也要掌握了解 索引创建方式来自于建表前还是建表后。重点都是数据库再用后台线程创建与维护索引 B+Tree和Hash这2个特点还是需要注意,并且它们之间区别还未细讲。后面会针对面试问题,给大家补上来。

    时间:2021-01-19 关键词: 索引 互联网大厂 原理

  • 面试官:能说一说Mysql缓存池吗?

    今天来聊一聊 Mysql 缓存池原理。 提纲附上,话不多说,直接干货。 前言 面试官:同学,你能说说Mysql 缓存池吗? 狂聊君:啊,这么难吗,容我组织一下语言。(内心OS:这TM还不简单?我能给你扯半小时!) 面试官:可以,给你一分钟时间想一想吧。 ....一分钟后.... 狂聊君:我准备好了,你可听好,我要开始表演了。 为什么要有缓存池? Mysql 的 innodb 存储引擎是基于磁盘存储的,并且是按照页的方式进行管理的。 在数据库系统中,CPU 速度与磁盘速度之间的差距是非常大的,为了最大可能的弥补之间的差距,提出了缓存池的概念。 所以缓存池,简单来说就是一块「内存区域」,通过内存的速度来弥补磁盘速度较慢,导致对数据库造成性能的影响。 缓存池的基本原理 「读操作」: 在数据库中进行读取页的操作,首先把从磁盘读到的页存放在缓存池中,下一次读取相同的页时,首先判断该页是不是在缓存池中。 若在,称该页在缓存池中被命中,则直接读取该页,否则,还是去读取磁盘上的页。 「写操作」: 对于数据库中页的修改操作,首先修改在缓存池中的页,然后在以一定的频率刷新到磁盘,并不是每次页发生改变就刷新回磁盘,而是通过 checkpoint 的机制把页刷新回磁盘。 可以看到,无论是读操作还是写操纵,都是对缓存池进行操作,而不是直接对磁盘进行操纵。 缓存池结构 Buffer Pool 是一片连续的内存空间,innodb 存储引擎是通过页的方式对这块内存进行管理的。 缓存池的结构如下图: 可以看到缓存池中包括数据页、索引页、插入缓存、自适应哈希索引、锁信息、数据字段。 其中数据页和索引页会用掉多数内存。 「但是,innodb 是如何管理缓存池中的这么多页呢?」 为了更好的管理这些缓存的页,innodb 为每一个缓存页都创建了一些所谓的控制信息,这些控制信息包括该页所属的: 表空间编号(sapce id) 页号(page numeber) 页在 buffer Pool 的地址 一些锁信息以及 LSN 信息日志序列号 其他控制信息 每个缓存页对应的控制信息占用的内存大小是相同的,我们把每个页对应的控制信息占用的一块内存称为一个「控制块」。 「控制块」和缓存页是一一对应的,它们都被存放到 Buffer Pool 中,其中控制块被存放到 Buffer Pool 的前边,缓存页被存放到 Buffer Pool 的后边。 Buffer Pool 对应的内存空间示意图: 缓存池参数设置 innodb_buffer_pool_size:缓存池的大小最多应设置为物理内存的 80% innodb_buffer_pool_instance:设置有多少个缓存池,通常建议把缓存池个数设置为 CPU 的个数,多个缓存池可以减少数据库内部的资源竞争,增加数据库并发访问的能力 innodb_old_blocks_pct:老生代占整个 LRU 的链长比例,默认是 3:7 innodb_old_blocks_time:老生代停留时间窗口,单位是毫秒,默认是 1000,即同时满足“被访问”与“在老生代停留时间超过 1 秒”两个条件,才会被插入到新生代头部 缓存池管理 「管理缓存池依赖的链表结构」: Free 链表 当启动 Mysql 服务器的时候,需要完成对 Buffer Pool 的初始化过程,即分配 Buffer Pool 的内存空间,把它划分为若干对控制块和缓存页,但是此时并没有真正的磁盘页被缓存到 Buffer Pool 中,之后随着程序的运行,会不断的有磁盘上的页被缓存到 Buffer Pool 中。 在使用过程中,为了记录哪些缓存页是可用的,我们把所有空闲的页包装成一个节点组成一个链表,这个链表可以称作为 Free 链表(空闲链表)。因为刚刚完成初始化的 Buffer Pool 中所有的缓存页都是空闲的,所以每一个缓存页都会被加入到 Free 链表中。 为了方便管理 Free 链表,特意为这个链表定义了一些「控制信息」,里面包含链表的头节点地址,尾节点地址,以及当前链表中节点的数量等信息。 另外会在每个 Free 链表的节点中都记录了某个「缓存页控制块」的地址,而每个「缓存页控制块」都记录着对应的「缓存页地址」,所以相当于每个 Free 链表节点都对应一个空闲的缓存页。 给大家画了个结构图: 这图怎么样,这下能看的懂了吧! 2、Lru 链表 Lru 链表用来管理已经读取的页,当数据库刚启动时,Lru 链表是空的,此时页也都放在 Free 列表中,当需要读取数据时,会从 Free 链表中申请一个页,把从放入到磁盘读取的数据放入到申请的页中,这个页的集合叫做 Lru 链表。 3、Flush 链表 Flush 链表用来管理被修改的页,Buffer Pool 中被修改的页也被称之为「脏页」,脏页既存在于 Lru 链表中,也存在于 Flush 链表中,Flush 链表中存的是一个指向 Lru 链表中具体数据的指针。 因此只有 Lru 链表中的页第一次被修改时,对应的指针才会存入到 Flush 中,若之后再修改这个页,则是直接更新 Lru 链表中的页对应的数据。 这三者之间是这么个关系: 读操作 Buffer Pool 一个最主要的功能是「加速读」。加速读是当需要访问一个数据页面的时候,如果这个页面已经在缓存池中,那么就不再需要访问磁盘,直接从缓冲池中就能获取这个页面的内容。当我们需要访问某个页中的数据时,就会把该页加载到 Buffer Pool 中,如果该页已经在 Buffer Pool 中的话直接使用就可以了。 问题:那么如何快速查找在 Buffer Pool 中的页呢? 为了避免查询数据页时扫描 Lru,其实是根据表空间号 + 页号来定位一个页的,也就相当于表空间号 + 页号是一个 key,缓存页就是对应的 value。用表空间号 + 页号作为 key,缓存页作为 value 创建一个哈希表,在需要访问某个页的数据时,先从哈希表中根据表空间号 + 页号看看有没有对应的缓存页。 如果有,直接使用该缓存页就好。 如果没有,那就从 Free 链表中选一个空闲的缓存页,然后把磁盘中对应的页加载到该缓存页的位置。每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从 Free 链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的 Free 链表节点从链表中移除,表示该缓存页已经被使用了,并且把该页写入 Lru 链表。 在初始化的时候,Buffer pool 中所有的页都是空闲页,需要读数据时,就会从 Free 链表中申请页,但是物理内存不可能无限增大,数据库的数据却是在不停增大的,所以 Free 链表的页是会用完的。 因此需要考虑把已经缓存的页从 Buffer pool 中删除一部分,进而需要考虑如何删除及删除哪些已经缓存的页。假设一共访问了 n 次页,那么被访问的页在缓存中的次数除以 n 就是缓存命中率,缓存命中率越高,和磁盘的 IO 交互也就越少 。 为了提高缓存命中率,InnoDB 在传统 Lru 算法的基础上做了优化,解决了两个问题:1、预读失效 2、缓存池污染 写操作 Buffer pool 另一个主要的功能是「加速写」,即当需要修改一个页面的时候,先将这个页面在缓冲池中进行修改,记下相关的重做日志,这个页面的修改就算已经完成了。 被修改的页面真正刷新到磁盘,这个是后台刷新线程来完成的。前面页面更新是在缓存池中先进行的,那它就和磁盘上的页不一致了,这样的缓存页被称为脏页(dirty page)。 问题:这些被修改的页面什么时候刷新到磁盘?以什么样的顺序刷新到磁盘? 最简单的做法就是每发生一次修改就立即同步到磁盘上对应的页上,但是频繁的往磁盘中写数据会严重的影响程序的性能。所以每次修改缓存页后,不能立即把修改同步到磁盘上,而是在未来的某个时间点进行同步,由后台刷新线程依次刷新到磁盘,实现修改落地到磁盘。 但是如果不立即同步到磁盘的话,那之后再同步的时候如何判断 Buffer Pool 中哪些页是脏页,哪些页从来没被修改过呢? InnoDB 并没有一次性把所有的缓存页都同步到磁盘上,InnoDB 创建一个存储脏页的链表,凡是在 Lru 链表中被修改过的页都需要加入这个链表中,因为这个链表中的页都是需要被刷新到磁盘上的,所以这个链表也叫 Flush 链表,链表的构造和 Free 链表一致。 这里的脏页修改指的此页被加载进 Buffer Pool 后第一次被修改,只有第一次被修改时才需要加入 Flush 链表,对于已经存在在 Flush 链表中的页,如果这个页被再次修改就不会再放到 Flush 链表。 需要注意,脏页数据实际还在 Lru 链表中,而 Flush 链表中的脏页记录只是通过指针指向 Lru 链表中的脏页。并且在 Flush 链表中的脏页是根据 oldest_lsn(这个值表示这个页第一次被更改时的 lsn 号,对应值 oldest_modification,每个页头部记录)进行排序刷新到磁盘的,值越小表示要最先被刷新,避免数据不一致。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-17 关键词: Mysql 缓存池 原理

  • 关于无线充电锂离子电池的原理概况,值得你学习

    关于无线充电锂离子电池的原理概况,值得你学习

    在科学技术高度发达的今天,各种各样的高科技出现在我们的生活中,为我们的生活带来便利,那么你知道这些高科技可能会含有的无线充电锂离子电池吗? 无线充电锂离子电池是一种锂离子电池的新的发展方向。凭借其独特的创意和巨大的用途,推向市场后获得了很不错的社会反馈。在无线充电日益成熟与火热的今天,这种无线充电锂离子电池必定会展现其锋芒,或许以后将会在手机行业中大范围普及、甚至成为手机锂离子电池的一次热潮。 无线锂离子电池充电技术是一种使用磁铁为设备充电而无需借助电线的技术。源自无线电力传输技术的无线充电技术利用磁共振在充电器和设备之间的空气中转移电荷,线圈和电容器在充电器和设备之间形成谐振,以实现电能的有效传输。作为新型的现代充电技术,锂离子电池的无线充电技术在可穿戴领域的电子设备中得到广泛普及。该技术使电子设备摆脱了电线的限制,实现了电器和电源的完全隔离。在安全性和灵活性方面,它显示出比传统充电器更好的优势。 无线充电主要分为两种:静态和动态。静态是将电动汽车停放在停车位中充电,动态是将来将拖车拖到高速公路上以实现边走边充电。目前,最接近批量生产的是静态无线充电技术,其充电效率高达95.4%,是实验室可以达到的最高效率,最低不少于85%。因此,充电效率基本上可以与线充电相比。动态无线充电有望在三到五年内实现工业化。 无线充电技术是指带有电池的设备,这些设备不依赖电线,使用电磁波感应原理或其他相关的交流感应技术,并在接收和发送端使用相应的设备来发送和接收感应的交流信号进行充电。源于无线电力传输技术的技术。作为新型的现代充电技术,锂离子电池的无线充电技术在可穿戴领域的电子设备中得到广泛普及。 电磁感应充电:初级线圈中一定频率的交流电通过电磁感应在次级线圈时钟中产生一定电流,从而将能量从发射端传递到接收端。当前,最常见的充电板解决方案使用电磁感应。实际上,电磁感应解决方案在技术实现上没有太多的神秘之处。我国本地的比亚迪公司最早于2005年12月申请了非接触式感应。这种类型的充电器的专利使用电磁感应技术。 无线电波充电技术是当前相对成熟的技术。与早期使用的矿物无线电设备类似,它主要由微波发射器和微波接收器组成,它们可以捕获从墙壁反弹的无线电波能量,并在根据负载进行调整的同时保持稳定的直流电压。通过这种方式,只有安装在墙上插头上的发射器和可以安装在任何低压产品上的蚊子接收器。 磁场共振充电由能量传输设备和能量接收设备组成。当两个设备调整到相同的频率或以特定的频率谐振时,它们可以彼此交换能量。这是目前正在研究的技术。由麻省理工学院(MIT)物理学教授马林·索尔贾西奇(Marin Soljacic)领导的研究小组使用该技术点亮了两米外的60瓦灯泡。本实验中使用的线圈直径达到50cm,无法商业化。如果要减小线圈的尺寸,则接收功率自然会减小。锂离子电池无线充电是一个刚刚起步的领域,其有效的发展可以在很大程度上解决电动汽车发展的瓶颈。但是,由于其研发方面的巨额投资,对于该国而言,鼓励和支持加速发展就显得尤为重要。其发展进程使其能够尽快得到应用。 电场耦合式充电原理:利用通过沿垂直方向耦合两组非对称偶极子而产生的感应电场来传输电力。一般充电模块是由2个非对称偶极子按垂直方向排列而成的,这组偶极子各由供电部分和接收部分的活性炭电极和接地电极组成。无线供电模块就是通过这2个非对称偶极子的电场耦合而产生的感应电场来供电的。 以上就是无线充电锂离子电池的一些值得大家学习的详细资料解析,希望在大家刚接触的过程中,能够给大家一定的帮助,如果有问题,也可以和小编一起探讨。

    时间:2021-01-17 关键词: 无线充电 锂离子电池 原理

  • -5V、-3V……这些负电压是怎么产生的?

    负电压的产生电路图原理 在电子电路中我们常常需要使用负的电压,比如说我们在使用运放的时候常常需要给他建立一个负的电压。下面就简单的以正5V电压到负电压5V为例说一下他的电路。 上面的电路是一个最简单的负压产生电路了。他使用的原件是最少的了我们只需要给他提供1kHZ左右的方波就可以了,相当的简单。这里需要注意这个电路的代负载能力是很弱的,同时在加上负载后电压的降落也比较大。 负电压产生电路分析  说白了就是:某个点的电压就是相对于一个参考点的电势之间的差值。V某=E某-E参。一般我们把供电电源负极当作参考点。电源电压就是Vcc=E电源正-E电源负。 当PWM为低电平时,Q2关闭,Q1打开,C1开始放电,放电回路是C1-C2-D1,这实际上也是对C2进行充电的过程。C2充好电后,下正上负,如果VCC的电势为5点几伏,就可以输出-5V的电压了。 产生负电压(-5V)的方案 7660和MAX232输出能力有限,做示波器带高速运放很吃力,所以魏坤也得用4片并联的方式扩流。 用普通的DC/DC芯片都可以产生负电压,且电压精确度同正电压一样,驱动能力也很强,可以达到300mA以上。 整个示波器的设计数字电源的+5V和模拟电源的+5V是分开供电的,但是数字地和模拟地应该怎么处理呢? 数字部分的地返回电流不能流过模拟部分地,两个地应该在稳定的地参考点连在一起。 负电压的意义  2、通讯接口需要。例如RS232接口,就必须用到负电压。-3V~-15V表示1,+3~+15V表示0。这个是当初设计通讯接口时的协议,只能遵守咯。PS:MAX232之类的接口芯片自带电荷泵,可以自己产生负电压。 4、这个比较有中国特色,自毁电路。一般来说芯片内部的保护电路对于负电压是不设防的,所以只要有电流稍大,电压不用很高的负电压加到芯片上,就能成功摧毁芯片。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-08 关键词: 电路图 负电压 原理

  • 值得了解的快充锂离子电池的特点以及原理解析

    值得了解的快充锂离子电池的特点以及原理解析

    在生活中,你可能接触过各种各样的电子产品,那么你可能并不知道它的一些组成部分,比如它可能含有的快充锂离子电池,那么接下来让小编带领大家一起学习快充锂离子电池。 目前,锂离子电池的应用范围不断扩大,其优势比较明显。其中,快速可充电锂离子电池具有广阔的应用前景。目前,锂离子电池在手机、车载充电器、固定充电器等零部件上有着重要的应用。 充电电流由手机控制,而不是充电器。也就是说,手机是一个水坝,充电器只是一个水库。手机将智能检测充电器的负载能力。假如充电器是高功率和良好的质量,手机将允许充电器负载更高的电流。假如充电器的输出电流太低,手机也会限制自己充电的电流。 一般来说,大部分的电动车都是采用的普通充电技术,这种普通充电的方法给电车充电,需要8~10个小时,而快充即快速充电,只需要1小时就可以把电池充满。简化概念来说实际上它采用的是大电流大功率直流电给电池充电,其真实原理是在快充状态下,锂电池中的锂离子高速运动,瞬间嵌入到电池的两极。 快速充电锂离子电池结构类似于其他细胞,采用阴极结构,差别重要是快速充电锂离子电池负极材料的选择,不同于其他电池,其他快餐相关于可充电锂离子电池的整体架构更复杂的普通铅酸电池,锂离子重要是采用嵌入式结构,提高锂离子电池充电的效果,两者同时还能满足锂离子电池充电的要。 提高充电速度的关键是提高充电功率。功率(W)=电流X电压。充电器先将市电220V降至5V,输出到手机的微USB接口。然后手机内部电路降压至4.3v左右给电池充电。 现在许多城市提供快充的充电桩功率都高达20KW及以上,能够将10KV的高压交流电转换成几百安的直流电,并且通过专用电缆源源不断的输送进汽车电池系统。 总的来说,要想实现快充,除了要有专用的电池系统,保证内部的电子能够快速移动的条件和自动充电管理的条件外,还需要外部提供特殊的充电系统,用以给电池系统提供需要的大电流,由此可见,电池快充的原理并没有那么复杂。 相信通过阅读上面的内容,大家对快充锂离子电池有了初步的了解,同时也希望大家在学习过程中,做好总结,这样才能不断提升自己的设计水平。

    时间:2021-01-02 关键词: 锂离子电池 快充 原理

  • 关于镍氢电池的原理以及优缺点分析

    关于镍氢电池的原理以及优缺点分析

    什么是镍氢电池?随着全球多样化的发展,我们的生活也在不断变化着,包括我们接触的各种各样的电子产品,那么你一定不知道这些产品的一些组成,比如镍氢电池。 动力电池的基本功能是储能。在蓄电池市场中,除了耳熟能详的铅酸电池、锂离子电池之外,还有镍镉电池、镍氢电池等,其中镍氢电池被丰田、本田所看中,用于油电混合混合动力汽车储能,而新能源汽车则选择锂离子电池作为动力电池。 宽温区镍氢电池:在某些特殊条件下,如军事领域,飞机、坦克和其他军事设施,在非常寒冷的地区,它是要电气在-40c。为了解决这些问题,研究开发了一种宽温度氢化镍电池的成功发展的基础上免费储氢合金。 一般情况下,新的镍氢电池只含有少量的电量,大家购买后要先进行充电然后再使用。但如果电池出厂时间比较短,电量很足,推荐先使用然后再充电。、新买的镍氢电池一般要经过3-4次的充电和使用,性能才能发挥到最佳状态,很多朋友第一次充电碰到的小问题,比方第一次充电后使用时间没有想象的那么多。在3-4次充电和使用后问题就都迎刃而解了。 与镍铬电池相比,镍氢电池具有记忆效应低,环保性能好,使用寿命长等优势,存电量也比镍镉电池高30%左右。不过,镍氢电池的造价成本比镍镉电池要贵得多。 目前,商业化的镍氢电池正极材料重要是SpartanAB;这种合金的容量只有300mAh/g左右。钒基固溶储氢合金的最大问题是其在碱液中的电化学催化活性差。最近的工作发现,温度对基底固溶贮氢合金电极的放电性能有很大的影响。提高环境温度(小于80℃)可使钒基储氢合金释放大容量,表明该合金可成为高能量密度的金属氢化物镍电池正极材料。 虽然镍氢电池的记忆效应小,仍然推荐大家尽量每次使用完后再充电,并且是一次性充满,不要充一会用一会然后再充。这可是“延年益寿”的重要一点噢。电池充电时,要注意充电器周围的散热,为了避免电量流失等问题发生,保持电池两端的接触点和电池盖子的内部干净,必要时使用柔软、清洁的干布轻擦。 目前,锂离子电池在生命周期内的充电循环次数可达1000次以上(三元锂电池),磷酸铁锂电池更可达2000次以上。而镍氢电池的充电循环次数只有500次左右,使用寿命比锂离子电池要低得多。 在研究设计过程中,一定会有这样或着那样的问题,这就需要我们的科研工作者在设计过程中不断总结经验,这样才能促进产品的不断革新。

    时间:2020-12-31 关键词: 电池 镍氢电池 原理

  • 关于电池管理系统的组成以及相关原理分析

    关于电池管理系统的组成以及相关原理分析

    什么是电池管理系统?随着全球多样化的发展,我们的生活也在不断变化着,包括我们接触的各种各样的电子产品,那么你一定不知道这些产品的一些组成,比如电池管理系统。 电池管理系统(BATTERY MANAGEMENT SYSTEM),电动汽车电池管理系统(BMS)是连接车载动力电池和电动汽车的重要纽带,其主要功能包括:电池物理参数实时监测;电池状态估计;在线诊断与预警;充、放电与预充控制;均衡管理和热管理等。 电池管理系统的结构是模块化、分布式的。该系统由两级控制结构组成,即局部测量模块和中央处理模块。其中,中央处理模块的重要功能是通过RS232接口与上位机通信,并以CAN总线网络的形式与本地测量模块连接。本地测量模块的重要功能是数据采集(重要是温度、电流、电压数据采集)、充放电控制、电量测量、单电池均衡以及利用CAN总线技术与中央处理模块通信。 电池的外形尺寸将对电源系统结构有重大影响。要使用大量小型电池以适合形状复杂的电池模块(或电池组)吗?或者要使用外形尺寸很大的电池,因而由于重量问题而导致对电池数量的限制或引起其他的尺寸限制?这也许是设计变数最大的部分,因为外形新颖的电池不断上市,而且人们也在不断努力,务求电池模块或电池组集成到产品中后,会与整个产品概念更加一致。 基于各个模块的功能,BMS能实时检测动力电池的电压、电流、温度等参数,实现对动力电池进行热管理、均衡管理、高压及绝缘检测等,并且能够计算动力电池剩余容量、充放电功率以及SOC&SOH状态。 电池管理系统中的数据采集模块负责采集电池的电流、电压、温度等各种状态参数。充电控制模块自动充电分为预充电、恒流充电、恒压充电三个阶段,根据采集的数据控制充放电过程。在适当的时候,均衡模块可以通过一个15W的开关电源对单个电池进行均匀充电,使电池组中的电池更加平衡一致。 其他因素也可能对物理结构和监视电路造成影响。就锂离子电池而言,需要电池容量平衡,从而导致了额外的热量管理问题(去除热量),而且如果需要有源平衡,还需要电源转换电路。温度探头常常分布在整个模块之上,以提供一种将电压读数与充电状态关联起来的方法,因而需要一些支持电路和连接方案。 在研究设计过程中,一定会有这样或着那样的问题,这就需要我们的科研工作者在设计过程中不断总结经验,这样才能促进产品的不断革新。

    时间:2020-12-31 关键词: 电池 管理系统 原理

  • 你了解均衡充电的原理以及它的特点分析

    你了解均衡充电的原理以及它的特点分析

    你了解均衡充电吗?随着社会的快速发展,我们的锂电池也在快速发展,那么你知道均衡充电的详细资料解析吗?接下来让小编带领大家来详细地了解有关的知识。 锂电池组在充电时分为主动性和被动性来给电池充电,锂电池平衡充电可以主动平衡摒弃了被动平衡消耗电流的方法,改成了传送电流的方法;负责电荷传送的设备是一种电源转换器,这种设备使电池组内的小电池无论是在充电、放电还是闲置状态都能传送电荷,从而使小电池之间可经常保持动态平衡。 平衡充电,顾名思义,就是强调随时处于平衡状态,既有利于维护设备的安全,又有利于保持电源输入的稳定。喜欢售后服务好,均衡充电好,将被列为顾客购买的重点对象。另外,均衡收费的服务态度也会影响顾客的购买情绪和购买意愿。 均衡充电简称均充,是均衡电池特性的充电,是指在电池的使用过程中,由于电池的个体差异、温度差异等原因造成电池端的电压不平衡,为了避免这种不平衡趋势的恶化,需要提高电池组的充电电压,对电池进行均衡性的充电,以达到均衡电池组中各个电池单体特性,延长电池使用寿命。 平衡充电的重要性在于电池内部环境的平衡。不了解电池内部结构的消费者可能没有足够的了解。任何电池都会受到外部环境内部因素的影响,导致电压不稳定。均衡充电可以防止这种情况的发生,及时改变不均衡现象。 锂电池平衡充电闲置时:即使各个小电池已达到了充电时的平衡状态,但由于温度梯度不同,有的小电池内部温度高些,有的小电池内部低些,也会令每个小电池的内部漏电速度不同,试验数据显示,电池每升高10℃,漏电率便上升一倍,主动平衡功能可确保闲置锂电池组内的小电池“不断”地重新获得平衡,这有利于电池组内储存的电量能被充分利用,使电池组工作能力结束时,单个的小锂电池残余电量最小。 以目前的锂动力电池制造水平和工艺,在锂动力电池电芯在生产过程中,各个锂动力电池单体会存在细微的差别,也就是一致性问题,不一致性主要表现在锂动力电池单体容量、内阻、自放电率、充放电效率等方面。锂动力电池单体的不一致,传导至锂动力电池组,必然的带来了锂动力电池组容量的损失,进而造成寿命的下降。 在使用平衡充电时,要注意电压的灵活设置,这通常表现在充电的前期和中期。电压值的灵活设置应根据电池的实际情况进行匹配。为了防止设置的不准确,导致输入流量的正常消解,只有正确的设置才能实现正常的运行。 以上就是均衡充电的有关知识的详细解析,需要大家不断在实际中积累经验,这样才能设计出更好的产品,为我们的社会更好地发展。

    时间:2020-12-26 关键词: 锂电池 均衡充电 原理

  • 你可能不知道的太阳能发电原理概况解析

    你可能不知道的太阳能发电原理概况解析

    你知道太阳能发电原理吗?在生活中,你可能接触过各种各样的电子产品,那么你可能并不知道它的一些组成部分,比如它可能含有的太阳能,那么接下来让小编带领大家一起学习太阳能发电原理。 太阳能发电是通过光化学效应或者是光电效应,直接将太阳能的光能转化到电能装置中,利用这种光电转换原理让太阳的辐射光通过半导体物质,转化为电能的一种组件,所以太阳能发电的这种光电转换也被称为是“光生伏打效应”,而太阳能电池又称为“光伏电池”。只要是被太阳光照射到的地方,太阳能就能够通过转化瞬间输出电流和电压,在物理学上太阳能发电被称为“太阳能光伏”,简称“光伏”。只是现在的太阳能发电是以光电效应工作的薄膜式的太阳能电池作为主流,而以光化学效应工作的湿式太阳能电池则还处于萌芽阶段。 太阳能发电最简单的原理就是我们所说的化学反应,即太阳能转化为电能。这个转化过程就是太阳能辐射能光子通过半导体物质转变为电能的过程,通常叫做“光生伏打效应”,太阳电池就是利用这种效应制成的。 光—热——动—电转换方式通过利用太阳辐射产生的热能发电,一般是由太阳能集热器将所吸收的热能转换成工质的蒸气,再驱动汽轮机发电。前一个过程是光—热转换过程;后一个过程是热—动再转换成电最终转换过程,与普通的火力发电一样.太阳能热发电的缺点是效率很低而成本很高,估计它的投资至少要比普通火电站贵5~10倍。 我们知道,当太阳光照射到半导体上时,有一部分光子被表面反射掉,其余部分要不被半导体吸收要不就被半导体透过,其中被吸收的光子,当然有一些变成热,另~些光子则同组成半导体的原子价电子碰撞,于是产生电子一空穴对。这样,太阳光能就以产生电子一空穴对的形式转变为电能,再经过半导体内部的电场反应,产生一定的电流,如果把一块一块的电池半导体以各种方式连接起来则形成多股电流电压,从而输出功率。 光—电直接转换方式该方式是利用光电效应,将太阳辐射能直接转换成电能,光—电转换的基本装置就是太阳能电池。太阳能电池是一种由于光生伏特效应而将太阳光能直接转化为电能的器件,是一个半导体光电二极管,当太阳光照到光电二极管上时,光电二极管就会把太阳的光能变成电能,产生电流。 太阳能发电其实是会受到阴晴天气、四季变化、昼夜更替等方面的影响的,以太阳能路灯为例,太阳能蓄电池如果想要储存足够的电量,那么白天的阳光照射温度一定要达到25℃以上,并且在太阳能电池储存电量的过程中是不能够有树叶遮挡的,否则就会削弱太阳能照射的强度。太阳能电池如果遇到了阴雨天气,太阳能发电正常工作就会受到影响,而太阳能蓄电池储蓄满的电量只能够使用八小时,是无法支撑连绵的阴雨天气的。 相信通过阅读上面的内容,大家对太阳能发电有了初步的了解,同时也希望大家在学习过程中,做好总结,这样才能不断提升自己的设计水平。

    时间:2020-12-17 关键词: 太阳能 发电 原理

  • 你了解GPU吗?GPU原理+渲染流程介绍

    你了解GPU吗?GPU原理+渲染流程介绍

    GPU是每台电脑不可缺少的组件,缺少GPU,我们的笔记本将无法正常显示图像。即便我们每天都在运用GPU,但是大家真的了解GPU的原理吗?了解GPU渲染流程吗?如果你对GPU以及GPU相关知识具有兴趣,不妨继续往下阅读哦。 GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段。GPU管线涵盖了渲染流程的几何阶段和光栅化阶段,但对开发者而言,只有对顶点和片段着色器有可编程控制权,其他一律不可编程。如下图: 简单总结GPU管线,这阶段中主要是对图元进行操作。首先,将由应用阶段加载到显存中的顶点数据(由drawCall指定后)作为输入传递给顶点着色器。接着,顶点着色器首先对图元的每个顶点设置模型视图变换及投影变换(即右乘MVP矩阵),然后将变换后的顶点按照摄像机视椎体定义(即透视投影,或正投影)进行裁剪,将不在视野内的顶点去掉并剔除某些三角面片。最后到几何阶段的屏幕映射,负责把修改过的图元的坐标转换到屏幕坐标系中(即投影到屏幕上)。 到光栅化阶段,这一阶段主要目的是将每个图元转换为多个片段,并生成多个片段的位置,由片段着色器负责计算每个片段的颜色值。同时,在这阶段片段着色器通常会要求输入纹理,从而对每个片段进行着色贴图。每个片段在被发送到帧缓冲区之前,还会经历一些操作,这些操作可能会修改片段的颜色值,其中包括深度测试,模板测试,像素所有权测试,与当前缓冲区相同位置颜色混合等等。 最后,帧缓冲区内容被交换到屏幕进行显示。 下面会对各个阶段每个知识点进行详细的分析理解。 一、顶点着色器 顶点着色器是一段类似C语言的程序(即OpenGL的GLSL,或只支持微软的HLSL,或Unity的Cg),由程序员提供并在GPU上执行,对每个顶点都执行一次运算。顶点着色器可以使用顶点数据来计算改顶点的坐标,颜色,光照和纹理坐标等。在渲染管线中,每个顶点都独立的被执行。原因在于顶点着色器本身不能创建或删除顶点,也无法得到顶点与顶点之间的关系,如无法知道两个顶点是否属于同一个三角网格。正因这独立性,GPU可以并行化处理每一个顶点,提高处理速度。 顶点着色器最重要的功能是执行顶点的坐标变换和逐顶点光照。坐标变换是改变顶点的位置,把顶点坐标从模型空间转换到齐次裁剪空间(即将本地坐标系转换为裁剪坐标系)。通过改变顶点位置可以实现很多酷炫的shader效果,如模拟水面,布料等等,这里后面添加实例学习例子再详细说明。 顶点着色器的另一功能是向后续阶段的片段着色器提供一组易变(Varying)变量,用于插值计算。 二、图元装配 在顶点着色器程序输出顶点坐标之后,各个顶点按照绘制命令(DrawArrays或DrawElements)中的图元类型参数和顶点索引数组被组装成一个个图元,并对其进行如下图的图元操作: 裁剪,处于视椎体以外的图元将被丢弃,若该图元与视椎体相交则会发生裁剪产生新图元,如下图: 注意一点,透视裁剪是比较影响性能的过程,因为每个图元都需要和6个裁剪面进行相交计算并产生新图元。所以一般在x轴,y轴超出屏幕(由glViewPort定义)的部分,这些顶点在视口变换的时候被更高效的直接丢弃,无须产生新图元。 视椎体在OpenGL中可以通过gluPerspecTIve来定义对应的大小结构,在Cocos2dx引擎中,Director类的setProjecTIon方法就定义了cocos的渲染用到的视椎体,大家可以阅读对应的代码了解学习下。 经过视椎体裁剪后的顶点坐标经过透视分离(指由硬件做透视除法),得到范围是[0,1]的归一化的设备坐标,最后映射到屏幕或者视口上。 三、片段着色器 【先补充一点,其实在光栅化之前,要判断图元的朝向,是面向还是背对观察者,以决定是否需要丢弃图元。在OpenGL可通过glFrontFace指令来决定哪个方向为正,并通过glCullFace决定需要保留哪一面(别忘了要先打开剔除状态设置才可以调用指令 glEnable(GL_CULL_FACE);)。这样设计的好处是能减少一些不必要的绘制,并减少对GPU的浪费。】 回到正题,片段着色器同上述的顶点着色器,只是它作用的对象是每一片段,对其进行着色贴图。片元着色器的输入是根据那些从顶点着色器中输出的数据插值得到的,其中最重要的渲染技术之一是纹理采样。在顶点着色器阶段输出每一顶点对应的纹理坐标,然后经过光栅化阶段对三角网格的3个顶点各自纹理坐标进行插值运算后便得到其覆盖片元的纹理坐标,从而在片元着色器中进行纹理采样。如下图: 四、逐片元操作 这里篇幅原因不一一分析每种测试操作,大家可以通过看书了解对应的用途。下面举混合操作来分析一下。下图是简化流程图: 对于不透明的物体,可以直接关闭混合Blend操作,这样片元着色器计算得到的颜色值直接覆盖更新缓冲区的颜色值。但对于半透明物体就必须开启使用混合操作从而让物体看起来是透明的。开发过程中无法得到透明效果的原因,往往有可能是没有开启混合功能的原因。 由于计算机图形的性质,图形管线已构造为计算状态与数据流动作为它们之间的数据流。每个阶段工作在一组元素,如顶点,三角形或像素。下图1[ Shr99 ]给出了典型的OpenGL固定管道。 人们很容易看到这种体系结构如何类似于中描述的流计算模型上一节。这种类型的固定结构的是,直到最近,计算机图形卡制造商的标准可循。虽然类似流计算模式,它提供了很少或没有编程的用户,因此,它是不可用于比处理图形指令的其他任何任务。2000年[ Owe05 ],GPU 小号允许管道的关键部位的可编程性一定程度。 当前GPU 小号允许用户在形式的图形流水线的两个阶段几乎任何类型的功能进行编程顶点程序和片段的方案。这些允许用户分别写在顶点和片段数据的程序。下图示出了更近的映射的OpenGL可编程管线到流模型。 该顶点处理器 顶点处理器输入的顶点值和其相关的数据进行操作。它的目的是执行传统的图形操作,如:顶点变换,正常转化和规范化,纹理坐标生成和改造,照明和颜色计算[ Ros04。因为顶点处理器是能够改变输入的顶点数据的位置,从而影响最终图像的要绘制。由于图像是,在本质上,的存储器阵列,顶点处理器能够分散状操作。另外,最近的处理器能够从纹理存储器读出,从而产生一种特殊的延迟收集动作。我们称之为延迟,因为顶点不能直接从其他顶点元件读取的信息,但它可以读取的任何数据从先前的计算结果,如果它是在纹理存储器编码。在后面的章节中,我们将看到如何利用这一点来执行简单的计算。 顶点处理器可以在SIMD(单指令多数据)或MIMD(多指令多数据)模式下运行; 因此,允许两个,一个处理器单元中的指令和任务并行。由于现代GPU 小号包含多个顶点处理器(最新的NVIDIA 和ATI卡有多达六个),我们可以开始欣赏并行这些体系结构上实现的水平。 该碎片处理器 该片段处理器上的片段和它们相关联的数据进行操作。一些传统上与片段着色器相关联的操作是:质地接入和应用,雾,颜色和与上内插值一般操作。如同顶点着色器,片段着色器可用于在GPU上执行几乎任何种类的计算。因为片段处理器可以访问纹理存储器的随机这是很容易的片段程序内执行聚集操作。实际上,这是很常见的使用纹理信息进行依赖于其他纹理查找窗口; 功能移植算法的流计算模型时来真的很方便。 虽然在目前的GPU架构碎片处理器可以在SIMD模式下运行,是非常严格的那种,他们允许我们将看到,他们还是很容易执行一般的计算操作。加,由于片段的处理片段的处理器数量的计算频率比顶点处理器的数目越高。当前顶级的线卡有十六岁左右的片段处理器。 以上便是此次小编带来的“GPU”相关内容,通过本文,希望大家对GPU原理以及渲染原理具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-11-23 关键词: GPU 指数 原理

  • 在电路中发挥巨大作用的浪涌抑制器,值得你了解

    在电路中发挥巨大作用的浪涌抑制器,值得你了解

    什么是浪涌电压抑制器?你知道吗?它有哪些作用?下面让我们一起来学习以下。浪涌电压抑制器 (surge suppressor),也叫浪涌保护器、防雷器,是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 浪涌抑制器的作用 保护系统免受浪涌高压的损害。当电气回路或者通信线路中因为外界的干扰突然产生尖峰电流或者电压时,浪涌保护器能在极短的时间内导通分流,从而避免浪涌对回路中其他设备的损害。 浪涌抑制器的分类 1.开关型 2.限压型 3.分流型 4. 扼流型 几种浪涌抑制器的工作原理 1.开关型:其工作原理是当没有瞬时过电压时呈现为高阻抗,但一旦响应雷电瞬时过电压时,其阻抗就突变为低值,允许雷电流通过。用作此类装置时器件有:放电间隙、气体放电管、闸流晶体管等。 2.限压型:其工作原理是当没有瞬时过电压时为高阻扰,但随电涌电流和电压的增加其阻抗会不断减小,其电流电压特性为强烈非线性。用作此类装置的器件有:氧化锌、压敏电阻、抑制二极管、雪崩二极管等。 3.分流型:与被保护的设备并联,对雷电脉冲呈现为低阻抗,而对正常工作频率呈现为高阻抗。 4. 扼流型:与被保护的设备串联,对雷电脉冲呈现为高阻抗,而对正常的工作频率呈现为低阻抗。 用作此类装置的器件有:扼流线圈、高通滤波器、低通滤波器、1/4波长短路器等。以上就是浪涌电压抑制器的一次额特点,以及它的工作原理,希望能给大家帮助,帮助大家设计出更好的产品。

    时间:2020-11-01 关键词: 浪涌抑制器 浪涌保护器 原理

  • 作为一名合格工程师,你需要了解的正弦波逆变器

    作为一名合格工程师,你需要了解的正弦波逆变器

    正弦波逆变器是逆变器的一种,它是把直流电能(动力电池、蓄电池)转变成交流电(一般为220V,50Hz正弦波)的电力电子装置。逆变器与ACDC转化器是相反的过程。正弦波逆变器广泛运用于各类:微机系统、通信系统、家用、航空、应急、通讯、工业设备、卫星通信设备、军用车载、医疗救护车、警车、船舶、太阳能及风能发电领域等需要应急后备电源的场所,可构成EPS应急电源系统。 在介绍正弦波逆变器工作原理之前,先介绍一下逆变器的工作原理。 逆变器是一种DCtoAC的变压器,它其实与转化器是一种电压逆变的过程。转换器是将电网的交流电压转变为稳定的12V直流输出,而逆变器是将Adapter输出的12V直流电压转变为高频的高压交流电;两个部分同样都采用了用得比较多的脉宽调制(PWM)技术。其核心部分都是一个PWM集成控制器,Adapter用的是UC3842,逆变器则采用TL5001芯片。TL5001的工作电压范围3.6~40V,其内部设有一个误差放大器,一个调节器、振荡器、有死区控制的PWM发生器、低压保护回路及短路保护回路等。 输入接口部分:输入部分有3个信号,12V直流输入VIN、工作使能电压ENB及Panel电流控制信号DIM。VIN由Adapter提供,ENB电压由主板上的MCU提供,其值为0或3V,当ENB=0时,逆变器不工作,而ENB=3V时,逆变器处于正常工作状态;而DIM电压由主板提供,其变化范围在0~5V之间,将不同的DIM值反馈给PWM控制器反馈端,逆变器向负载提供的电流也将不同,DIM值越小,逆变器输出的电流就越大。 电压启动回路:ENB为高电平时,输出高压去点亮Panel的背光灯灯管。 PWM控制器:有以下几个功能组成:内部参考电压、误差放大器、振荡器和PWM、过压保护、欠压保护、短路保护、输出晶体管。 直流变换:由MOS开关管和储能电感组成电压变换电路,输入的脉冲经过推挽放大器放大后驱动MOS管做开关动作,使得直流电压对电感进行充放电,这样电感的另一端就能得到交流电压。 LC振荡及输出回路:保证灯管启动需要的1600V电压,并在灯管启动以后将电压降至800V。 输出电压反馈:当负载工作时,反馈采样电压,起到稳定I逆变器电压输出的作用。 正弦波逆变器与普通逆变器的区别是它输出的波形是个完整的正弦波,失真率低,因此对收音机及通讯设备无干扰,噪声也很低,保护功能齐全,整机效率高。 而正弦波逆变器之所以能输出完整的正弦波是因为采用了比PWM技术更先进的SPWM技术。 SPWM原理基于脉冲作用于时间函数器件的等效原理:如果脉冲作用于时间函数器件,峰值与作用时间的乘积相等,可近似这些脉冲等效。 SPWM基于固定频率固定峰值(如开关频率10k)的三角波与变频变压的参考正弦波(基波)进行比较,从而将直流电压脉冲化(占空比变化的脉冲),以近似参考正弦波作用于器件上。调整参考正弦波的幅值和频率,从而产生不同幅值和频率的等效参考正弦波的直流电压脉宽调制波。 正弦波逆变器的优点 示出正弦波逆变器的输出电压波形。它的优点是输出波形好,失真度很低,且其输出波形与市电电网的交流电波形基本一致,实际上优良的正弦波逆变器提供的交流电比电网的质量更高。正弦波逆变器对收音机和通讯设备及精密设备的干扰小,噪声低,负载适应能力强,能满足所有交流负载的应用,而且整机效率较高;它的缺点是线路和相对修正波逆变器复杂,对控制芯片和维修技术的要求高,价格较贵。在太阳能发电并网应用时,为避免对公共电网的电力污染,也必须使用正弦波逆变器。 正弦波逆变器输出的是同我们日常使用的电网一样甚至更好的正弦波交流电,不存在电网中的电磁污染。简单来说就是运用范围广,负载能力强,稳定性出色。能提供与平常家用相同的交流电。在满足功率的情况下,几乎能够带动任何种类的电器。 正弦波逆变器的缺点 正弦波逆变器由于制造成本与技术要求均高,导致最纯正的正弦波逆变器市场售价偏贵,与大众消费产生了一定差距,没有被普及起来。以上就是正弦波逆变器的工作原理,以及它的一些有点和缺点,希望能帮助大家了解正弦波逆变器。

    时间:2020-11-01 关键词: 逆变器 正弦波逆变器 原理

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包