Gasflussregler 5-mal billiger als kommerzielle Lösungen

Bild

Gasflussregler (RRG) sind so ausgelegt, dass sie eine benutzerdefinierte Durchflussrate aufrechterhalten. RWGs werden in Industrie- und Forschungslabors eingesetzt, um die Gasversorgung von Flaschen und Autobahnen zu organisieren. Die Geräte von Eltochpribor, MKS, Bronkhorst usw. sind auf dem Markt vertreten. Die Kosten für diese Geräte betragen 1000-2500 USD. Ziel dieser Arbeit ist es, einen Gasflussregler aus besser zugänglichen Komponenten zu schaffen. Die Idee ist, ein Rückkopplungssystem zu organisieren, das ein Proportionalventil und einen Durchflussmesser umfasst. Im Folgenden finden Sie eine kurze Beschreibung der Hardware und Software des Systems, mit der diese für alle Personen reproduziert werden können, die die RRG für ihre Aktivitäten verwenden. Alle Quellcodes sind auf GitHub verfügbar .

Wir verwendeten SMC-Produkte, Ventile der PVQ-Serie und Durchflussmesser der PFM5-Serie ohne Angabe. Zwei RWGs wurden mit einstellbaren Durchflussbereichen von 0,2 bis 5 l / min (PVQ13 + PFM510) und 1 bis 50 l / min (PVQ31 + PFM550) zusammengebaut (siehe Abbildung). Die Kosten für einen Durchflussregler können von oben auf 100 USD (PVQ31-Ventil) + 80 USD (PFM5-Meter) + 20 USD (Arduino Nano-Mikrocontroller, Stromversorgung und Funkkomponenten) = 200 USD geschätzt werden. Alles, was unten beschrieben wird, gilt für die RWG 1-50 l / min. Die Erstellung eines Reglers mit 0,2 bis 5 l / min sowie anderer Regler aus ähnlichen Komponenten erfolgt nach demselben Schema, kann sich jedoch in geringfügigen Details unterscheiden.

Hardware


Bild

Die Hardware ist in der Abbildung dargestellt und besteht aus:

  1. Proportionalventil PVQ31
  2. PFM550 Durchflussmesser
  3. Filter
  4. Netzteil (24V, 1A)
  5. Stromregelkreise
  6. Arduino Nano Mikrocontroller und seine Leistungsschemata

Bild

Der Stromkreis zum Anschließen von Bauteilen ist in der Abbildung dargestellt. Zur Stromversorgung des Stromkreises wird eine 24-V-1-A-Gleichstromquelle verwendet, was bei einem Ventilverbrauch von weniger als 200 mA und einem Messgerät von weniger als 35 mA mehr als ausreichend ist. Die Proportionalventile der PVQ-Serie sind stromgesteuert. Gemäß der Dokumentation wird nicht empfohlen, sie durch Spannungsregelung zu steuern. Die Stromregelung kann unter Verwendung der hier , hier und hier ausführlicher beschriebenen Schaltung implementiert werden . Die Stromsteuerschaltung ist auf der allgemeinen elektrischen Schaltung (Fig. 3) durch ein gestricheltes Rechteck hervorgehoben. Die Ventile der PVQ-Serie sind über zwei Stromkabel verbunden: rot - DC +, schwarz - DC-.

Die Stromstärke wird über das PWM-Signal geregelt, das vom analogen Pin des Mikrocontrollers erzeugt wird. Standardmäßig erzeugen ATmega328-basierte Controller (Arduino UNO / Nano / Pro Mini) ein 8-Bit-PWM-Signal (0-255-Wert) mit einer Frequenz von 488 oder 976 Hz, abhängig vom Pin. Eine geringe PWM-Signalbreite verringert die Genauigkeit der Ventilsteuerung. Niedrige Frequenz führt zu seinem Summen. Diese Werte können programmgesteuert auf 10 Bit (0-1023) bzw. 15,6 kHz erhöht werden. Wir haben eine Frequenz von 7,8 kHz verwendet. Eine Beschreibung der Befehle, die in die setup()Arduino-Firmware- Funktion eingefügt werden müssen, finden Sie hier und hier .

Durchflussmesser der Serie PFM5 verfügen über 2 Signalkabel (schwarz - Analogausgang, Weiß - Reaktionszeiteinstellung (nicht verwendet)) und zwei Stromkabel (braun - DC +, blau - DC-). Wird von einer 24-V-Gleichstromquelle gespeist. Der Durchflussmesser liefert ein analoges Signal im Bereich von 1 bis 5 V. Ein Wert von 1 V entspricht einer Gasdurchflussrate von Null, 5 V - das Maximum für diesen Zähler. Der Dokumentation zufolge ist das Verhältnis zwischen Durchfluss und Spannung linear. In der Zwischenzeit lohnt es sich, den Durchflussmesser regelmäßig zu kalibrieren. Das analoge Signal vom Durchflussmesser (schwarzes Kabel) wird von einem 10-Bit-Arduino-Analogstift (0-1023) zur Verarbeitung und Anzeige empfangen. Der weiße Draht dient zum Einstellen der Reaktionszeit, wir verwenden ihn nicht. In diesem Fall beträgt die Antwortzeit 50 ms.

