Прибор для контроля электронного ТРВ(eev,lev и тп)

Автор Тема: Прибор для контроля электронного ТРВ(eev,lev и тп)  (Прочитано 170 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 34
  • Fujitsu - mhi - mdv
« Topic Start: 17 Декабрь 2018, 01:00:16 »
Небольшой приборчик для контроля электронного трв.


 Необходимые детали :
1. Дисплей OLED 2.4 SPI  (можно использовать более дешевые варианты)
2. Линейный стабилизатор 78L05
3. Микросхема unl2003a сборка Дарлингтона(или любой аналог)
4.  Пульт ДУ (IR) (в комплекте с фототранзистором )
5. Arduino mini pro 328p 5v
6. Мелкая рассыпуха: резисторы,конденсаторы (номиналы указаны на схеме)


Схема




Код

#include <U8glib.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <AccelStepper.h>



#define motorPin1  2 // IN1 на 1-м драйвере ULN2003
#define motorPin2  3 // IN2 на 1-м драйвере ULN2003
#define motorPin3  4 // IN3 на 1-м драйвере ULN2003
#define motorPin4  5 // IN4 на 1-м драйвере ULN2003

AccelStepper stepper(AccelStepper::FULL4WIRE,motorPin1, motorPin3, motorPin2, motorPin4); // Режим шага, тип мотора,подключенные пины

int x=500;                          // задаваемое количество шагов
float val = 200.0;                  // скорость
int receiver = 7;                   // IR-приемник на пине 7
IRrecv irrecv(receiver);            // create instance of 'irrecv'
decode_results results;             // create instance of 'decode_results'

/*  типы дисплеев */
U8GLIB_SSD1309_128X64 u8g(13,11,9, 10,8);       // SPI: scl-13 sda-11 cs-9 dc-10 reset-8
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C OLED A4;A5

void draw(void) // функция формата вывода данных на дисплей
 
  {
    u8g.sleepOff();
    u8g.setFont(u8g_font_6x12);
    u8g.setPrintPos(20,10);
    u8g.println("EEV CONTROLLER");
    u8g.drawLine(0,15,127,15);
    u8g.setPrintPos(0,30);
    u8g.print("Set Steps ");
    u8g.print(x);
    u8g.setPrintPos(0,45);
    u8g.print("CurrentPosition ");
    u8g.print(stepper.currentPosition()+3000);
    u8g.setPrintPos(0,60);
    u8g.print("Speed ");
    u8g.print( val,0);
   }
void backward(void) // функция вращения двигателя (открытие клапана eev)
  {
    if (x*val!=0)
    {
      pictureopen();
      stepper.moveTo(stepper.currentPosition()+x);
      stepper.setSpeed(val);
      stepper.runSpeedToPosition();
    while
      (stepper.distanceToGo()!=0)
      stepper.runSpeed();
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);
      digitalWrite(5,LOW);
    }
  }
  void foward(void) // функция вращения двигателя (закрытие клапана eev)
  {
    if (x*val!=0)
    {
      pictureclose();
      stepper.moveTo(stepper.currentPosition()-x);
      stepper.setSpeed(val);
      stepper.runSpeedToPosition();
    while
      (stepper.distanceToGo()!=0) stepper.runSpeed();
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);
      digitalWrite(5,LOW);
    }
  }

