Ohm Rechner in JavaScript aber was bedeutet Power?

  • Themenstarter Themenstarter Xyz1
  • Beginndatum Beginndatum
Endlich hats geklappt, nachdem ich es an Linux angeschlossen hatte, fragt mich aber nicht wieso....

12397

12398

Mit dem pots kann ich den Wert lesen und die Helligkeit ändern. Weihnachtlich oder? (nicht wundern, + ist ground)
 
mihe7, ich glaube es gibt einen Konflikt mit meiner Cygwin Installation und da speziell mit geteilten Libraries. 🙁
 
Noch eine Frage.... Nach dem Code aus dem Internet soll der pots Werte zwischen 0-1024 liefern, allerdings liefert er bei mir Werte zwischen 0-4096 (mit diesen Werten habe ich die map-Funktion aufgerufen). Kann es sein das der pots einen Vorwiderstand benötigt? Wie erwähnt, kein data/spec sheet dazu....
 
Sidefact: Es ist lustig, lang wohl an Windows/Cygwin nicht am USB Anschluss denn in einer VM kann ich ihn flashen....
 
Nach dem Code aus dem Internet soll der pots Werte zwischen 0-1024 liefern, allerdings liefert er bei mir Werte zwischen 0-4096 (mit diesen Werten habe ich die map-Funktion aufgerufen). Kann es sein das der pots einen Vorwiderstand benötigt? Wie erwähnt, kein data/spec sheet dazu....
Die Erklärung dürfte ganz einfach die sein, dass der Arduino lt. https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ einen 10-Bit ADC hat, während Dein Board lt. Datenblatt über einen 12-Bit ADC verfügt.
 
Aber: wo ist @White_Fox ?

Da ist man nur mal ein einziges Wochenende weg... 🙁

@Tobias: Betreibe die LEDs lieber mit Vorwiderstand, und zwar EIN Widerling PRO LED.
Bei deiner jetzigen Konstruktion hast du eigentlich keine Kontrolle mehr, in welcher LED jetzt zuviel Strom fließt, die rote dürfte als erste über den Jordan gehen. Alle deine LEDs haben unterschiedliche Vorwärtsspannungen -> unterschiedliche Stromaufnahme.
Zudem haben LEDs einen negativen Temperaturkoeffizienten, d.h. wenn sie warm werden, dann sinkt der differentielle Widerstand nochmal. Das führt zu mehr Strom -> mehr Wärme -> Widerstand sinkt -> ...
Aber darauf wollte termi dich schon hinweisen.

Im Übrigen dimmt man LEDs per PWM. Pulsweitenmodulation. Nicht über den Strom.
 
Das Potentiometer ist in diesem Fall der Vorwiderstand, andere Widerstände sehe ich auf deinem Foto nicht.

Die LEDs sind gar nicht an +3.3 V angeschlossen...
Ja, woran denn dann? Es macht keinen Unterschied ob die an 3,3V oder an GND zusammenlaufen, am Ende kommt es auf dasselbe raus: Ungleichmäßige Stromverteilung in den Strängen, und daraus folgend eine thermische Mitkopplung.
 
PWM heißt doch nur, Ein- oder Auszuschalten. Das sagt nichts darüber aus, an welcher Spannung die LEDs verdrahtet sind, ob in Reihe oder parallel, ... und da hab ich eher auf dein Bild Bezug genommen.

Aber ja, das mihe7 PWM schonmal erwähnt hat, hab ich wohl überlesen, tut mir leid. Es wird höchste Zeit daß das Wochenende anfängt...

Und was meinst du mit Pots...ich denke immer, du hast ein 'r' vergessen und meinst Port, den Port(Pin) vom Mikrocontroller. Aber wahrscheinlich meinst du das Poti...? Wenn ja: Dem Poti ist die Spannung in gewisser Weise egal, es verträgt nur eine maximale Verlustleistung, bzw. einen maximalen Strom. Die kannst du errechnen, und hängt von der Potieinstellung sowie dem ab, was da noch angeschlossen ist. Deswegen ist Angabe einer Spannung meist ein bisschen witzlos.
 
