1 (edited by alex___1967 2018-11-29 16:56:42)

Topic: Датчик давления газа и температуры газа

Поставил на авто газобаллонное оборудование и  у
меня были сомнения нормальное ли давление газа на разных режимах работы
двигателя.
Так как до сих пор никаких приложений под Андроид для ГБО Maxi2 не было,
решил задействовать для этого  приложение remotexy.com

вот этот проект:
http://remotexy.com/en/editor/18d10f65d … 9b7e9488c/


Я сделал, по сути , переходник, втыкающийся в разрыв проводов ,
идущих от датчика давления к "мозгам" ГБО. По этим проводам передаются данные давления газа, температуры газа и разряжения во впускном коллекторе двигателя.  Данные, передающиеся по этим проводам  ( аналоговые значения напряжения) оцифровываются Ардуинкой и передаются по  Блютуз на смартфон.

Принципиальная схема девайса, внешний вид девайса, подключение к атомобилю контрольного манометра и проверка точности показаний:
http://alex---1967.narod.ru/arduino_and_PS_02.html

ПО:

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>

// настройки соединения 
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600


// конфигурация интерфейса   
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,0,0,33,0,95,0,8,13,0,
  67,4,6,19,35,12,2,26,11,129,
  0,4,7,94,10,17,103,97,115,44,
  32,98,97,114,32,32,32,32,32,77,
  65,80,44,32,98,97,114,0,67,4,
  56,20,40,11,2,26,11,129,0,7,
  36,89,11,17,209,130,208,181,208,188,
  208,191,208,181,209,128,208,176,209,130,
  209,131,209,128,208,176,44,32,194,176,
  208,161,0,67,4,32,50,23,11,2,
  26,11 };
   
// структура определяет все переменные вашего интерфейса управления 
struct {

    // output variable
   char pressure_gas[11];  // =строка UTF8 оканчивающаяся нулем
   char pressure_map[11];  // =строка UTF8 оканчивающаяся нулем
   char temperatura_gas[11];  // =строка UTF8 оканчивающаяся нулем

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

double gas_pressure = 0;
double map_pressure = 0;
double gas_temperatura = 0;
double start_map_pressure = 0;
int value_pressure_gas = 0;
int value_pressure_map = 0;
int value_start_pressure_map = 0;
int value_temperatura_gas = 0;
int sensorPin1 = 1;
int sensorPin3 = 3;
int sensorPin5 = 5;


void setup() 
{
  RemoteXY_Init ();
 
  value_start_pressure_map = analogRead( sensorPin3);                  // определяем начальное атмосферное давление
  start_map_pressure = value_start_pressure_map / 247.6683 + 0.034779; // take start pressure
}

void loop() 

  RemoteXY_Handler ();
   
   value_pressure_gas = analogRead( sensorPin5);
   gas_pressure = value_pressure_gas  / 247.6683 + 0.034779 - start_map_pressure;
   dtostrf(gas_pressure, 0, 2, RemoteXY.pressure_gas);

   value_pressure_map = analogRead( sensorPin3);
   map_pressure = value_pressure_map  / 247.6683 + 0.034779 ;
   dtostrf(map_pressure, 0, 2, RemoteXY.pressure_map);

     value_temperatura_gas = analogRead( sensorPin1);
   gas_temperatura = 65.0 - value_temperatura_gas * 0.12219;
   dtostrf(gas_temperatura, 0, 1, RemoteXY.temperatura_gas);


}