令人愉快又颓废的周日马上就要到了,正在计划这周博客写什么的我,突然收到导师发给我的消息,What?要给我发补助?
这样中午不得去食堂加一个餐,很快啊,我就说了声:谢谢。
但后续证明我还是太嫩了些,天上是没有免费午餐的。
不过对于这种专业相关,而且能从中学到不少东西的任务,我还是十分乐意去干的,就害怕是那种重复性的(对我来说)毫无价值的体力性劳动。
上学嘛,当然是以接触新事物,了解新知识为主的,帮老师做些东西无可厚非,但前提是要让学生能感觉到自己是在成长,要是一个双赢的局面(满满的求生欲)。
哎呀跑题啦,具体的电路图可能是项目相关的,这里就不放了,但并不妨碍我对它进行分析、解构与重组。
这里为什么会说是初中生,因为我发现初中学的电路知识,可比高中学的电学知识对电路分析有用多了,比如说串并联,比如说欧姆定律。哪怕是之后学的KVL、KCL也是以串并联为基础的。
高中物理主要是在初中进行深层次讨论,逐渐进行到微观,例如电荷,电子等运用力学知识去解决电学遇到的难题。
所以现在要让一个初中生设计一个降压电路,他会怎么做?
相信电子人没人会不记得这个定律。借助于这个定律,初中生也能设计出一个降压电路,如图所示:
咱们来好好的分析一下,按照电源设计的要求,去对这个电路进行评估。
首先电源肯定是要拿来供电的,而且提供的电压要稳定,并且当负载变化时要有好的负载响应能力。
还有一点,对于一个嵌入式系统来说,电压供应需求是不唯一的。
好了,有这些要求,咱们来分析一下这个电路:
1、只能降压
2、驱动能力太弱
当你想要一个大电流的驱动时,是难以实现的,因为它不可能超过流过R1的电流。
3、输出没有稳压
当以加上一个负载的时候,就类似于给R2并联了一个电阻,等效出来的电路R2阻值肯定比200K小,输出也不是8V。
4、负载响应能力很差
当负载变化时,电流不够,只能改变电压,造成很大的电压波动。
仔细一看,还真全是毛病,但别忘了我们每一个人都是从那个状态过来的,从最基本的原理开始,一步一步的向前迈进。
这个电路图大家记住,暂时按下不表(后面还会出现),咱们先聊一聊电源设计。
对于一个嵌入式硬件系统来说,电源模块设计是重中之重,电源的好坏直接影响嵌入式硬件系统的可靠性。
设计供电电源应该考虑的因素包括输出的电压、电流,输入的电压、电流,安全因素,电磁兼容与电磁干扰,体积限制、功耗限制以及成本限制等。
首先要给大家提一个概念——电源树。
根据估计的电流,以及各电压等级电流的分配,绘制更加形象直观的树状图。
说白了就是一个硬件系统,不同的电路元件需要的工作电压是不一样,但整个系统的输入电压只有一个,所以就要从这唯一的输入(一般是12V或者24V),转化成可供处理器和各个外设使用的电压(常见的有5V、3.3V、1.8V)。
人们总喜欢给周围的事物分类,按照分类标准不一样,分出来的结果也各不相同,电源电路这块也是,但万变不离其宗,不管标准怎么改,无非是交流(AC)和直流(DC)之间的爱恨情仇。
AC到DC
交流到直流,最常见的就是各种家用电器,大家都知道接入电网的是220V交流电,而家用电器大多是直流。
AC到AC
交流到交流,比如隔离变压器,防止220V直接和地连。
DC到AC
直流到交流,这一类属于逆变器
像太阳能发电板,把太阳能转换成的直流电转成交流以供使用;
或者变频冰箱与空调,一般是把AC转到DC再转到AC,因为在直流的时候,改变频率是很简单的。
DC到DC
大家常见的各种12V转5V、3.3V、1.8V的电路,用于驱动CPU和各种外设。比如低压差的LDO和开关电源等。