void translateIR(void) // преобразование команд пульта IR
 
  {
      switch(results.value)
    {   
       case 0xFFA857:       //стрелка ввниз
        if (x>0)
          {
             x=x-100;
          }
        break;
       
        case 0xFF4AB5:      // 0
        if (x>0)
          {
             x=x-10;
          }
        break;

       case 0xFF02FD:       //  OK
            x=0;
       break;

       case 0xFF629D:       // стрелка вверх
            x=x+100;
       break;

       case 0xFF42BD:       // *
            backward();
       break;

       case 0xFF52AD:       // #
            foward();
       break;

   
       case 0xFF22DD:      // стрелка влево
        if
            (val>0)
        {
            val=val-10.0;
        }
        break;
 
        case 0xFFC23D:      // стрелка вправо 
            val=val+10.0;
     
        break;
       
        case 0xFF6897:      //  1
             x=x+1;
        break;

        case 0xFF9867:      //  2
             x=x+2;
        break;

        case 0xFFB04F:      //  3
             x=x+3;
        break;

        case 0xFF30CF:      //  4
            x=x+4;
        break;

        case 0xFF18E7:      //  5
            x=x+5;
        break;

        case 0xFF7A85:      //  6
            x=x+6;
        break;

        case 0xFF10EF:      //  7
            x=x+7;
        break;

        case 0xFF38C7:      //  8
            x=x+8;
        break;

        case 0xFF5AA5:      //  9
            x=x+9;
        break;

      }
      delay(2);
   }

void closingeev()                      // изображение при закрытии ЕЕВ
  {
    u8g.sleepOff();
    u8g.setFont(u8g_font_10x20);
    u8g.setPrintPos(10,26);
    u8g.println("WAIT please");
    u8g.setPrintPos(10,52);
    u8g.print("closing EEV");
  }

void openeev()                        // изображение при открытии ЕЕВ
  {
    u8g.sleepOff();
    u8g.setFont(u8g_font_10x20);
    u8g.setPrintPos(10,26);
    u8g.println("WAIT please");
    u8g.setPrintPos(10,52);
    u8g.print("opening EEV");
  }
void pictureclose()                   // цикл отрисовки изображения,особенность  библиотеки u8g
 
  { 
      u8g.firstPage();
        do
          {
            closingeev();
          }
        while
          ( u8g.nextPage() );
   }

 

void setup()
 
  {
    pictureclose();
    irrecv.enableIRIn();
    stepper.setMaxSpeed(1000);                        // ограничение скорости шагов
    stepper.moveTo(stepper.currentPosition()-3000);   //
    stepper.setSpeed(val);                            //
    stepper.runSpeedToPosition();                     //  закрытие eev на 3000 шагов при подаче питания
 while                                                //
    (stepper.distanceToGo()!=0) stepper.runSpeed();   //
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    u8g.sleepOn();
   
  }

void pictureopen()    // цикл отрисовки изображения,особенность  библиотеки u8g
  {
     u8g.firstPage();
        do
          {
            openeev();
          }
        while
          ( u8g.nextPage() );
  }

void pictureloop()  // цикл отрисовки изображения,особенность  библиотеки u8g
 
  { 
      u8g.firstPage();
        do
          {
            draw();
          }
        while
          ( u8g.nextPage() );
   }

void loop()
  {
 
    pictureloop();          // отображение данных
  if
  (irrecv.decode(&results)) // ожидание ИК сигнала
    translateIR();          // обработка
  irrecv.resume();          // ожидание нового сигнала
 
  }


Gerber (разведенная плата) во вложении









Ремонт кондиционеров

wartandax

  • Администратор
  • *****
  • Сообщений: 2680
« Ответ #1: 16 Январь 2019, 20:13:02 »
А подробности можно, что контролирует? Как применять?
Всем, кому помог - пользуйтесь кнопками соцсетей слева экрана!
Сервис-мануалы для кондиционеров.

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 34
  • Fujitsu - mhi - mdv
« Ответ #2: 17 Январь 2019, 13:47:37 »
Питается прибор от 12vdc ( разъём 12vin ) это либо блок питания на 12vdc , либо стек из аккумуляторов 18650 с контроллером .
Подключается stepmotor - в кондеях это либо электронное трв , либо движки жалюзи внутр блока )
При подаче питания в случае прибор начинает сразу закрывать эл.трв на 3000 шагов, чтобы считать положение от закрытого состояния . Далее с помощью ик пульта можно управлять открытием или закрытием клапана : открыть / закрыть на определённое количество шагов. Требуется это обычно когда надо проверить работоспособность привода , открыть закрыть газовый контур для вакуумирования, опрессовки и тп.

Speed также устанавливается с пульта - скорость вращения , ограничена 1000 шагов в секунду .

Ремонт кондиционеров