
Irgendwie brauchte ich eine Wasserpumpe für zukünftige hausgemachte Produkte. Ja, es ist nicht einfach - mit Einschränkungen bei den Abmessungen - Dicke bis 25 mm, Breite bis 50 mm (Länge - Sie können bereits variieren). Von den gewünschten Eigenschaften - ein Druck von 1 m und eine Durchflussrate von 100 l / h. Da er nicht fand, was er im Verkauf wollte (hauptsächlich in Bezug auf die Größe), machte er sich in seiner
hartnäckigen Hartnäckigkeit daran, seine Lösung für dieses Problem umzusetzen!
Achtung - viele Fotos!"Brains" und ein kleiner Hintergrund:
Genau genommen ist die Idee, HDD-Motoren für Pumpen einzusetzen, nicht neu. Seit 2009 wird eine ganze Niederlassung in
einem bekannten Forum unterhalten. Ursprünglich war es also darauf ausgerichtet, eine Pumpe aus einer „Laptop“ -Festplatte herzustellen und einen geeigneten Treiber mit integrierten Netzschlüsseln und sensorloser Steuerung zu finden.
Aber "out of the box" konnte ich nicht aus Erfahrung lernen. Eine Reihe von Tests mit verschiedenen Fahrern (MTD6501C, DRV11873 und eine Reihe anderer chinesischer Handwerker) ergab ein enttäuschendes Ergebnis: Größere Motoren mit 3,5 Antrieben funktionieren einwandfrei. Aber mit kleinen Motoren schaffen sie es bestenfalls, Einheiten zu starten, und sie arbeiten extrem instabil. Mit solch einem enttäuschenden Ergebnis wurde eine alte Idee aufgegeben und stand kurz vor dem Vergessen.
Aber vor relativ kurzer Zeit bin ich auf einen ziemlich interessanten Fahrer von TI
gestoßen -
DRV10987 . Mit seinen bescheidenen Dimensionen hat es ein ziemlich beeindruckendes Potenzial:
- Betriebsspannung von 6V bis 28V
- Integrierter 5-V-Abwärtswandler (Sie können den MK zur Steuerung mit Strom versorgen)
- Konstanter Betriebsstrom bis 2A (Spitze - 3A)
- Eine große Anzahl von softwaredefinierten Parametern (Einstellen der Werte von Konfigurationsregistern auf dem I2C-Bus) zur Steuerung des Motorbetriebs
- Automatischer Neustart des Motors nach einem Notstopp / Ausfall (wenn die Bedingungen für den Ausfall erfüllt sind)
- Überstromschutz
- Überspannungsschutz
- Rotorstopp / Blockiererkennung
- Herunterfahren, wenn der Controller überhitzt
Ausgerüstet mit einem
Arduino (verzeihen Sie mir dieses missbräuchliche Wort der örtlichen Elektronikingenieure), um die vom LUT-Board für diesen Treiber vorgenommenen Parameter
festzulegen , ging ich tiefer in Experimente zum Starten von Motoren ein. Nun, dieser Controller hat mich nicht enttäuscht! Trotz der angewandten Methode des "wissenschaftlichen Stocherns" bei der Auswahl der Parameter war es möglich, einen Ansatz für jeden Motor von der Festplatte zu finden!
Hat mir in diesem selbst erstellten
Online-Einstellungskonfigurator geholfen. Verwendung für die Gesundheit!)
Hier ist eine Skizze zum Gießen von Parametern durch Arduino:#include <Arduino.h> #include <Wire.h> #define I2C_DRV10983_Q1_ADR 0x52 #define Fault_Reg 0x00 #define MotorSpeed_Reg 0x01 #define DeviceIDRevisionID_Reg 0x08 #define SpeedCtrl_Reg 0x30 #define EEPROM_Access_Code_Reg 0x31 #define EEPROM_EeReady_Reg 0x32 #define EEPROM_Iindividual_Access_Adr_Reg 0x33 #define EEPROM_Individual_Access_Data_Reg 0x34 #define EEPROM_Access_Reg 0x35 #define EECTRL_Reg 0x60 void setup() { Serial.begin(9600); Wire.begin(); } byte readByAdress(byte reg_adr, unsigned int &result) { //I2C write 2-byte register byte i = 0, err = 0; byte bytes[2] = {0, 0}; Wire.beginTransmission(I2C_DRV10983_Q1_ADR); Wire.write(reg_adr); err = Wire.endTransmission(); if(err!=0) return err; Wire.requestFrom(I2C_DRV10983_Q1_ADR, 2); while(Wire.available()) { bytes[i] = Wire.read(); i++; } result = ((bytes[0] << 8) | bytes[1]); return 0; } byte writeByAdress(byte reg_adr, unsigned int value) { //I2C read 2-byte register byte bytes[2]; bytes[1] = value & 0xFF; bytes[0] = (value >> 8) & 0xFF; Wire.beginTransmission(I2C_DRV10983_Q1_ADR); Wire.write(reg_adr); Wire.write(bytes,2); return Wire.endTransmission(); } boolean flag = true; void loop() { if(flag){ unsigned int onReady = 0; writeByAdress(EECTRL_Reg, 0xFFFF); writeByAdress(EEPROM_Access_Code_Reg, 0x0000); //Reset EEPROM_Access_Code_Reg writeByAdress(EEPROM_Access_Code_Reg, 0xC0DE); //Set EEPROM_Access_Code_Reg while(onReady == 0){ // Wait EEPROM ready readByAdress(EEPROM_EeReady_Reg, onReady); } Serial.println("EEPROM_Access."); onReady = 0; //Write values on shadow registers //writeByAdress(EEPROM_Access_Reg, 0x1000); //Not use EEPROM storage. Store values in shadow registers writeByAdress(0x90, 0x154F); writeByAdress(0x91, 0x042C); writeByAdress(0x92, 0x0090); writeByAdress(0x93, 0x09EA); writeByAdress(0x94, 0x3FAF); writeByAdress(0x95, 0xFC33); writeByAdress(0x96, 0x016A); writeByAdress(EEPROM_Access_Reg,0x0006); //EEPROM mass access enabled && update while(onReady == 0 ){ // Wait EEPROM ready readByAdress(EEPROM_EeReady_Reg, onReady); } Serial.println("EEPROM_Update."); writeByAdress(EECTRL_Reg, 0x0000); //Run motor flag = false; } }
Dann wurden im Reich der Mitte vorzeigbarere Schals bestellt:

Nach der Registrierung (nun, das ist es, was sie benötigen) können Sie die Projektdateien kostenlos herunterladen. Oder bestellen Sie die Boards sofort
hier .
Über die "Herztransplantation"
Das einzige, was noch übrig bleibt, ist, den Motor aus dem Festplattengehäuse herauszuholen, das übrigens in 2,5 Festplatten (und in den meisten 3,5) ein wesentlicher Bestandteil davon ist. Kurz können Sie den Prozess mit dem berühmten Satz "
Saw, Shura, saw! " Beschreiben:
Eine äußere Führung für eine Metallkrone mit Befestigung am Scheibengehäuse besteht aus Sperrholz. Aus Sicherheitsgründen wird das Motorkabel so auf die Basis geklebt, dass es nicht von einer Krone abgeschnitten wird
Nach dem Bohren bekommen wir Runden mit einem Motor. Nach der Dateiverarbeitung erhalten wir einen Basisdurchmesser von ca. 25 mm.Vorbereitung des Empfängers auf die Transplantation:
Das Gehirn und das Herz der zukünftigen Pumpe verstehen sich gut und sind bereit, einen neuen Lebensraum zu finden. Es ist also Zeit, über das Gehäuse und das Laufrad nachzudenken.
Da bei geringem Arbeitsvolumen ein hoher Druck erzielt werden muss, wurde das Laufrad mit 7 Strahlen ausgelegt:
3D-Druck mit Polycarbonat3D-ModellPolycarbonat ist eine großartige Sache für den Fall. Das Drucken des gesamten Gebäudes ist für sie jedoch teuer. Stücke von dicken Blechen sind sehr schwer zu finden und das Fräsen ist (für mich) nicht kostenlos. Aber für den Dank an die Werbetreibenden können Sie um Abfälle von 4 mm und 2 mm dicken Blättern bitten. Das Gehäuse wurde daher für das anschließende Laserschneiden von Teilen und deren Verkleben zu einer Einheit ohne Fräsen konzipiert. Es sind nur Bohrungen für Armaturen und Muttern erforderlich.
3D-Modellansicht3D-Modell
Eine Reihe von Teilen zum Verkleben der "Oberseite" der Pumpe. An den Stellen, an denen die Kanäle des Zu- und Abflusses verbunden sind, werden die Flächen abgeschnittenBetriebsfortschritt:
Hier möchte ich einen Exkurs machen und diejenigen daran erinnern, die es wiederholen möchten, und nicht nur, dass das zusammengeklebte Dichlorethan nur
wenige Vitamine enthält und Sie eine ziemlich giftige und flüchtige Substanz
einatmen müssen . Arbeiten damit sollten entweder im Freien oder in einem gut belüfteten Bereich durchgeführt werden.
Der Stapel der "oberen" Teile beim Trocknen nach dem Verkleben ist der obere Einström-Abscheider-Laufrad-Rotor. Ebenso wird die Basis für den Motor zusammengeklebt (oder vollständig aus einem 6-mm-Stück Polycarbonat hergestellt).
Nach dem Verkleben werden die Löcher für die Armatur gebohrt - ein 8-mm-Messingrohr durch die Kerben am „Separator“ -Teil
Die gute alte Zusammensetzung BF-4 ermöglicht für mich eine zuverlässige Verbindung von Messing und Polycarbonat
Die Basis des Motors am Boden der Pumpe ist mit demselben Klebstoff verklebt. Im oberen Teil werden Löcher ( nicht durch und durch!) Zum Kleben von M3-Nietmuttern gebohrt. Und das Foto zeigt eine dünne SilikondichtungTesten:
Es ist also an der Zeit, die hausgemachte Arbeit zu überprüfen. Zu diesem Zweck wurde hastig ein Prüfstand zusammengebaut. Da ernsthafte Entwickler die
Kinder des Habr lesen, deren Aussehen und Zusammensetzung den Stand zu Panik, Entsetzen und Orientierungslosigkeit führen kann, wollte ich ihn unter einem Spoiler verstecken ... aber ich hoffe, dass alles klappt, und dann nicht sagen, dass ich Sie nicht gewarnt habe, liebe Leser !
Arduinka sendet ein Steuersignal PWM, dessen Tastverhältnis manuell durch einen variablen Widerstand eingestellt wird, liest den Wert der Konfigurationsregister und bestimmt auch die Drehzahl sowohl über die internen Treiberregister (RPMrg) als auch über das Signal FG (RPMfg). Motorleistung - 12VStarten des Motors ohne Last. Geschwindigkeitsregelung und EnergiemessungDer Motor startet erfolgreich ab 6% des PWM-Steuersignals. Und am Ende des Videos können Sie sehen, wie bei hohen Geschwindigkeiten die Geschwindigkeitswerte im internen Register im Intervall von 10.000 bis 13.000 Umdrehungen „hängen“, obwohl die Frequenz ohne Änderungen über den FG-Ausgang festgelegt wird.
Im Leerlauf ist alles klar - sie haben 13k Umdrehungen bei einer Spannung von 12V und einem Verbrauch von 0,16A. Aber eine Wasserpumpe lief, und hier jage ich die Luft. Die nächste Etappe ist also die Begleitung von Haushaltsmitgliedern auf die Straße, um sich nicht einzumischen, und die Besetzung des Badezimmers!
Leider konnte ich keine Messungen vornehmen und keine Videos aufnehmen. Kommen wir also mit einem allgemeinen Foto zurecht. Eine Stoppuhr und eine 3L-Dose wurden dem Messgerät hinzugefügt
Nach den Ergebnissen der Messungen haben wir eine solche Tabelle erhalten
FlussdiagrammInfolgedessen erfüllt dieses Handwerk meine Anforderungen voll und ganz. Und im Falle eines Ausfalls wird es dank des zusammenklappbaren Designs und des Vorhandenseins von Boxen mit toten 2,5 HDD in Reparaturwerkstätten / Service-Centern nicht schwierig sein, Reparaturen durchzuführen. Und der Weg zum weiteren Aufbau der NWO ist frei! Also weiter!