GPIO, Spannungsteiler, Fototransitor - Problem

  • Hallo Gemeinde,
    ich habe ein Problem mit dem Anschluss eines Fototransitors an den RSPi, dabei speziell mit der Dimensionierung des Spannunsgteilers und mit der Auswertung des Signals.

    Ich verwende die Schaltung, die im Anhang zu finden ist. Der Fototransistor ist ein BPY-62 und hat im Dunkeln einen Widerstand von > 100MOhm, bei Tageslicht etwa 5k und in meiner Fall (Auswertung einer BetriebsLED an einer Heizung) < 200kOhm.
    Der verwendete Spannungsteiler sollte nach meiner Rechnung etwa 2,5 V liefern, was eigentlich reichen sollte. Den Kondensator habe ich noch dazu getan, weil ich vermute das die BetreibsLED mit PWM gedimmt es und mir nicht das LED-Flackern in die Suppe spuckt soll.
    Wenn ich die Schaltung ohne Anschluss am RSPi ausprobiere verhält sich die Spannung am Ausgang auch wie erwartet -Spannung schwankt je nach Licht zwischen 0,2 und 2,8 V. Soweit so gut, genau die gleiche Schaltung funktioniert an einem ATMega (mit anderem Pullup wegen 5V)

    So nun habe ich den RSPi angeschlossen und in Python den interen Pullup auf 0 gesetzt.
    --> GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    Den Port überwache ich per Interupthandler
    GPIO.add_event_detect(17, GPIO.FALLING, callback=brenner_aus, bouncetime=200) bzw. GPIO.add_event_detect(17, GPIO.RISING, callback=brenner_an, bouncetime=200)

    Nun das Problem: Der Spannungsteiler liefert nicht mehr die Spannungsschwankungen je nach Lichtverhältnissen - erst wenn ich eine Lampe direkt raufhalte (und damit der Widerstand < 1k ist) verändert sich die Spannung und ein HIGH wird am Port erkannt.

    Kann mir da jemand auf die Sprünge helfen, warum der Spannungsteiler am Port nicht funktioniert?
    - ist es überhaupt richtig gegen Masse zu schalten ?
    - liegt es am internen Pullup?
    - benötige ich bei so hochohmigen Widerständen einen Verstärker?

    Wie würdet ihr denn die Schaltung aufbauen?


    Vielen Dank
    der Kurt


  • erst wenn ich eine Lampe direkt raufhalte (und damit der Widerstand < 1k ist) verändert sich die Spannung und ein HIGH wird am Port erkannt.
    der Kurt

    2M kann zuviel sein das high erkannt wird, ausserdem bei Licht leitet der Fototransistor und es wird eher low als high was du ja erkennnen wolltest ?

    also so kannst du richtig dimensioniert nur low erkennen ! high ist es bei kein Licht.

    Begründung, die Photonen vom Licht erzeugen freie Elektronen die den Transistor leiten lassen, die Spannung am Collector sinkt und geht in Richtung low -> um 0V

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (15. Oktober 2013 um 12:27)


  • Das ging aber fix :)

    Ich hatte das auch andersherum probiert mit dem Transistor an 3,3V
    Es hat hier auch nur funktioniert bei grellem Licht.

    Du meinst das 2M zuviel sind für den Pi - wie gesagt bei einem ATmega funktioniert das...

    Wie würdest du das denn lösen?

    so ähnlich würde ich das probieren, den Kondensator aber trotzdem nach GND und mit dem Widerstand probieren, 2M 1M 470k

    wenn alles nix hilft, probieren den Fototransistor umdrehen, die laufen auch revers ! oder deine Ursprungsschaltung (die negiert war)
    mit einem Emitterfolger (Kollektorschaltung) die Impedanz wandeln,
    oder ein Kombination aus allem, so allgemein kann man das aus der Ferne nicht sagen,
    du hattest ja auf dem Steckbrett oder am ATmega probiert,
    mich wundert nur deine high Aussage weil die eben zur Schaltung nicht passt,
    für mich ist high wenn sich der GPIO oder Portpegel der VCC nähert
    und das geht in deiner Ursprungsschaltung nur mit Licht aus, nicht mit Licht an !

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (15. Oktober 2013 um 13:59)

  • Nunja, da muss ich wohl noch eine Weile rumprobieren - ein Patentrezept scheint es ja anscheinend nicht zu geben und soweit neben der Spur scheine ich ja nicht zu sein.

    Wegen meiner Schaltung und High/Low musst du dich nciht wundern, das war mein Fehler. Der Text von meinem Ursprungsbeitrag war zur 2.Schaltung. Ich hatte soviel rumprobiert und etwas den Überblick verloren

    Wie sieht den die Emitterfolger / Kollektorschaltung in dem Fall mit dem Fototransistor aus?? Ich dachte, dass was ich verwende , ist eine Kollektorschaltung oder liege ich da falsch :huh:

  • Wenn du den Transistor mit dem zur Verfügung stehenden Licht nicht weiter durchschalten kannst und auch kein empfindlicher Transistor zur Verfügung steht, würde vielleicht ein nachgeschalteten Komparator helfen, dessen Referenzeingang du dann ja beliebig auf deinen Schaltpunkt einstellen kannst. Damit bekommst du eine hinreichend hohe Eingangsimpedanz und genug Bumms für einen sauberen Ausgangspegel. Ob dieser dann High oder Low aktiv ist, sollte ja egal sein, das kann man doch in Software beliebig drehen.

    Wenn ich das richtig sehe, ist der Pull-Down am Port aktiv, ist das in der Schaltung berücksichtigt? Dessen Widerstand ist ja nicht sehr definiert und durchaus in der Größenordnung der externen Beschaltung...

  • Dank für die zahlreiche Hilfe, ich habe es hinbekommen. Singletrailer hat mir den entscheidenden Hinweis gegeben -> den internen Pull-Down zu deaktivieren, danach hat sich (welch Wunder) die Schaltung am RSPi auch genauso verhalten wie ohne verbundenen GPIO.
    Manchmal hat man halt die Brille uff...

    Für ähnlich Betriebsblinde die Portaktivierung ohne PullDown:

    GPIO.setup(17, GPIO.IN)

    Die funktionierde Schaltung ist im Anhang.

    Vielen Dank!


  • Dank für die zahlreiche Hilfe, ich habe es hinbekommen.
    Die funktionierde Schaltung ist im Anhang.

    :thumbs1: prima, der 100nF kann zwar nach 3,3V ist egal, aber sicherer ist nach GND ;)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (16. Oktober 2013 um 10:02)

  • Moin Leute,

    erstmal Danke dafür, dass ihr Euch hier über dieses Thema ausgetauscht habt - das entspricht nämlich genau meinem Vorhaben. Allerdings habe ich dabei ein Problem.

    Ich habe die Schaltung nachgebaut, zunächst auf dem Steckbrett. Funktionierte 1A, die Software dafür war auch ein Kinderspiel.
    Zum Testen habe ich mir ein python Script gebaut, welches mir die Zustände ausgibt:

    Code
    while True:
      GPIO.wait_for_edge(17. GPIO.RISING)
      print "An"
      GPIO.wait_for_edge(17. GPIO.FALLING)
      print "Aus"

    Habe die Schaltung fertig zusammengelötet, das ganze in ein kleines Gehäuse mit Öffnung für den Lichteinfall verpackt und wollte nun wieder testen.

    Problem:
    Wenn Licht auf den Transistor fällt, ist alles gut. Pegel ist High und ändert sich auch nicht.
    Wenn allerdings kein Licht einfällt, wechselt der Pegel immer von low auf high auf low auf high.

    Hat jemand eine Idee, wie das sein kann?

    Einmal editiert, zuletzt von bks29b (9. November 2013 um 19:58)

  • sieht so aus als wenn der Widerstand zu hoch ist, der kommt nicht gegen den PI an, ist da eventuell ein pullup oder pulldown im PI eingeschaltet ?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Guten Morgen,

    nein, ist nichts dergleichen eingeschaltet. Auch ist der Widerstand genau so wie im Testaufbau mit 8,2M-Ohm dimensioniert. Wenn ich die Schaltung ohne PI durchmesse (3,9V DC - weniger kann mein Netzteil nicht), sieht am Messgerät alles gut aus. :@Allerdings ist das sicherlich wesentlich träger als der PI.

    Ich werde heute Nachmittag nochmal detailliert durchmessen. Aber vielleicht hat ja noch jemand eine Idee??

  • So, noch mal mit 4 V durch gemessen.
    In absoluter Dunkelheit 0,0V, bei ein wenig Lichteinfall 0,2-0,5V. Erst bei etwas mehr Licht wird die Grenze von 0,8V für den High-Pegel überschritten. Es bleibt also unerklärlich, warum das ganze am PI nicht wie erwartet funktioniert.

    Mir wird wohl nichts anderes übrig bleiben als mit verschiedenen Widerständen zu experimentieren...
    Oder?:helpnew::helpnew:


  • So, noch mal mit 4 V durch gemessen.
    In absoluter Dunkelheit 0,0V, bei ein wenig Lichteinfall 0,2-0,5V. Erst bei etwas mehr Licht wird die Grenze von 0,8V für den High-Pegel überschritten. Es bleibt also unerklärlich, warum das ganze am PI nicht wie erwartet funktioniert.

    Mir wird wohl nichts anderes übrig bleiben als mit verschiedenen Widerständen zu experimentieren...
    Oder?:helpnew::helpnew:

    oder einen Emitterfolger, Impedanzwandler zum PI nachschalten

    http://www.elektronik-kompendium.de/sites/slt/0204133.htm

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • Habe mit dem Kondensator etwas rumgespielt, jetzt funktioniert alles! Danke für die Hilfe!

    wow, das muss ich noch lernen, wie spielt man mit dem Kondesator rum das es dann klappt ? könnte auch für mich mal nützlich werden :lol:

    aber immerhin gut das es nun geht....:thumbs1:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!