jjzjj

【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理

玩转单片机与嵌入式 2023-07-17 原文

晶体管是一个简单的元器件,可用于构建许多有趣的项目。在本文中,我将用通俗易懂的语言给您讲解晶体管的工作原理,以便您可以在电路设计中更好的使用静态管。一旦你学习这些基础知识,对以后的设计和使用来说,将会变得非常容易。

我们将重点介绍两种最常见的晶体管: 双极型晶体管(三极管)和MOSFET。
晶体管的工作原理其实是类似于电子开关。它可以打开和关闭电路。一个简单的思考方法是将晶体管视为无源的继电器。晶体管类似于继电器,从某种意义上说,您可以使用它来打开和关闭某些东西。 但晶体管也可以部分导通,一般在放大电路中使用,这部分内容不是本文讲解的重点。

三极管的工作原理 (BJT)

让我们从经典的NPN三极管开始。它是一个双极结晶体管(BJT),有三条腿,分别是: 基极 (b) 集电极 (c) 发射极 (e)


三极管处于打开状态时,电流可以从集电极流过三极管到发射器。当它关闭时,没有电流可以流动。 在下面的示例电路中,晶体管是OFF的。这意味着没有电流可以流过它,因此发光二极管(LED)也关闭了。 要打开三极管管,基极和发射极之间需要大约0.7V的电压。 如果你有一个0.7V的电池,你可以把它连接到基极和发射极之间,三极管就会打开。 由于我们大多数人都没有0.7V电池,我们如何打开三极管? 很简单!三极管的基极至发射极部分的工作方式类似于二极管。二极管具有正向电压,它从可用电压中获取到该正向电压。如果串联添加一个电阻器,则电阻上的其余部分电压会下降。

因此,通过添加电阻,您将自动获得约0.7V的电压。

这其实与用于串联电阻限制通过LED的电流以确保LED不损坏的原理相同。

如果还添加一个按钮,则可以使用按钮控制晶体管,从而控制LED的ON和OFF。


01、选择元件的值


要选择元件值,您还需要了解三极管的工作原理: 当电流从基极流向发射极时,三极管导通,以便更大的电流可以从集电极流向发射极。


两个电流的大小之间存在连接。这称为三极管的增益。

对于通用晶体管,如BC547或2N3904,增益可能是100左右。这意味着,如果有0.1 mA电流从基极流向发射极,则从集电极流向发射器的电流为10 mA(100倍以上)。


02、R1需要多大的电阻值才能获得0.1mA的电流?

如果电池为9V,并且晶体管的基极到发射极为0.7V,则电阻器两端剩下8.3V。

您可以使用欧姆定律来计算电阻值:

因此,您需要一个83 kΩ的电阻,但是这不是一个标准值。但82 kΩ是,而且它足够接近。

R2 用于限制 LED 的电流。如果您要将LED和电阻器直接连接到9V电池,则可以选择的值,而无需三极管。例如,1 kΩ应该工作正常。


03、怎么选择三极管?

NPN晶体管是最常见的三极管(BJT)。但是还有另一种称为PNP晶体管,其工作方式相同,只是所有电流都朝相反的方向。 在选择晶体管时,要记住的最重要的事情是晶体管可以承受多少电流。这称为集电极电流(IC)。例如我们常用的8050三极管的IC电流值为:1.5A。


    


MOSFET 晶体管的工作原理

MOSFET晶体管是另一种非常常见的晶体管类型。它也具有三个引脚:

栅极(G)

漏极(D)

源极(S)


MOSFET的工作原理类似于三极管,但有一个重要的区别:

1、在三极管中,从基极到发射极的电流决定了有多少电流可以从集电极流向发射极。

2、在MOSFET晶体管中,栅极和源极之间的电压决定了有多少电流可以从漏极流向源极。


01、示例:如何打开MOS管

下面是一个用于接通MOSFET的示例电路。


要打开MOSFET晶体管,栅极和源之间的电压需要高于晶体管的阈值电压。例如,BS170的栅源阈值为2.1V。(具体每个MOS管的阈值电压是多少,我们可以在MOS管的数据手册中查到)。 MOSFET的阈值电压实际上是它关闭的电压。因此,要正确打开晶体管,您需要一个比该电压高一点的电压。 高多少取决于您希望流多少电流。如果你比阈值高出几伏,这通常足以满足低电流的事情,比如打开LED。 请注意,即使您使用足够高的电压以使1A电流流动,也不意味着MOS管恒定流过1A电流。它其实是电流流过的最大值,最终实际流过的电流还是取决于所接的电路以及负载。 因此,只要我们确保不超过最大栅源电压限制(BS170为20V),您就可以随心所欲地达到最高电压。

在上面的示例中,当我们按下按钮时,栅极连接到9V。这将打开晶体管。


02、元器件选择

上图中R1的值其实并不重要,但大约10 kΩ应该可以正常工作。其目的是关闭MOSFET。 R2 设置 LED 的亮度。对于大多数 LED,1 kΩ 应该工作正常。

Q1几乎可以是任何N沟道MOSFET,例如BS170。


03、怎么关闭MOSFET?

关于MOSFET的另一件重要事情是:它的作用也有点像电容器 。即栅源部分。当您在栅极和电源之间施加电压时,该电压将保持在那里,直到电容完全放电。