Du hast das immernoch nicht ganz gelesen und widersprichst Dir auch etwas, wenn Du erst dimmen schreibst und dann ein/ausschalten.
Außerdem die - -Leiste ist hierbei +3.3V. Die +-Leiste gnd.
Die LEDs sind gefärbt, aber erzeugen nicht rotes, gelbes, grünes usw. Licht.
 
Da ist man nur mal ein einziges Wochenende weg... 🙁
Das scheint ein Naturgesetz zu sein. Kaum hat man den Fuß zur Tür hinaus gestellt, wird der Ruf laut 🙂

Also kein Widerstand? 😵
Das habe ich ganz übersehen und bin verwirrt: was hat die Auflösung des ADCs mit dem Widerstand zu tun?

wenn Du erst dimmen schreibst und dann ein/ausschalten.
Naja, LEDs schaltet man schnell ein und aus. Je länger aus, desto dunkel 🙂

Die LEDs ohne Widerstand direkt an PWM anzuschließen, halte ich für keine gute Idee. Das kann Dir @White_Fox sicher besser und korrekt erklären. Ich mache mir die Sache recht einfach: Halbleiter haben für mich praktisch keinen Widerstand, an ihnen fällt lediglich Spannung ab. Wenn der Widerstand gegen 0 geht, wird der Strom nicht begrenzt (I=U/R, also I->unendlich für R->0), was dazu führt, dass das Bauteil ruck-zuck über den Jordan geht. Die Widerstände dienen einfach dazu, den Strom zu begrenzen.

D. h. wenn Du an Deinen PWM-Ausgang einen Halbleiter ohne Widerstand anschließt, ist das praktisch ein Kurzschluss und entweder die LED oder Dein Controller (oder beides) geben den Geist auf 🙂 Das ist nur meine Annahme, ob es tatsächlich so ist: KA. Dieses Elektronikzeug... Ich könnte mir auch vorstellen, dass die Frequenz eine Art Widerstand erzeugt aber wie gesagt: KA.
 
Die LEDs sind gefärbt, aber erzeugen nicht rotes, gelbes, grünes usw. Licht.
Doch, die LEDs erzeugen direkt Licht in der gewünschten Wellenlänge. Einzige Ausnahme können weisse LEDs sein, bei denen das erzeugte Licht von einer Phosphorverbindung aufgenommen und in langwellige dem Licht unterschiedlicher Wellenlängen wieder ausgegeben wird.

Aber das findet sich alles im Netz deutlich besser beschrieben z.B. auf https://www.led.de/led-funktionsweise
 
Du hast das immernoch nicht ganz gelesen und widersprichst Dir auch etwas, wenn Du erst dimmen schreibst und dann ein/ausschalten.
Außerdem die - -Leiste ist hierbei +3.3V. Die +-Leiste gnd.
Die LEDs sind gefärbt, aber erzeugen nicht rotes, gelbes, grünes usw. Licht.
mihe7 vereinfacht zwar grob fahrlässig, aber im Kern hat er Recht: Das schnelle Ein-Ausschalten (mit mehreren kHz) sieht für dein Auge wie gleichmäßig gedimmt aus. Hättest du die Augen einer Fliege, hättest du ein Stroboskop gebaut.

Und wie ich schon sagte: Es ist wirklich völlig egal, was an den Leisten steht: Faktisch schaltest du die LEDs, bis auf das gemeinsame Poti, nackt an 3,3V. Das mögen LEDs nicht ewig.
 
Also nochmal, die 5 LEDs sind an die 5 pwm Pins/Ausgänge des mc angeschlossen. Ich weiß nicht, mit wie viel V. Aber sie leuchten verhältnismäßig dunkel. Zudem hatte ich sie gestern mehrere Stunden laufen.
Ich dimme sie mit
digitalWrite(LedPort, value);
wobei value zwischen 0 (aus) und 255 (sehr sehr hell).
Den Wert des Potentiometer lese ich mit
int val = analogRead(potsPort);
val = map(val, 0, 4096, 0, 255);

Vereinfacht gesagt, verstehe ich die Funktionsweise von digitalRead und analogRead noch nicht.

Laufen denn die LEDs oder das Potentiometer überlastet?
 
Also zum Verständnis der pwm Ausgänge ist dies hier vielleicht hilfreich:

Dann ist das Verständnis von Dioden wichtig:
Dioden haben keinen Widerstand, der über das Ohmsche Gesetz berechnet werden könnte.
 
