форум VR-4 Клуб

форум VR-4 Клуб (http://www.vr-4.ru/forum/index.php)
-   Стайлинг, ЗВУК, Электрика VR-4 (http://www.vr-4.ru/forum/forumdisplay.php?f=39)
-   -   Ардуино и авто (http://www.vr-4.ru/forum/showthread.php?t=29728)

jam 19.09.2017 09:23

Изменил ссылку, сейчас видно ?

DimON02rus 19.09.2017 11:34

Цитата:

Сообщение от jam (Сообщение 804338)
Изменил ссылку, сейчас видно ?

Да видно. А в стоке в акпп у нас как то можно узнать температуру масла?

Андрей_GTO 19.09.2017 12:29

То, что "видит" мозг акпп всегла можно поглядеть шнурком или сканером.

DimON02rus 19.09.2017 13:08

Цитата:

Сообщение от Андрей_GTO (Сообщение 804350)
То, что "видит" мозг акпп всегла можно поглядеть шнурком или сканером.

Да я все хочу отдельные цифровые приборчики собрать на ОЖ и на АКПП температуры)

egyptyanin 19.09.2017 16:43

В одной точке :D (29,5°С) графики имеют одинаковые значения. Дальше не всё так уж и плохо. Самый интересный диапазон температур - различия 4-5°С.


Мои значения 25°С - 3,6700Вольт; 80°С - 1,9369Вольт.
Кто как понимает данные из мануала? почему два раза 25°С? И что это, нас в модификации записали? :D
Позже выяснилось, что кипятил датчик подключенный к овощным мозгам. Хз как сильно повлияет. Овощные выдают без датчика 4,59Вольт, вееровские - 4,61.

DimON02rus 20.09.2017 08:31

Jam, а имеется подобная табличка на датчик температуры ОЖ двигателя?

Андрей_GTO 20.09.2017 13:41

Цитата:

Сообщение от DimON02rus (Сообщение 804352)
Да я все хочу отдельные цифровые приборчики собрать на ОЖ и на АКПП температуры)

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

jam 21.09.2017 09:47

Цитата:

Сообщение от DimON02rus (Сообщение 804393)
Jam, а имеется подобная табличка на датчик температуры ОЖ двигателя?

Да, все есть

ArtLeg 23.09.2017 18:39

Подкину вам сюда свою "разработку" на коленке, по пневмоподвеске)) Делал как срочную замену испорченному покупному, т.к. кататься без него не мог физически.

Входные данные:
- Arduino UNO
- 4 датчика высоты (Land Rover)
- датчик нажатой педали тормоза (пока не задействован, нужна опторазвяка будет внешняя)
- датчик давления компрессора (пока не задействован)
- 6-7 реле (пока используется базис на 6 реле: ПЛ ПП ЗЛ ЗП колеса, клапан сброса и клапан подъема)

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

Ну и собственно сам код, может кому пригодится, в коде стоит много всяких задержек и отладочной информации:
Код:

// Settings for current car level

int targetFL = 50;
int amplitFL = 10;
int delayFL = 100;

int targetFR = 50;
int amplitFR = 10;
int delayFR = 100;

int targetRL = 50;
int amplitRL = 15;
int delayRL = 100;

int targetRR = 50;
int amplitRR = 15;
int delayRR = 100;

int stopdelay = 4000;                // ����� ��� ������� �� ������ �������
int maxpress = 12;                // �������� � �������� �����������


void setup()
{

  // define pinmode for relay:


        //Front Suspension valve
                pinMode(7, OUTPUT);        // (FL - Front Left)

                pinMode(8, OUTPUT);        // (FR - Front Right)

        //Rear Suspension valve
                pinMode(9, OUTPUT);        // (RL - Rear Left)
                pinMode(10, OUTPUT);
        // (RR - Rear Right)

        //Compressor and waste valve
                pinMode (11, OUTPUT);        // (UP - Compressor relay)
                pinMode (12, OUTPUT);        // (DOWN - Waste valve)
                pinMode (13, OUTPUT);        // (RES - Reciever Valve)
       
  // initialize serial communication at 9600 bits per second:


        Serial.begin(9600);

}



// the loop routine runs over and over again forever:


