Symbol | Name | Wert | |
---|---|---|---|
Y | Yotta | 1024 | 1.000.000.000.000.000.000.000.000 |
Z | Zetta | 1021 | 1.000.000.000.000.000.000.000 |
E | Exa | 1018 | 1.000.000.000.000.000.000 |
P | Peta | 1015 | 1.000.000.000.000.000 |
T | Tera | 1012 | 1.000.000.000.000 |
G | Giga | 109 | 1.000.000.000 |
M | Mega | 106 | 1.000.000 |
k | Kilo | 103 | 1.000 |
h | Hekto | 102 | 100 |
da | Deka | 101 | 10 |
- | - | 100 | 1 |
d | Dezi | 10−1 | 0,1 |
c | Zenti | 10−2 | 0,01 |
m | Milli | 10−3 | 0,001 |
µ | Mikro | 10−6 | 0,000.001 |
n | Nano | 10−9 | 0,000.000.001 |
p | Piko | 10−12 | 0,000.000.000.001 |
f | Femto | 10−15 | 0,000.000.000.000.001 |
a | Atto | 10−18 | 0,000.000.000.000.000.001 |
z | Zepto | 10−21 | 0,000.000.000.000.000.000.001 |
y | Yokto | 10−24 | 0,000.000.000.000.000.000.000.001 |
Beispiel mit Ampere: 0,001 A = 1 mA = 1.000.000 µA
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
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.
P = U × I
R = U/I => U = R × I
Uges = U1 = U2 = .... = Un
Iges = I1 + I2 + ... + In
Iges = I1 = I2 = ... = In
Uges = U1 + U2 + ... + Un
I1 / I = R / R1 mit R = R1 || R2 = R1 × R2 / R1 + R2
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.
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 |
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.
see: Switches explained PDF (152kB)
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.
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
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.
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
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);
}
int freeRam ()
{
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Serial.println(freeRam());
int memoryTest()
{
int byteCounter = 0;
byte *byteArray;
while ( (byteArray = (byte*) malloc (byteCounter * sizeof(byte))) != NULL ) {
byteCounter++;
free(byteArray);
}
free(byteArray);
return byteCounter;
}
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);
}
}
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);
}
λ = 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.