Schweißinverter (Firmware-)Frickeleien

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
hunz
Beiträge: 7
Registriert: Do 28. Dez 2023, 13:38

Schweißinverter (Firmware-)Frickeleien

Beitrag von hunz »

Hallo allerseits!

(Ist zwar mein erster Post hier, ich war aber "mal" auf dem Fingertreffen auf einem gewissen ehemaligen Flugplatz Lärz 😅)

Nun zum Thema: Ich hab mir kürzlich bei einem größeren Internet-Versand (fängt mit a an, endet mit zon...) einen neuwertigen recht billigen synergischen Multiprozess-Chinaschweißinverter für ~300€ geholt. Ins Deutsche übersetzt heißt der Hersteller Bogenkapitän und das Gerät ist das MIG/MAG/Lift TIG/etc. mit bis zu 200A (je nach Betriebsmodus und natürlich mit duty-cycle Grenzen).
Die Hersteller-"obfuscation" hat einen Grund: Der Mikrocontroller im Gerät hat nämlich SWD offen und es wäre ja vielleicht schön, wenn das bei den Geräten auch erstmal weiterhin so bleibt :D
Ich war da natürlich neugierig und wollte mir das Innenleben mal etwas näher ansehen. Gibt ein Leistungs-PCB mit Gleichrichter, IGBTs, Trafos, Dioden für den Schweißstrom und ein SNT mit 24V aus welchem die ganzen Spannungen für Analog- und Digitalteil abgeleitet werden.
Die ganze Steuerung/Regelung macht ein STM32-Klon: ein Geehy APM32F103CBT6, bei dem eben SWD nicht gelocked ist :)
(Ich hab da einen STLink V2 drangesteckt und OpenOCD genommen.)
Die Firmware ist ca. 64kB groß und unglaublich unoptimiert (mit -O0 compiled?). (Die letzten paar pages von den 64kB werden als EEPROM-Ersatz für Parameter, Laufzeit und letzte Einstellungen genutzt.)
Der Cortex-M3 mißt Ausgangsspannung+Strom und über einen Trafo auch den primärseitigen Strom. Die IGBTs werden vom APM32 über 2x PWM -> Trafo -> IGBTs angesteuert. Der Inverter taktet mit ~44.16kHz.
Ansonsten steuert der APM32 natürlich auch noch den Motor für den Schweißdraht und das Gasventil. Bedieneinheit ist eine Extraplatine mit einem Extra-Mikrocontroller, der via SPI mit dem APM32 redet.
(Ich hab mir da noch deutlich mehr Informationen rausgezeichnet, das ist jetzt quasi erstmal die Kurzfassung.)

Dass der Inverter einen Cortex-M3 drinnen hat und da auch noch SWD offen ist finde ich sehr cool, weil Frickelpotential :mrgreen:
Ich bin da jetzt schon einigermaßen versucht, die Firmware mal zu zerlegen (hab in ghidra mal etwas angefangen), um zu sehen, wie die Regelung funktioniert und vielleicht auch Dinge "nachzurüsten", die praktisch wären.
Konkret eingefallen ist mir zum Nachrüsten bisher z.B.: Für WIG externes Gasventil, Fußpedal und Stromkurven mit Absenkung usw.. HF-Zündung oder AC-Modus kann man natürlich nicht per Software nachrüsten, aber vielleicht gibt es da ja noch andere Ideen - auch für MAG/MIG/etc. ...

Was mich auch noch interessieren würde ist, inwieweit man da auch "Pulsed DC" per Software machen kann. Die Geräte, die das anbieten sind ja schon etwas teurer, daher frage ich mich, ob da dann noch zusätzliche Hardware verbaut ist, statt einfach nur Spannung/Strom zu modulieren. Weiß das jemand?

