Inhaltsverzeichnis:
- Schritt 1:
- Schritt 2: Geräteausgangstest
- Schritt 3: Kalibrierung
- Schritt 4: Arduino programmieren
- Schritt 5: Einige weitere Fotos
- Schritt 6: Einpassen
- Schritt 7: Nur Fotos
- Schritt 8: Schlussworte
Video: 4-20mA Generator/Tester mit Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
4-20mA-Generatoren sind bei ebay erhältlich, aber ich liebe den DIY-Teil der Dinge und die Verwendung von Teilen, die ich herumliegen habe.
Ich wollte die analogen Eingänge unserer SPS testen, um unsere Scada-Messwerte zu überprüfen und den Ausgang von 4-20-mA-Instrumenten zu testen. Es gibt jede Menge Strom-Spannungs-Wandler und Spannungs-Strom-Wandler für Arduino bei ebay, sie müssen jedoch kalibriert werden. Ich kann dies verwenden, um jeden dieser Konverter zu kalibrieren, die bei ebay und dergleichen gefunden werden.
Ich habe beschlossen, dass ich einen Generator und einen Tester selbst bauen werde. Zu diesem Zeitpunkt ist es noch in Arbeit und ein Prototyp.
Ich hatte ein altes 2.1-Soundsystem, das nicht verwendet wurde (kleine Lautsprecher). Also habe ich eine der Lautsprecherboxen als Gehäuse verwendet. Ich hatte auch einen Verstärker, der durch Blitzschlag gestorben ist. Ich habe den Lautsprecheranschluss von diesem Verstärker entfernt, um das Anschließen zum Kinderspiel zu machen. Ich beabsichtige, in Zukunft eine Leiterplatte und ein besseres Gehäuse zu machen.
Lieferungen:
Liste der Einzelteile.
LCD // 20x4 (Code anpassen, wenn Ihrer kleiner ist)
LM7808 // 8-Volt-Regler
LED // Jede Art oder Größe
Widerstand für LED // Passend zum LED-Typ und 8volt
100 Ohm Widerstand + 47 Ohm Widerstand in Reihe // Wird als Shunt-Widerstand verwendet
10K Widerstand // Arduino analog zum Schutz gegen Hochspannung
22K Widerstand // Um A0 vom Schweben zu stoppen
Trimpot 100 Ohm + 47 Ohm Widerstand in Reihe // PT100 Simulator
35-Volt-Kondensator // Ich habe 470uF verwendet, nur um die Schwankungen der Versorgungsspannung gering zu halten
RTD (PT100-Messumformer) // Spanne spielt keine Rolle (Bereich)
DIODE (für Verpolungsschutz)
INA219
Arduino
Schritt 1:
Wenn Sie dem Schaltplan folgen, sollten Sie wissen, wo Sie die Teile hinzufügen und verdrahten müssen.
Der LM7808 erlaubt einen maximalen Eingang von 25 Volt, was für SPS-Systeme in Ordnung ist, sie verwenden im Allgemeinen 24-Volt-Netzteile. Fügen Sie dem Regler einen Kühlkörper hinzu und verwenden Sie ihn nicht für längere Zeit. Wenn 16 Volt abfallen, erzeugt der Regler viel Wärme.
Die Eingangsversorgung speist den Regler und ist mit dem INA219 VIN verbunden. In dieser Konfiguration kann der INA219 auch die korrekte Versorgungsspannung abzüglich des Spannungsabfalls von der Diode messen. Sie sollten Ihren Diodenspannungsabfall messen und zum Code hinzufügen, damit Sie die richtige Versorgungsspannungsanzeige erhalten.
Vom INA219 VOUT zum RTD+ wird das RTD eingeschaltet. RTD- an Masse schließt den Stromkreis.
Um eine SPS-Analogkarte zu testen, würden Sie RTD- an den Eingang der Analogkarte und die Masse der Karte an die Arduino-Masse anschließen. (Stellen Sie sicher, dass Sie alle an den zu testenden Kanal angeschlossenen Instrumente trennen).
R5 und LED1 zeigen an, dass das System eingeschaltet ist.
Der Regler speist in die arduino VIN ein (arduino hat einen eingebauten Regler auf 5 Volt).
Der Arduino 5V-Pin geht an INA219, um den On-Board-Chip mit Strom zu versorgen. INA219 GND zu Arduino-Masse.
Potentiometer-Wischer auf RTD-PIN1 trimmen und Potentiometer-Pin 3 auf RTD-Pin 2 trimmen simulieren eine PT100-Verbindung. (Vertauschen Sie die Drähte, wenn das Drehen des Trimmpotentiometers im Uhrzeigersinn den mA-Wert nicht erhöht).
Schritt 2: Geräteausgangstest
Zum Testen des Geräteausgangs werden zusätzliche Teile benötigt, wie z. B. ein Shunt-Widerstand. Normale 0,25-W-Widerstände werden die Arbeit gut machen. Sie können den Shunt-Widerstand belassen und einen zweiten INA219 hinzufügen, um den Instrumentenausgang zu testen. Ich hatte nur noch einen übrig, also habe ich stattdessen einen Widerstand verwendet.
Die Prüfung mit einem Shunt kann nur auf der negativen Seite des Geräts durchgeführt werden. Wenn Sie die positive Seite verwenden, versorgen Sie Ihr Arduino mit mehr als der 4-fachen zulässigen Spannung und lassen den Rauch heraus.
Fügen Sie den Shunt-Widerstand in Reihe mit dem negativen Draht des Instruments hinzu. Die Seite des Shunts, die dem Gerät am nächsten ist, wird zum positiven Analogon für Arduino. Die andere Seite des Shunts, die der Stromversorgung am nächsten ist, wird zur Arduino-Masse, die die analoge Eingangsschaltung vervollständigt.
150 Ohm Shunt-Widerstand ist das absolute Maximum, das bei der Verwendung eines Arduino verwendet werden sollte. Der Widerstand hat einen Spannungsabfall linear zu dem durch ihn fließenden mA. Je größer der mA, desto größer die Spannung.
Bei 20 mA Strom # 150 Ohm * 0,02 A = 3 Volt zu Arduino.
Bei 4 mA Strom # 150 Ohm * 0,004 A = 0,6 Volt zu Arduino.
Jetzt möchten Sie vielleicht, dass die Spannung näher an 5 Volt liegt, damit Sie den gesamten ADC-Bereich des Arduino nutzen können. (Keine gute Idee).
RTDs können einen Ausgang von 30,2 mA erreichen (bei mir). 150 Ohm * 0,03 A = 4,8 Volt. Das ist so nah, wie ich sein möchte.
Eine andere Website gab an, einen 250-Ohm-Widerstand zu verwenden.
Bei 20 mA Strom # 250 Ohm * 0,02 A = 5 Volt zu Arduino.
Bei 30 mA Strom # 250 Ohm * 0,03 A = 7,5 Volt zu Arduino.
Sie riskieren, Ihren ADC und Arduino zu verbrennen.
Um ein Gerät im Feld zu testen, nehmen Sie eine 12-Volt-Batterie mit und schließen Sie sie an den Versorgungseingang an. Die Verwendung einer externen Stromquelle hat keinen Einfluss auf das aktuelle SPS-Setup.
Um eine analoge Eingangskarte im Feld zu testen, nehmen Sie eine 12-Volt-Batterie mit. Trennen Sie das Instrument + vom Stromkreis. Verbinden Sie die Masse mit der Instrumentenmasse und das RTD- mit dem abgetrennten Instrumentenkabel.
Schritt 3: Kalibrierung
Um Ihren Shunt-Widerstandsmesswert zu kalibrieren, verdrahten Sie RTD- mit dem Shunt-Analogeingang. Stellen Sie Ihren Trimmpotentiometer so ein, dass der erzeugte mA 4 mA beträgt. Wenn der mA-Wert Ihres Geräts nicht gleich ist, ändern Sie den ersten Wert im Code in Zeile 84. Wenn Sie diesen Wert erhöhen, wird die mA-Anzeige verringert.
Stellen Sie dann Ihren Trimmpotentiometer so ein, dass er 20 mA erzeugt. Wenn Ihr Gerät mA nicht gleich ist, ändern Sie den zweiten Wert im Code in Zeile 84.
So werden Ihre 4-20 mA jetzt zu 0,6-3 Volt (theoretisch). Mehr als genug Reichweite. Wenn Sie die Bibliothek von eRCaGuy verwenden, erhalten Sie durch Oversampling eine bessere und stabilere Auslesung.
Hoffentlich hast du das gelesen. Dies ist mein erstes anweisbares, also nehmen Sie es bitte leicht, wenn ich irgendwo einen Fehler gemacht oder etwas ausgelassen habe.
Dieses Projekt ist wahrscheinlich nicht der beste Weg, aber es funktioniert für mich und hat Spaß gemacht.
Einige Ideen habe ich extra…
Fügen Sie ein Servo hinzu, um den Trimmpotentiometer in der Box zu drehen.
Fügen Sie Druckknöpfe hinzu, um das Servo nach links oder rechts zu drehen.
Fügen Sie dem Kühlkörper des Reglers einen digitalen Temperatursensor hinzu, um vor gefährlicher Hitze zu warnen.
Schritt 4: Arduino programmieren
#enthalten
// #include //Entkommentieren Sie, wenn Sie ein LCD mit einem Schieberegister verwenden.
#enthalten
#enthalten
#enthalten
#enthalten
//A4 = (SDA)
//A5 = (SCL)
Adafrucht_INA219 ina219;
Flüssigkristall-LCD (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd(3, 4, 2); // Kommentieren Sie, wenn Sie ein LCD mit einem Schieberegister verwenden.
// | | |_ Verriegelungsstift
// | \_ Uhr-Pin
// \_ Daten/Aktivierungs-Pin
Byte bitsOfResolution = 12; //befohlene überabgetastete Auflösung
unsigned long numSamplesToAvg = 20; //Anzahl der Proben BEI DER ÜBERSAMPELTEN AUFLÖSUNG, die Sie nehmen möchten, und den Durchschnitt
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
Schwimmer-Nebenschlussspannung = 0,0; //Von INA219
Schwimmerbusspannung = 0,0; //Von INA219
Schwimmerstrom_mA = 0.0; //Von INA219
Erhaltungsladespannung = 0,0; //Von INA219
Schwimmer-Arduinospannung = 0,0; // Spannungsberechnung von A0 Pin
Unsigned long A0analogReading = 0;
Byte analogIn = A0;
float ma_mapped = 0.0; // Kartenspannung von A0 bis 4-20mA
Leere Einrichtung () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution(bitsOfResolution);
adc.setNumSamplesToAvg(numSamplesToAvg);
uint32_t aktuelleFrequenz;
ina219.begin();
ina219.setCalibration_32V_30mA(); //Modifizierte Bibliothek für mehr Präzision bei mA
lcd.begin(20, 4); // initialisiere das LCD
lcd.clear();
lcd.home(); // nach Hause gehen
lcd.print("********************");
Verzögerung (2000);
lcd.clear();
}
Leere Schleife ()
{
unsigned long currentMillis = millis();
const langes Intervall = 100;
//&&&&&&&&&&&&&&&&&
Lesen Sie I2C-Geräte in Intervallen aus und führen Sie einige Berechnungen durch
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis >= Intervall) {
vorherigeMillis = aktuelleMillis;
Intervall();
}
Print_To_LCD(); // Ich muss das LCD wahrscheinlich nicht so schnell aktualisieren und kann unter Intervall () verschoben werden
}
Leere
Intervall() {
Nebenschlussspannung = ina219.getShuntVoltage_mV();
Busspannung = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
Lastspannung = (Busspannung + (Shuntspannung / 1000)) + 0,71; // +0,71 ist mein Diodenspannungsabfall
A0analogReading = adc.newAnalogRead(analogIn);
Arduino-Spannung = (5,0 * A0analogReading); // Berechnet zu mV
ma_mapped = map(arduinovoltage, 752, 8459, 30, 220) / 10.0; //Map kann keine Gleitkommazahlen verwenden. Fügen Sie eine 0 hinter dem zugeordneten Wert hinzu und teilen Sie sie durch 10, um eine Float-Anzeige zu erhalten.
// Die Zuordnung aus der Spannungsberechnung ergibt eine stabilere Anzeige als die Verwendung des rohen ADC-Messwerts.
if (Shuntspannung >= -0,10 && Shuntspannung <= -0,01) // Ohne Last tendiert der INA219 dazu, unter -0,01 zu lesen, gut, meine tut es.
{
Strom_mA = 0;
Busspannung = 0;
Lastspannung = 0;
Nebenschlussspannung = 0;
}
}
Leere
Print_To_LCD() {
lcd.setCursor(0, 0);
if (ma_mapped < 1,25) {// Ohne Strom ist dies mein mA-Messwert, also werfe ich ihn einfach weg.
lcd.print("* 4-20mA Generator *");
}
anders {
lcd.print("** Analogtester **");
}
lcd.setCursor(0, 1);
lcd.print("Gerät:");
lcd.setCursor(10, 1);
if (ma_mapped < 1,25) {
lcd.print("kein Gerät");
}
anders {
lcd.print (ma_mapped);
}
lcd.print("mA");
lcd.setCursor(0, 2);
lcd.print("Generieren:");
lcd.setCursor(10, 2);
lcd.print (aktueller_mA);
lcd.print("mA");
lcd.setCursor(0, 3);
lcd.print("Versorgung:");
lcd.setCursor(10, 3);
lcd.print (Lastspannung);
lcd.print("V");
}
Schritt 5: Einige weitere Fotos
Anschluss für Verstärkerlautsprecher. LED, die vom Stromgenerator (RTD) angetrieben wird. Die Verdrahtung der Analogkarte ersetzt die LED.
Die Klemme ganz links ist für den Versorgungseingang. Die Anschlüsse auf der rechten Seite sind für die Instrumenteneingabe.
Schritt 6: Einpassen
Alles scheint zu passen. Ich habe Silikon verwendet, um einige Sachen vorübergehend zusammenzuhalten. Der Trimmtopf ist oben rechts silikonisiert. Ein kleines Loch wurde vorgebohrt. Ich kann den Strom von der Oberseite der Box einstellen.
Schritt 7: Nur Fotos
Schritt 8: Schlussworte
Ich habe die Ausgabe dieses Geräts mit einer Allan Bradley-SPS getestet. Die Ergebnisse waren sehr gut. Ich habe die volle Reichweite. Ich habe dieses Gerät auch mit einem 4-20-mA-Drucksensor getestet, der über ein eingebautes LCD-Display verfügt. Die Ergebnisse waren wieder sehr gut. Meine Messwerte waren um ein paar Dezimalstellen daneben.
Ich schreibe meinen Arduino-Code in Tabs. In SPS werden sie als Unterroutinen bezeichnet. Erleichtert das Debuggen für meine.
Angehängt sind Textdateien dieser Registerkarten.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
Generator: Fidget Spinner Generator 3 in 1: 3 Schritten
Generator: Fidget Spinner Generator 3 in 1: Fidget Spinner Generator 3 in 1 - jetzt können Sie Ihren Fidget Spinner Generator konfigurieren (drei Möglichkeiten) Der Mikrogenerator verwendet 3 Neodym-Kugeln und 3 Neodym-Scheiben (led und kleine Spule Eisen weniger) AUF INSTAGRAM und sehen Sie eine einfache elektrische
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Erfahren Sie, wie Sie mit PROCESSING eine Echtzeitschnittstelle in ARDUINO erstellen !!!!): 5 Schritte (mit Bildern)
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Learn How to Make a Real Time Interface in ARDUINO Using PROCESSING !!!!): Ein SCARA-Roboter ist eine sehr beliebte Maschine in der Industriewelt. Der Name steht sowohl für Selective Compliant Assembly Robot Arm als auch für Selective Compliant Articulated Robot Arm. Es ist im Grunde ein Roboter mit drei Freiheitsgraden, da er die ersten beiden Displ
Generator "Radform": 19 Schritte (mit Bildern)
Generator "Radform": Hallo zusammen, hier stelle ich euch eine kreative Idee zur Stromerzeugung mit einem Rad vor. Kurz gesagt, in diesem Projekt mische ich zwischen Vergangenheit und Gegenwart, indem ich die alte Holzform eines Rades mit dem modernen Generatorsystem verschmelze, das