Also nochmal, die 5 LEDs sind an die 5 pwm Pins/Ausgänge des mc angeschlossen. Ich weiß nicht, mit wie viel V.

Na ganz einfach mit der Betriebsspannung des IC, also 3,3V.

Es wurde schon mehrfach erwähnt, bzw. es gibt auch einen Link dazu, PWM = Pulsweitenmodulation. Das heißt einfach, das du das Verhältnis zwischen Einschalt- und Ausschaltphase veränderst. Je kürzer die Einschaltphase (in einer "Schwingung", bei PWM gibt es auch eine Frequenz) desto niedriger ist die durchschnittliche Leistung über die Schwingung betrachtet. Bei 50% liegen demnach eine halbe Schwingung 3,3 V an der LED an und die andere halbe Schwingung 0 V.

255 (sehr sehr hell)

Vermutlich ist 255 = 100%, d.h. die LED wird für die gesamte Schwingung mit 3,3 V betrieben.
 
Danke, dort wird es super erklärt. Dann erzeugt der Pin mit digitalWrite ein Rechteck Signal mit einer On-Time mit vollen 5V. analogWrite würde über einen gegeben Zeitraum bis zum nächsten analogWrite volle 5V erzeugen. In der Abb. ist auch zu sehen, das an die LED ein Vorwiderstand angeschlossen ist.
 
Nur Boards mit einem echten digital-analog-Wandler können die Spannung reduzieren...

Fragt sich nur wieso die LEDs noch alle funktionieren.
 
Nur Boards mit einem echten digital-analog-Wandler können die Spannung reduzieren...

Fragt sich nur wieso die LEDs noch alle funktionieren.
Die Ausgänge haben zum eigenen Schutz in der Regel auch Widerstände. Wenn sich die Leute ständig die Boards zerhauen würden, nur weil sie ein Kabel falsch angeschlossen hätten, würden sich sonst ärgern und die ganzen Bastelsysteme hätten sich so nie durchsetzen können. (Die Transistoren / ICs der Boards mögen so höhere Ströme ebenso wenig wie Deine LEDs.)

Wenn Du also mehr Leistung haben willst aus einem Ausgang, dann musst Du Dir dafür selbst eine entsprechende Ansteuerung schreiben z.B. mit entsprechenden Leistungs-(MOS)FETs und so.
 
Evtl. hilft dies bei der RWTH Aachen: https://www.medit.hia.rwth-aachen.de/fileadmin/MSP430Buch/msp_html_buchse8.html