Die Arduino-Platine sollte über einen 5-V-Pin mit Strom versorgt werden. Die Versorgungsspannung sollte 5,5 V nicht überschreiten. Diese Leistung kann vom Ventil-Netzteil und vom Durchflussmesser über den Stabilisator L7805 bereitgestellt werden (siehe Abbildung 3). Höchstwahrscheinlich benötigen Sie einen Kühler am Stabilisator. Die Stromversorgung über den USB-Anschluss des während des Tests verwendeten Computers (Abb. 2) ist nicht wünschenswert, da in diesem Fall die Referenzspannung bei Verwendung des ADC instabil ist. Weitere Informationen zur Stromversorgung der Platine finden Sie hier .

Softwareteil
Der Softwareteil besteht aus der Firmware des Arduino Nano-Mikrocontrollers und einer grafischen Benutzeroberfläche, die auf einem PC ausgeführt wird.

Das auf den Mikrocontroller heruntergeladene Programm führt zyklisch die folgenden Aktionen aus:

  1. ,
  2. ,
  3. , -

Das System kann im manuellen und automatischen Modus betrieben werden. Während des manuellen Betriebs sollte der Wert der gewünschten Ventilöffnung, ausgedrückt durch eine Variable valve(0 <= valve<1023), an die serielle Schnittstelle gesendet werden . Der Wert dieser Variablen bestimmt die Belegung des PWM-Signals, das über den Analogausgang des Mikrocontrollers an den Stromregelkreis und den Proportionalventilbefehl gesendet wird analogWrite(valvepin, valve). Nach dem Öffnen bleibt das Ventil in der eingestellten Position, bis ein neuer Befehl über die serielle Schnittstelle empfangen wird.

Um in den automatischen Betrieb zu wechseln, muss eine negative Nummer an die serielle Schnittstelle gesendet werden -targetflow. Variabler Werttargetflowliegt im Bereich von 0 bis 1023 und bestimmt den Gasdurchsatz, der eingehalten werden soll. Der tatsächliche Gasdurchsatz wird durch die Durchflussmesserwerte bestimmt, die mit einem Befehl realflow = analogRead(fmpin)(0 <= realflow<1023) vom Analogeingang des Mikrocontrollers abgelesen werden . Im automatischen Modus ist das System bestrebt, die Gleichheit zwischen targetflowund durch realflowSteuerung des Proportionalventils aufrechtzuerhalten . Der Ventilöffnungswert wird mit dem Proportional-Integral-Differenzierungsregler (PID) berechnet. Über den PID-Regler können Sie hier , hier und hier lesen . Die GyverPID- Bibliothek wird zur Implementierung des Controllers verwendet .mit einigen Änderungen und Ergänzungen. Da die Bibliothek geändert wurde, verwenden Sie die an diesen Code angehängte Bibliothek, die nicht über den obigen Link heruntergeladen wurde.

Um den PID-Regler verwenden zu können, müssen die Koeffizienten der Proportional- Kp, Integral- Kiund Differentialkomponenten Kdsowie die Iterationszeit ausgewählt werden dtpid. Der Wert der Variablen dtpidmuss abhängig von der Trägheit des Systems ausgewählt werden. Je träger das System, desto mehr sollte es sein dtpid. Basierend auf den Bewertungen und Testergebnissen für das betreffende Gerät haben wir Werte dtpid= 100-330 ms gewählt. Die Koeffizienten Kp, Ki, Kdsind , auf einem festen Wert ausgewähltdtpidund hängen wesentlich vom System ab. Empfehlungen zur Auswahl der Koeffizienten finden Sie hier , hier und hier .

Der vom Mikrocontroller zyklisch ausgeführte Algorithmus lautet also wie folgt:

if(    )
	   inp
	if(inp >= 0 && inp < 1023)
		  
		    inp
	if(inp <= 0 && inp >= -1023)
		  
		     -inp 
if(  &&      dtpid )
	      -
	    
if(     dt )
	   
	   
	   

Die grafische Benutzeroberfläche wird in Python unter Verwendung des grafischen PyQt-Frameworks geschrieben. Das Design wurde im Qt Designer-Programm erstellt. Anschließend wurde der Code der .ui-Datei in eine Python-Datei konvertiert. Eine Einführung in die GUI-Entwicklung und die Verwendung von PyQt finden Sie hier und hier .

Die grafische Oberfläche interagiert mit der Arduino-Firmware über die serielle Schnittstelle unter Verwendung der Bibliothek pyserial. Das Python-Programm führt Folgendes aus:

  1. , ,
  2. 0-1023, ,
  3. .3
  4. , ( 0-1023)
  5. .5

