Spannung an nicht leuchtender LED

Hallo zusammen,

ich habe da ein kleines Problem worauf ich keine Antwort habe. Es passt vielleicht nicht ganz in dieses Forum, aber ihr habt sicher eine Antwort für mich. :wink:

Ich möchte gerne das Signal einer Led, die sich in einem Entertainer Keyboard (Tyros 5) befindet, nutzen um einen Optokoppler (SFH617) zu schalten um ein Signal für den Arduino zu bekommen.

Dazu wollte ich den Optokoppler parallel zur Led verbauen. Zwischen Led und Optokoppler habe ich noch ein Widerstand von 680Ohm gesetzt.

Wenn die Led des Keyboards leuchtet beträgt die Spannung an der Led ca. 2,3V. Was jetzt komisch ist;
wenn ich die Funktion ausschalte und somit die Led nicht mehr leuchtet, liegen immer noch ca. 2,6V an der Led an. Led leuchtet aber nicht mehr.
Das Problem ist das somit der Optokoppler immer noch schaltet, da er ja immer noch Spannung bekommt, obwohl die Led aus ist.

Wie ist das möglich? Wird bei der Led etwa der Strom gesteuert?

Was mir außerdem aufgefallen ist, worauf ich keinen Rat weis... Wenn ich mit dem Multimeter die Spannung an der Led messe, scheint es so zu sein das die Led verpolt ist.
Sprich an der Anode der Led ist - und an der Kathode +. ::slight_smile:

Vielen Dank schon im Voraus, für eure Mühe!

Schöne Grüße
Andy

So ist das nicht eindeutig zu verstehen.
Kannst du nicht eine Schaltung dieser Einheit zeichnen.
Und wo hast du die Spannung gemessen?
Direkt an der Led?

sorry, leider ist dies nicht möglich, da diese Einheit (Platine) sehr komplex ist und ich mich da nicht auskenne.

Die Spannung habe ich direkt an der Led (samt Led) zwischen Anode und Kathode gemessen.

Mehr kann ich dir leider nicht sagen... :frowning:

Schöne Grüße
Andy

Kannst du denn herausfinden welche Seite der Led wie geschaltet wird? Also gegen Plus oder Masse.

Und dann evtl. mal den Zustand (Ein bzw. aus) jeweils gegen die unterschiedlichen Potentiale (+ oder -) messen, was dann dabei raus kommt.

So, sieht es wirklich merkwürdig aus.

arduinoknight:
sorry, leider ist dies nicht möglich, da diese Einheit (Platine) sehr komplex ist und ich mich da nicht auskenne.

Du kennst dich immerhin soweit aus dass du herausgefunden wie die LED geschaltet wird. Ein Plan der LED und wie du den Optokoppler daran anschließt reicht ja.

an der Anode der Led ist - und an der Kathode +.

Nur wenn sie aus ist, oder auch wenn sie leuchtet ? ? ?

Bist du sicher, dass die Spannung über die LED etwas ansteigt ( +2.3 -> +2.6 ), wenn sie aus geht?

+2.3 (an) -> **-**2.6 (aus) macht für mich mehr Sinn.
Das sollte aber einem normalen optokoppler-Eingang + Vorwiderstand passen.

Es gibt sowas wie Charlieplexing. Da werden nicht leuchtende LED zeitweise umgekehrt gepolt, weil paralell dazu eine andere LED umgekehrt gepolt hängt. Ein Optokoppler müßte aber auch eine geplote LED haben und sich gleich der nicht leuchtenden LED verhalten.

Eine LED mit Vorwiderstand paralell zu einer LED zu schalten sehe ich als grundsätzlich falsch. Es funktioniert Dir da die IR-LED im Optokoppler eine niedrigere Durchlaßspannung haben. Mit einer blauen LED funktionert es nicht.
Richtig ist es die zusätzliche LED mit Vorwiderstand paralell zur vorhandenen LED mit Vorwiderstand zu schalten.
Dabei muß aber abgeklährt werden, wie die LED angesteuert wird (direkt von einem Ausgang oder über Multi- oder Charlie-plexing). und ob der Ausgang, an den die LED hängen, den Strom von 2 LED verkraftet. Wenn möglich ist ein Transistor für die zusätzliche LED nicht falsch.

