Forum: Mikrocontroller und Digitale Elektronik USB-Status überprüfen (HIGH oder LOW)


von eizi (Gast)


Lesenswert?

Hallo ;)

Ich möchte den USB-Ausgang von meinem Fernseher prüfen ob dieser HIGH 
oder LOW ist.

Geplant ist das ganze mit einem Arduino.

Eigentlich muss ich doch nur die Masse des USB-Ausgangs mit dem Arduino 
verbinden und TV-VCC als Eingang definieren oder?

Funktioniert aber nicht, die LED leuchtet immer egal ob der USB-Port 
Spannung hat oder nicht.


Hier mein Code:
1
 
2
int usbinput = 8;
3
int ledoutput =9;
4
5
6
void setup() {
7
8
  pinMode(usbinput, INPUT_PULLUP);
9
   pinMode(ledoutput, OUTPUT);
10
11
}
12
13
void loop() {
14
  
15
  if (digitalRead(usbinput)==HIGH) {
16
    digitalWrite(ledoutput, HIGH); }
17
    else {
18
      digitalWrite(ledoutput, LOW);
19
    }
20
21
}

Danke für eure Hilfe! ;)

von PittyJ (Gast)


Lesenswert?

USB hat 4 Leitungen.
Welche soll geprüft werden?

von Asdf A. (eizi)


Lesenswert?

Nur die Versorgung also Vcc ;)

: Bearbeitet durch User
von Alexander S. (esko) Benutzerseite


Lesenswert?

eizi schrieb:
> Eigentlich muss ich doch nur die Masse des USB-Ausgangs mit dem Arduino
> verbinden und TV-VCC als Eingang definieren oder?

Theoretisch ja. Allerdings könne dir Masseschleifen und unsaubere 
Netzteile Probleme machen.
Daher würde ich einen Optokoppler dazwischenhängen.

von Daniel (Gast)


Lesenswert?

Manche Geräte liefern auch Strom wenn sie aus sind. Ich kann an einem 
Port meines Laptop das Handy laden. Stecke doch mal einen Verbraucher an 
um zu sehen ob der Fernseher stromlos schaltet...

von Asdf A. (eizi)


Lesenswert?

Danke, irgendwie funktioniert es jetzt.
Komisch..jedenfalls klappts jetzt ich danke trotzdem für eure Hilfe :)

von c-hater (Gast)


Lesenswert?

eizi schrieb:

> Ich möchte den USB-Ausgang von meinem Fernseher prüfen ob dieser HIGH
> oder LOW ist.
>
> Geplant ist das ganze mit einem Arduino.
>
> Eigentlich muss ich doch nur die Masse des USB-Ausgangs mit dem Arduino
> verbinden und TV-VCC als Eingang definieren oder?

Ja.

> Funktioniert aber nicht, die LED leuchtet immer egal ob der USB-Port
> Spannung hat oder nicht.

Woher willst du denn dann überhaupt wissen, ob sie Spannung hat oder 
nicht?

Solange der TV eingeschaltet ist, wird die USB-Buchse einfach immer 
Spannung haben und deine LED deshalb auch immer leuchten.

Interessant wird es, wenn du einfach mal den Netzstecker des TV ziehst 
und einige Minuten wartest. Dann sollte deine LED auf jeden Fall 
irgendwann ausgehen.

Wenn nicht, stimmt entweder mit deiner Schaltung oder deinem Programm 
was nicht. Aber ohne als erstes diesen naheliegenden primitiven Test 
gemacht zu haben, lohnt "Fehlersuche" nicht, weil es ja noch nichtmal 
erwiesen ist, daß überhaupt ein Fehler vorliegt.

Das sollte doch jedem einleuchten, oder nicht?

von Asdf A. (eizi)


Lesenswert?

Hmm, funktioniert doch nicht mehr habe zuerst als ich dachte es 
funktioniert einen Fehler gemacht...

Ich hab die Schaltung jetzt so aufgebaut, dass ich die zwei Massen 
verbunden habe, aber es funktioniert nicht die LED geht an und nicht 
mehr aus. Ich habe geprüft ob am USB-Ausgang des TVs Strom anliegt bei 
ausgeschaltetem Fernseher doch dieser ist nicht der Fall.

von Markus (Gast)


Lesenswert?

Was für eine Spannung misst du am Eingang des Arduino?

Schalte mal den Pull-Up ab pinMode(usbinput, INPUT) und schalte einen 
Widerstand 1k vom Eingang nach GND.

von Asdf A. (eizi)


Angehängte Dateien:

Lesenswert?

Mit meiner angehängten Schaltung habe ich den Widerstand eingebaut.


Es funktioniert jetzt auch, wenn Strom weg ==>LED aus.

Aber wenn ich die Masse des USB-Ausgangs vom Arduino trenne, 
funktioniert es trotzdem noch..also wenn nur Vcc des USB-Ausgangs am 
Arduino hängt leuchtet die LED trotzdem...warum?

von Markus (Gast)


Lesenswert?

Max E. schrieb:
> Mit meiner angehängten Schaltung habe ich den Widerstand
> eingebaut.
>
> Es funktioniert jetzt auch, wenn Strom weg ==>LED aus.
>
> Aber wenn ich die Masse des USB-Ausgangs vom Arduino trenne,
> funktioniert es trotzdem noch..also wenn nur Vcc des USB-Ausgangs am
> Arduino hängt leuchtet die LED trotzdem...warum?

Weil dein GND vom Arduino vermutlich indirekt, z.B. via Netzteil, mit 
dem GND des USB verbuden ist. Zufall und nicht wirkich definiert.

Mit dem Pull-Up funktioniert es nicht, da du, bei augeschaltetem USB, 
keine Last nach GND hast. Der Pullup zieht die Spannung hoch, so dass du 
immer einen HighPegel siehts.

Je nachdem, wie nachhaltig das ganze werden soll, würde ich an den 
Aruduino Eingang noch einen Widerstand (10k - 47k) in Serie schalten 
(anstelle deiner weissen Leitung) und den Pulldown Widerstand (1k - 10k) 
dort anhängen. (Anstatt am Eingang)
So ist dein Eingang etwas geschützt.

Und deine LED hat doch hoffentlich einen Vorwiderstand, oder?

von Asdf A. (eizi)


Lesenswert?

Okey, danke für die Hilfe.

Selbstverständlich, den hab ich aber vergessen aufzuzeichnen ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.