Moin, ich möchte mit einem Raspberry Pico einen einzigen kurzen Befehl an ein DPM8624 senden um Spannung und Strom einzustellen. Das DPM8624 ist eine Art Labornetzteil, das über eine serielle Schnittstelle verfügt. Leider ist das aber keine RS-232, sondern eine RS-485 Schnittstelle, ist also eigentlich nur über einen entsprechenden Transceiver-Chip ansteuerbar. Da ich das ganze nicht nur einmal benötige und der Aufwand einen Transceiver-Chip zu verbauen entsprechend hoch ist, frage ich mich, ob es nicht möglich ist für diesen einen kurzen Befehl das RS485-Signal zu emulieren. Hat das schonmal jemand versucht? Gibt es möglicherweise sogar eine Library dafür? Ich programmiere des Pico über die Arduino IDE.
Tim B. schrieb: > Da ich das ganze nicht nur einmal benötige und der Aufwand einen > Transceiver-Chip zu verbauen entsprechend hoch ist, frage ich mich, ob > es nicht möglich ist für diesen einen kurzen Befehl das RS485-Signal zu > emulieren. Ich dachte immer man spart sich den Aufwand für Einzelstücke? Bei Stückzahlen wirds doch billig. Naja. RS485 ist im wesentlichen einfach ein RS232 mit differentiellem Signal. Dafür brauchts nichtmal nen RP2040, das kann jeder MC. Du willst ja frickeln, also nimm die UART pack irgend ein Gatter als Inverter dahinter, fertig, Die Antwort des Netzteil interessiert dich ja wahrscheinlich eh nicht.
Tim B. schrieb: > Ich programmiere des Pico über die Arduino IDE. Nehmen die Arduinisten da nicht immer solche fertigen Platinen wie die: - https://www.roboter-bausatz.de/p/max485-modul-rs-485-ttl-auf-rs485-modul
Andreas M. schrieb: > RS485 ist im wesentlichen einfach > ein RS232 mit differentiellem Signal. Nicht "ein RS232". RS232 definiert Signalpegel, die hier definitiv nicht verwendet werden. Das ist 'ne stinknormale serielle Schnittstelle oder UART. Und ja, mit 'nem zusätzlichen Inverter kann man sich einen (schlechten) RS485-Treiber basteln. Etwas besser ist es, wenn man hinter den UART-Ausgang und hinter den invertierten UART-Ausgang auch noch jeweils einen Tristate-Treiber setzt, den man nur während des Sendens aktiviert, denn dann hat man auch eine Chance, die von der Gegenstelle gesendeten Daten auch zu sehen. Dann aber wird die Sache so aufwendig, daß es doch viel, viel einfacher ist, einfach einen RS485-Pegelwandler à la MAX483 zu verwenden. https://www.analog.com/en/products/max483.html Und dann hat man es schon fast ganz richtig gemacht (auch wenn man sich trotzdem um die Sender-/Empfänger-Umschaltung kümmern muss, aber das ist nur Software und ein zusätzlicher I/O-Pin des µC. Manche µC haben UARTs, die diesen Betrieb hardwaremäßig unterstützen, aber das ist recht selten, also muss man das in Software nachbilden. Unmittelbar vor dem Senden den Treiber auf Senden stellen, unmittelbar nach dem Senden (genauer Zeitpunkt: Sendeschieberegister der UART ist leer + Wartezeit für Stopbits) abschalten.
Tim B. schrieb: > Da ich das ganze nicht nur einmal benötige und der Aufwand einen > Transceiver-Chip zu verbauen entsprechend hoch ist, Wie bitte? Ein DIL8 IC ist "entsprechend hoch"? OMG! Oder nur wieder Trollerei?
Andreas M. schrieb: > pack irgend ein Gatter als Inverter dahinter und das ist dann einfacher als ein echter RS-485 Treiber, z.B. ISL3172EIBZ? Ganz ohne externe Bauteile geht es auf keinen Fall, also kann man es auch richtig machen. Wenn man noch einen Pin für den DI-Eingang vom Transceiver spendiert, bekommt man mit zwei Bauteilen (100n nicht vergessen) eine echte RS-485 Schnittstelle.
Vielen Dank. Nee, ich will gar nicht frickeln, ich würde nur gerne auf zusätzliche Bauteile verzichten, um die Hardware möglichst einfach zu halten. Der RP2040 soll ja auch noch andere Sachen machen und ist günstig :-). Außerdem hat der Pico eine CE-Kennzeichung. Die Antwort des Netzteils ist tatsächlich nicht wichtig. Wenn ich einen Gatter verwende, dann könnte ich ja ebenso gut einen MAX485 verwenden. Das wäre einfacher. Also wenn ich das richtig verstehe, dann ist die Spannung, die das Netzteil erzeugt, wenn es über RS-485 Signale an den Pico sendet, eine Art „Wechselspannung“ und macht mir darum den Pico kaputt. Ist das so richtig? Zudem kann der Pico keine negative Spannung erzeugen, um Signale an das Netzteil zu senden. Hab ich das so richtig verstanden?
Tim B. schrieb: > Also wenn ich das richtig verstehe, dann ist die Spannung, die das > Netzteil erzeugt, wenn es über RS-485 Signale an den Pico sendet, eine > Art „Wechselspannung“ und macht mir darum den Pico kaputt. Nein, sofern Du nicht nur die beiden Leitungen des RS485-Signals, sondern auch noch eine Masse als Bezugspunkt hast. Die brauchst Du, und die musst Du mit der Masse des Pico verbinden. Relativ zur Masse sind beide Signale des RS485-Signals positiv, und zerstören Dir Deinen Pico nicht. Auch der RS485-Treiber verwendet keine negative Spannung.
Harald K. schrieb: > Relativ zur Masse sind beide Signale des RS485-Signals positiv, und > zerstören Dir Deinen Pico nicht. Vertragen die Pico-Pins +5V? Auch, wenn der Pico ausgeschaltet ist?
Bauform B. schrieb: > Vertragen die Pico-Pins +5V? Auch, wenn der Pico ausgeschaltet ist? Hmm. Das ist dann natürlich auch ein Problem. Ich bezog mich in erster Linie auf die befürchtete negative Spannung. Die gibts nicht; an das 5V-Problem dachte ich nicht.
Tim B. schrieb: > Also wenn ich das richtig verstehe, dann ist die Spannung, die das > Netzteil erzeugt, wenn es über RS-485 Signale an den Pico sendet, eine > Art „Wechselspannung“ und macht mir darum den Pico kaputt. Ist das so > richtig? Zudem kann der Pico keine negative Spannung erzeugen, um > Signale an das Netzteil zu senden. Hab ich das so richtig verstanden? Alles Blödsinn. Wenn du RS485 brauchst dann mach auch RS485! Um 10 Cent zu sparen oder was ist dein Grund einen MAX485 nicht zu nehmen? Auch bei den Frickellösungen solltest du noch einige Bauteile verwenden um unvorhersehbare Störungen vom RP2040 fern zu halten, die ihn evtl. auch zerstören könnten.
Tim B. schrieb: > Also wenn ich das richtig verstehe, dann ist die Spannung, die das > Netzteil erzeugt, wenn es über RS-485 Signale an den Pico sendet, eine > Art „Wechselspannung“ und macht mir darum den Pico kaputt. Ist das so > richtig? Nö. Im Labor geht das schon, im rauen Alltag geht es des öfteren schief. > Zudem kann der Pico keine negative Spannung erzeugen, um > Signale an das Netzteil zu senden. Die braucht man gar nicht. Auch ein MAX485 kann das nicht, muss er auch gar nicht. >Hab ich das so richtig verstanden? Nö.
Bauform B. schrieb: > und das ist dann einfacher als ein echter RS-485 Treiber, z.B. > ISL3172EIBZ? Ganz ohne externe Bauteile geht es auf keinen Fall, also Er wollte möglichst einfach. Tim B. schrieb: > Also wenn ich das richtig verstehe, dann ist die Spannung, die das > Netzteil erzeugt, wenn es über RS-485 Signale an den Pico sendet, eine > Art „Wechselspannung“ und macht mir darum den Pico kaputt. Ist das so > richtig? Zudem kann der Pico keine negative Spannung erzeugen, um > Signale an das Netzteil zu senden. Hab ich das so richtig verstanden? Richtig, das Problem ist, das im Zweifel das Netzteil dem Pico versucht was zu senden. Möglicherweise mag der das nicht. Eventuell kann man das mit einer Schutzschaltung aus ein paar Widerständen und Dioden abfangen. Kommt drauf an, wie es im Netzteil aussieht. Du brauchst keine negative Spannungen. Es ist ein differentielles Signal, d.h. es kommt am Ende darauf an wie die beiden Pegel der Leitungen zueinander stehen. deswegen der Inverter. Das kannst du natürlich auch im Pico machen. Du nimmst die PIO Unit und programmierst da eine UART rein, und gibst das Signal aber auf zwei Pins aus, einmal normal, einmal invertiert. An die Pins zwei Widerstände, 1k oder so und dann zum Netzteil. Mit Glück ist da keine Terminierung drinnen und es geht.
Schau doch einfach auf Wikipedia. Selbst da ist eigentlich alles erschöpfend erklärt. https://de.wikipedia.org/wiki/EIA-485
"Die symmetrische Leitung der EIA-485-Schnittstelle arbeitet senderseitig mit Signalspannungen von mindestens ±1,5 V, höchstens ±6 V." Ob der RP2040 die Pegel wohl immer richtig erkennt? https://de.wikipedia.org/wiki/EIA-485
Okay, dann wird die einfachste Lösung sein, den RS-485 Trasceiver IC im Netzteil zu überbrücken. Ich hatte das schon mal offen und wenn ich mich richtig erinnere, ist das ein aufgestecktes Modul, das sich entsprechend austauschen lässt. Am Pico selbst möchte ich nix ändern, weil der in so einem Relais-Modul steckt. https://www.waveshare.com/pico-relay-b.htm. Da ist es schwierig zusätzliche Bauteile rein zu bekommen. Alternativ gäbe es für mich Arduinianer vom selben Hersteller noch dieses Modul. https://www.waveshare.com/pico-2ch-rs485.htm Ich danke Euch für Eure Hinweise. Ich dachte, ich komme vielleicht ganz ohne zusätzliche Hardware aus, indem ich die GPIO-Pins entsprechend ansteuere, aber das scheint so nicht möglich zu sein, weil zumindest eine Leitung invertiert sein muss.
:
Bearbeitet durch User
Tim B. schrieb: > Am Pico selbst möchte ich nix ändern, weil der in so einem Relais-Modul > steckt. Aber du änderst doch schon was, indem du die Leitungen rausführst? Dann pack den MAX485 eben an's andere Ende vom Kabel, und führ die GPIO-Leitungen zu dem. Ist zwar Irrsinning, weil dann die störanfälligen TTL-Signale über die lange Leitung laufen und die unempfindlichen RS485 über die kurze, aber wird schon gehen... Tim B. schrieb: > Außerdem hat der Pico eine CE-Kennzeichung. Halte ich für Augenwischerei. Die gilt dann nur für den leeren Pico ohne Software drauf, oder für die mitgelieferte. Sobald du eigene Software auf den spielst, ist die Kennzeichnung hinfällig, könnte ja eine "Radio-Sender aus übertaktetem PIO bauen"-Software sein.
Εrnst B. schrieb: > Tim B. schrieb: >> Außerdem hat der Pico eine CE-Kennzeichung. > Halte ich für Augenwischerei. Die gilt dann nur für den leeren Pico ohne > Software drauf Da muss man erst mal nachlesen, wofür diese spezielle CE-Kennzeichnung gilt. Kann ja sein, dass damit nur bestätigt wird, dass das Ding nicht umweltschädlich ist und keine giftige Stoffe freisetzt, wenn man es verschluckt. Und zum Schluss muss man natürlch das jeweilige selbstgebastelte Gerät nach den gängigen im Einzelfall anzuwendenden Richtlinien bewerten und selber die Konformität zu diesen Richtlinien bestätigen. Tim B. schrieb: > Am Pico selbst möchte ich nix ändern, weil der in so einem Relais-Modul > steckt. https://www.waveshare.com/pico-relay-b.htm. Da ist es schwierig > zusätzliche Bauteile rein zu bekommen. Ich sehe da viel Luft "nach oben"...
:
Bearbeitet durch Moderator
Tim B. schrieb: > Ich danke Euch für Eure Hinweise. Ich dachte, ich komme vielleicht ganz > ohne zusätzliche Hardware aus, indem ich die GPIO-Pins entsprechend > ansteuere, aber das scheint so nicht möglich zu sein, weil zumindest > eine Leitung invertiert sein muss. Wenn du an dem Netzteil rumspielst dann verliert das auf jeden Fall jegliche Art von CE oder Bapperl was da so drauf klebt. Warum ist Dir das beim Pico dann wichtig? Man kann eines der Signale auch weglassen :-) Einfach per Spannungsteiler die restliche Leitung auf Vcc/2 legen... Sollte auch gehen. Ist dann natürlich Störanfälliger, weil kein Differenzsignal mehr. (Genauso wie Deine Idee den Transceiver auf Netzteilseite komplett auszubauen) In dem Relaisgehäuse ist mehr als genug Platz.
Nun ja, CE ist ja schlussendlich die Gewährleistung des Herstellers, dass das Gerät den Richtlinien entspricht. Diese Gewährleistung mag ja verloren gehen, wenn ich aus dem Netzteil etwas ausbaue oder eine Firmware auf den Pico aufspiele. Da ich mir aber ziemlich sicher bin, dass diese Veränderung in Bezug auf ROHS, EMV oder die Niederspannungsrichtlinie verändert, kann ich diese Gewährleistung geben - zumindest bei meinen Stückzahlen mache ich mir da eigentlich wenig Sorgen. Ich finde, das ist etwas anderes, als eine völlig eigene Hardware zu verwenden, bei der ich keine Ahnung habe, ob der liebe Nachbar bei seinem Fernsehabend gestört wird. Ich weiß schon, dass das eine Milchmädchenrechnung ist, aber es beruhigt mein Gewissen. Andreas M. schrieb: > Man kann eines der Signale auch weglassen :-) Einfach per > Spannungsteiler die restliche Leitung auf Vcc/2 legen... Sollte auch > gehen. Ist dann natürlich Störanfälliger, weil kein Differenzsignal > mehr. (Genauso wie Deine Idee den Transceiver auf Netzteilseite komplett > auszubauen) Worauf beziehst Du das? Auf das UART-Signal (also die Lösung mit dem überbrückten RS484 transceiver). TX vom Pico mit RX des Netzteils verbinden? Das funktioniert. Habe ich schon ausprobiert :-)
Tim B. schrieb: > Nun ja, CE ist ja schlussendlich die Gewährleistung des Herstellers, > dass das Gerät den Richtlinien entspricht. Nein. CE ist ein Aufkleber den jeder draufen kleben kann. Dazu noch ein Text und das wars. Gute Hersteller lassen mal eine Messung machen. Chinesen schreibens einfach drauf und fertig. Es gibt keine vorgeschrieben Prüfung dafür, erst wenn was passiert wirds interessant. Tim B. schrieb: > Firmware auf den Pico aufspiele. Da ich mir aber ziemlich sicher bin, > dass diese Veränderung in Bezug auf ROHS, EMV Ein Pico kann IO Pins mit 100 MHz toggeln. Ein kurzes Stück Draht dran und du hast einen wunderbaren Radiosender. Schon hast Du ein Problem mit EMV. Wolltest Du nicht UART machen mit Kabel und so ?... Tim B. schrieb: > Worauf beziehst Du das? Auf das UART-Signal (also die Lösung mit dem > überbrückten RS484 transceiver). Mit Tranceiver. Eine Leitung an den RP2040, die Andere an einen Spannungsteiler. (Muss halt richtig rum sein)
Nachtrag: Tim B. schrieb: > Da ich mir aber ziemlich sicher bin, > dass diese Veränderung in Bezug auf ROHS, EMV oder die > Niederspannungsrichtlinie verändert, kann ich diese Gewährleistung geben > - zumindest bei meinen Stückzahlen mache ich mir da eigentlich wenig > Sorgen Du bist aber nicht der Hersteller des Netzteils. Nehmen wir also an, Du basteln an dem Netzteil rum, lieferst das aus und es passiert was. Dann bist Du dran. Selbst wenn der ursprüngliche Fehler bereits im Auslieferungszustand vorhanden war.
Bauform B. schrieb: > Vertragen die Pico-Pins +5V? Auch, wenn der Pico ausgeschaltet ist? Wozu das denn? Der Pico ist Sender und das Netzteil Empfänger, was keine Spannungen auf die Leitungen gibt. Genau genommen ist es wohl auch RS422. Die Lösung mit RP2040 ist supersimpel: Ein TxD-Signal zum Empfänger wird per UART generiert, die andere Leitung per PIO einfach als das inverse Signal von TxD. Im Ruhezustand werden beide Ausgänge einfach abgeschaltet. Bei hohen Baudraten könnte man noch Reihenwiderstände einfügen, um Reflexionen zu dämpfen.
Beitrag #7559610 wurde von einem Moderator gelöscht.
Mi N. schrieb: > Wozu das denn? Der Pico ist Sender und das Netzteil Empfänger In der Dokumentation des DPM8624 ist bidirektionale RS485 (Modbus) Kommunikation beschrieben. Also eben nicht RS422. https://joy-it.net/files/files/Produkte/JT-DPM8624/JT-DPM86XX_Communication_protocol_2023-01-05.pdf
Steve van de Grens schrieb: > In der Dokumentation des DPM8624 ist bidirektionale RS485 (Modbus) > Kommunikation beschrieben. Also eben nicht RS422. Ja schön, aber wenn das NT nie antwortet, muß es immer auf Eingang bleiben - wie RS422.
:
Bearbeitet durch User
Mi N. schrieb: > Ja schön, aber wenn das NT nie antwortet, muß es immer auf Eingang > bleiben - wie RS422. Es antwortet aber auf bestimmte Befehle. Ob es ansonsten wirklich keine Spannung auf den Bus gibt, sollte man nicht raten, sondern messen.
Steve van de Grens schrieb: > Es antwortet aber auf bestimmte Befehle. Wenn man keine Frage stellt, gibt es auch keine Antwort ;-)
Man muß ja nicht unbedingt einen MAX 485 von Maxim nehmen. Es gibt gute Generika mit seriösen Datenblättern bei LCSC mit Stückpreisen von 15 Cent. Mit chinesischen Phantasieunterlagen geht es auch noch billiger. Ich habe mit Maxliear gute Erfahrungen gemacht. https://www.lcsc.com/product-detail/_MaxLinear-_C6855.html
Gerald B. schrieb: > Mit chinesischen Phantasieunterlagen geht es auch noch billiger. > Ich habe mit Maxliear gute Erfahrungen gemacht. > https://www.lcsc.com/product-detail/_MaxLinear-_C6855.html Maxlinear ist keine chinesische Phantasieunterlagenfirma. Die sitzen in den USA und haben u.a. Teile von Broadcom und Marvell aufgekauft, und unter anderem Exar geschluckt.
Dann ist das falsch rübergekommen. Mich hat überzeugt, das ein seriöses, verständliches Datenblatt gibt. Von TME hatte ich ein paar Exemplare, für hiesige Verhältnisse preiswert, aber wesentlich teurer als bei LCSC. Umso erstaunter war ich, als ich die dort ebenfalls gelistet fand. Und ob ich jetzt 10 Cent für eine "Wundertüte" oder 15 Cent für ein IC, dem ich trauen kann, bezahle, ist wohl vernachlässigbar. Die Zeit, die man ansonsten mit Fehlersuche zubringen kann, lässt sich kaum mit einpreisen.
Als Überlegung für Pin-Sparer wäre, nur das TxD-Signal einer UART zu verwenden und das invertierte Signal über einen Spannungsteiler auch ca. 1,6 V (Vcc/2) zu legen. Andere Sender/Empfänger hängen ja nicht am Bus. Die Empfindlichkeit der Differenzeingänge von >= 0,5 Vpp wird damit sicher erreicht und der 'Programmieraufwand' ist gleich null. Zwei Pins am RP2040 werden gespart und man muß nichts bestellen oder auf eine Platine löten.
Hier noch mal meine Lösung für die Nachwelt: Transceiver-Modul durch Jumper ersetzen. Wer in beide Richtungen kommunizieren möchte, braucht einen vierten Jumper und muss einen 5V-stabilen Mikrocontroller oder einen Spannungsteiler verwenden.
Ich sehe auf dem Bild "Isolated RS485-module". Wenn du das brückst, ist die galvanische Trennung futsch. Hast du wenigstens mal getestet, wo das Massepotential hängt? Netzteile sind da ... "speziell". Insbesondere können, falls es auf Minus-Pol des Ausgangs liegt, einige (Schutz-)Funktionen des Netzteils ausgehebelt werden (Strombegrenzung etc).
:
Bearbeitet durch User
Foobar schrieb: > Ich sehe auf dem Bild "Isolated RS485-module". Wenn du das brückst, ist > die galvanische Trennung futsch. Hast du wenigstens mal getestet, wo > das Massepotential hängt? Netzteile sind da ... "speziell". > Insbesondere können, falls es auf Minus-Pol des Ausgangs liegt, einige > (Schutz-)Funktionen des Netzteils ausgehebelt werden (Strombegrenzung > etc). Danke für die Hinweise. Tatsächlich war keine Verbindung zwischen Gnd des 5V-Ausgangs des RS-485 und Gnd des Ausgangs als das Modul noch eingebaut war. Ich habe das aber sowieso gebrückt, weil der Pico die Eingangsspannung des Netzteils messen soll. (Die Relais sollen in Abhängigkeit von der Eingangsspannung des Netzteils schalten). Inwiefern die Strombegrenzung des Netzteils durch die Veränderung ausgehebelt ist, werde ich noch prüfen. Im Grunde ist das aber nicht relevant. Übrigens gibt es das Netzteil auch in klein (DPM8605) mit UART statt RS485-Schnittstelle. In dieser Ausführung ist das RS-485-Modul durch eine kleine Leiterplatte mit 2 Widerständen (vermutlich Strombegrenzung) und einem SOT23-3-Bauteil (Pegelwandler?) ersetzt. Im Grunde also eine ähnliche Lösung wie mit den Jumpern.
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.