void loop()
{


  // read height sensors:

        int sensorFL = analogRead(A0);
        int sensorFR = analogRead(A1);
        int sensorRL = analogRead(A2);
        int sensorRR = analogRead(A3);

  // read pressure sensor:
        int sensorPress = analogRead(A4);

  // read stop sensor:
        int sensorStop = analogRead(A5);

  // Convert the analog reading (which goes from 0 - 1023) to a percent (0 - 100%):

  Serial.println("Sensor read complete");
 
        //height sensors
int levelFL = sensorFL * (100 / 1023.0);
               
int levelFR = sensorFR * (100 / 1023.0);
               
int levelRL = sensorRL * (100 / 1023.0);

int levelRR = sensorRR * (100 / 1023.0);

/*  Serial.print("FL");
  Serial.println(levelFL);
  Serial.print("FR");
  Serial.println(levelFR);
  Serial.print("RL");
  Serial.println(levelRL);
  Serial.print("RR");
  Serial.println(levelRR);*/

        //pressure sensor
                int pressure = sensorPress * (20 / 1023.0);
       
        //brake input
                bool brake;
                int brakepedal = sensorStop;
        //brake status
                if(brakepedal<500)
                { brake = false; }
                else
                { brake = true; };

  // Level Control       

//  Serial.print("Brake status:");
//  Serial.println(brake);
        // Delay while brake is pressed
        if(brake) { delay(stopdelay);
 };


// Front axle level control

do
{
  Serial.println("Checking up front axle");

levelFL = analogRead(A0) * (100 / 1023.0);
        if((levelFL <= (targetFL-amplitFL)) || (levelFL >= (targetFL+amplitFL)))
       
{
    Serial.println("Front left wheel out of range");
                // Setting Compressor or Dump valve
                if(levelFL <= (targetFL-amplitFL))
      { digitalWrite(11, HIGH);
        Serial.println("Compressor ON");
      }
    else
      { digitalWrite(12, HIGH);
        Serial.println("Dump valve ON");
      }
       
                // Continue until Finish
                        do {digitalWrite(7, HIGH);
      levelFL = analogRead(A0) * (100 / 1023.0);
              Serial.print("Current valueFL:");
              Serial.println(levelFL);
                        }
                        while (targetFL!=levelFL);
       
                // Disable valves
                        digitalWrite(7, LOW);
                        digitalWrite(11, LOW);
                        digitalWrite(12, LOW);
      Serial.println("FL Level control complete.");
        };
levelFR = analogRead(A1) * (100 / 1023.0);       
        if(levelFR <= (targetFR-amplitFR) || levelFR >= (targetFR+amplitFR))
       
{
    Serial.println("Front right wheel out of range");
                // Setting Compressor or Dump valve
                if(levelFR <= (targetFR-amplitFR))
                        { digitalWrite(11, HIGH);
        Serial.println("Compressor ON");
                        }
                else
                        { digitalWrite(12, HIGH);
        Serial.println("Dump valve ON");
                        }
       
                // Continue until Finish
                        do {
                          digitalWrite(8, HIGH);
      levelFR = analogRead(A1) * (100 / 1023.0);
              Serial.print("Current valueFR:");
              Serial.println(levelFR);
                    }
                        while (targetFR!=levelFR);
       
                // Disable valves
                        digitalWrite(8, LOW);
                        digitalWrite(11, LOW);
                        digitalWrite(12, LOW);
      Serial.println("FR Level control complete.");
        };
      delay(2000);
}
while (((levelFL <= (targetFL-amplitFL)) || (levelFL >= (targetFL+amplitFL)))||((levelFL <= (targetFL-amplitFL)) || (levelFL >= (targetFL+amplitFL))));       


  Serial.println("Checking up front axle - COMPLETE");

       
// Rear axle level control
do
{

Serial.println("Setting up rear axle");
levelRL = analogRead(A2) * (100 / 1023.0);
if(levelRL <= (targetRL-amplitRL) || levelRL >= (targetRL+amplitRL))
        {
  Serial.println("Rear left wheel out of range");   
                // Setting Compressor or Dump valve
                if(levelRL <= (targetRL-amplitRL))
      { digitalWrite(11, HIGH);
        Serial.println("Compressor ON");
      }
    else
      { digitalWrite(12, HIGH);
        Serial.println("Dump valve ON");
      }
                // Continue until Finish
                        do {digitalWrite(9, HIGH);
      levelRL = analogRead(A2) * (100 / 1023.0);
              Serial.print("Current valueRL:");
              Serial.println(levelRL);
                        }
                        while (targetRL!=levelRL);
               
                // Disable valves
                        digitalWrite(9, LOW);
                        digitalWrite(11, LOW);
                        digitalWrite(12, LOW);
      Serial.println("RL level control complete.");
        };


       
levelRR = analogRead(A3) * (100 / 1023.0);
if((levelRR <= (targetRR-amplitRR)) || (levelRR >= (targetRR+amplitRR)))

        {
  Serial.println("Rear right wheel out of range"); 
                // Setting Compressor or Dump valve
                if(levelRR <= (targetRR-amplitRR))
      { digitalWrite(11, HIGH);
        Serial.println("Compressor ON");
      }
    else
      { digitalWrite(12, HIGH);
        Serial.println("Dump valve ON");
      }
                // Continue until Finish
                        do {digitalWrite(10, HIGH);
          levelRR = analogRead(A3) * (100 / 1023.0);
              Serial.print("Current valueRR:");
              Serial.println(levelRR);
                        }
                        while (targetRR!=levelRR);
       
                // Disable valves
                        digitalWrite(10, LOW);
                        digitalWrite(11, LOW);
                        digitalWrite(12, LOW);
        };
  Serial.println("Setting up rear axle - COMPLETE");
  delay(2000);
}

while ((levelRL <= (targetRL-amplitRL) || levelRL >= (targetRL+amplitRL))&&(levelRR <= (targetRR-amplitRR) || levelRR >= (targetRR+amplitRR)));       

  // print out data to Serial:

        Serial.println("Air suspension status:");

        Serial.print("FL");
        Serial.print("\t");
        Serial.print("FR");
        Serial.print("\t");
        Serial.print("RL");
        Serial.print("\t");
        Serial.print("RL");
        Serial.print("\t");
        Serial.print("PRESS");
        Serial.print("\t");
        Serial.print("BRAKE");

        Serial.println();

  // print out current values

        Serial.print(levelFL, DEC);
        Serial.print("\t");
        Serial.print(levelFR, DEC);

        Serial.print("\t");
        Serial.print(levelRL, DEC);

        Serial.print("\t");
        Serial.print(levelRR, DEC);

        Serial.print("\t");
        Serial.print(pressure, DEC);
        Serial.print("\t");
        Serial.print(brakepedal, DEC);

        Serial.println();


  // print out desired values
        Serial.print(targetFL, DEC);
        Serial.print("\t");
        Serial.print(targetFR, DEC);

        Serial.print("\t");
        Serial.print(targetRL, DEC);

        Serial.print("\t");
        Serial.print(targetRR, DEC);

        Serial.print("\t");
        Serial.print(maxpress, DEC);
        Serial.print("\t");
        Serial.print(stopdelay, BIN);

        Serial.println();

       
delay(8000);


}