分类图
对于刚入门的小白来讲,最常见的,最常用的就是DC-DC,直流转直流,而这里面最常见的就是LDO线性稳压电路。
所以后面我会重点讲解一下这个。
全世界第一颗集成电路线性稳压器1970年面世
著名的LM317,1976 (National Semiconductor)Robert Dobkin and Bob Widlar designed
大家有没有想过线性稳压器是怎么稳压的呢?为什么线性稳压器输出端的电压就能这么的稳定?
其实大家好好联想一下生活中或者工作中的各种例子:一个稳定的系统,最重要的是什么?
比如说你的家庭,一个幸福的家庭,里面的成员之间最重要的是什么?是沟通。
没错,就是沟通,放在系统里面它有另一个名字——反馈。
前面提到的初中生设计的电路可以再拿出来了。
如果我们用一个调整管Q1(可以根据信息改变自己电压输出,就当成水龙头就行)代替R1;R2就相当于我们的负载电路。
这样的话,我们可以通过检测输出端的电压,反馈给我们的比较器,再由比较器给我们的Q1,Q1通过反馈过来信息在控制自己的输出电压是多少,以此来达到一个稳定的输出。
晶体管Q1有什么特点:
非常典型的一个三端稳压器,我老师说他上学时,他老师经常举这个例子,一个输入电容,一个输出电容,三脚一个地。
它内部的原理图是这样的,上面使用一个低功率的MOS管来驱动一个大功率的MOS管,也就是调整管部分,下面就是那个反馈电路。
这个稳压器对于新进的工程师来说绝对不陌生,几乎所有的电源电路中都能见到。
Vout可调,默认的话直接ADJ接地,3.3V或者5V;想调压可以通过改变电阻R2的阻值。
他的内部原理也是一样的,调整管部分和检测反馈电路部分。
其实大多数工程师在设计LDO电路的时候,参考线性稳压器的数据手册里面的典型电路就行,人家怎么说,咱们就怎么做。
最小压降决定你的电路能不能正常工作。
举个例子,大家看这个电路可以正常工作吗?

首先,我们要查一查AMS1117工作手册就能发现
当输出电流为1A的时候,压降的典型值是1.3V,而锂电池正常工作状态时电压范围是4.5V—3.3V,你想要3.3的输出,3.3+1.3=4.6V。
而我们常见的锂电池,根本提供不了这么高的电压值。
所以这个电路很难正常工作。
压降又和什么有关呢?那肯定是调整管了。
有这样几个特点:
热插拔效应,其实每一个导线就类似于电感,有电感就少不了振荡。可能5V的稳压,当刚插进去的时候能达到10V。
所以输入电压的选择尽量遵守下面几点:
这个就好理解了,不能小马拉大车嘛,输出不了需要的电流肯定是没办法让电路正常工作的。
选择的时候注意以下几点:
常看三个参数:
TJMAX:芯片内核正常工作的最高温度
0JC:芯片内核到芯片外壳的每W温升
0JA:芯片内核到外部环境的每W温升
我们最应该关注的是0JA这个参数。
5V转3.3V电流0.5A环境温度25°C:芯片温度=25+(5-3.3)x0.5x40=59°c
纹波是由于直流稳定电源的电压波动而造成的一种现象,因为直流稳定电源一般是由交流电源经整流稳压等环节而形成的,这就不可避免地在直流稳定量中多少带有一些交流成份,这种叠加在直流稳定量上的交流分量就称之为纹波。
记住一个重要参数PSRR,输出比输入,然后20log一下。
以及下面几个特点:
瞬态响应,可以通过增大电容来抑制,但不能消除,而且注意电容也不能太大了,不然会延长再次稳定的反应时间。
选择时,注意一下几点:
一个小小的电源设计就有这么多道道,上面这些内容可能连电源设计的千分之一都算不上。
今天就到这里了,祝大家早安,午安和晚安!
(看球去了,勇士打的是真闹心,格林拿下吧赶紧)
参考文献:
https://www.cnblogs.com/iron2222/p/15852617.html
https://www.bilibili.com/video/BV1ya411L7Jj?vd_source=3602ab285cd1b8d5fa78a0f57368918c
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir