#1 08-08-2020 23:39:31

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Моторизованный кран с электроприводом для воды за 500 руб.

Как водится, слепил из не дорогих деталей и того что валялось под ногами в мастерской, довольно крутой девайс.
По сути, получился моторизованный кран с электроприводом для воды охлаждения/термостат жидкостный.
Запчасти:
1) Arduino UNO
2) Дисплей восьмиразрядный на MAX7219.
3) Градусник DS18b20.
4) Сервопривод от китайской игрушки.
5) Драйвер двигателя постоянного тока на L298N.
6) Сам кран + пневматический шланг.

Не в сети

#2 08-08-2020 23:44:23

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Сам кран с электроприводом.

15969049426279067234046943054583.jpg

15969049849461426360378702205081.jpg

15969050254503957287956830200167.jpg

Не в сети

#3 08-08-2020 23:48:43

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Блок электроники.

15969051453718296158679904197254.jpg
Драйвер мотора.

15969052100265064368753260069289.jpg
Ардуина.

15969052930305837955097910536031.jpg

Не в сети

#4 08-08-2020 23:57:45

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Собрал аппарат, для перегонки фруктовой браги. Сейчас, залил воду для эксперимента. Девайс, стабильненько держит темперетуру исходящей воды охлаждения, в диапазоне 45..50 градусов. На воде, очень стабильно работает! Я даже удивился. Скорее всего, даже не придётся устраивать PID регулятор. В режиме термостата +-5 градусов, всё довольно хорошо работает.

15969060608096234355148789283745.jpg

Не в сети

#5 09-08-2020 00:09:12

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Программа.

#include <max7219.h>
MAX7219 max7219;//DIN-12,CS-11,CLK-10
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 8
#define TEMPERATURE_PRECISION 9//Разрешающая способность DS18B20 12/9bit
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer, outsideThermometer;
String temp;
  char temp2[12];
//////////////MOTOR PORT///////
byte ena = 4;
byte in1 = 5;
byte in2 = 6;
void setup(void)
{
  Serial.begin(9600);
    pinMode( ena, OUTPUT );
    pinMode( in1, OUTPUT );
    pinMode( in2, OUTPUT );
  max7219.Begin();
  max7219.Clear();
  sensors.begin();
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(sensors.getDeviceCount(), DEC);
  Serial.println(" devices.");
  Serial.print("Parasite power is: ");
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");
  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0");
  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1");
  Serial.print("Device 0 Address: ");
  printAddress(insideThermometer);
  Serial.println();
  Serial.print("Device 1 Address: ");
  printAddress(outsideThermometer);
  Serial.println();
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);
  sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);
  Serial.print("Device 0 Resolution: ");
  Serial.print(sensors.getResolution(insideThermometer), DEC);
  Serial.println();
  Serial.print("Device 1 Resolution: ");
  Serial.print(sensors.getResolution(outsideThermometer), DEC);
  Serial.println();
}
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 11; i++)
  {
    // zero pad the address if necessary
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}

// function to print the temperature for a device
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if(tempC == DEVICE_DISCONNECTED_C) 
  {
    Serial.println("Error: Could not read temperature data");
    return;
  }
  Serial.print("Temp C: ");
  Serial.print(tempC);
  if (tempC>=50) tone(3,100,500);//Подаём тональный сигнал на порт 3, если температура выше 50 градусов.
  temp = tempC;
    temp.toCharArray(temp2, temp.length());    
}
// function to print a device's resolution
void printResolution(DeviceAddress deviceAddress)
{
  Serial.print("Resolution: ");
  Serial.print(sensors.getResolution(deviceAddress));
  Serial.println();
}
void loop(void)
{ 
  sensors.requestTemperatures();
  float tempC = sensors.getTempC(outsideThermometer);
  if(tempC == DEVICE_DISCONNECTED_C) 
  {
    Serial.println("Error: Could not read temperature data");
    max7219.DisplayText("HHHH", 0);
    
    tone(3,1000,500);
    delay(1000);
    return;
  }
  Serial.print("Temp C: ");
  Serial.print(tempC);
  temp = tempC;
    temp.toCharArray(temp2, temp.length());    
  max7219.DisplayText(temp2, 0); //0=left justify 1=right justify 
 sensors.requestTemperatures();
  float tempC1 = sensors.getTempC(insideThermometer);
  if(tempC1 == DEVICE_DISCONNECTED_C) 
  {
    Serial.println("Error: Could not read temperature data");
    
max7219.DisplayText("HHHH", 1);
    tone(3,1000,500);
    delay(1000);
    return;
  }
  Serial.print("Temp C: ");
  Serial.print(tempC1);
   if (tempC>=20) {
  if (tempC>=50) {
    tone(3,50,500);//Подаём тональный сигнал на порт 3, если температура выше 50 градусов.
  analogWrite( ena, 155 );
    // выставляем режим мотора - вращение по часовой
    digitalWrite( in1, HIGH );
    digitalWrite( in2, LOW );
    delay(100); // пауза 3сек
 digitalWrite( in1, LOW );
    delay(2000);
  } 
  if (tempC<=45) {
    tone(3,50,500);//Подаём тональный сигнал на порт 3, если температура выше 50 градусов.
  analogWrite( ena, 155 );
    // выставляем режим мотора - вращение по часовой
    digitalWrite( in2, HIGH );
    digitalWrite( in1, LOW );
    delay(100); // пауза 3сек
 digitalWrite( in2, LOW );
    delay(2000);
  } 
   }
  temp = tempC;
    temp.toCharArray(temp2, temp.length());    
  max7219.DisplayText(temp2, 1);
}

Не в сети

#6 09-08-2020 00:15:21

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

По идее, нужно перенести эту технологию на узел отбора, вместо стоп/старт.

Не в сети

#7 09-08-2020 00:43:48

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Соединительным механическим карданом, между клапаном и сервоприводом, служит силиконовая трубка. Оно же, фрикционная муфта.
15969085842266593254486661334585.jpg

Не в сети

#8 09-08-2020 00:48:04

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Ещё, не большая тайна этого девайса, что сервопривод, имеет небольшую степень свободы по оси вращения. Ось клапана, ходит туда/сюда при закручивании/откручивании крана. Этот сервопривод, может смещать немного свой концевик.

15969088579032717506539483949256.jpg

Не в сети

#9 09-08-2020 00:52:06

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Вот такой четырёхгранный вал выходной, этого сервопривода. Есть люфт 3..4 мм.

15969090946317006914921656309696.jpg

15969091754542830760507447327716.jpg

Не в сети

#10 15-09-2020 21:45:11

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Приехал мне сегодня с китая сервопривод MG995. На нём буду сервокран делать.
Сразу переделал сервопривод в сервомотор. Убрал ограничительный штифт на шестерне и откусил вал резистора внутреннего(рассоединил резистор с шестернёй выходной). Теперь, сервомотор умеет крутить в обе стороны бесконечно и останавливаться.

1600180951204359670581752829019.jpg

16001810126743388400195997323453.jpg

16001810691284436642146849594243.jpg

Не в сети

#11 15-09-2020 22:03:02

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Управление сервомотором.

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
void setup() {
  myservo.attach(5);  // подключаем MG995 к 5-у порту esp8266, оранжевый провод сервопривода(коричневый масса, красный +5В).
pinMode(5, OUTPUT);// назначаем пятый порт выводом
}
void loop() {  
  myservo.write(0); //крутим в одну сторону
  delay(3000);
myservo.write(180);//крутим в обратную сторону
  delay(5000);    
     digitalWrite(5, LOW);//останавливаем вращение            
  delay(5000);    
}

Не в сети

#12 15-09-2020 22:16:02

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

Пневмокран на 6мм мне обошёлся в 76 рублей. Сервопривод MG995, стоит порядка 280 рублей. Сам сервокран(без микрокомпьютера) уже влазит в 500 рублей. Посмотрим, что получится из этих узлов в реальной жизни.

Не в сети

#13 22-04-2021 00:14:34

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

16190250261304778346509675244362.jpg

16190250667111125107667920504119.jpg

1619025098046634571578336068629.jpg

Не в сети

#14 22-04-2021 00:15:55

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Моторизованный кран с электроприводом для воды за 500 руб.

16190251656156153865516463971937.jpg

Не в сети

Подвал раздела

Работает на FluxBB (перевод Laravel.ru)