
D'une certaine manière, j'avais besoin d'une pompe à eau pour les futurs produits maison. Oui, ce n'est pas simple - avec des restrictions de taille - épaisseur jusqu'à 25 mm, largeur jusqu'à 50 mm (longueur - vous pouvez déjà varier). Des caractéristiques souhaitées - une pression de 1m et un débit de 100l / h. Ne trouvant pas ce qu'il voulait dans les ventes (principalement en termes de taille), dans son
obstiné obstiné, il s'est mis à mettre en œuvre sa solution à ce problème!
Attention - beaucoup de photos!"Cerveaux" et un peu d'histoire:
À strictement parler, l'idée d'utiliser des moteurs HDD pour les pompes n'est pas nouvelle. Depuis 2009, une branche entière a été maintenue dans
un forum bien connu . Ainsi, il visait à l'origine à fabriquer une pompe à partir d'un disque dur «portable» et à trouver un pilote approprié avec des touches d'alimentation intégrées et un contrôle sans capteur.
Mais «hors de la boîte», je n'ai pas pu apprendre de l'expérience. Une série de tests avec différents pilotes (MTD6501C, DRV11873 et un certain nombre d'autres métiers chinois) a donné un résultat décevant: les moteurs plus gros de 3,5 disques fonctionnent parfaitement. Mais avec de petits moteurs, au mieux, ils parviennent à démarrer les unités, et ils fonctionnent de manière extrêmement instable. Avec un résultat aussi décevant, une vieille idée a été abandonnée et au bord de l'oubli.
Mais relativement récemment, je suis tombé sur un pilote assez intéressant de TI-
DRV10987 . Avec ses dimensions modestes, il a un potentiel assez impressionnant:
- Tension de fonctionnement de 6v à 28v
- Convertisseur abaisseur 5v intégré (vous pouvez alimenter le MK pour le contrôle)
- Courant de fonctionnement constant jusqu'à 2A (crête - 3A)
- Un grand nombre de paramètres définis par logiciel (réglage des valeurs des registres de configuration sur le bus I2C) pour contrôler le fonctionnement du moteur
- Redémarrage automatique du moteur après un arrêt / une panne d'urgence (si les conditions de la panne sont passées)
- Protection contre les surintensités
- Protection contre les surtensions
- Détection d'arrêt / verrouillage du rotor
- Arrêt lorsque le contrôleur surchauffe
Armé d'un
arduino (pardonnez-moi ce mot abusif des ingénieurs en électronique locaux) pour définir les paramètres définis par la carte LUT pour ce pilote, j'ai approfondi les expériences de démarrage des moteurs. Eh bien, ce contrôleur ne m'a pas déçu! Malgré la méthode appliquée de "piquer scientifique" dans la sélection des paramètres, il était possible de trouver une approche à n'importe quel moteur du disque dur!
M'a aidé dans ce
configurateur de paramètres en ligne personnalisé . Utilisez sur la santé!)
Voici un croquis sur le versement de paramètres via 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; } }
Ensuite, des châles plus présentables ont été commandés dans l'Empire du Milieu:

Après l'enregistrement (enfin, c'est ce dont ils ont besoin), vous pouvez télécharger gratuitement les fichiers du projet. Ou commandez immédiatement les planches
ici .
À propos de la «transplantation cardiaque»
La seule chose qui reste est de sortir le moteur du boîtier du disque dur, qui, soit dit en passant, dans 2,5 disques (et dans la plupart des 3,5) en fait partie intégrante. En bref, vous pouvez décrire le processus avec la célèbre phrase "
Saw, Shura, saw! ":
Un guide externe pour une couronne métallique avec fixation au boîtier de disque est en contreplaqué. Par sécurité, le câble moteur est collé à sa base pour ne pas être coupé par une couronne
Après le forage, nous obtenons des tours avec un moteur. Après traitement des fichiers, nous obtenons un diamètre de base d'environ 25 mm.Préparation du receveur pour la transplantation:
Le cerveau et le cœur de la future pompe s'entendent bien et sont prêts à trouver un nouvel habitat. Il est donc temps de penser au boîtier et à la roue.
Puisqu'il est nécessaire d'obtenir une haute pression avec un petit volume de travail, la roue a été conçue avec 7 rayons:
Impression 3D avec polycarbonateModèle 3DLe polycarbonate est une grande chose pour le boîtier. Mais l'impression de l'ensemble du bâtiment leur coûte cher. Les morceaux de feuilles épaisses sont très difficiles à trouver et le fraisage n'est pas gratuit (pour moi). Mais pour les remerciements aux annonceurs, vous pouvez mendier des chutes de feuilles de 4 mm et 2 mm d'épaisseur. Le boîtier a donc été conçu pour la découpe laser ultérieure de pièces et leur collage en une seule unité sans besoin de fraisage. Seuls les trous de perçage pour les raccords et les écrous sont nécessaires.
Vue du modèle 3DModèle 3D
Un ensemble de pièces pour coller le "haut" de la pompe. Aux endroits où les canaux d'entrée et de sortie sont connectés, les faces sont coupéesProgression de l'opération:
Ici, je voudrais faire une digression et rappeler à ceux qui souhaitent répéter, et pas seulement que le dichloroéthane, qui a été collé ensemble,
contient peu de vitamines et que vous devez inhaler une substance plutôt toxique et volatile. Le travail doit être effectué à l'extérieur ou dans un endroit bien ventilé.
La pile de pièces «supérieures» lors du séchage après collage est le rotor séparateur-séparateur-impulseur supérieur. De même, la base du moteur est collée ensemble (ou entièrement fabriquée à partir d'un morceau de polycarbonate de 6 mm)
Après le collage, les trous pour le raccord sont percés - un tube en laiton de 8 mm à travers les encoches sur la partie «séparateur»
La bonne vieille composition BF-4, quant à moi, permet un collage fiable du laiton et du polycarbonate
La base du moteur au bas de la pompe est collée avec la même colle. Dans la partie supérieure, des trous ( pas traversants!) Sont percés pour coller les écrous à rivets M3. Et la photo montre un mince joint en siliconeTest:
Le moment est donc venu de vérifier le travail fait maison. Pour cela, un banc d'essai a été assemblé à la hâte. Étant donné que des développeurs sérieux lisent les
enfants de Habr, dont l'apparence et la composition du stand peuvent provoquer des épisodes de panique, d'horreur et de désorientation, je voulais le cacher sous un spoiler ... mais j'espère que tout ira bien, puis ne dis pas que je ne t'ai pas prévenu, chers lecteurs !
Arduinka envoie un signal de contrôle PWM, dont le rapport cyclique est défini manuellement par une résistance variable, lit la valeur des registres de configuration et détermine également la vitesse de rotation à la fois via les registres de pilote internes (RPMrg) et le signal FG (RPMfg). Puissance du moteur - 12vDémarrage du moteur sans charge. Contrôle de vitesse et mesure d'énergieLe moteur démarre avec succès à partir de 6% du signal de commande PWM. Et à la fin de la vidéo, vous pouvez voir comment à des vitesses élevées les valeurs de vitesse dans le registre interne "se bloquent" dans l'intervalle de 10k à 13k tours, bien que la fréquence soit fixée par la sortie FG sans changement.
Au ralenti, tout est clair - ils ont obtenu des révolutions de 13k à une tension de 12v et une consommation de 0,16A. Mais une pompe à eau était en marche et je suis en train de chasser l'air. Alors la prochaine étape est d'escorter les membres du ménage dans la rue, pour ne pas gêner, et l'occupation de la salle de bain!
Hélas, je n'ai pas pris de mesures ni filmé de vidéos. Alors, passons avec une photo générale. Un chronomètre et une canette de 3L ont été ajoutés à l'équipement de mesure
Selon les résultats des mesures, nous avons obtenu un tel tableau
OrganigrammeEn conséquence - ce métier répond entièrement à mes exigences. Et en cas de panne, grâce à la conception pliable et à la présence de boîtiers avec 2.5HDD morts dans tous les ateliers de réparation / centres de service, il ne sera pas difficile de réparer. Et la voie vers la poursuite de la construction du NWO est ouverte! Alors, continuez!