My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
photodiode.cpp
Go to the documentation of this file.
1 /*
2  * photodiode.cpp - device implementations for photodiode module
3  *
4  * This is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2, or (at your option)
7  * any later version.
8  *
9  */
10 
11 #include "photodiode.h"
12 
14 {
15  Description = QObject::tr ("Photodiode verilog device");
16 
17  Props.append (new Property ("N", "1.35", false,
18  QObject::tr ("photodiode emission coefficient")));
19  Props.append (new Property ("Rseries", "1e-3", false,
20  QObject::tr ("series lead resistance")
21  +" ("+QObject::tr ("Ohm")+")"));
22  Props.append (new Property ("Is", "0.34e-12", false,
23  QObject::tr ("diode dark current")
24  +" ("+QObject::tr ("A")+")"));
25  Props.append (new Property ("Bv", "60", false,
26  QObject::tr ("reverse breakdown voltage")
27  +" ("+QObject::tr ("V")+")"));
28  Props.append (new Property ("Ibv", "1e-3", false,
29  QObject::tr ("current at reverse breakdown voltage")
30  +" ("+QObject::tr ("A")+")"));
31  Props.append (new Property ("Vj", "0.7", false,
32  QObject::tr ("junction potential")
33  +" ("+QObject::tr ("V")+")"));
34  Props.append (new Property ("Cj0", "60e-12", false,
35  QObject::tr ("zero-bias junction capacitance")
36  +" ("+QObject::tr ("F")+")"));
37  Props.append (new Property ("M", "0.5", false,
38  QObject::tr ("grading coefficient")));
39  Props.append (new Property ("Area", "1.0", false,
40  QObject::tr ("diode relative area")));
41  Props.append (new Property ("Tnom", "26.85", false,
42  QObject::tr ("parameter measurement temperature")
43  +" ("+QObject::tr ("Celsius")+")"));
44  Props.append (new Property ("Fc", "0.5", false,
45  QObject::tr ("forward-bias depletion capacitance coefficient")));
46  Props.append (new Property ("Tt", "10e-9", false,
47  QObject::tr ("transit time")
48  +" ("+QObject::tr ("s")+")"));
49  Props.append (new Property ("Xti", "3.0", false,
50  QObject::tr ("saturation current temperature exponent")));
51  Props.append (new Property ("Eg", "1.16", false,
52  QObject::tr ("energy gap")
53  +" ("+QObject::tr ("eV")+")"));
54  Props.append (new Property ("Responsivity", "0.5", false,
55  QObject::tr ("responsivity")
56  +" ("+QObject::tr ("A/W")+")"));
57  Props.append (new Property ("Rsh", "5e8", false,
58  QObject::tr ("shunt resistance")
59  +" ("+QObject::tr ("Ohm")+")"));
60  Props.append (new Property ("QEpercent", "80", false,
61  QObject::tr ("quantum efficiency")
62  +" ("+QObject::tr ("%")+")"));
63  Props.append (new Property ("Lambda", "900", false,
64  QObject::tr ("light wavelength")
65  +" ("+QObject::tr ("nm")+")"));
66  Props.append (new Property ("LEVEL", "1", false,
67  QObject::tr ("responsivity calculator selector")));
68  Props.append (new Property ("Kf", "1e-12", false,
69  QObject::tr ("flicker noise coefficient")));
70  Props.append (new Property ("Af", "1.0", false,
71  QObject::tr ("flicker noise exponent")));
72  Props.append (new Property ("Ffe", "1.0", false,
73  QObject::tr ("flicker noise frequency exponent")));
74  Props.append (new Property ("Temp", "26.85", false,
75  QObject::tr ("simulation temperature")));
76 
77  createSymbol ();
78  tx = x2 + 4;
79  ty = y1 + 4;
80  Model = "photodiode";
81  Name = "PD";
82 }
83 
85 {
86  photodiode * p = new photodiode();
87  p->Props.getFirst()->Value = Props.getFirst()->Value;
88  p->recreate(0);
89  return p;
90 }
91 
92 Element * photodiode::info(QString& Name, char * &BitmapFile, bool getNewOne)
93 {
94  Name = QObject::tr("Photodiode");
95  BitmapFile = (char *) "photodiode";
96 
97  if(getNewOne) return new photodiode();
98  return 0;
99 }
100 
102 {
103  Arcs.append(new Arc(-12,-12, 24, 24, 0, 16*360,QPen(QPen::red,2)));
104  Lines.append(new Line(-30, 0, 30, 0,QPen(QPen::darkBlue,2)));
105  Lines.append(new Line( -6, -9, -6, 9,QPen(QPen::darkBlue,2)));
106  Lines.append(new Line( 6, -9, 6, 9,QPen(QPen::darkBlue,2)));
107  Lines.append(new Line( -6, 0, 6, -9,QPen(QPen::darkBlue,2)));
108  Lines.append(new Line( -6, 0, 6, 9,QPen(QPen::darkBlue,2)));
109  Lines.append(new Line( 0, 12, 0, 30,QPen(QPen::green,2)));
110 
111  Ports.append(new Port( 30, 0));
112  Ports.append(new Port(-30, 0));
113  Ports.append(new Port( 0, 30));
114 
115  x1 = -30; y1 = -20;
116  x2 = 30; y2 = 30;
117 }