Da wird beschrieben, wie so Ausgänge regelgerecht betrieben werden (sprich: Spezifikation wird genommen und dann wird darauf aufbauend alles beschrieben.

Bezüglich meiner Aussage zu dem Schutz der Ausgänge konnte ich jetzt aber auf Anhieb nichts finden. Kann also sein, dass RasPi und Adruino diesbezüglich nichts haben und ich da einfach etwas durcheinander gebracht habe (Vorlesung Technische Informatik ist schon etwas länger her bei mir und kann sein, dass ich da dann jetzt etwas nicht ganz korrekt in Erinnerung habe oder dass sich da Änderungen ergeben haben im Doing.)

Aber bei der RWTH wird dort erläutert, wie man den Ausgang ansprechen kann entweder innerhalb der vorgegebenen Leistungsgrenzen (Dein Beispiel mit LED incl. Berechnung des korrekten Widerstandes) bis hin zu Leistungsstufen.
 
Vereinfacht gesagt, verstehe ich die Funktionsweise von digitalRead und analogRead noch nicht.
Der ADC liefert eine Ganzzahl zurück, das Ganze funktioniert folgendermaßen:
1. Der ADC vergleicht die zu messende Spannung mit einer Referenzspannung, diese mußt du wissen. Das kann die Betriebsspannung sein, manche ADCs stellen intern eine kalibrierte Referenzspannung zur Verfügung, und in der Regel kann man außen eine eigene Referenzspannung anlegen. Wie das bei dir gehandhabt wird, steht im Datenblatt von Chip und Board.

2. Die Referenzspannung stellt sozusagen das obere Ende des Meßbereichs dar. Der Bereich zwischen 0V und der Referenzspannung wird in lauter etwa gleichgroße Teilbereiche zerlegt, die Anzahl der Teilbereiche entspricht der Auflösung des ADCs. Die Ganzzahl, die der ADC liefert, entspricht dann dem Teilbereich. In eine Formel gegossen: Eingangsspannung = (Wandlungsergebnis / Auflösung) * Referenzspannung.


Hmm... für grobe Fahrlässigkeit müsste ich es besser wissen (können), was nicht der Fall ist 🙂
Die Aussage, daß Halbleiter keinen Widerstand hätten, ist etwas irreführend: LEDs haben einen differentiellen Widerstand, eine Funktion mit Temperatur und angelegter Spannung als Eingangsparameter (und sicher noch ein paar weiteren).
Theoretisch (aber nur theoretisch) könnte man schon eine Spannung so einstellen, daß nur der gewünschte Strom fließt.

Tatsächlich ist es so, daß die Differentielle-Widerstandsfunktion (e-funtionsartig) so blöd verläuft, daß relativ geringe Spannungsschwankungen und Ungenauigkeiten, die es ja immer gibt, zu relativ hohen Stromänderungen führen.
Deine Erklärung (HL mit 0Ω trotz Spannungsfall annehmen und einen Widerstand über gewünschten Strom und verbleibende Restspannung auslegen) führt immerhin zum richtigen Ergebnis.

Nur: Anfänger probieren es halt trotzdem anders und stellen fest: funktioniert trotzdem (zumindest vorläufig), und ziehen daraus die falschen Schlüsse (alles Quatsch, was die Großen da sagen).
 
Also wer möchte kann sich das mal ansehen ich habe noch einen Temp and Humi Sensor (DHT11) angeschlossen:
C:
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

int pins[] = {
    PF_2, PF_3, PB_3, PC_4, PC_5};

DHT_Unified dht(PE_4, DHT11);

int potValue;
float t, h;
int t1, t2, h1, h2;

void setup()
{
  // put your setup code here, to run once:
  pinMode(PF_2, OUTPUT);
  pinMode(PF_3, OUTPUT);
  pinMode(PB_3, OUTPUT);
  pinMode(PC_4, OUTPUT);
  pinMode(PC_5, OUTPUT);
  pinMode(A11, INPUT);
  Serial.begin(9600);

  dht.begin();
  // Print temperature sensor details.
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  Serial.println(F("------------------------------------"));
  Serial.println(F("Temperature Sensor"));
  Serial.print(F("Sensor Type: "));
  Serial.println(sensor.name);
  Serial.print(F("Driver Ver:  "));
  Serial.println(sensor.version);
  Serial.print(F("Unique ID:   "));
  Serial.println(sensor.sensor_id);
  Serial.print(F("Max Value:   "));
  Serial.print(sensor.max_value);
  Serial.println(F("°C"));
  Serial.print(F("Min Value:   "));
  Serial.print(sensor.min_value);
  Serial.println(F("°C"));
  Serial.print(F("Resolution:  "));
  Serial.print(sensor.resolution);
  Serial.println(F("°C"));
  Serial.println(F("------------------------------------"));
  // Print humidity sensor details.
  dht.humidity().getSensor(&sensor);
  Serial.println(F("Humidity Sensor"));
  Serial.print(F("Sensor Type: "));
  Serial.println(sensor.name);
  Serial.print(F("Driver Ver:  "));
  Serial.println(sensor.version);
  Serial.print(F("Unique ID:   "));
  Serial.println(sensor.sensor_id);
  Serial.print(F("Max Value:   "));
  Serial.print(sensor.max_value);
  Serial.println(F("%"));
  Serial.print(F("Min Value:   "));
  Serial.print(sensor.min_value);
  Serial.println(F("%"));
  Serial.print(F("Resolution:  "));
  Serial.print(sensor.resolution);
  Serial.println(F("%"));
  Serial.println(F("------------------------------------"));
}

void readpots()
{
  potValue = analogRead(A11);
  potValue = map(potValue, 0, 4096, 0, 255);
  // Serial.println(potValue);
}

void readtempandhumi()
{
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  t = event.temperature;
  dht.humidity().getEvent(&event);
  h = event.relative_humidity;

  t1 = (int)t;
  t2 = ((int)(t * 10)) % 10;
  h1 = (int)h;
  h2 = ((int)(h * 10)) % 10;
  Serial.print(t1);
  Serial.print(" ");
  Serial.print(t2);
  Serial.print("   ");
  Serial.print(h1);
  Serial.print(" ");
  Serial.println(h2);
}

void loop()
{
  // pins
  readpots();
  for (int i = 0; i < 5; i++)
  {
    analogWrite(pins[i], potValue);
  }
  delay(10000);
  readtempandhumi();
  readpots();
  // temp
  for (int i = 0; i < 5; i++)
  {
    if (t1 & (1 << i))
    {
      analogWrite(pins[i], potValue);
    }
    else
    {
      analogWrite(pins[i], 0);
    }
  }
  delay(10000);
  readpots();
  for (int i = 0; i < 5; i++)
  {
    if (t2 & (1 << i))
    {
      analogWrite(pins[i], potValue);
    }
    else
    {
      analogWrite(pins[i], 0);
    }
  }
  delay(10000);
  readpots();
  // humi
  for (int i = 0; i < 5; i++)
  {
    if ((h1 - 40) & (1 << i))
    {
      analogWrite(pins[i], potValue);
    }
    else
    {
      analogWrite(pins[i], 0);
    }
  }
  delay(10000);
}
 
LEDs haben einen differentiellen Widerstand, eine Funktion mit Temperatur und angelegter Spannung als Eingangsparameter (und sicher noch ein paar weiteren).
Ah, verstehe, wobei... Dieses Halbleitergedöns ist echt strange.

Nehmen wir mal an, wir könnten Spannung/Strom einer LED konstant halten, also z. B. 2 V/20 mA. Würde das dann nicht bedeuten, dass man die LED mit einem "Ersatzwiderstand" von 100 Ohm darstellen könnte, so dass bei direktem Betrieb unter 2 V die LED selbst den Strom auf 20 mA begrenzen würde?

Was anderes: wenn ich das richtig lese (Google hilft 🙂), könnte man eine Diode in Sperrichtung über der Durchbruchspannung betreiben, wenn man den Strom begrenzt. Aber wozu sollte man das tun? Um Überspannungen abzufedern?
 
Hier nochmal in Schön:
C:
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

int pins[] = {
  PF_2, PF_3, PB_3, PC_4, PC_5
};

DHT_Unified dht(PA_5, DHT11);

int potValue;
float t, h;
int t1, t2, h1, h2;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(PF_2, OUTPUT);
  pinMode(PF_3, OUTPUT);
  pinMode(PB_3, OUTPUT);
  pinMode(PC_4, OUTPUT);
  pinMode(PC_5, OUTPUT);
  pinMode(A11, INPUT);
  // pinMode(PA_5, INPUT);

  dht.begin();
  // Print temperature sensor details.
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  Serial.println(F("------------------------------------"));
  Serial.println(F("Temperature Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
  Serial.println(F("------------------------------------"));
  // Print humidity sensor details.
  dht.humidity().getSensor(&sensor);
  Serial.println(F("Humidity Sensor"));
  Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
  Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
  Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
  Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));
  Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));
  Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));
  Serial.println(F("------------------------------------"));

  readtempandhumi();
}

