gpt4 book ai didi

c - 用 C 语言编程运算放大器

转载 作者:行者123 更新时间:2023-11-30 15:40:15 25 4
gpt4 key购买 nike

我正在快速尝试用 C 语言建模一个简单的运算放大器失真电路,就像:Schematic 。但目前,我只是想模拟一个标准的非反相放大器。

我已经编写了我认为应该作为代码工作的内容,尽管我可能在某个地方大错特错了!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float Diode(float IP){
if(IP<0.7) return 0;
if(IP>0.7) return IP-0.7;
}

float OpAmp(float VI, float VN){
const float AOL = 100000;
const float VNS = -15, VPS = 15;
float OP = 0;

OP = AOL*(VN - VI);
if(OP>VPS) OP = VPS;
if(OP<VNS) OP = VNS;

return OP;
}

int main()
{
float C, OP = 0, IVI = 0;
const float R1 = 100, R2 = 100;

FILE *f, *f2;

f = fopen("wf.txt", "w");
f2 = fopen("ws.txt", "w");

for(C = 0; C<8*M_PI; C+=0.1){
//Inverting input variable
IVI = OP*R2/(R1+R2);
printf("%f\n", IVI);

OP = OpAmp(IVI, sinf(C));

fprintf(f, "%.2f\n", OP);
fprintf(f2, "%.2f\n", sinf(C));
}

fclose(f);
fclose(f2);

return 0;
}

二极管功能尚未使用,如果我设法让它工作的话,它就在那里!我正在写入文件,这样我就可以在 matlab 中绘制输出,但目前,作为输出,我只是变得疯狂振荡! “电源”仅限于 +/-15v,如有任何帮助,我们将不胜感激!

我想知道为什么输出不是输入相对于 R1 和 R2 比率的缩放版本?

最佳答案

您对运算放大器进行建模的方式使其具有无限的转换速率和非常慢的反馈。输出可以在零时间内立即从 -VS 摆动到 +VS,但输入需要非零时间才能看到该变化的效果。真正的放大器不会以这种方式工作,我不确定它是否可以按照您尝试的方式正确建模。您可以尝试通过将输出变化限制为电源电压的 1% 左右来减慢输出转换速率,然后使用小幅度且非常缓慢变化的输入。一旦你得到一些合理的东西,你就可以调整转换限制参数。

最好的主意:使用 SPICE 代替。

关于c - 用 C 语言编程运算放大器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21094463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com