Und wie seht ihr das ganze generell? Wäre so ein (preiswerter) Schweißinverter bei dem man die Firmware nach Belieben umbasteln kann etwas, das man will? Im Rahmen, den die Hardware vorgibt, kann man dann halt nach Belieben an allen Prozessparametern herumpfuschen und vllt. auch irgendeine mehr oder weniger sinnvolle Instrumentation machen, wenn man die gemessene Spannungs-/Stromkurve aufzeichnen kann. Bin mir nicht so recht sicher, ob das eher alles lustige Spielerei ist, oder auch sinnvoll sein kann...
(Optimal wäre natürlich dann gleich eine saubere offene Firmware in C wenn man das Zeug vom Hersteller gut genug verstanden hat.)
Inverter Bild
Inverter Bild
Benutzeravatar
Jan-DIY
Beiträge: 981
Registriert: Do 19. Nov 2020, 22:24

Re: Schweißinverter (Firmware-)Frickeleien

Beitrag von Jan-DIY »

Ich kenne nur den Aufwand der bei modernen Impulsmaschinen getrieben wird.
Die Dinger werden immer komplexer und stecken bis oben voll mit HW.
Spannungsregelung teilweise über FPGA oder DSP.
Die Geräte sind reine Hard/Softwaremonster.
Da kann man übrigens mal so gar nix auslesen/manipulieren. Reparieren ist im privaten Maßstab auch nicht möglich weil alles über 1Wire Eeproms verdongelt ist.
Dafür schweißt son Teil allerdings sehr gut wenn man sich keine falschen Kennlinien/Programme bastelt.
Dateianhänge
IMG_0887.jpeg
Benutzeravatar
Joschie
Beiträge: 2466
Registriert: Mo 12. Aug 2013, 18:19
Wohnort: JN58FG

Re: Schweißinverter (Firmware-)Frickeleien

Beitrag von Joschie »

Wenn ich fragen darf, hast du mit dem Ding schon geschweißt?
Wie läuft er denn?
Aber ist das wirklich alles an Platine da drin?
Könntest du mal Eingangs- und Ausgangsstrom osziloskopieren?

Beim Thema Programmierung bin ich komplett raus, meine Sigma Panzer kennen außer dem Gleichriechter noch keine Halbleiter, da ist nur gewickeltes Kupfer und erwas Klapperelektrik drin.

Grüße
Josrf
Benutzeravatar
LoetmeisterEder
Beiträge: 4
Registriert: Fr 29. Dez 2023, 13:41

Re: Schweißinverter (Firmware-)Frickeleien

Beitrag von LoetmeisterEder »

Moin,
würde mich auch interessieren ob das Teil gut läuft.
Benutzeravatar
hunz
Beiträge: 7
Registriert: Do 28. Dez 2023, 13:38

Re: Schweißinverter (Firmware-)Frickeleien

Beitrag von hunz »

Joschie hat geschrieben: Mo 1. Jan 2024, 00:13 Wenn ich fragen darf, hast du mit dem Ding schon geschweißt?
Wie läuft er denn?
Ja habe ich, soweit ich das beurteilen kann tut das Gerät schon ordentlich. Allerdings bin ich blutiger Anfänger, daher fühle ich mich da nicht so recht qualifiziert, das sinnvoll zu beurteilen, weil ich auch keinen Vergleich zu anderen Geräten habe.
Ich habe mir das Gerät aber gekauft, nachdem ich da etliche Review-Videos auf Youtube angesehen hatte - die waren für den Preis eigentlich alle zufrieden. Also würde ich da auch dazu raten, mal nach dem Gerät auf Yt zu suchen und da in die Reviews reinzuschauen. (Alternativ wäre es bei mir wohl ein Weldinger-Gerät geworden.)

Der Lieferumfang ist aber etwas anders als bei den Yt-Reviewern, das sollte man wissen. Drahtführungsrollen liegen nur für "normalen" Schweißdraht bei, nicht für Fülldraht oder Alu. (Sind aber soweit ich das gesehen habe gängige Führungsrollen die man einfach bekommt.) Schlakenhammer ist auch nicht bei und der Gasanschluss ist auch kein Schnellanschluss wie bei den Yt-Reviewern, sondern ein "normaler" wo man den Schlauch drüberschiebt mit Schlauchschelle. (Schlauch und Schelle waren bei mir dabei.) Das Gasventil ist im Vergleich zu den Yt-Geräten auch von vorne im Gerät nach hinten direkt an den Gasanschluss gewandert. Sonst habe ich keine Unterschiede feststellen können. (Einer der Yt-Reviewer hat das Gerät auch aufgemacht und reingeschaut.)