Der Code für die Verbindung mit der seriellen Schnittstelle wird hier ausgeliehen .

Das Modul ist für die Übertragung von Benutzereinheiten in den Bereich 0-1023 vorgesehen units.py. Dieses Modul erleichtert das Hinzufügen neuer Einheiten. Der Benutzer muss den Namen der Einheiten und die Umrechnungsformel von 0-1023 in die neuen Einheiten angeben. Das Modul enthält detaillierte Kommentare.

Die vom Durchflussmesser empfangenen und von der Mikrocontroller-Firmware an die serielle Schnittstelle ausgegebenen Daten werden vom Python-Programm vom Port gelesen und nach der Konvertierung der Einheiten in Text- und Grafikform angezeigt. Eine Bibliothek wird verwendet, um ein Diagramm des Stromverbrauchs zu zeichnen pyqtgraph.

Ergebnisse


Um mit RRG arbeiten zu können, müssen Sie: den Mikrocontroller flashen, die Stromversorgung anschließen, das Python-Programm ausführen und eine Verbindung zur seriellen Schnittstelle herstellen. Danach kann der Benutzer den Betriebsmodus (manuell oder automatisch) auswählen und den erforderlichen Ventilöffnungswert im manuellen Betriebsmodus oder den unterstützten Durchflusswert im automatischen Modus einstellen. Der aktuelle Gasdurchsatz wird im entsprechenden Feld angezeigt und in der Grafik angezeigt. Das Diagramm wird zyklisch aktualisiert, nachdem die angegebene Anzahl von Punkten erreicht wurde. Das Diagramm wird gelöscht und die Zeichnung beginnt erneut. Der Benutzer kann die verwendeten Einheiten auswählen.

Bild
Die Abbildung zeigt das Erscheinungsbild der grafischen Benutzeroberfläche und eine grafische Darstellung der im Automatikmodus erhaltenen Gasdurchflussmenge sowie die Umschaltung des RGG zwischen verschiedenen Werten der unterstützten Durchflussmenge. Die Ergebnisse sind in Einheiten von 0-1023 angegeben.

Um die Möglichkeiten zur Aufrechterhaltung eines konstanten Gasdurchflusses zu demonstrieren, haben wir den Fall betrachtet, in dem der Durchfluss, wenn das Proportionalventil durch einen konstanten Wert geöffnet wird, „schwimmt“, wie auf der linken Seite des Diagramms (x <950) in der folgenden Abbildung gezeigt. Das Ergebnis des Betriebs der automatischen Aufrechterhaltung der eingestellten Durchflussrate ist auf der rechten Seite des Diagramms zu sehen (x> 1000). Tests haben gezeigt, dass die Abweichung von der eingestellten Durchflussmenge im automatischen Haltemodus nicht mehr als 2% beträgt.

Bild

Bemerkungen


Die Verwendung des Arduino Nano-Mikrocontrollers ist nicht erforderlich, da nur ein kleiner Teil seiner Pins beteiligt ist. Andererseits wäre es besser, Mikrocontroller mit einer größeren Bitkapazität an analogen Ein- / Ausgängen zu verwenden, um die Genauigkeit der Messung und Einstellung zu erhöhen. Wenn Sie den Typ des Mikrocontrollers ändern, muss möglicherweise ein eigener PID-Regler implementiert werden. Dies sollte keine Schwierigkeiten verursachen, da der Algorithmus einfach ist.

In der Entwicklungsphase wurde der Stromkreis auf einem Steckbrett montiert (siehe Abbildung 2). Für die weitere Verwendung muss der Stromkreis gelötet und im Gehäuse platziert werden.

Die Autoren des Artikels sind weder Elektronikingenieure noch Programmierer. Konstruktive Tipps zur Verbesserung sind daher willkommen.

Zusätzliche Materialien


Die Quellcodes für die Arduino-Firmware- und Python-Programme sowie die Dokumentation für die verwendeten Durchflussmesser und Proportionalventile sind auf GitHub verfügbar

Danksagung


Wir danken unseren Kollegen für die Idee des in dieser Arbeit implementierten Systems. AlexGyver und andere Benutzer teilen großzügig ihre Erfahrungen mit den Informationen, die wir in unserer Arbeit verwendet haben.

Ergebnisse


Mit einem Rückkopplungssystem, das aus einem Proportionalventil, einem Durchflussmesser und einem Mikrocontroller besteht, können Sie RRG erstellen, um einen bestimmten Gasfluss aufrechtzuerhalten. Tests zeigten eine Abweichung von der erforderlichen Durchflussrate innerhalb von weniger als 2%. Die Kosten des Systems betrugen weniger als 200 USD. Der zusammengebaute Prototyp zeigte Funktionsfähigkeit unter einer Vielzahl von Bedingungen. Eine weitere Verwendung kann eine Verfeinerung erfordern, einschließlich Verdrahtung der Schaltkreise, Herstellung des Gehäuses usw.

Source: https://habr.com/ru/post/undefined/


All Articles