Электронный манометр собственного производства

Автор Тема: Электронный манометр собственного производства  (Прочитано 194 раз)

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

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Topic Start: 02 Декабрь 2018, 19:52:01 »
 :) Так как занимаюсь по роду своей деятельности ремонтом плат от кондиционеров, манометричку с собой не ношу: занимает место в рюкзаке. Но часто возникает необходимость проверить давление в контуре, поэтому пришла идея сделать для себя небольшой приборчик с датчиками давления.


датчики давления NSK-BD050I-197 (макс измеряемое давление 50 Bar);
2 датчика температуры ds18b20 (привязаны по адресам!);
контроллер arduino pro mini (china clone естественно  8) ), oled дисплей i2c;

программный код для arduino:



#include <DallasTemperature.h>
#include "U8glib.h"
#include <OneWire.h>

OneWire oneWire(7); //вход датчиков температуры
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {0x28, 0xFF, 0x1C, 0x54, 0xA0, 0x16, 0x04, 0x12 };  // адрес датчика 1
DeviceAddress Thermometer2 = {0x28, 0xFF, 0xBF, 0x63, 0xA0, 0x16, 0x03, 0x22 }; // адрес датчика 2

//U8GLIB_SSD1306_128X64 u8g(10, 9,8); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11) Инициализация Дисплея
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI
  float p1;
  float p2;
  float hps=0;
  float lps=0;
  float temp1C=0;
  float temp2C=0;
 int x=0;
void draw(void) {
  // graphic commands to redraw the complete screen should be placed here 
  //u8g.setFont(u8g_font_unifont);
  u8g.setFont(u8g_font_6x10);
 // u8g.setFont();
  //u8g_font_blipfest_07;
  u8g.setPrintPos(0,10);
  u8g.print("Temp/Pressure Device");
  u8g.drawLine(0,15,127,15);
  u8g.setPrintPos(0,30);
  u8g.print("Temperature1=");
  u8g.print(temp1C);
  u8g.write(176);
  u8g.setPrintPos(0,40);
  u8g.print("Low Pressure=");
  u8g.print(hps);
  u8g.print("Ba");
  u8g.setPrintPos(0,50);
  u8g.print("Temperature2=");
  u8g.print( temp2C);
  u8g.write(176);
  u8g.setPrintPos(0,60);
  u8g.print("High Pressure=");
  u8g.print(lps);
  u8g.print("Ba");
 
 }

void setup(void) {

  // flip screen, if required
  // u8g.setRot180();
 
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
 
 
}
void loop(void) {
  // picture loop
  u8g.firstPage();
  p1=analogRead(A0);
  p2=analogRead(A1);
  lps=12.5*((p1*5.0)/1023)-6.25;
  hps=12.5*((p2*5.0)/1023)-6.25;
  if (lps <= 0)
  lps=0;
  if (hps<=0)
  hps=0;
  sensors.requestTemperatures();
  temp1C=sensors.getTempC(Thermometer1);
  temp2C=sensors.getTempC(Thermometer2);
 
  do {
   
   
    draw();
  } while( u8g.nextPage() );
 
  // rebuild the picture after some delay
  //delay(50);
}

 это первый вариант прибора которым на данный момент пользуюсь я , далее коллегам делал варианты с TFT дисплеем 1.8'' цветным, выложу код и геребер файл на плату чуть позже)
Питание прибора организовано от «кроны» через линейный стабилизатор 78l05 ; в случае с TFT дисплеем требуется 3.3v ( питание подсветки ) то есть требуется ещё один стабилизатор на 3.3v ,использую ams1117




Код программы под  TFT дисплей



#include <UTFT.h>
#include <DallasTemperature.h>
#include <OneWire.h>
OneWire oneWire(3); //вход датчиков температуры
DallasTemperature sensors(&oneWire);

DeviceAddress Thermometer1 = {0x28, 0xFF, 0x86, 0xD8, 0x31, 0x17, 0x04, 0x94 };  // адрес датчика 1
DeviceAddress Thermometer2 = {0x28, 0xFF, 0xF9, 0xA3, 0x31, 0x17, 0x03, 0x29 }; // адрес датчика 2

extern uint8_t BigFont[];
//extern uint8_t SevenSegNumFont[];


UTFT myGLCD(ST7735_ALT, 11, 10, 9, 8, 12); //SDA;SCK;CS;RESET;A0 // Remember to change the model parameter to suit your display module!


float p1;
float p2;
float hps = 0.0;
float lps = 0.0;
int x = 0;
int temp1C = 0;
int temp2C = 0;

void setup()
{
  myGLCD.InitLCD(PORTRAIT);
  myGLCD.setFont(BigFont );
  myGLCD.clrScr();

}
void draw(void)
{
 
  myGLCD.setColor(0, 255, 255);
  myGLCD.drawLine(1, 1, 127, 1);
  myGLCD.drawLine(1, 1, 1, 159);
  myGLCD.drawLine(127, 1, 127, 159);
  myGLCD.drawLine(1, 159, 127, 159);
  myGLCD.drawLine(1, 84, 127, 84);
  myGLCD.drawLine(1, 86, 127, 86);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setColor(255, 0, 0);
  myGLCD.print("HP:", LEFT, 10);
  myGLCD.printNumF(hps, 1, RIGHT, 10, '.', 4);
  myGLCD.setColor(0, 255, 255 );
  myGLCD.print("LP:", LEFT, 50);
  myGLCD.printNumF(lps, 1, RIGHT, 50, '.', 4);
  myGLCD.setColor(0, 255, 0);
  myGLCD.print("T1", 7, 100);
  myGLCD.printNumI(temp1C, 50, 100, 4);
  myGLCD.setColor(255, 255, 0);
  myGLCD.print("T2", 7, 130);

  myGLCD.printNumI(temp2C, 50, 130, 4);

}
void loop()
{

  p1 = analogRead(A1);
  p2 = analogRead(A0);
  lps = 12.5 * ((p1 * 5.0) / 1023) - 6.25;
  hps = 12.5 * ((p2 * 5.0) / 1023) - 6.25;
  if (lps <= 0)
    lps = 0;
  if (hps <= 0)
    hps = 0;
  sensors.requestTemperatures();
  temp1C = sensors.getTempC(Thermometer1);
  temp2C = sensors.getTempC(Thermometer2);
  draw();
}