Asmter 23.09.2017 22:19

крутая тема!
а я делаю бюст контроллер специальный
хочу соленоидом так управлять
http://digitrode.ru/uploads/posts/20..._solenoid2.png
частота 20 гц будет подскажите всё правильно подсоединил чтобы не сжечь ничего?
а то там индукционные токи

jam 25.09.2017 12:40

В сток блоке вообще частота 14 Гц )) Схема норм, какой транзистор взял ?

Asmter 25.09.2017 12:53

Irf520ns

Отправлено с моего SM-G532F через Tapatalk

Asmter 25.09.2017 12:53

Диод любой подойдет?

Отправлено с моего SM-G532F через Tapatalk

evil_mivec 25.09.2017 15:15

Asmter, шотки бери быстродействующий..
Частота мне кажется чем выше тем лучше, не? Я бы транзистор дергал максильно быстро насколько ардуина может, 16кГц вроде

Asmter 25.09.2017 15:28

Соле6оид не успеет обработать

Отправлено с моего SM-G532F через Tapatalk

catalan 25.09.2017 16:01

сам клапан сколько по пачпорту - столько и дергайте, иначе развалите его ...
а диод по мощности диапазону

evil_mivec 25.09.2017 16:48

А причем тут соленоид? Там просто катушка, частота это же частота с которой ты будет дергать Gate мосфета?

Asmter 25.09.2017 18:15

ты считаешь что соленоид бюста чуть чуть приоткрывается управляясь по ШИМ?

sir_valentine 25.09.2017 19:02

Именно так. После того как частота перейдёт некоторый порог ШИМ-сигнал за счёт инертности механических частей соленоида будет восприниматься как аналоговый сигнал меньшей амплитуды.

Добавлено через 38 секунд
А чем выше частота тем ниже будут всякие флуктуации и случайные скачки.

Asmter 25.09.2017 19:08

14 гц частота сток соленоида какой тут шим?
да и положение сердечника относительно катушки как соленоид "понимает"

evil_mivec 25.09.2017 19:35

Asmter, конечно))))) а ты думаешь он дергается 14 раз в секунду? хахаха)))))))


Цитата:

Сообщение от sir_valentine (Сообщение 804867)
аналоговый сигнал меньшей амплитуды.

вот хорошо сказал, очень правильно. В результате широтно-импульсной модуляции тока поступающего на катушку хватает ровно для того что бы чуть приоткрыть соленоид.. ну или чуть-чуть приоткрыть. Зависит от duty - коэффициента заполнения по нашему

Добавлено через 57 секунд
Цитата:

Сообщение от jam (Сообщение 804821)
В сток блоке вообще частота 14 Гц

Андрей тоже правильно написал - в сток БЛОКЕ а не соленоиде))

Asmter 25.09.2017 19:59

я бросаю вам перчатку сударь!
если я проиграл пришлю вам жигулёвского литр
если выиграл - вы мне литр ходыженского

evil_mivec 25.09.2017 20:08

принято!)
меньше пива надо пить сударь! шлите вискаря!)))

Asmter 25.09.2017 20:12

подключай диод на соленоид а то у меня в ремонте машина

sir_valentine 25.09.2017 20:15

Пива не пью, мне -- байкал!


Текущее время: 23:15. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © 2006 - 2018, Galant / Legnum VR-4 Клуб, VR-4.ru