Миниатюрная помпа из мотора от 2.5" HDD
Добрый день, уважаемые читатели!
Сейчас я расскажу о своих мучениях изысканиях и что на текущий момент получилось.
Итак, понадобилась мне как то тонкая помпа для своих будущих задумок. Как основное требование — толщина не более 25мм. Поток ~100лч и напор ~2м водяного столба. Ни на тот момент, ни на текущий я так и не встретил подходящего кандидата, выпускаемого серийно и имеющего хотя бы номинальную доступность. (тут можете меня поправить если таковой вариант Вам известен)
Такое положение дел неминуемо привело к самому главному в жизни самодельщиков вопросу «а что если…» и тут понеслась!
Изначально было необходимо определится с сердцем затеи — мотором. Он должен быть весьма компактным и широко доступным — ведь в случае поломки потребуется оперативная замена! И тут на меня нагуглилось озарение в виде обширной темы одного из довольно известных форумов под стать моим запросам:
https://forums.overclockers.ru/viewtopic.php?f=47&t=331512
Ведь действительно, почти в любой мастерской по ремонту ПК и ноутбуков найдутся мертвые HDD и отдадут их либо за так, либо по весу. Сами моторы обладают высоким ресурсом и надежностью, отлично отбалансированы. А требования к компактности свели мой выбор к моторам из 2.5 дюймовых дисков:
Конечно, я не смог себе отказать в удовольствии поиграться и поковыряться в этих бесколлекторных моторах и произвести некоторые извращения, наподобие такого:
Но итогом всех этих действий стал весьма досадный факт — более крупные моторы от 3.5 дисков прекрасно работали под управление широко доступных и популярных драйверов, как например MTD6501C или TDA5140А даже после моих вмешательств, а вот так полюбившиеся мне от 2.5 дисков упорно отказывались стабильно работать в любом виде.
Однако, спустя некоторое время на глаза попался мне программируемый драйвер бесколлекторных моторов DRV10987. Так как решение интегрированное, то обвязка минимальна, зато имеет широкие возможности по заданию параметров как самого мотора, так и его управления.
Недолго думая, были заказаны сами контроллеры, разведены и заказаны платки под него:
Заказатьскачать.
Вот что получилось в итоге:
Доставать из монолитных корпусов моторчики в целости и сохранности я наловчился при помощи коронки по металлу и направляющих для неё из фанеры:
Кстати пару слов об основных параметрах, поигравшись с которыми я добился стабильной работы моторов:
— Kt константа (соотношение оборотов без нагрузки в сек. к напряжению) mV/Hz
— TCtrlAdv задержка (опережение?) коммутации обмоток
— RMS сопротивление обмоток
— FGCycle число магнитов
— StAccel1 и StAccel2 — ускорение мотора в начале (попытка раскрутить мотор вслепую до попытки детектировать ЭДС свободной фазы для управления)
— SWiLimitThr — ограничение по току
— HWiLimitThr — величина тока для определения заклинивания мотора
Заливал конфигурацию с помощью ардуино и простенького скетча (стоит иметь ввиду, шина I2C драйвера имеет уровень 3.3V):
#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();
pinMode(5, OUTPUT);
analogWrite(5, 0);
delay(4000);
}
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;
delay(7000);
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;
}
}
Вот с этой конфигурацией моторчики стабильно работали и даже под нагрузкой! А благодаря автозапуску не приходилось беспокоиться о вероятных остановках.
Так как самый важный вопрос был решён, на скору руку был набросан, вырезан и склеен корпус из листового поликарбоната корпус, на 3d принтере напечатана крыльчатка и из медной трубки изготовлены фитинги:
Как промежуточный итог:
Расход составил примерно 120л/ч.
Напор более 2м (из поднятой вверх на 2м трубки всё ещё бил небольшой фонтанчик)
При перекачке воды потребляет 0.67а (12v питание)
Но впереди ещё много работы, так как это лишь бы прототип на предмет проверки работоспособности идеи. А дальше нужно увеличивать эффективность, снижать уровень шума…
И если данная статья оказалась интересной и возможно полезной читателю, постараюсь поделиться будущими изысканиями!
- Bluetooth 5.0 TWS наушники FUNCL W1
- Bluetooth 5.0 aptX TWS наушники Funcl AI
- Инвертор CJ-3000Q (DC 12/24/48v в AC 220) чистый синус
- YH-CZ 12В 10А сетевой БП с выходом на прикуриватель
- Acoustic Research M200 Digital Audio Player
- 6 портовое ЗУ на 40W (Max 3.4A (Quick charge 5V3.0A; 9V2.3A; 12V1.5A) + Wireless Charging за 18,97$
- Зарядное BlitzWolf 30W QC3.0 Dual-Port USB Adapter BW-S6 за $8.79 (вместо $13-14)
- Наручные часы Bulova 96B230
- Поиск своего "летнего" ножа, или как я купил бабочку. Под(д)елка или копия ножа Benchmade 940-1.
- Кабель Earldom с двухсторонним USB за 1.59$