gerber во вложении

Cхема c TFT (jp1 дисплей, jp2 крона 9V , jp3 датчики температуры ds18b20, jp4 датчики давления)


 контроллер

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

SERVICEMAN

  • Старожил
  • ****
  • Сообщений: 492
« Ответ #1: 03 Декабрь 2018, 17:54:31 »
:) Так как занимаюсь по роду своей деятельности ремонтом плат от кондиционеров, манометричку с собой не ношу: занимает место в рюкзаке. Но часто возникает необходимость проверить давление в контуре, поэтому пришла идея сделать для себя небольшой приборчик с датчиками давления...
В кондиционерах электроника и гидравлика взаимосвязаны.
Электроника надежнее,  чем холодилка.
Т.е. надо не только замерить давление, но и долить-отлить фреон 10%-20% заправки, смотреть на реакцию системы.
О приборе, аналогичном ТЕСТО 570 с выводом графиков давления, Тпг, Тпо на экран, давно мечтал. Ничего аналогичного и дешевого нет.
Остановился на трансдюссере с питанием от батарейки +5V, накрученном на тройник для измерения давления.

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Ответ #2: 03 Декабрь 2018, 20:58:06 »
Слабенький трандюссер )) и зачем график по нему строить там прямая зависимость , 2 точки любые и все ) функция зависимости напряжение - давление в кармане )

SERVICEMAN

  • Старожил
  • ****
  • Сообщений: 492
« Ответ #3: 03 Декабрь 2018, 21:44:31 »
Слабенький трандюссер )) и зачем график по нему строить там прямая зависимость , 2 точки любые и все ) функция зависимости напряжение - давление в кармане )
Нормальный, для R22.
В идеале, достаточно 2 точек, в реале - бывает, меняется линейность характеристики, соответственно, врет контроллер и EEV.



Это тестирование было проведено для проверки точности работы контроллера.
Трансдюссеры от CAREL бывают и логарифмические.

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Ответ #4: 04 Декабрь 2018, 17:59:08 »
Бывают нелинейные , не спорю )

Ну а на графике видно что зависимость линейная ) погрешность измерения только присутствует ) в том же экселе аппроксимацию сделай   ( линия тренда ) все погрешности измерений отпадут )

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Ответ #5: 04 Декабрь 2018, 19:04:25 »
Не отходя от темы ) Анатолий , в главном посте есть код программы , схема , частичная ( чуть позже будет полная , допишу какие части прикупить на али , прикреплю Gerber файлы( разведённая плата ))  останется только спаять и докрутить что необходимо , хоть тройник ( датчик , кстати от v2 airstage Fujitsu и у других моделей, lbt8 например , высокого давления соотвественно ; имеет резьбу 1/4” r22 ) , контроллер свободно программируемый , хоть графики рисуйте с давления хоть в тетрис играйте , при желании можно переделать )

Мечтали о testo , вот более простой и дешевый вариант ) если знать где взять датчики ) дальнейшее обсуждения разнообразия датчиков давления бессмысленно , для этого лучше создать отдельную тему ) опять же если есть желание поставить карел с логарифмом - пожалуйста перебейте линейную функцию в коде программы и будет счастье )


Код тоже потерпит изменения , чуть позже выложу под TFT дисплей 1.8’
 



ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Ответ #7: 11 Декабрь 2018, 21:37:24 »
С 12барным датчиком каши не сваришь )

Смотри, что нашлось на AliExpress
https://s.click.aliexpress.com/e/b8gVvu82 На просторах китая можно найти дороже но с более приемлемыми параметрами )

SERVICEMAN

  • Старожил
  • ****
  • Сообщений: 492
« Ответ #8: 16 Декабрь 2018, 22:23:06 »
Смотри, что нашлось на AliExpress
https://s.click.aliexpress.com/e/b8gVvu82 На просторах китая можно найти дороже но с более приемлемыми параметрами )
Зимой, на объекте будет погрешность большая.
 Working TEMP. Range:         0-85   Celsius Degree
Storage Temperature Range:    0-100  Celsius Degree

Знаменитый тестовский термометр с крестом-датчиком трубки
врет при отрицательной Тул.

ELECTRONOOB

  • Новичок
  • *
  • Сообщений: 31
  • Fujitsu - mhi - mdv
« Ответ #9: 17 Декабрь 2018, 01:26:18 »
Поправил главное сообщение темы , а по поводу сенсоров давления ) ну если есть возможность найти 50 бар датчики - хорошо ( те которые в главном сообщении описаны ) ; 12 бар не вижу никакого смысла ставить , только если себе в авто собираете ))))

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