GPIO interrupts / Crosstalk / Auslösung 2er Kanäle

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo Zusammen,


    ich kämpfe derzeit mit einem Problem, für das ich jetzt noch keine Lösung gefunden habe - was vermutlich daran scheitert, dass ich das Problem noch nicht
    zweifelsfrei identifizieren konnte.

    Vielleicht hat mir jemand einen Tipp.

    Problem in Kurz:
    Ich erfasse mit dem RP verschiedene Messdaten für mein Windrad. Unter anderem Spannung, Drehzahl, Windrichtung und Windgeschwindigkeit.
    Für die Windgeschwindigkeit kommt ein handelsübliches Anemometer zum Einsatz - für die Drehzahl der Windturbine habe ich eine Schaltung aufgebaut,
    mit der ich aus der Frequenz des 3-phasen-Drehstroms die Drehzahl ableiten kann.

    Beides - separat - funktioniert einwandfrei.

    Wenn jedoch beide Funktionen zeitgleich im Betrieb sind, ergibt sich folgender Effekt:

    Das Anemometer misst plausibel eine Windgeschwindigkeit. Diese steigt dann logischerweise etwas an, bis das Windrand seine Anlaufgeschwindigkeit (20 km/h) erreicht hat. Dann beginnt dieses sich zu drehen und wenn es auf eine messbare Drehzahl kommt - dann dreht die Messung des Anemometers "durch" und liefert mir plötzlich Windgeschwindigkeiten von 80-180 km/h. Stecke ich die Drehzahlmessung aus - ist sofort ruhe im Karton und die Windgeschwindigkeit liegt wieder bei plausiblen 20-30 km/h.

    Es "scheint" als ob das RP die Impulse beider Signale *irgendwo* vermischt. Das Anemometer liefert 1 pulse pro Umdrehung (~2.4 km/h) liegt also bei besagten 20 km/h etwa bei 8 pulsen pro Sekunde. Das Windrad liefert pro Umdrehung 6 Amplituden pro Phase. Bei 300 rpm liegen wir hier also im Bereich von 30 Impulsen pro Sekunde.

    Und 30+5 ergibt 35; 35*2,4 = 84 km/h wind. :geek:

    Und damit es nicht zu einfach wird: Wenn ich statt dem Windrad eine 50Hz Wechselstromquelle an die Pins anschließe - dann detektiert die Drehzahlmessung 490 rpm - aber das Anemometer bleibt völlig unbeeindruckt bei einer korrekten Messung. :rolleyes:

    Aufbau:

    So ist das Ganze aufgebaut - ich hoffe, man kann es nachvollziehen. Entschuldigt, dass es keinen lehrbuchgerechten Schaltplan gibt, ist historisch gewachsen ;)



    Oben Rechts werden zwei willkürliche Phasen des Windrads angeschlossen. Mittels einer Diode und einem Spannungsteiler hole ich die "0-200V Sinus" runter auf ca 0-30V, nur noch positiver Anteil. Mit diesem Signal wird ein OK getriggert, der wiederum einfach eine "stehende" 3.3V Leitung für das RPI-Signal schält. Das klappt auch hervorragend, kein perfektes rechteck, zum detektieren jedoch ausreichend.

    Das Anemomenter wird um Störeinflüsse zu minimieren mit 14V betrieben, auch hier zieht ein Spannungsteiler (dessen Werte ich mir nicht aufgeschrieben habe) das Signal dann runter auf 0-3V für das Raspberry.

    Betrachte ich beide Signale mit dem Oszi, sieht das auch alles völlig einwandfrei aus:

    gelb das Anemometer, blau das Drehzahl Signal. Allerdings hatte ich hier leider noch nicht die Gelegenheit das ganze bei besagten 300 rpm zu messen, seit Wochen herrscht bei uns Flaute. Hier warte ich täglich auf "DIE Gelegenheit". Allerdings denke ich kann man damit schon ausschließen, dass ein (physikalischer) Kontakt zwischen beiden Signalen besteht.



    Ohne das Problem genau zu kennen, kann ich jetzt natürlich nur Dinge "umbauen" und ins blaue hinein testen, wie ich es lösen kann.

    Leider ergeben sich durch alle Tests im Prinzip "Ausschlüsse" des Fehlers, sodass am Ende alles ausgeschlossen ist - aber das Problem trotzdem da ist :P

    - Es funktioniert mit dem 50Hz Wechselstrommetzteil, das Oszi zeigt getrennte Signale -> Keine physikalische Signalkopplung vorhanden.
    - Das Anemometer funktioniert OHNE parallele Drehzahlmessung -> Switchbounce des Anemometers damit eigentlich auch ausgeschlossen.
    - Habe die GPIOs auf dem RP schon kunterbunt gemischt, Effekt ist überall vorhanden -> Problem zweier benachbarter GPIOs eigentlich auch ausgeschlossen.
    - Softwaremäßig habe ich 10 zeitgleiche Signale simuliert - mein Programm unterscheidet einwandfrei jedes Signal, es kommt zu keiner Vermischung im Code.
    - Induktion durch die 3 phasen des Windrads auf die Anemometer leitung kann ich auch ausschließen - dann würde bloßes ausstecken des Messsignals den Effekt nicht eliminieren.

    Vielleicht hat ja jemand einen tipp, wo ich ansetzen könnte. Wenn Ihr Fragen habt, gerne fragen.

    -----

    So sieht es aus, wenn die Drehzahlmessung ausgesteckt ist:

    Der Wind (Weiß / Gelb) steigt ein Wenig an, dann produziert das Windrad strom - insich logisch, alles gut.



    Mit verbundener Drehzahlmessung schlägt das Anemometer (Weiß / Gelb) jedoch sehr stark abhängig der Drehzahl (blau) nach oben aus:



    Simuliere ich mit einem Wechselstrom Netzteil 490 rpm - bleibt die Messung des Anemometers VÖLLIG unberührt:


    Edited 5 times, last by dognose ().

  • Stimmt die Schaltung mit dem Schema ueberein? Der Ausgang des Optokopplers ist nicht so beschaltet wie ich das machen wuerde.


    > Induktion durch die 3 phasen des Windrads auf die Anemometer leitung kann ich auch ausschließen

    > dann würde bloßes ausstecken des Messsignals den Effekt nicht eliminieren.

    Wenn du es ausziehst fliesst kein Strom mehr durch die Leitung -> weniger Induktion


    Sind die Leitungen geschirmt und die Schirme sauber angeschlossen?

  • Ich hatte ähnliche Phänomene mit der Erfassung von pH und Leitwerten. Sobald in der Nähe eine elektromagnetisches Stoerfeld auftritt spielen die Messwerte verrückt und sind mehr zuverlässig. Die Messschaltung war so empfindlich.... strahlt dein Windrad elektromagnetisch wenn es sich dreht evtl.? Nur so eine Idee

  • Hi,

    ad OK: ja, stimmt überein. Wie würdest du den Ausgang des OK beschalten?
    ad Ausstecken: Die Leitung des Anemometers sowie die 3 Phasen der Turbine liegen ca 8m nebeneinader im Mast.

    - Kabel des Anemometers ist geschirmt, Schirm einseitig geerdet.
    - Das Magnetfeld 3er Phasen im Drehstromnetz ist "mathematisch 0", sollte also keine / kaum Induktion hervorrufen.
    - Beide Leitungen (Anemometer und Turbine) bleiben natürlich weiterhin verbunden, Abgriff für die Auswertung ist nur ein 15cm Kabel im Schaltschrank.
    Gäbe es eine induktive Kopplung zwischen L1, L2, L3 und der Anemometer Leitung müsste der Effekt auch ohne Abgriff auftreten:



  • Ich hatte ähnliche Phänomene mit der Erfassung von pH und Leitwerten. Sobald in der Nähe eine elektromagnetisches Stoerfeld auftritt spielen die Messwerte verrückt und sind mehr zuverlässig. Die Messschaltung war so empfindlich.... strahlt dein Windrad elektromagnetisch wenn es sich dreht evtl.? Nur so eine Idee

    Dann müsste der Effekt aber auch "immer" da sein - und nicht abhängig davon, ob ich L1 und L2 mit meiner Platine verbinde.

    Auch der Test mit dem Wechselstromnetzteil funktioniert ja reibungslos.

    Der einzige Unterschied hierbei ist imho, dass das Wechselstromnetzteil natürlich ein Signal durch L und N generiert - während mit zwei Phasen halt die Potentialdifferenz beider Phasen das Signal generiert. Allerdings sehe ich hier einfach nicht, wie das einen Impact auf das Anemometer haben soll.

    Deshalb auch ein Optokoppler: L1 und L2 sind hier völlig galvanisch getrennt vom rest des Systems.

  • > Wie würdest du den Ausgang des OK beschalten?

    Emitter an Masse, GPIO an Pin 5 vom Optokoppler.


    > Kabel des Anemometers ist geschirmt, Schirm einseitig geerdet.

    Toent vernuenftig. Ist die Erdung in Ordnung?

    > Das Magnetfeld 3er Phasen im Drehstromnetz ist "mathematisch 0", sollte also keine / kaum Induktion hervorrufen.

    Und was ist mit der Diode im Stromkreis? Immer noch mathematisch 0?

  • Erdung sollte gut sein, OK muss ich mal nochmal tiefer "reinlesen".

    Mit dem letzten Punkt hast du einen guten Einwand. L1 und L2 laufen recht mittelbar neben dem Signalausgang für das RP auf das Board.
    Ob hier 2, vielleicht 3 cm Koppelstrecke ausreichen um auf dem Signal für das RP false-positives zu triggern?

    Im Betrieb geht die Turbine rasch auf 40, 50V - Mein Wechselstromtest war nur mit einem 24V Netzteil.

    Quasi hier im "rosa Bereich":


    Während das Anemometer "offen" ist, ist dieser GPIO potentialfrei, lediglich der interne Pull-Down ist aktiv.


    Das wollte ich ohnehin umbauen, dass das Anemometer künftig das Signal auf GND zieht und der GPIO sonst (extern)
    auf +VCC gezogen wird. Ggf. reicht das dann bereits aus, weil es keinen Zustand mehr gibt, der nur vom internen Pull-Down abhängt.

    Vielleicht schafft es der interne Pull-Down bisher ab L1, L2 > x Volt nicht mehr die induzierte Spannung zu nullen.

    Ich bastle und berichte :D

    Edited 3 times, last by dognose ().

  • Ich bastle und berichte

    So, habe mal "gebastelt". Es hat sich etwas getan, d.h. die "Baustelle" ist zumindest mal die Richtige - Das Gewünschte Ergebnis kommt trotzdem noch nicht heraus :rolleyes:

    Ich habe nun das Signal des Anemometers wie folgt abgeändert:

    - Statt 14V Versorgung, gefolgt von einem Spannungsteiler, der das auf 3.3V zieht.
    - +3.3V = "Logical High" (Reed-Schalter im Anemometer geschlossen)
    - loses Ende = "Logical Low" (Reed-Schalter im Anemometer geöffnet)

    sieht es nun wie folgt aus:

    - 5V Signal durch einen Spannungsteiler auf 3V gekürzt.
    - Anemometer zieht dieses Signal beim Schließen auf "0V"
    - Dadurch ist der GPIO im Prinzip immer auf entweder definierten +3V oder mit GND verbunden.



    Tja, Ergebnis ging in die andere Richtung ^^


    Trotzdem sichtbar im Graph: Weiterhin eine "streng" lineare Abhängigkeit der (falschen) Windmesswerte zum Drehzahl wert.
    Jetzt streut scheinbar halt jeder "puls" des Windrads ein vielfaches ein wie zuvor.

    Aber so schlecht ist das nicht, wie gesagt: Baustelle ist richtig, was das nun bedeutet muss ich mir Gedanken machen.
    Zum einen war es sicher ein Fehler, dass ich das Sig jetzt nur auf +3V statt +3.3V gezogen hab. Wahrscheinlich flackert es jetzt gewaltig
    im Bereich von 2.5 - 3.0 hin und her.

    Auf jeden Fall ist der Fehler nun in einem Bereich, wo er sich messen lässt und vielleicht werde ich so schlauer daraus, wo überhaupt die Einstreuung
    statt findet.

  • So, kurz die Zeit genommen um mit dem "veränderten" Fehler ein paar Tests zu machen, da gerade tatsächlich mal genug Wind da war:


    1) Drehzahl Signal abgesteckt => Es ergibt sich KEIN Fehler. => Die Einstreung entsteht nicht auf der 7m langen Strecke, wo
    Anemometer Signal und Turbinen-Phasen im Mast zusammen liegen.

    So wie es sein soll: Produktion vorhanden (damit auch Turbinen Drehzahl) - Aber Wind-Geschwindigkeit bleibt recht "normal".


    2.) Also mal das Oszi an das Anemometer Signal gehängt - das ist jetzt wie vermutet sehr viel Unsauberer - ist aber nichts, was man nicht weg-Kondensatoren könnte ;) :


    3.) Nun die RPM Messung (Also L1 und L2) eingesteckt und augenblicklich ergibt sich folgendes:


    Das "+3V" signal flackert jetzt nicht nur ein bisschen - ich würde eher sagen da braucht man viel Phantasie um noch 3 Volt zu erkennen :P


    4) Durch Zufall lies gerade der Wind nach als ich diese Foto machte - und unterhalb einer gewissen Drehzahl passierte dann plötzlich das hier:



    Jetzt muss ich mich überlegen, was diese "Schwelle" sein könnte. Warum sie auftritt und warum darunter alles gut ist und darüber dieser Effekt auftritt ;)

  • Hmm, was stellt das genau dar??


    2) Sind das drei Einheiten zu je 140mV?

    4) Gelb zwei Einheiten zu 280mV? Und Blau ist viel kleiner und geht ins Negative?


    3) Sieht aus wie wenn etwas schwingen wuerde. Gibt es etwas in dieser Schaltung das schwingen kann?

    Wie hoch sind die Spitzen?

    -> Hast du schon mal einen Kondensator dran gehaengt? Oder gar ein RC-Glied?


    => Nimm die Bilder mal mit 1V / Einheit auf (beide Kanaele) und lege die Nullpunkte genau aufeinander.

  • Der negative Anteil kommt daher, dass es sich bei dem blauen Rechteck um das delta zweier Außenleiter handelt.

    Habe mir das ganze über Nacht durch den Kopf gehen lassen. Wie bereits erwähnt wurde der Fehler nun viel schlimmer, was ihn aber etwas transparenter macht:

    Wenn die "Pulse" des Anemometers im High-Bereich überlagert werden, fällt auf, dass das in 4 Blöcken passiert, leicht abklingelnd.
    Für das blaue Signal bilden wir die Differenz aus zweier um 120° verschobener Phasen.

    d.h. EIN blauer Puls bedeuted auch eine periode jeder phase - also gesamt 4 lokale minima oder maxima:


    Folglich bedeuted das, dass ich nun schonmal soweit urteilen kann, dass der "Störeinfluss" von den beiden Phasen in Ihrer unverarbeiteten Form ausgeht.
    würde der Störeinfluss NACH der diode entstehen, würden vermutlich nur 2 Blöcke auffallen, da der inverse Teil der Periode ja eliminiert wird.

    Im Prinzip sehe ich also als Ursache 2 Möglichkeiten:

    1.) induktiver Einfluss auf das Anemometer-Signal

    2.) Direkter Einfluss ("Funkenflug")


    Meine Tendenz geht zu 2:

    - die Bauteile und Leiterbahnen / drähte sind dort sehr "gekuschelt".

    - Induktiv würde ich erwarten, dass es ein "glatterer" einfluss ist.

    - Da es aber "pro Phasen-High" tatsächlich eher mehrfach pulst ist ein "Funkenfeuer" wahrscheinlicher.

    - Das würde auch erklären, warum der Effekt erst ab einer gewissen Spannungsdifferenz zwischen L1/L2 und dem 3V Signal auftritt:
    Bei 20V springt noch nix, ab X Volt reicht es dann (vermutlich auch abhängig der Luftfeuchtigkeit) dass es zu einem übersprung kommt.


    Ob 1 oder 2 ist ansich relativ egal - es muss weg ;)

    Ich werde jetzt die Schaltung für die Auswertung der Drehzahl einfach auf eine andere Platine bauen, dann besteht da "genug" physikalische Distanz

    zum Anemometer-Signal und fertig - Hoffe ich zumindest ;)

    Edited once, last by dognose ().

  • Vielleicht suchst du auch auf der falschen Seite.


    Gibt's diese Impulse wenn der Inverter arbeitet? Wenn der bei einem bestimmten Pegel einschaltet hast du eine Erklaerung fuer das plotzliche Einsetzen der Stoerungen.


    Hast du ein paar Ferritkerne fuer das Kabel?

  • Inverter könnte natürlich auch noch sein. Ja, der hat eine Mindestspannung, ab der er einsetzt.

    ABER: Stecke ich die beiden Phasen von meiner Platine ab, ist kein Problem (mehr) vorhanden - egal wieviel der Inverter gerade leistet (oder nicht leistet).
    D.h. auch wenn der Inverter möglicherweise für den "Raffel" auf den beiden Phasen verantwortlich ist - der Übergabe-Punkt in das Anemometer-Signal befindet sich irgendwo auf meiner Platine - oder der Zuleitung der beiden Phasen.


    D.h. eine physikalisch "bessere" Abtrennung ist hier auf jeden Fall nicht verkehrt. Und da ich den beiden Signalen (RPM und Anemometer) ohnehin noch ein paar Kondis spendieren wollte, ist das in einem Aufwasch umgebaut:

    So etwa, kommt ja erfreulicherweise ein langes Wochenende :)


    Weil es ist ja NICHT das vom OK generierte Signal, das diesen Raffle aufweist.
    Dieser Effekt tritt ja im Anemometer Signal auf - das perse gar nichts mit den L1/L2 zu tun hat, weder logisch noch "Verbindungstechnisch"

    Edited once, last by dognose ().