Qucs-GUI  0.0.18
 All Data Structures 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(Qt::red,2)));
104  Lines.append(new Line(-30, 0, 30, 0,QPen(Qt::darkBlue,2)));
105  Lines.append(new Line( -6, -9, -6, 9,QPen(Qt::darkBlue,2)));
106  Lines.append(new Line( 6, -9, 6, 9,QPen(Qt::darkBlue,2)));
107  Lines.append(new Line( -6, 0, 6, -9,QPen(Qt::darkBlue,2)));
108  Lines.append(new Line( -6, 0, 6, 9,QPen(Qt::darkBlue,2)));
109  Lines.append(new Line( 0, 12, 0, 30,QPen(Qt::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 }
Q3PtrList< Line > Lines
Definition: component.h:67
Definition: element.h:55
int y1
Definition: element.h:153
Q3PtrList< struct Arc > Arcs
Definition: component.h:68
int tx
Definition: component.h:78
int y2
Definition: element.h:153
Definition: element.h:72
int x1
Definition: element.h:153
static Element * info(QString &, char *&, bool getNewOne=false)
Definition: photodiode.cpp:92
int ty
Definition: component.h:78
Q3PtrList< Property > Props
Definition: component.h:72
Definition: element.h:48
Superclass of all schematic drawing elements.
Definition: element.h:142
void createSymbol()
Definition: photodiode.cpp:101
Q3PtrList< Port > Ports
Definition: component.h:70
QString Name
Definition: component.h:80
QString Model
Definition: component.h:80
QString Description
Definition: component.h:81
int x2
Definition: element.h:153
Component * newOne()
Definition: photodiode.cpp:84
virtual void recreate(Schematic *)
Definition: component.h:39