Hallo, ich bastle gerade an einer Schaltung bestehend aus einem Raspberry Pi Pico an dem ein Display (i2c), ein Servo und ein SIM800L GSM-Modul (URAT) hängen. Die Aufgabe des Gerätes ist es, eine GPRS-Verbindung zu einem Server herzustellen, einen "Status" abzuholen und diesen am Display darzustellen und ggf. den Servo zu bewegen. Grundsätzlich funktioniert alles einwandfrei nur leider nicht sehr zuverlässig. Der Pico (oder auch ein anderes Board mit RP2040 Prozessor) "hängt sich immer mal wieder auf" und manchmal "zuckt" der Servo unmotiviert. Als (wahrscheinliche) Ursache habe Störungen durch den GSM-Verbindungsaufbau identifiziert. Ich hab nun probehalber das SIM-Modul, so weit es das Gehäuse zulässt, vom Pico getrennt und mit längeren Drähten verbunden. Die Antenne habe "außen" angebracht (Aber nur ca. 10 cm vom SIM800 entfernt, mehr Platz gibt das Gehäuse nicht her; das Gehäuse ist aus Holz (12mm Siebdruckplatte), schirmt also nicht bzw. wenig). Den Pico (in einem zusätzlichen Kunststoffgehäuse) und alle Verbindungsleitungen (zum Servo, zum Display, zum SIM800 und zur Spannungsversorgung) hab ich nun probehalber mit Alufolie umwickelt. Jetzt funktioniert es zumindest in 99 von 100 Fällen.... also gehe ich davon aus, dass tatsächlich "Funkstörungen" die Ursache fürs "Aufhängen" sind. Kennt jemand das Problem? Wie würdet ihr das angehen? Wie kann ich geeignet "abschirmen" - die Alufolienlösung gefällt mir nicht ;-) Bin gespannt auf eure Meinungen und Erfahrungen!
:
Verschoben durch Moderator
Bild vom Aufbau? Saubere Versorgung? Modems brauchen einiges an Strom beim senden. Softwaremechanismen implementiert, um Resetsource herauszufinden?
Florian L. schrieb: > Bild vom Aufbau? Kann ich heute Abend nachliefern Florian L. schrieb: > Saubere Versorgung? Modems brauchen einiges an Strom beim senden. Das Problem tritt mit jeder Art von Versorgung auf. Auch, wenn ich das SIM800L mit einer getrennten Quelle versorge (z.B. SIM800 vom Labornetzgerät oder Akku und Pico über USB vom PC) - in der Endvariante wird alles von einem Akkupack versorgt) - Achja, das SIM800L bleibt ja weiterhin verbunden (sichtbar an der StatusLED), nur der Controller hängt. Florian L. schrieb: > Softwaremechanismen implementiert, um Resetsource herauszufinden? Es wird kein Reset durchgeführt. Der Pico bleibt einfach stehen (es kommen keine Debug-Meldungen mehr in der Console an, das Display "friert ein" (lasse zu Testzwechen einen einfachen Counter am Display mitausgeben)
Das SIM 800 Modul kann bis zu 2A Spitzen ziehen und soll laut Datenblatt mit 1000µ gepuffert werden. Lange Leitungen, die vermeindlich die Störungen reduzieren, begrenzen durch ihre parasitäre Induktivität dann wieder den Strom, so das die Instabilität nur eine andere Ursache bekommt. Auch wenn der 1000µ meist als Tantalelko auf der SIM Platine sitzt, ist das A & O eine potente Stromversorgung mit großzügig ausgelegter Pufferung mit low ESR Elko und einem zusätzlichen KerKo.
Gerald B. schrieb: > Das SIM 800 Modul kann bis zu 2A Spitzen ziehen und soll laut Datenblatt > mit 1000µ gepuffert werden. Lange Leitungen, die vermeindlich die > Störungen reduzieren, begrenzen durch ihre parasitäre Induktivität dann > wieder den Strom, so das die Instabilität nur eine andere Ursache > bekommt. > Auch wenn der 1000µ meist als Tantalelko auf der SIM Platine sitzt, ist > das A & O eine potente Stromversorgung mit großzügig ausgelegter > Pufferung mit low ESR Elko und einem zusätzlichen KerKo. Ist soweit bekannt. Parallel zum Original-Kondensator habe ich einen Elko gelötet. Wenn ich den weglasse, gibts einen Reboot-Loop, allerdings vom SIM800 selbst und nicht vom Pico. (Wie groß sollte der/die zusätzliche(n) Kondensatoren deiner Meinung nach sein. Meiner ist mit 4700uF derzeit wahrscheinlich etwas überdimensioniert.... hatte aber gerade nichts anderes zur Hand.) Mit "längeren Drähten" meine ich etwa 10 cm. Größer ist das Gehäuse nicht ;-) Aber nochmal: das Problem tritt auch auf, wenn das SIM800 (mit Zusatzelko) eine getrennte Versorgung hat. Ich kann den Pico auch "gezeilt" zum Absturz bringen, wenn ich die Antenne ganz nah darüber halte.... ich gehe also immer noch von einer Elektromagnetische Störung und nicht von einem Versorgungsproblem aus...
Wird der Servo direkt angesteuert, oder über ein Relais/MOSFET? Verdrillte Kabel könnte helfen. Filter an den Ein/Ausgängen. Bzw passende(!) Ferrite. Abschirmen wäre ziemlich aufwändig.
So, hier mal die versprochenen Bilder.... Bild 1 zeigt, wie es "fertig" aussehen soll, die Alu-Folie habe ich für die Bilder großteils wieder entfernt. Derzeit ist kein "echter" Pico sondern ein waveshare rp2040-zero drinnen. Wie schon im Eingangspost erwähnt, ist das Verhalten bei beiden gleich. Bild 6 gibt dann nochmals einen Überblick mit abgenommenen Deckeln, das Display wird in einen Rahmen in der Frontplatte gesteckt, darum muss das Kabel so lange sein.
Res schrieb: > Wird der Servo direkt angesteuert, oder über ein Relais/MOSFET? > > Verdrillte Kabel könnte helfen. > Filter an den Ein/Ausgängen. Bzw passende(!) Ferrite. > Abschirmen wäre ziemlich aufwändig. Der Servo hängt einerseits direkt an 5V und GND der Spannungsquelle und andererseits an GPIO15. Wird also direkt angesteuert. Welche Kabel meinst du? die zum Servo? Wie könnte ich das bewerkstelligen? Einfach selbst verdrillen oder gegen ein verdrilltes tauschen? Eventuell verdrillt und geschirmt? vielen Dank jedenfalls mal für den Input....
Michael H. schrieb: > Der Servo hängt einerseits direkt an 5V und GND der Spannungsquelle und > andererseits an GPIO15. Wird also direkt angesteuert. Bei ausgeschaltetem Servo liegen also 5V über den Servo an einem Pin, der für 3.3V ausgelegt ist. Absolute Maximum Rating (also nicht empfehlenswert, sondern "darüber kann es qualmen") ist IOVDD+0.5V, also 3.8V. Wenn Du ihn einschaltest, sprengst Du dann die Grenze von (wenn ich das beim Datenblatt-Überfliegen richtig sehe) maximal 12mA pro Pin.
Hmmm schrieb: > Bei ausgeschaltetem Servo liegen also 5V über den Servo an einem Pin, > der für 3.3V ausgelegt ist. Absolute Maximum Rating (also nicht > empfehlenswert, sondern "darüber kann es qualmen") ist IOVDD+0.5V, also > 3.8V. Einen Servo kann man nicht "ausschalten". Warum sollte der Servo seine 5V Versorgungsspannung über die Steuerleitung an den Prozessor weitergeben?
Wenn die Störungen durch den Äther kommen, müsstest du die Schaltung mit deinem Handy - gleiches Band vorausgesetzt - auch aus dem Tritt bringen können. Einfach mal daneben halten und telefonieren oder aus- und einschalten zum Einchecken.
Michael H. schrieb: > Warum sollte der Servo seine > 5V Versorgungsspannung über die Steuerleitung an den Prozessor > weitergeben? Vergiss meinen Einwand, ich hatte das "und GND" überlesen und dachte, dass Du mit dem GPIO die GND-Leitung des Servos schaltest.
Ich würde vermuten dass GSM in eine der Leitungen einstrahlt und dadurch den uC aus dem Takt bringt. Du kannst mal versuchen die Antenne an eine der Leitungen zu halten und schauen ob du das damit reproduzieren kannst. Dann müsstest du diese Leitung entsprechend verdrosseln.
Jeder Draht ist auch eine Antenne. Evtl. mach die Servo-Ansteuerung den Ärger? Kabel zum Test mal anders verlegen und Klappferrit gegen steile Impulse testen? Oder Software ohne Servo-Ansteuerung auf Zuverlässigkeit testen? EMV siehe https://www.mikrocontroller.net/articles/EMV
:
Bearbeitet durch User
Michael H. schrieb: > Der Pico bleibt einfach stehen Sowas passiert wenn der Clock ausfällt und die MCU das nicht erkennen kann. Ist dann kein Watchdog mit separater Clock Source aktiv, hängt die Kiste. Um den Quarzoszillator ausfallen zu lassen gehört nicht viel. Kenne den Pico nicht weiter. Kann der keinen Clockausfall erkennen und auf eine andere Taktquelle umschalten damit man dann einen Reset auslösen kann? Willkommen in der wunderbaren Welt der EMI. Die Theorie dazu und Maßnahmen zur Vermeidung füllen Bücher. Das kann 'conducted' also kabelgebunden oder 'radiated' also gestrahlt sein oder beides. Was immer hilft ist die MCU komplett zu schirmen und alle Verbindungen zur Außenwelt mit Filtern zu verblocken. Aber auch das kann beliebig kompliziert werden. Setz eine durchgehende Massefläche unter die Antenne, zwischen Antenne und Pico und verwende ggf. einen ext Watchdog, wenn der pico da schwach aufgestellt ist. Gibt5 auch tolle Ferritfolien von z.B. Würth zum aufkleben, aber die werden Dir wohl zu teuer sein.
Michael schrieb: > Was immer hilft ist die MCU komplett zu schirmen und alle Verbindungen > zur Außenwelt mit Filtern zu verblocken. > Aber auch das kann beliebig kompliziert werden. Sagen wir oft. Wenn es doch Spannungseinbrüche sein sollten, hilft kein Blech, sondern eine bessere Schaltung.
Auf die Kabel zwischen SIM und Pico einen "Mantelstromfilter" oder die Kabel (gemeinsam) durch einen Ferritring wickeln ... zumindest mal probieren ...
Das ganze Gedöns gehört in ein Metallgehäuse und die Antenne außen dran. Diese Art von Antenne (Viertelwellenstrahler) braucht zwingend eine Metallfläche als Gegengewicht! Und zwar mindestens Lambda/viertel im Quadrat. Und sie muß senkrecht auf der Metallfläche stehen. Sonst wirst du mit deinen Störungen leben müssen. HF ist kein Lego-Spielzeug.
Vielen Dank für die vielen konstruktiven Anregungen. Da habe ich einige Ansatzpunkte. Nach kurzen Tests gestern habe ich immer mehr den Eindruck, dass die "Einstreuung" in der Servo-Zuleitung passiert. Hatte aber nicht ausreichend Zeit, das weiter zu verifizieren. Werde am Wochenende mal ausführlich experimentieren und dann berichteten. Helmut -. schrieb: > braucht zwingend eine > Metallfläche als Gegengewicht! Wie auf Bild 4 ersichtlich, ist die Antenne auf einem Metallstreifen montiert. (Lambda/4)^2 hat die Fläche allerdings in der Tat nicht. Etwa die Hälfte.... die größer zu machen schadet sich nicht, werd ich probieren... Helmut -. schrieb: > Und sie muß senkrecht auf der Metallfläche stehen Das wird schwierig, zumal der Hersteller dem Ding einen 90° Winkelstecker verpasst hat.... Helmut -. schrieb: > HF ist kein Lego-Spielzeug D'accord. Sonst hätte ich die Frage im Lego-Forum gepostet.
Michael H. schrieb: > Helmut -. schrieb: >> Und sie muß senkrecht auf der Metallfläche stehen > > Das wird schwierig, zumal der Hersteller dem Ding einen 90° > Winkelstecker verpasst hat.... > > Helmut -. schrieb: >> HF ist kein Lego-Spielzeug Deswegen gibt es auch Winkelstecker oder Winkeladapter. Wenn der Strahler zwei Zentimeter von einer Metallfläche weg ist, verschiebt sich die Resonanzfrequenz und auch die Abstrahlcharakteristik. Und auch der Verkäufer, der sowas anbietet, hat nur Ahnung von Lego, aber nicht von HF.
:
Bearbeitet durch User
Helmut -. schrieb: > Und auch der > Verkäufer, der sowas anbietet, hat nur Ahnung von Lego, aber nicht von > HF. ..beziehungsweise muss man in der Praxis manchmal Kompromisse eingehen... im Labor ist es einfach, eine Antenne senkrecht auf ein Blech zu setzen. GSM (ursprünglich Singleband, 900 MHz) hat eine Wellenlänge ~30cm. Ich kenne kein Handy (nicht mal die alten Motorolas, Nokias, Ericssons...) das eine 7,5 x 7,5 cm große Metallfläche im rechten Winkel zur (damals noch extern aufgesteckten oder geschraubten) Antenne hatte... ;-)
Sooooo..... Ich konnte das Problem nun weiter eingrenzen.... es tritt definitiv auf, wenn ich die GSM-Antenne in die Nähe des Servo-Kabels bringe, wie in Bild 7 gezeigt. Wie ebenfalls in Bild 7 sichtbar, habe ich die Drähte nun verdrillt.... das macht es zwar besser, ganz weg ist das Phänomen jedoch nicht.... soll heißen: mit "geraden" Drähten stürzt der Prozessor in obiger Versuchsanordnung in 8 von 10 Fällen ab, mit verdrillten Drähten in 4 von 10. Wenn ich die Antenne mit verdrillten Drähten nun weit genug weg gebe, ist mir bisher noch kein einziger Absturz gelungen, 100% sicher ist das allerdings nicht... Noch ein paar Details: - Der Absturz passiert meist beim Verbindungsaufbau. Wenn die Verbindung mal steht (die Software macht eine Art "HTTP Long Polling"), läuft der Prozessor meistens weiter. - Es spielt keine Rolle, ob das Servo überhaupt angeschlossen ist, es reicht, die Antenne in die Nähe der "offenen Enden" der Anschlussdrähte zu halten. - Wenn ich die Antenne direkt an die Verbindungsdrähte zum Display, zum SIM800 oder an die Versorgungsleitung halte, läuft der Prozessor brav weit.... Wie bringe ich das Problem nun endgültig und zu 100% weg? Klappferrit um die Servoleitung? Geschirmte Servoleitung? Anderer GPIO? Freue mich auf Euren weiteren Input.
Michael H. schrieb: > Wie bringe ich das Problem nun endgültig und zu 100% weg? Klappferrit um > die Servoleitung? Geschirmte Servoleitung? Anderer GPIO? - Servo-Treiber mit Optokoppler verwenden - Klappferrit kann funktionieren, aber da musst du dich durch Datenblätter arbeiten um welche zu finden, die bei (vermutlich) 900 MHz noch einigermassen funktionieren.
Die passenden Ferrite wirst du nicht finden. Alternative: Mit NPO-Kondis so ca. 1nF parallel gegen Masse zu den Leitungen zum Prozessor die Fremdspannung kurzschließen.
Das Gerät sollte letztendlich aber nicht nur die selbst erzeugte HF vertragen. Um welche Leistung geht es hier? Kommt da auch so viel heraus, wie aus einem Smartphone? Den Test mit einem solchen HF-Generator in der Nähe würde ich jedenfalls auch noch mal machen! Oder soll da ein Aufkleber drauf, dass Handys verboten sind, so wie früher in den Krankenhäusern?
Abdul K. schrieb: > Die passenden Ferrite wirst du nicht finden. Grad mal das Würth Designkit WE-AFB aufgeklappt. Kein Problem was zu finden. Auch das 'Snap Ferrites Star-Series' Design Kit bietet passendes. Aber ebenso wenig wäre es ein Problem das Servo Kabel zu schirmen, die Antenne mal sinnvoll zu montieren, Pi-Filter in allen Zuleitungen zur MCU zu verwenden etc. pp. Also zielorientiert zu arbeiten und nicht Bauklötze zu staunen das eine Peak Sendeleistung von zulässigen 2W an der Sendeantenne in unmittelbarer Nähe einer antennenähnlichen Leitung eben erhebliche Empfangsleistung bedeutet, die jetzt völlig ungebremst in internen MCU Strukturen verbraten wird und Fehlfunktionen verursacht.
Michael schrieb: > Also zielorientiert zu arbeiten und nicht Bauklötze zu staunen das eine > Peak Sendeleistung von zulässigen 2W an der Sendeantenne in > unmittelbarer Nähe einer antennenähnlichen Leitung eben erhebliche > Empfangsleistung bedeutet, die jetzt völlig ungebremst in internen MCU > Strukturen verbraten wird und Fehlfunktionen verursacht. Du hast schon mitbekommen, dass das ein Versuchsaufbau war, um herauszufinden, wo die Störung herkommt? Wie gesagt, dem i2c-Bus, bei dem die Kabeln um einiges länger sind, war die nebenliegend Antenne völlig wurscht. Gestaunt hab ich übrigens kein bisschen. Im Gegenteil. Ich war froh, die "schuldige" Leitung zu identifiziert, die nun entkoppelt/geschirmt/gefiltert/whatever werden muss. Also ja: ein Ziel ist vor Augen. Vielen Dank trotzdem für die ansonsten konstruktiven Tipps.
:
Bearbeitet durch User
Problem gelöst. Abhilfe war: Verkürzen der Kabel zwischen Prozessor und Servo und diese (und nur diese) mit Hilfe von selbstklebender Kupferfolie zu schirmen. Zusätzlich habe ich die Metallfläche, auf der die Antenne montiert ist, vergrößert - aber nach wie vor mittels Winkelstecker "parallel" zur Fläche. Vielen Dank an alle, die ihren konstruktiven Input geliefert haben. PS: Klappferrit in verschiedenen Größen (allerdings hatte ich keine Datenblätter und hab nur "herumprobiert") hat nichts gebracht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.