
因此,通过添加电阻,您将自动获得约0.7V的电压。
这其实与用于串联电阻限制通过LED的电流以确保LED不损坏的原理相同。如果还添加一个按钮,则可以使用按钮控制晶体管,从而控制LED的ON和OFF。

对于通用晶体管,如BC547或2N3904,增益可能是100左右。这意味着,如果有0.1 mA电流从基极流向发射极,则从集电极流向发射器的电流为10 mA(100倍以上)。
如果电池为9V,并且晶体管的基极到发射极为0.7V,则电阻器两端剩下8.3V。

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

栅极(G)
漏极(D)
源极(S)

MOSFET的工作原理类似于三极管,但有一个重要的区别:
1、在三极管中,从基极到发射极的电流决定了有多少电流可以从集电极流向发射极。
2、在MOSFET晶体管中,栅极和源极之间的电压决定了有多少电流可以从漏极流向源极。
在上面的示例中,当我们按下按钮时,栅极连接到9V。这将打开晶体管。
Q1几乎可以是任何N沟道MOSFET,例如BS170。

详情可以参考本公众号的另一篇文章:
以上示例使用 N 沟道 MOSFET。P 通道MOSFET的工作方式相同,只是电流沿相反方向流动,并且栅极到源极的电压必须为负才能将其打开。
还有其他重要参数需要牢记,具体取决于您制作的内容。但这超出了本文的范围。请记住上面的两个参数,您将有一个很好的起点。
如果你想使用单片机如STM32控制MOSFET,那么你需要记住另一件事:打开晶体管时流入栅极的电流。
如上所述,MOSFET的栅极到源极充当电容器。. 这意味着一旦充电,就没有更多的电流流过它。因此,当MOSFET导通时,没有电流流过栅极。 但是,当MOSFET导通时,会产生电流,就像为电容器充电一样。在一小分之一秒内,可能会有很多电流流动。 为了保护我们的单片机不受流过的较大电流的影响,您需要添加一个MOSFET栅极电阻器。
1、晶体管的优点是可以使用小电流或电压来控制更大的电流和电压。
例如我们想要用单片机IO引脚控制电机、大功率LED、扬声器、继电器等,这就必须使用到晶体管。由于单片机的输出引脚在 5V或3.3V 时通常只能提供几毫安。因此,如果您想控制110V户外庭院灯,则无法直接从接到单片机的引脚上。 您可以会想到可以通过继电器来完成。但即使是继电器通常也需要比引脚所能提供的电流更多的电流。所以我们就需要一个晶体管来控制继电器。

通常,您需要再添加几个电阻器来偏置晶体管。否则,你会得到很多失真。我们可以在后面的文章中再详细介绍。
今天的分享就到这里,最后给大家推荐一个我前段时间加入的硬件工程师交流群。这群是由嘉立创搭建的,群里除了可以跟硬件同行们探讨技术外,还有硬件外包需求、招聘需求的分享。
如果你也想成为硬件交流群内的一员,可以加我好友。以下是群内部分技术探讨、外包和招聘需求分享截图:
我在从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""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在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
使用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
我知道全局变量$!包含最新的异常对象,但我对下面的语法感到困惑。谁能帮助我理解以下语法?rescue$! 最佳答案 此构造可防止异常停止您的程序并使堆栈跟踪冒泡。它还会将该异常作为值返回,这很有用。a=get_me_datarescue$!在此行之后,a将保存请求的数据或异常。然后您可以分析该异常并采取相应措施。defget_me_dataraise'Nodataforyou'enda=get_me_datarescue$!puts"Executioncarrieson"pa#>>Executioncarrieson#>>#更现实的
我在我正在处理的一些代码中发现了这一点。它旨在解决从磁盘读取key文件的要求。在生产环境中,key文件的内容位于环境变量中。旧代码:key=File.read('path/to/key.pem')新代码:key=File.read('|echo$KEY_VARIABLE')这是如何工作的? 最佳答案 来自IOdocs:Astringstartingwith“|”indicatesasubprocess.Theremainderofthestringfollowingthe“|”isinvokedasaprocesswithappro
我今天看到了一个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
我刚刚有一个关于RubyonRails和模型(Rails3)中的attr_accessible属性的一般性问题。有人可以解释应该在那里定义哪些模型属性吗?我记得一些关于批量分配风险的事情,虽然我在这方面不太了解......谢谢:) 最佳答案 想象一个带有一些字段的订单类:Order.new({:type=>'Corn',:quantity=>6})现在假设订单也有折扣代码,比如:price_off。您不想将:price_off标记为attr_accessible。这会阻止恶意代码制作最终会执行如下操作的帖子:Order.new({: