zurück

Wissensdatenbank

Allgemein

Vorsätze für Maßeinheiten

Symbol Name Wert
Y Yotta 1024 1.000.000.000.000.000.000.000.000
Z Zetta 1021 0.001.000.000.000.000.000.000.000
E Exa 1018 0.000.001.000.000.000.000.000.000
P Peta 1015 0.000.000.001.000.000.000.000.000
T Tera 1012 0.000.000.000.001.000.000.000.000
G Giga 109 0.000.000.000.000.001.000.000.000
M Mega 106 0.000.000.000.000.000.001.000.000
k Kilo 103 0.000.000.000.000.000.000.001.000
h Hekto 102 0.000.000.000.000.000.000.000.100
da Deka 101 0.000.000.000.000.000.000.000.010
- - 100 0.000.000.000.000.000.000.000.001
d Dezi 10−1 0.000.000.000.000.000.000.000.000,1
c Zenti 10−2 0.000.000.000.000.000.000.000.000,01
m Milli 10−3 0.000.000.000.000.000.000.000.000,001
µ Mikro 10−6 0.000.000.000.000.000.000.000.000,000.001
n Nano 10−9 0.000.000.000.000.000.000.000.000,000.000.001
p Piko 10−12 0.000.000.000.000.000.000.000.000,000.000.000.001
f Femto 10−15 0.000.000.000.000.000.000.000.000,000.000.000.000.001
a Atto 10−18 0.000.000.000.000.000.000.000.000,000.000.000.000.000.001
z Zepto 10−21 0.000.000.000.000.000.000.000.000,000.000.000.000.000.000.001
y Yokto 10−24 0.000.000.000.000.000.000.000.000,000.000.000.000.000.000.000.001

Beispiel mit Ampere: 0,001 A = 1 mA = 1.000.000 µA

Wellenlängen des elektromagnetischen Spektrums

Quelle: Wikipedia

Elektronik

Formelrad

Formelrad für Elektronik und Elektrotechnik

Vorwiderstand für LED berechnen

RV = UR / I

Bekannt ist der Strom der Schaltung. Es fehlt die Spannung U , die am zu berechnenden Vorwiderstand abfällt.
Diese Spannung bildet sich aus der Betriebsspannung abzüglich der Spannung an der Leuchtdiode:
UR = Ugesamt - ULED

Verlustleistung P:

Durch die abfallende Spannung und den Stromfluss durch den Vorwiderstand entsteht Wärme.
Je höher die Spannung und der Strom, desto größer die Wärmeentwicklung. Da Spannung und Strom in Wärme, also auch in Leistung umgesetzt werden, muss die maximale Leistungsaufnahme des Vorwiderstands berücksichtigt werden. Bei einer zu großen Leistung brennt der Vorwiderstand durch. Die maximale Leistung wird auch P genannt, also die Leistung bei der der Widerstand zerstört wird.
Die momentane Leistung P des Vorwiderstands wird aus Spannung am Vorwiderstand und dem durchfließenden Strom berechnet. Zu beachten ist, dass mit dem tatsächlichen Strom gerechnet werden muss. Also der Strom, der tatsächlich durch den Vorwiderstand fließt:
I = UR / RV
Ist der tatsächliche Strom bekannt, dann kann zusammen mit der abfallenden Spannung U die Leistungsaufnahme P des Vorwiderstands berechnet werden:
PV = UR × I
Statt den Umweg über die Berechnung des Stroms, kann die Verlustleistung auch über die Spannung des Vorwiderstands und den Vorwiderstand berechnet werden. Was mit der Spannung funktioniert, das kann auch mit dem Strom berechnen:
PV = UR^2 / RV
PV = I^2 × RV
Bitte beachten: Wird Strom oder Spannung verdoppelt, so vervierfacht sich die Verlustleistung. Deshalb ist man in der Elektronik bemüht mit möglichst geringen Spannungen und Strömen zu arbeiten, um eine möglichst geringe Verlustleistung zu erreichen.

Leistung

P = U × I

Ohmsches Gesetz

R = U/I => U = R × I

Kirchhoffsche Regeln

Knotenpunktsatz/Knotenregel:
In einem Knotenpunkt eines elektrischen Netzwerkes ist die Summe der zufließenden Ströme gleich der Summe der abfließenden Ströme.
Maschensatz/Maschenregel:
Alle Teilspannungen eines Umlaufs bzw. einer Masche in einem elektrischen Netzwerk addieren sich zu null.

Parallelschaltung

Parallelschaltung von Batterien

Reihenschaltung

Reihenschaltung (=Serienschaltung) von Batterien:

Einfacher Stromteiler

I1 / I = R / R1 mit R = R1 || R2 = R1 × R2 / R1 + R2

Überlagerungsverfahren nach Helmholtz

Sind in einem Netzwerk nur lineare Widerstände und unabhängige Quellen (Stromquellen und/oder Spannungsquellen) vorhanden, so gilt folgende Beziehung:
"Die Wirkung (Strom oder Spannung) an einer beliebigen Stelle des Netzwerkes, die von allen Quellen hervorgerufen wird, ist gleich der Summe der Wirkungen jeder einzelnen Quelle, wenn zugleich die restlichen Quellen durch ihre idealen Innenwiderstände ersetzt werden. Ideale Spannungsquellen sind daher kurzzuschließen, ideale Stromquellen sind durch einen Leerlauf zu ersetzen."
Das Überlagerungsprinzip nach Helmholtz gilt nur für Ströme und Spannungen, nicht für Leistungen.

Verschiedene Spannungs-Stärken

Spannung (V) Verwendung Typ
1,5 Nennspannung pro Zelle einer Alkali-Mangan-Batterie/Zink-Kohle-Batterie Gleichstrom
1,5 Nennspannung pro Zelle einer Alkali-Mangan-Batterie Gleichstrom
0,75 Edison-Lalande-Element (historische Batterie) Gleichstrom
3,7 Nennspannung einer Zelle eine Lithium-Polymer-Akkus (LiPo; 1S) Gleichstrom
5 Betriebsspannung der Arduino und vieler anderer Mikrocontroller Gleichstrom
1,5 Nennspannung einer Monozelle (Alkali-Mangan bzw. Zink-Kohle) Gleichstrom
1,2 Nennspannung einer wiederaufladbaren Monozelle (Nickel-Metallhydrid bzw. Nickel-Cadmium) Gleichstrom
1,5 Nennspannung einer Babyzelle (Alkali-Mangan bzw. Zink-Kohle) Gleichstrom
1,2 Nennspannung einer wiederaufladbaren Babyzelle (Nickel-Metallhydrid bzw. Nickel-Cadmium) Gleichstrom
1,5 Nennspannung einer AA-/Mignon-Zelle (Alkali-Mangan bzw. Zink-Kohle) Gleichstrom
1,2 Nennspannung einer wiederaufladbaren AA-/Mignon-Zelle (Nickel-Metallhydrid bzw. Nickel-Cadmium) Gleichstrom
1,5 Nennspannung einer AAA-/Micro-Zelle (Alkali-Mangan bzw. Zink-Kohle) Gleichstrom
1,2 Nennspannung einer wiederaufladbaren AAA-/Micro-Zelle (Nickel-Metallhydrid bzw. Nickel-Cadmium) Gleichstrom
4,5 Nennspannung einer Flachbatterie (3R12) Gleichstrom
9 Nennspannung eines 9V-Blocks Gleichstrom
3 Nennspannung einer CR2032 bzw. CR2016 Knopfbatterie Gleichstrom
12 Autobatterie (Blei-Akkumulator) Gleichstrom
6 Fahrraddynamo Wechselstrom
120 Netzspannung der USA Wechselstrom
230 Netzspannung in Europa (± 23V) Wechselstrom
400 Netzspannung im Dreiphasensystem des europäischen Netzstroms (sog. "Starkstrom") Wechselstrom
100 Netzspannung in Japan Wechselstrom

Wechselschalter

SP
Single Pole: one circuit controlled by the switch.
DP
Double Pole: two independent circuits controlled by the switch which are mechanically linked.
ST
Single Throw: closes a circuit at only one position. The center position is off.
DT
Double Throw, closes a circuit in the up or down position (On-On). A Double Throw switch can also have a center position such as On-Off-On.

Note: "Pole" should not be confused with "Terminal". The DPST switch, for example has four terminals however is a Double Pole (DP) and not a four pole (4P) switch.

SPDT
Single pole, double throw: A simple break-before-make changeover switch: C (COM, Common) is connected either to L1 or to L2.
DPDT
Double pole, double throw: Equivalent to two SPDT switches controlled by a single mechanism.
SPST
Single pole, single throw: A simple on-off switch: The two terminals are either connected together or disconnected from each other. An example is a light switch.
DPST
Double pole, single throw: Equivalent to two SPST switches controlled by a single mechanism.

see: Switches explained PDF (152kB)

Raspberry Pi

GPIO-Modes

GPIO.setmode() nimmt einen Parameter entgegen:
GPIO.BOARD: Hiermit werden die Nummern der Pin so interpretiert, wie sie auf der Platine durchnummeriert sind (rund eingerahmte Zahlen im folgenden Diagramm)
GPIO.BCM: ("Broadcom SOC channel") Hiermit werden die Nummer als GPIO-Nummierung verstanden. (die Zahlen in den Kästchen im folgenden Diagramm)
Die BCM-Zahlen haben sich aber in den einzelnen Versions des RPi verändert, so dass man bei der Portierung hier aufpassen muss, so erweist es sich als etwas sicherer, die BOARD-Zahlen zu verwenden.

Arduino

Datentypen

C STDINT Größe Minimum Maximum
void - - - -
boolean - 1 Byte - -
byte uint8_t 1 Byte 0 255
char int8_t 1 Byte -128 127
unsigned char uint8_t 1 Byte 0 255
int int16_t 2 Bytes -32768 32767
unsigned int uint16_t 2 Bytes 0 65535
word - 2 Bytes - -
long int32_t 4 Bytes -2147483648 -2147483647
unsigned long uint32_t 4 Bytes 0 4294967295
float - 4 Bytes -3.4028235E+38 3.4028235E+38
double2) - 8 Bytes -3.4028235E+308 -3.4028235E+308
string - 1 Byte + x - -
array - 1 Byte + x - -
enum - N/A - -
struct - N/A - -
pointer - N/A - -

2) doppelte Präzision nur auf Arduino Due, ansonsten gleich float

Besondere Kontrollstrukturen

Normalerweise kann man mit der Anweisung return aus einer Funktion herausspringen. Dies gilt ebenso für die Funktion loop(). Allerding bedeutet dies, das automatisch erneut loop() wieder aufgerufen und damit ausgeführt wird.
I C/C++ können Programme mit exit(0); beendet werden. Dies ist zwar ebenso auf dem Arduino möglich, allerdings gibt es kein Betriebssystem, welches auf weitere Anweisungen hören könnten, d.h. man erreicht damit einen Status, aus dem man den Arduino nur durch einen Reset wieder herausbringt.

Speicher: Flash vs. SRAM vs. EEPROM

char message[] = "Hello World!"; speichert den Inhalt dieser Variablen im SRAM. Um diesen Speicher zu sparen, kann man Variablen auch im Flash (PROGMEM) memory speichern:
const PROGMEM char message[] = "Hello World!";
oder man benutzt folgendes Makro z.B.:
Serial.print(F("Hello, World"));
Es ist auch möglich, den EEPROM zu benutzen, aber dazu braucht man die Library EEPROM

printf

int serial_putchar(char c, FILE* f)
{
    if (c == '\n') serial_putchar('\r', f);
    return Serial.write(c) == 1? 0 : 1;
}