void readpots() {
  potValue = analogRead(A11);
  potValue = map(potValue, 0, 4096, 0, 255);
  // Serial.println(potValue);
}

void readtempandhumi() {
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  t = event.temperature;
  dht.humidity().getEvent(&event);
  h = event.relative_humidity;

  t1 = (int) t;
  t2 = ((int) (t * 10)) % 10;
  h1 = (int) h;
  h2 = ((int) (h * 10)) % 10;

  Serial.println(t);
  // Serial.println(h);
}

void blink(int v) {
  for (int i = 0; i < 5; i++) {
    if (v & (1 << i)) {
      analogWrite(pins[i], potValue);
    } else {
      analogWrite(pins[i], 0);
    }
  }
}

void longDelay(int v) {
  for (int i = 0; i < 10; i++) {
    readpots();
    blink(v);
    delay(500);
  }
}

void loop() {
  // pins
  longDelay(31);
  // temp
  readtempandhumi();
  longDelay(t1);
  longDelay(t2);
  // humi
  longDelay(h1 - 40);
}


mihe7 , ich unterbreche nur ungern den Monolog, aber muss ich nicht einfach nur 5mal 60 Ohms Vorwiderstände anschließen?
 
mihe7 , ich unterbreche nur ungern den Monolog, aber muss ich nicht einfach nur 5mal 60 Ohms Vorwiderstände anschließen?
Den "noch Monolog", so viel Zeit muss sein 🙂 Du musst (solltest) vor jede LED den entsprechenden Vorwiderstand schalten. Wenn ich rechnerisch 65 Ohm brauche, würde ich allerdings lieber erstmal 80 oder sogar 100 Ohm verwenden. Das Zeug muss ja nicht maximal hell leuchten.
 
