Wir haben kürzlich ein Arduino zusammen mit einem Breakout-Board MAX31856 verwendet, um die Temperatur eines Typ-J-Thermoelements zu messen und sie dann als KTY xxx über einen digitalen Topf (MCP4261) zu replizieren.
All diese Leute kommunizieren also über SPI und es ist alles in Ordnung, bis wir den Induktionsmotor starten, in dem das Thermoelement montiert ist (wahrscheinlich in den Stator eingegossen, kenne die genaue Position nicht) ... dann geht alles durch die Leitung EMI...
Ich denke (eigentlich ganz offensichtlich ...), dass das Thermoelement keinen elektrischen Kontakt mit dem Stator hat, aber sobald wir den Motor auch ohne Last laufen lassen, wird der Arduino zurückgesetzt oder gibt einfach völlig falsche Messwerte aus (normalerweise höher als real).
Jetzt ist die Frage: Wie soll ich damit umgehen? Ich habe die +12-V-Arduino-Versorgung bereits über DC / DC isoliert, aber es kann auch eine Erdungsschleife entstehen, wenn das Thermoelement irgendwo geerdet ist ...
Geht meine einzige Option über ein optogekoppeltes SPI und eine isolierte Versorgung des MAX31856?
Danke für die Hilfe!
Markus
Um auf einige der Kommentare zu antworten:
Ja, der Motor wird von einem Wechselrichter betrieben, der seine Energie von einem Batteriepack bezieht (es ist eine EV-Anwendung). Dieser Akku ist durch einen isolierten DC/DC von der +12-V-Versorgung isoliert, und das Arduino ist noch einmal durch einen weiteren isolierten 12-V-/12-V-DC/DC isoliert (hat bei anderen EMI-Problemen sehr geholfen).
Das Arduino wird nicht mehr wirklich zurückgesetzt (seit wir seine Versorgung isoliert haben), aber es gibt falsche Messungen. Zum Beispiel: Wir legen einen Schwellenwert fest, über dem ein Lüfter abschaltet, und wenn wir den Motor beschleunigen, schaltet sich der Lüfter kurzzeitig ein, da das Thermoelement ein EMI-Rauschen aufnimmt, das einen falsch hohen Messwert liefert. Wenn wir dann den Gashebel loslassen, hört es einfach auf ... Das Arduino mit einer Batterie zu versorgen, führt zu den gleichen Ergebnissen ...
Das Thermoelement ist nicht über ein Twisted Pair von den Motorklemmen mit dem Arduino verbunden, aber das können wir ändern. Der Weg im Inneren des Motors liegt jedoch nicht in unserer Hand ...
Ich nehme an, der Motor wird auch von einem VFD betrieben, der notorisch laut ist.
Versuchen Sie, den T / C-Leitungen einen Widerstandswert hinzuzufügen, vielleicht 100 Ohm, und erhöhen Sie die Datenblattkondensatoren um eine Größenordnung (auf 1 uF X7R und 100 nF X7R).
Halten Sie die Widerstände physikalisch klein, damit der Temperaturunterschied zwischen den Enden minimal ist. Idealerweise könnten Sie ein Paar kleinerer (0805 oder 1206 ist in Ordnung) SMT-Widerstände zwischen dem Anschlussblock und dem Chip pfropfen. Sie können es mit bedrahteten Widerständen testen, die an der Klemmleiste hängen, aber der Temperaturfehler wird größer als nötig sein.
Eine geerdete Abschirmung (an der Leiterplatte) an den Thermoelementdrähten und allen Thermoelement-Verlängerungskabeln kann ebenfalls hilfreich sein.
Verrückter Hutmacher
Verrückter Hutmacher
Wladimir Cravero
Bruce Abbott