利用一片 LM324AD(四运放)和一片 SN74LS00D(四与非门)芯片设计制作
一个多路信号发生器,原理如图所示。

只能使用一片 LM324,只能使用一片 SN74LS00D,电阻,电容,可调电阻自选,参数及数量不限;
设计任务 :
1、产生频率为 19kHz~21kHz 连续可调的方波脉冲信号,幅度不小于 3.2V;
2、产生与方波同频率的正弦波信号,峰峰值不小于 1V;
3、产生与方波同频率占空比5%~15%连续可调的窄脉冲信号,幅度不小于3.2V;
4、产生与正弦波正交的余弦波,相位误差不大于 5 度,峰峰值不小于 1V;
5、四路信号负载均为 1 千欧电阻,且四路信号波形要可以同时输出;
1.方波产生(震荡电路)

电路设计原理:采用比较器完成方波产生电路,由于是单电源供电,我们对电源进行分压从正端输入,从中间分压等效成±2.5V的电源。但由于运放的输出饱和电压会低于2.5V, 所以在运放输出端我们把与非门全部接成非门当电平转换器和隔离缓冲器用。运放输出端的方波经过非门反相器,得到的方波就是幅值大于3.2V的方波了。通过改变C1与R4的阻值,实现频率调节,仿真得波形符合要求。
下图为R4的阻值在860Ω附近时的波形:

2.正弦波产生(滤波电路)

电路设计原理:将方波通过一阶有源低通滤波器,只留下基波,三次以上的谐波通通滤掉。因为运放的压摆率不太好,运放本身还有交越失真,所以得到的正弦波不够理想。将输入端接在方波电路运放的输出端而不是与非门的输出端·,得到的波形才不会失真,因为与非门输出端的电压幅值过大,超过了运放两端的电压。
输出波形如下:

3.余弦波产生(移相器)

电路设计原理:采用移相器,需要将正弦波电路移相90°,采用微分电路,用一个运放来解决问题,通过两组电容电阻来控制传递函数,同时要考虑电阻要在单电源直流分压中发挥作用,所以主要改变电容的值,且微分电路,选择选择小电容,可以近乎达到90°的相移。R14可以调节输出余弦波的幅值。通过调节C4和R14便能够得到符合要求的相移和幅值。
输出波形如下:

4.窄脉冲产生(与非门RC电路)

电路设计原理:由于我们还剩较多的与非门,所以我们尝试用与非门搭建出能产生可调的窄脉冲信号的电路。直接将方波信号输入到与非门中,采用RC电路,利用电容充放电的特性使得14端的电压变化,从而调节R16输出端的占空比,通过调节R17的电阻,就能达到改变输出脉冲占空比的作用。
输出波形如下:

5.整体电路图与波形总图
总电路图:

同步波形图:

在本次实验的过程中我们一起进行了长时间的讨论,在各信号的产生上,我们提出了多种方案,但当电路汇总的时候,因为元器件数目的限制,我们不得不对方案进行选择与取舍。有时甚至为了保证另一个波形能够产生,不得不采用一个效果不是最好的方案,我也进一步体会到了邓老师在课上提到的“舍”“得”两字的重量。
过程中,我也遇到了一些问题,我也通过小组讨论与网上论坛找到了很多优秀的解决方案。下面是一些具体问题与我个人采用的解决方法:
在启用Rack::Deflater来gzip我的响应主体时偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但启用此功能后,响应被压缩,但是资源的ETag在每个请求上都会发生变化。这会强制应用程序每次都响应,而不是发送304。这在没有启用Rack::Deflater的情况下有效,我已经验证页面源没有改变。我正在运行一个使用thin作为Web服务器的Rails应用程序。Gemfile.lockhttps://gist.github.com/2510816有没有什么方法可以让我从Rack中间件获得更多的输出,这样我就可以看到发生了什么?提前致谢。 最佳答案
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
所以我想到了这个,想知道当下面的一些事情完成后会发生什么。classTestdefself.abcattr_accessor:Johnendendobject=Test.newputs"beforecallingclassmethodabc:#{object.class.instance_methods(false)}"Test.abcputs"aftercallingclassmethodabc:#{object.class.instance_methods(false)}"这里我检查的是,getter和setter方法是否以这种方式创建。如果是这样,是那些实例方法或类方法。首先我创
这段代码没有像我预期的那样执行:casewhen->{false}then"why?"else"ThisiswhatIexpect"end#=>"why?"这也不是casewhen->(x){false}then"why?"else"ThisiswhatIexpect"end#=>"why?"第一个then子句在两种情况下都被执行,这意味着我提供给when子句的lambda没有被调用。我知道无论when子句的主题是什么,都应该调用大小写相等运算符===。我想知道当没有为case提供参数时,===的另一边会发生什么。我在想它可能是nil,但它不可能是:->{false}===nil#=>
如何使用Ruby(和Rails,如果有相关的辅助方法)获取最近发生的星期三?最终需要实际日期(5/1/2013)。 最佳答案 time=Time.nowdays_to_go_back=(time.wday+4)%7last_wed=days_to_go_back.days.ago 关于ruby-on-rails-获取最近发生的星期三?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions
我正在从rails2.3迁移到rails3.1,我试图在生成异常时发送电子邮件。我正在使用exception_notificationgem。我的其余电子邮件都在工作。但是异常邮件不会被解雇。以下是我的staging.rb文件中的设置。config.action_mailer.perform_deliveries=trueconfig.action_mailer.raise_delivery_errors=true下面是application.rb中的代码C::Application.config.middleware.useExceptionNotification::Rack,:e
一个非常明显的现象,正在发生——元宇宙正在被越来越多的人所推崇,无论是科技巨头,还是资本巨头,几乎都是如此。同时,区块链则正在一点一点地回归理性与客观。对于区块链来讲,这是一个好现象。它告诉我们,人们对于区块链的狂热而激进的认识,正在被一步又一步的校正和纠偏。由此,区块链行业的发展,将会真正进入到一个全新的发展阶段。 同以往人们仅仅只是将区块链看成是一个概念,并以此来获取资本和流量不同。当人们对于区块链的认识变得深入,资本和流量反倒不再是区块链玩家们真正关心的问题。至少从当下情况来看,那些依然还在区块链行业里坚守的玩家们,更多地在坚持长期主义,更多地在寻求区块链与行业结合的正确的方式和方
在Ruby类定义中声明private/protected时实际发生了什么?他们不是keywords,这意味着它们必须是方法调用,但我找不到它们的定义位置。它们似乎没有记录在案。声明private/protected方法(如下所示)的两种不同实现方式是否不同?(第二种方式显然是方法调用,但在第一种方式中并不那么明显。)classFooprivatedefi_am_private;enddefso_am_i;endendclassFoodefi_am_private;enddefso_am_i;endprivate:i_am_private,:so_am_iend
我在HTML页面上有一个文本字段,用于检查您是否输入了1到365之间的值。如果用户输入了无效值,如非数字字符或不在范围内的值,它显示一个弹出窗口。我在watirwiki上看到有一个select_no_wait方法,用于在您从列表中选择无效值时关闭弹出窗口。处理键盘事件时出现的弹出窗口的好方法是什么?我是否需要按照select_no_wait方法的实现方式进行操作,或者我们是否可以启动一个不同的进程来消除调用set方法时可能出现的弹出窗口。带有Javascript验证函数的HTML文件示例如下:varnum=0functionvalidate(e){varcharPressed=Stri
在Ruby中,我想在另一个对象中捕获在一个对象上生成的NoMethodError,然后将一些值返回到引发异常的位置并继续执行。有没有现成的方法可以做到这一点?我想到的最好的是:classExceptionattr_accessor:continuationendclassOuterdefhelloputs"hello"endclassInnerdefworldputs"world"enddefmethod_missing(method,*args,&block)x=callccdo|cc|e=RuntimeError.exception(method)e.continuation=cc