FILE serial_stdout;

void setup()
{
    Serial.begin(9600);

    // Set up stdout
    fdev_setup_stream(&serial_stdout, serial_putchar, NULL, _FDEV_SETUP_WRITE);
    stdout = &serial_stdout;

    printf("My favorite number is %6d!\n", 12);
}

Freien SRAM ermitteln (var. 1)

int freeRam ()
{
    extern int __heap_start, *__brkval;
    int v;
    return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Serial.println(freeRam());

Freien SRAM ermitteln (var. 2)

int memoryTest()
{
    int byteCounter = 0;
    byte *byteArray;
    while ( (byteArray = (byte*) malloc (byteCounter * sizeof(byte))) != NULL ) {
        byteCounter++;
        free(byteArray);
    }
    free(byteArray);
    return byteCounter;
}

PWM für mehr Outputs

Ein kleiner Trick, um statt den 6 üblichen PWM-Pins auf dem Arduino quasi analogen Output zu ermöglich ist, statt die Pins mit GND zu verbinden, mit einem der PWM-Pins zu verbinden. Dadurch können alle diese Pins (auch nicht-PWM-fähige) die Möglichkeit erhalten mit analogWrite gesteuert zu werden, allerdings nur alles zusammen (siehe auch den Beitrag vom Hobbyelektroniker):

#define PIN_PWM 11

const byte leds[] = {2, 3, 4, 5, 6, 7};

void setup()
{
    pinMode(PIN_PWM, OUTPUT);
    for(byte i=0; i<sizeof(leds)/sizeof(byte); i++) {
        pinMode(leds[i], OUTPUT);
        digitalWrite(leds[i], HIGH);
    }
}

void loop()
{
    for(byte b=0; b<=255; b++) {
        analogWrite(PIN_PWM, b);
        delay(10);
    }
}

Glättung von Eingangs-Signalen

Fehlerhafte bzz. sprunghafte Eingangssignale werden mit dem folgenden Sketch geglättet/gemittelt. Als Sensor an A0 dient z.B. ein Potentiometer. (Quelle: http://www.arduino.cc/en/Tutorial/Smoothing)


// Define the number of samples to keep track of. The higher the number, the
// more the readings will be smoothed, but the slower the output will respond to
// the input. Using a constant rather than a normal variable lets us use this
// value to determine the size of the readings array.
const int numReadings = 10;

int readings[numReadings];      // the readings from the analog input
int readIndex = 0;              // the index of the current reading
int total = 0;                  // the running total
int average = 0;                // the average

int inputPin = A0;

void setup()
{
    Serial.begin(9600);
    // initialize all the readings to 0:
    for (int thisReading = 0; thisReading < numReadings; thisReading++) {
        readings[thisReading] = 0;
    }
}

void loop()
{
    // subtract the last reading:
    total = total - readings[readIndex];
    // read from the sensor:
    readings[readIndex] = analogRead(inputPin);
    // add the reading to the total:
    total = total + readings[readIndex];
    // advance to the next position in the array:
    readIndex = readIndex + 1;

    // if we're at the end of the array...
    if (readIndex >= numReadings) {
        // ...wrap around to the beginning:
        readIndex = 0;
    }

    // calculate the average:
    average = total / numReadings;

    // send it to the computer as ASCII digits
    Serial.println(average);
    delay(1);
}

Funk

Antennenlänge

λ = c / f      (Wellenlänge = Lichtgeschwindigkeit / Frequenz)
Lichtgeschwindigkeit = 299.792.458 m/s
Nun soll eine Antenne so sein, daß sie ein Vielfaches oder ein ganzzahliger Bruchteil der Wellenlänge ist, da sonst die Energieverluste an den Enden zu hoch sind. Wenn die Antennenlänge gleich der Wellenlänge ist, dann sind die Wellenknoten genau am Ende der Antenne und die Verluste sind sehr gering.