Grüße Uwe

Ein Optokoppler müßte aber auch eine gepolte LED haben

Das meinte ich mit "normaler" Optokoppler.

  • hat im Eingang nur eine IR Led
  • steuert ab UF= 1.2V - 1.4V den Ausgang durch
  • verträgt eine Sperrspannung von -5V
  • braucht keinen großen Ausgangsstrom zu steuern, so dass auch ein kleiner Eingangsstrom reicht.

(2.3V - 1.3V) / 1mA = 1k Vorwiderstand dürfte die "merkwürdige LED" nicht sehr beeinflussen, und einen INPUT_PULLUP Eingang sauber runterziehen. (bzw. oben lassen wenn aus).

Freut mich, dass sich so viele meinem Problem widmen. Vielen Dank.

Ich hab diese Platine bei Pollin gefunden. Damit kann man Schwache Signale zb. von einer Led schalten.
Hier der Link zur Platine, die ich an die LED des Keyboards dranhängen möchte.
LINK

Die Polarität ändert sich nicht, ob die Led aus ist oder nicht, nur wie gesagt - eigentlich sollte die Led gar nicht leuchten, weil laut Messgerät die Led "eigentlich falsch" eingelötet ist.

Ich hab diese besagte LED zuvor mit einer helleren Led getauscht. Da habe ich zuerst mit dem Messgerät die Polung an der leuchtenden Led gemessen. Dadurch habe ich die getauschte Led versehentlich, (weil ich mich ja nach dem Ergebnis vom Messgerät orientiert habe) ,falsch eingelötet. Trotzdem hat die Led ganz schwach geleuchtet. Das tat sie allerdings immer. Ich konnte die Led aber auch nicht ausschalten, sie leuchtete immer.
Natürlich habe ich dann die Led von der Polung her getauscht, wie es auch auf der Platine aufgedruckt war.
Dann ging alles ganz normal wie es sein sollte. Nur das mit dem Optokoppler, dass ist halt so ne Sache...

Ich weis, es klingt alles sehr verwirrend... Ich werde morgen nochmals die Kiste öffnen und nochmals nach messen.

Euch einen schönen Abend
Gruß Andy

Die Polarität ändert sich nicht, ob die Led aus ist oder nicht, nur wie gesagt - eigentlich sollte die Led gar nicht leuchten, weil laut Messgerät die Led "eigentlich falsch" eingelötet ist.

Bei Charlieplexing ist diese Messung möglich.
Die LED leuchtet durch einen relatv kurzen positiven Impuls sichtbar auf, aber die meiste Zeit ist sie durch eine negative Spannung ausgeschaltet. Du mißt mit dem normalen Multimeter in DC eine negative Spannung.
Um richtig zu messen brauchst Du ein Oszilloskop.

Grüße Uwe

was passiert, wenn du den Optokoppler umpolst?

Wenn Du sowieso schon an der Platine herumgebastelt hast, dann kannst Du auch gleich den Optokoppler in Serie zur LED schalten, vorausgesetzt die Versorgungsspannung reicht für beide. Oder einen Phototransistor dranmontieren, der direkt von der LED beleuchtet wird (diskreter Optokoppler).

Wenn ich recht habe dann bekommst Du bei eingeschaltenen LED kein Dauersignal sondern ein gepulstes Signal.
Grüße Uwe

Ich hab da mal ein Video gemacht, darin sieht man, dass das Signal gepulst sein muss, da die Led mit freiem Auge nicht blinkt, nur über die Kamera ist das gepulste Signal deutlich zu sehen.
Scheinbar ist das Messgerät zu träge, da keine Änderung statt findet.

Video

Habt ihr eine Idee wie ich ein " sauberes" geglättetes Signal von der LED zum Optokoppler hinbekomme?

Vielen Dank für eure Hilfe. :wink:
Gruß
Andy

Softwaremässig glätten. Schau dir das Tastverhältnis mit Oszi oder LG an und mach es über die Zeitdauer der Dunkelperiode. D.h. länger als x ms dunkel, LED ist aus

Das ist eine gute Idee. :slight_smile:
Muss mir irgendwo ein Oszi besorgen...
Wenn ich die Zeitdauer der Dunkelperiode heraus gefunden hab... Wie muss dann der Sketch aussehen?

Ich hab hier diesen Sketch (mit eurer Hilfe - hier im Forum) geschrieben, der bei jeder Status Änderung von dieser "merkwürdigen Led" > (input 3) den output 13 für 200ms auf high schalten sollte.

Led an (bleibt an) > Arduino Output 13 für 200ms auf high > dann wieder auf low
Led aus (bleibt aus) > Arduino Output 13 für 200ms auf high > dann wieder auf low

const int keyPin = 3; //the number of the key pin
const int ledPin = 13;//the number of the led pin
/**********************************/
void setup()
{
  pinMode(keyPin,INPUT);//initialize the key pin as input 
  pinMode(ledPin,OUTPUT);//initialize the led pin as output
}
/**********************************/
boolean lastState;
unsigned long lastSwitch;
void loop()
{
  boolean state=digitalRead(keyPin);
  if(state!=lastState)
  {
    lastState=state;
     
    {
      digitalWrite(ledPin,HIGH);
      lastSwitch=millis();
    }
  }
  else if (millis()-lastSwitch>=200)
  {
    digitalWrite(ledPin,LOW);
  }
}

Wie muss der Sketch aussehen, dass ich dieses pulsierende Signal von dieser merkwürdigen LED, Software mässig glätten und den weiter folgenden Sketch ausführen kann.

Leider bin ich absoluter Neuling. Ich hab vom programmieren nicht viel Ahnung... Vielleicht hat jemand Zeit, mir diesen Sketch umzuschreiben??? Wäre euch sehr dankbar.

Vielen Dank.
Gruß Andy

Du mußt nur ggf. diese Zeile anpassen:
else if (millis()-lastSwitch>=200)
wenn die Pause größer als 200ms werden kann. Dann bleibt ledPin (Variable oder Ausgang) auf HIGH, so lange die LED eingeschaltet ist.

Wenn ich die Zeitdauer der Dunkelperiode heraus gefunden hab...

Die kann kaum größer als ca 50 ms sein, sonst würdest du es flackern sehen.

Aber schneller als deine vorgeschlagenen 200ms brauchst du eigentlich nicht zu werden, denke ich.

DrDiettrich:
Du mußt nur ggf. diese Zeile anpassen:
else if (millis()-lastSwitch>=200)

Wenn ich diese Zeile ändere bleibt dich der Ausgang des Arduinos nicht mehr für 200ms auf high, wenn beim Input 3 eine Signaländerung stattfindet. Oder hab ich dich vielleicht falsch verstanden?

Mir geht es eigentlich rein um dieses Pulsierende Signal von dieser LED. Dieses möchte ich Software mäßig glätten.

Das heißt:

Wenn beim Input 3 (der von dieser "merkwürdigen" Led kommt) für zb. 100ms keine Spannung anliegt > Arduino erkennt - Led ist aus. Wenn nicht, Led ist an.

Wie müssen dann die Code Zeilen aussehen? (Ich schätze mal, das es eine If-Bedingung sein wird...)

Schöne Grüße
Andy

Ich würde mal sowas versuchen:

//global: boolean state, lastState;
if (digitalRead(keyPin)) {lastHigh=millis(); state=HIGH;} //LED an
else if (millis()-lastHigh > 200) {state=LOW; ...} //LED aus
if (state != lastState) {lastState=state; ...} //Zustand gerade geändert

Komplizierter wird es, wenn die LED nicht ganz ausgeschaltet wird, d.h. keyPin auch im ausgeschalteten Zusgtand kurzzeitig auf HIGH gehen kann. Dann darf state erst HIGH gesetzt werden, wenn die minimale Pulsdauer für EIN überschritten wurde. Dann noch firstHigh=millis() beim Wechsel des Eingangs auf HIGH merken, und beim Wechsel auf LOW firstHigh und lastHigh vergleichen. Der Zustand wird dann LOW wenn die Differenz kleiner als x (20ms?) ist, und HIGH wenn größer als x, oder (mit Hysterese) größer als y (50ms?) ist. Die Schwellwerte x und y mußt Du experimentell ermitteln, das kennst Du ja schon.