Nehmen wir mal an, wir könnten Spannung/Strom einer LED konstant halten, also z. B. 2 V/20 mA. Würde das dann nicht bedeuten, dass man die LED mit einem "Ersatzwiderstand" von 100 Ohm darstellen könnte, so dass bei direktem Betrieb unter 2 V die LED selbst den Strom auf 20 mA begrenzen würde?
Ja, aber wie gesagt: theoretisch. Denn wenn die Spannung statt 2V z.B. 2,1V beträgt, steigt der Strom z.B. auf 23mA, was dann z.B. nur noch etwas über 90Ω sind. Und dann kommt ja noch die Temperaturabhängigkeit hinzu. Und die Exemplarstreuung nicht vergessen, kein Halbleiter ist wie der andere.

Aber: wenn du eine LED mit 25mA anstatt der 20mA aus den Absolute Maximum Ratings des Datenblatts betreibst, geht sie auch nicht sofort kaputt. Sie hält dann anstatt der möglichen 100.000 Betriebsstunden vielleicht nur noch 10.000. Oder 5.000, genau weiß das normalerweise niemand. Oft fallen die auch nicht schlagartig aus, sondern liefern immer weniger Licht.

Ich hab mal die LEDs einer LCD-Hintergrundbeleuchtung mit 15V betrieben (eigentlich sollten es max. 5V sein), mit einem Netzteil das auch 10A liefern konnte. Ich glaube, in der Spitze flossen da 1A oder 2A durch die LEDs, und die sind nicht schlagartig kaputt gegangen. Sie wurden nur immer schwächer, wechselten ihre Farbe von grün nach amber und orange, aber bis die wirklich kaputt waren hat das bestimmt 20min gedauert. Ich weiß im Nachhinein gar nicht mehr genau, ob ich nicht sogar aufgegeben habe als sie nur noch schwach geglimmt haben oder ob die wirklich duster waren am Ende.


Was anderes: wenn ich das richtig lese (Google hilft 🙂), könnte man eine Diode in Sperrichtung über der Durchbruchspannung betreiben, wenn man den Strom begrenzt. Aber wozu sollte man das tun? Um Überspannungen abzufedern?
Ja, um Überspannungen zu begrenzen macht man sowas, dazu gibt es spezielle TVS-Dioden. Oder schau dir mal an, was man mit Zenerdioden macht. Bei LEDs sollte man sowas unterlassen, Sperrspannung deutlich über ihrer Durchlaßspannung mögen die gar nicht gerne. Sie sind halt auf andere Zwecke optimiert.
Kapazitätsdioden bereibt man übrigens auch in Sperrichtung (und erhält eine spannungsverstellbare Kapazität).
 
Wie sind eigentlich die Spezifikationen für einen USB 2/3 -Anschluss?

Oh - einfache Suche: https://gizmodo.com/can-i-use-the-same-charger-for-multiple-devices-510829339 :
"Thankfully, the advent of USB changed all that and has provided an easy, standardized platform for charging devices. All USB cords carry the same 5V, regardless of if it's got a 30-pin head or a microUSB plug, whether it's first-party or third."
 
Zuletzt bearbeitet von einem Moderator:
Habe noch eine Frage, darf ich fragen?

Möchte ein lcd Display anschließen und habe drei verschiedene Grafiken aus denen immer eine unterschiedliche Belegung hervorgeht....
 
Habe noch eine Frage, darf ich fragen?
Was für eine Frage... 😉

Möchte ein lcd Display anschließen und habe drei verschiedene Grafiken aus denen immer eine unterschiedliche Belegung hervorgeht....
Was für ein LCD? Zu fast* jedem LCD gibt es ein Datenblatt. Was sagt es?