Bei >=160A im MIG/MAG Modus löst manchmal mein B16 Automat aus, aber nur beim initialen Kontakt des Drahtes mit dem Werkstück - danach dann nicht mehr. Das ist bischen nervig, aber da wäre die Lösung wohl auf einem LSS mit C-Charakteristik zu wechseln. (Oder in der Firmware zu tricksen, dass er am Anfang mit etwas weniger Spannung startet? :?)
Joschie hat geschrieben: Mo 1. Jan 2024, 00:13 Aber ist das wirklich alles an Platine da drin?
Könntest du mal Eingangs- und Ausgangsstrom osziloskopieren?
Da hab ich mich etwas missverständlich ausgedrückt glaube ich - es gibt 3 PCBs:
- frontpanel
- MCU + Analogzeug (sieht grausig aus, da wurden die Bauteile wohl mit schlechtem autoplacer platziert. Dafür ist da sogar ein OP2177 von AD drauf wenn ich das richtig gesehen habe und es da noch keine China-Nachbauten gibt :) )
- Leistungsteil
Ich hänge mal noch ein paar Bilder mit an.
IGBTs sind verbaut 2x2 CRG40T60AN3H (datasheet: https://pdf.voron.ua/files/pdf/tranzist ... 60AN3H.pdf)
Dioden sind 2x2 SFR25U20EPN verbaut (datasheet: https://datasheet.lcsc.com/lcsc/2109180 ... 897641.pdf)
Die Leistungsplatine sitzt unten hinter der Kunststoffabdeckung. (Die ist wohl da um die Signale mit Netzpotential etwas abzudecken.)
Bei den rausgezeichneten Schaltungen stimmt vielleicht insbesondere die Beschaltung von T3 (der Trafo für die IGBT-Gates) nicht ganz. Da war nämlich Silikonschlonz drüber und das wollte ich nicht abpuhlen. Das rauszeichnen mache ich primär, damit ich weiß, was wo & wie am APM32 angeschlossen ist. Das erleichtert die Firmware-Analyse stark.

Oszilloskopieren wäre wohl mal interessant, ja. Werde gucken, dass ich das in den nächsten Tagen mal mache, bevor ich die MCU-Platine ausbaue um da die APM32-Signalzuordnungen zu tracen.
Stromzange fürs Oszi hab ich zwar keine, aber Ausgangsstrom kann ich an dem Shunt abgreifen und Eingangsstrom vielleicht mit Diffprobe am Shunt von einem Leistungsmessgerät 🤔 Mein gutes Picoscope will ich da ungern in die Garage schleppen, aber ich hab noch son Fnirsi 1014D Chinaböller mit 5V Versorgung, das sollte dafür eigtl. reichen.
Dateianhänge
frontpanel_schem.png
frontpanel.JPG
mcu.JPG
power_schem.png
power_back.jpg
power_front.jpg
schem.jpg
Benutzeravatar
hunz
Beiträge: 7
Registriert: Do 28. Dez 2023, 13:38

Re: Schweißinverter (Firmware-)Frickeleien

Beitrag von hunz »

Ich habe mal probiert, beim ziehen einer MAG-Raupe mit dem Fnirsi Billigscope am Shunt zu messen:
24_shunt.png
(der Shunt ist beschriftet mit "150A 75mV")
EMV-technisch ist das natürlich alles ziemlich unangenehm, daher kommen wohl auch die Spikes im Bild.
Ansonsten kann man noch so eine etwas rechteckige Wellenform mit ~100mV Amplitude erkennen - die entsteht durch das regelmäßige Zünden des Kurzlichtbogens. Überlagert ist das noch von einem kleinerem Rechtecksignal mit ~25mV - ich nehme an, dass dieser Ripple die ~44kHz des Invertertakts ist. Das Fnirsi hat nur recht wenig Samplebuffer, daher vermute ich, dass bei der gewählten Zeitbasis die Samplerate zu niedrig für die 44kHz waren, also Unterabtastung. (Wäre irgendwie schön, wenn das Gerät die Samplerate dann auch irgendwo anzeigen würde...)
Ich weiß leider nicht mehr genau, welche Spannung ich da am Gerät eingestellt hatte. (Hatte den Syn-Modus an und mit 80A-150A herumgespielt.) Grundsätzlich ist das schon extrem nervig, mit einer Hand irgendwie blind den MAG-Brenner versuchen zu führen während man aufs Scope guckt und da versucht, etwas sinnvolles zu triggern :?
Netzseitig hab ich noch nicht gemessen, wie es da aussieht.

Dafür hab ich mal probiert, einen Schaltplan von der Steuerplatine zu rekonstruieren:
control.pdf
(1.26 MiB) 15-mal heruntergeladen
(Seite 1 Digitalteil, Seite 2 Analogteil)
Der Schaltplan ist so ziemlich sicher nicht ganz fehlerfrei rekonstruiert, aber im Großen und Ganzen sollte es grob stimmen. Irgendwelche fragwürdigen Auffälligkeiten bitte melden, dann kann ich da nochmal nachmessen.
Die 0603 Widerstände haben aufgedruckte Werte, daher hab ich die mit eingezeichnet. Dioden und Caps wollte ich aber nicht auslöten. (Musste eh mit probing needles durch den Plastiklack stechen zum durchklingeln.)

Herzstück ist ein UC3525 PWM Regler mit analoger Regelschleife durch diverse Opamps. Sollwert für U und I kommen per PWM mit RC-Filtern aus dem ARM-Controller. Gemessene Spannung + Strom gehen auch auf ADC-Kanäle des Mikrocontrollers.
Nun ist soweit ich das verstanden habe der Betriebsmodus für E-Hand und WIG ja CC, für MIG/MAG CV. Da hätte ich irgendwie eine "deutlichere" Umschaltung erwartet, aber das wird anscheinend einfach alles zusammenaddiert als Feedback. Im CC-Modus wird der U-Teil dann auf konstantem Wert gehalten. Ich vermute mal, dass die Amplitude vom U-Teil (Ausgang von U4A) einiges höher ist, als der I-Teil, daher spielt der Strom dann im MIG/MAG-Modus praktisch keine Rolle? (Hätte/Könnte ich mit Scope mal noch verifizieren, hab ich bisher aber nicht.)
(Meine Kenntnisse was Analog- und erst recht Leistungselektronik angeht sind nicht so toll, daher peile ich da vmutl. nicht alles richtig.)

Ansonsten hab ich im Schaltplan auf Seite 2 noch Messungen mit Logic Analyzer an ein paar Digitalsignalen (im MIG-Modus) drin, um besser zu verstehen was die tun / wie die genutzt werden.
Für die Einstellung der Härte des Lichtbogens gibts noch ein Poti (VR3) vorne am Bedienteil, das im CV-Teil zwischen U4B/U4A dann mit reinspielt - dazu gibts auf Seite 2 auch noch ein paar Scope-Bilder mit verschiedenen Einstellungen. Würde sagen je härter man da einstellt, desto "rechteckiger" und desto steiler die Flanken vom U-Feedback.

Firmware-reversing hab ich bisher weitgehend prokrastiniert :D , muss ich mal ordentlich anfangen. Ich glaub die Steuerplatine wird auch in anderen Geräten genutzt (mit derselben Firmware?), da gibt es nämlich noch mehr ungenutzte Anschlüsse und ein paar unbestückte Bauteile. (Ein Anschluss ist z.B. mit "digital gun" beschriftet.)
Vermutlich gibt es daher in der Firmware ungenutzten Code, der nur für andere Geräte ist.
Ich werde evtl. probieren, die Firmware mal im Unicorn Emulator laufen zu lassen - muss mir da aber erst die Peripherie vom Mikrocontroller nachbauen...
Am unbestückten Stecker CON12 gibt es einen 3.3V UART mit 19.2kBaud. Leider kommt da von selber nix raus und ein erster Blick in die Firmware deutet auf irgendein Binärprotokoll hin. Ich könnte mir vorstellen, dass damit in der Produktion Abgleich/Justage digital gemacht wird und die Werte im MCU-Flash hinterlegt werden. Potis/Trimmer gibt es nämlich keine auf der Platine.
Antworten