User manual
105 106
12.3 OLED und Transistor in Emitterschaltung
Die Aufnahme einer Kennlinie am Beispiel eines Transistors. Wichtig: Der Transistor wird hier mit der Spannung
des D/A-Umsetzers angesteuert, die über den Widerstand zur Basis geleitet wird. Er bestimmt schließlich den
Stromuss in die Basis. Der Transistor verstärkt den Strom durch die Basis zum Emitter (je nach Typ z.B.100x)
und bestimmt damit den Strom der zwischen Emitter und Kollektor ießt.
Das Programm zeigt die Kennlinie, wie bei einem Oszilloskop, als fortlaufende Kurve. Zusätzlich kann auch eine
stehende Darstellung implementiert werden. (Aufgabe für den Leser!)
+
-
9V
1A
BC817
B
E
C
npn
45V
0,8A
B
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
I²C
I²C OLED 64x48
SCL
SDA
SCL
SDA
+9V
Adr:8x,Xx
+9V
I²C 12BIT DAC
SCL
SDA
SCL
SDA
+9V
Adr:18-1F
P1
123
P2
P3
Vout
ab
Imax 20mA
// DE_39 Anwendungen - Transistorkennlinie
... wie zuvor
//
char advalbuf[64]; // loop
void setup() {
Wire.begin(); // I2C Initialisierung
i2c_oled_initall(i2coledssd); // OLED Initialsierung
for (int i=0; i<64; i++) advalbuf[i]=47; // Default fuer Buffer
}
void loop() { // Schleife
// 64x48 Pixel OLED
static int cxx = 0; // Ringbuffer
static int daval = 0; // fuer Ausgabe
int ana0 = analogRead(A0); // Einlesen A/D-Umsetzer
char buffer[40]; // ASCII Textbuffer
disp_buffer_clear(COLOR_BLACK); //
double p1 = (ana0*5000.0)/1023.0;
int y1 =0; // Y Position
sprintf(buffer, „A0=%d.%03dV“,(int)p1/1000,(int)p1%1000);
y1 = 47 - (p1 * 30.0)/5000.0; // 5V Max -> 30 pixel
advalbuf[cxx++] = y1; // merken 0..4xx V +-128
if (cxx >63) cxx =0; // Ringbuffer 0..63
disp_print_xy_lcd(2, 0, (unsigned char *)buffer, COLOR_WHITE, 0);
int i=0; // Spalte
int yold = advalbuf[(cxx+1)%64];;
for (i=0; i<63; i++) { // ALles ausgeben
y1 =advalbuf[(cxx+1+i)%64];
disp_line_lcd (i, yold, i, y1, COLOR_WHITE);
yold = y1;
}
disp_lcd_frombuffer();
// DA Umsetzer Werte ausgeben Saegezahn !
i2c_da_write_command(i2cdasel1,daval);
i2c_da_write_command(i2cdasel2,daval);
i2c_da_write_command(i2cdasel3,daval);
daval += (4096/40); // Kennlinie auf einen Schirm
if (daval > 4095) daval = 0;
}
Was passiert? Auf der OLED sollte die typische Transistorkennlinie in Emitterschaltung erkennbar
sein, die ebenfalls durchscrollt.