如果没有上述示例中的电阻(R1),晶体管将无法关闭。对于电阻器,栅源电容器有一条放电路径,以便晶体管再次关闭。

详情可以参考本公众号的另一篇文章:


04、如何选择MOS管

以上示例使用 N 沟道 MOSFET。P 通道MOSFET的工作方式相同,只是电流沿相反方向流动,并且栅极到源极的电压必须为负才能将其打开。

选择MOSFET时要记住的两件事是: 栅源至源极阈值电压。您需要高于此值的电压才能打开晶体管。 连续漏极电流。这是可以流过晶体管的最大电流量。

还有其他重要参数需要牢记,具体取决于您制作的内容。但这超出了本文的范围。请记住上面的两个参数,您将有一个很好的起点。


05、MOSFET栅极电流

如果你想使用单片机如STM32控制MOSFET,那么你需要记住另一件事:打开晶体管时流入栅极的电流。

如上所述,MOSFET的栅极到源极充当电容器。. 这意味着一旦充电,就没有更多的电流流过它。因此,当MOSFET导通时,没有电流流过栅极。 但是,当MOSFET导通时,会产生电流,就像为电容器充电一样。在一小分之一秒内,可能会有很多电流流动。 为了保护我们的单片机不受流过的较大电流的影响,您需要添加一个MOSFET栅极电阻器。

上图中栅极电阻 通常选择1000 Ω就可以。



为什么需要晶体管?

可能有一些新手小白会问:为什么我们需要晶体管?为什么不将 LED 和电阻器直接连接到电池上?

1、晶体管的优点是可以使用小电流或电压来控制更大的电流和电压。

例如我们想要用单片机IO引脚控制电机、大功率LED、扬声器、继电器等,这就必须使用到晶体管。由于单片机的输出引脚在 5V或3.3V 时通常只能提供几毫安。因此,如果您想控制110V户外庭院灯,则无法直接从接到单片机的引脚上。 您可以会想到可以通过继电器来完成。但即使是继电器通常也需要比引脚所能提供的电流更多的电流。所以我们就需要一个晶体管来控制继电器。


当然,晶体管也可用于更简单的传感器电路,例如光传感器电路,触摸传感器电路或H桥电路。 我们几乎所有的电路都会使用到晶体管。它确实是电子产品中最重要的组件。



晶体管作为放大器

晶体管可以作为放大器工作的原因是:它不仅可以有两个状态(ON/OFF),还可以介于“完全打开”和“完全关闭”之间的任何位置。 这意味着一个几乎没有能量的小信号可以控制晶体管,在晶体管的集电极-发射极(或漏极-源极)部分产生该信号的更强的版本。因此,晶体管可以放大小信号。 下面是一个简单的放大器来驱动扬声器。输入电压越高,从基极到发射极的电流越高,通过扬声器的电流越高。 变化的输入电压使扬声器中的电流发生变化,从而产生声音。


通常,您需要再添加几个电阻器来偏置晶体管。否则,你会得到很多失真。我们可以在后面的文章中再详细介绍。

今天的分享就到这里,最后给大家推荐一个我前段时间加入的硬件工程师交流群。这群是由嘉立创搭建的,群里除了可以跟硬件同行们探讨技术外,还有硬件外包需求、招聘需求的分享

如果你也想成为硬件交流群内的一员,可以加我好友以下是群内部分技术探讨、外包和招聘需求分享截图:

有关【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  4. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  7. ruby - `rescue $!` 是如何工作的? - 2

    我知道全局变量$!包含最新的异常对象,但我对下面的语法感到困惑。谁能帮助我理解以下语法?rescue$! 最佳答案 此构造可防止异常停止您的程序并使堆栈跟踪冒泡。它还会将该异常作为值返回,这很有用。a=get_me_datarescue$!在此行之后,a将保存请求的数据或异常。然后您可以分析该异常并采取相应措施。defget_me_dataraise'Nodataforyou'enda=get_me_datarescue$!puts"Executioncarrieson"pa#>>Executioncarrieson#>>#更现实的

  8. ruby - File.read ("| echo mystring") 是如何工作的? - 2

    我在我正在处理的一些代码中发现了这一点。它旨在解决从磁盘读取key文件的要求。在生产环境中,key文件的内容位于环境变量中。旧代码:key=File.read('path/to/key.pem')新代码:key=File.read('|echo$KEY_VARIABLE')这是如何工作的? 最佳答案 来自IOdocs:Astringstartingwith“|”indicatesasubprocess.Theremainderofthestringfollowingthe“|”isinvokedasaprocesswithappro

  9. ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的? - 2

    我今天看到了一个ruby​​代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem

  10. ruby-on-rails - attr_accessible 在 Rails 中如何工作? - 2

    我刚刚有一个关于RubyonRails和模型(Rails3)中的attr_accessible属性的一般性问题。有人可以解释应该在那里定义哪些模型属性吗?我记得一些关于批量分配风险的事情,虽然我在这方面不太了解......谢谢:) 最佳答案 想象一个带有一些字段的订单类:Order.new({:type=>'Corn',:quantity=>6})现在假设订单也有折扣代码,比如:price_off。您不想将:price_off标记为attr_accessible。这会阻止恶意代码制作最终会执行如下操作的帖子:Order.new({:

随机推荐