*LCDs, die billig verramscht werden, können auch schonmal ohne Datenblatt daherkommen. Meine ersten LCD-Versuche habe ich mit so einem billig-LCD gemacht. Und zwei Wochen damit zugebracht, das Teil zu reverse engineeren - in Assembler.
 
12402

12403

Was muss ich denn alles wo anschließen?
Untere Abb. db4 bis db7 sind nicht angeschlossen, obere Abb. db0 bis db3 sind nicht angeschlossen.
Wieso VSS an gnd und VDD an 5V - nicht umgekehrt?
Wieso sind die digitalen Eingänge/Ausgänge am Pwm angeschlossen?

Dann
C:
  LiquidCrystal(uint8_t rs, uint8_t enable,
        uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
        uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
  LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
        uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
        uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
  LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
        uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
  LiquidCrystal(uint8_t rs, uint8_t enable,
        uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);

Welchen Konstruktor kann ich da nehmen?

Das Display (LCD1602) leuchtet jedenfalls nicht
 
Wieso sind die digitalen Eingänge/Ausgänge am Pwm angeschlossen?
Der PWM-Ausgang KANN PWM liefern. Er kann aber auch als normaler I/O verwendet werden.

Ansonsten schau mal her:

Welchen Konstruktor kann ich da nehmen?
Keine Ahnung, vom Arduinogeraffel lass ich die Finger, das ist Teufelszeug.

Das Display (LCD1602) leuchtet jedenfalls nicht
Kontrast richtig eingestellt?
 
Täuscht mich das Bild (Schematic) oder sind hier die 5V des Arduino direkt mit GND verbunden?!?
Nein, das ist korrekt (also das, was du schreibst, nicht der Schaltplan), sogar gleich an zwei Stellen.
Vor allem wird die Hintergrundbeleuchtung des LCDs ohne Vorwiderstand betrieben (das sind auch nur ein paar LEDs).

Die ganze Konstruktion ist einfach nur grausig, ich sag ja: Teufelszeug.
 
Theoretisch geht es auch mit zwei Festwiderständen, aber das ist eher schlecht, gerade für Anfänger ist es hilfreicher, wenn man einfach mal rumdrehen und einen brauchbaren Kontrast suchen kann. Stell den Kontrast so ein, daß ganz leicht die Kästchen zu sehen sind wenn das LCD nichts anzeigt.
Wie bekomm ich denn 5V auf 1V?

Aber egal was ich mache das Display bleibt dunkel... Ich habe erstmal genug davon...

Achso hier wäre der Code:
C:
#include<LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("helloo");
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Halloo");
  delay(1000);
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
}
 
Vor allem wird die Hintergrundbeleuchtung des LCDs ohne Vorwiderstand betrieben (das sind auch nur ein paar LEDs).
Das lustige ist: "Falls eine Hintergrundbeleuchtung vorhanden ist. Bei einigen Modulen muss 5 V angelegt werden, bei anderen ist der Strom durch einen Vorwiderstand zu begrenzen." (https://de.wikipedia.org/wiki/HD44780)

Wieso sind die digitalen Eingänge/Ausgänge am Pwm angeschlossen?
Die Pins können verschiedene Funktionen übernehmen, je nachdem wie Du den AVR programmierst. Standardmäßig dürften sie als digitale Eingänge konfiguriert sein, müsstest Du im Datenblatt nachschauen. Für PWM werden sie als Ausgang konfiguriert und nach der PWM-Aktivierung von der Hardware (im Chip) ein- und ausgeschaltet.
 
Wie bekomm ich denn 5V auf 1V?
Im einfachsten (aber ineffizienten) Fall mittels Spannungsteiler. Achtung, Killergrafik:
Code:
+5V --------[R1]---*---[R2]---*--- GND
                   |          |
                   |          |
                    
                    <-- 1V -->

Der Widerstand R1 muss 4x so groß sein wie R2.

Rges = R1 + R2
Iges = 5V / Rges

Durch die Widerstände R1 und R2 fließt der Strom Iges. D. h. am Widerstand R1 fällt die Spannung U1 = R1 * Iges ab. U1 sollen 4V sein, also 4V = R1 * Iges <=> R1 = 4V/Iges und somit analog R2=1V/Iges
 

Zurück
Oben