Отображение на экран с 5v датчиков давления

evgta
Offline
Зарегистрирован: 02.09.2016

хотя есть вопрос что с ним будет когда грязью залепит

Илья73
Offline
Зарегистрирован: 06.09.2013

Можно один купить для пробы и испытывать в разных условиях (грязь, снег....)

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Илья73, спасибо за инфу, я тебе на драйве напишу, расспрошу еще. У меня много знакомых на пневме ездит на этих датчиках. Не хочу ставить по причине дороговизны, плюс надо колхозить крепление, плюс можно реально оторвать его. Плюс от кренов машины диагональных у людей его вдоль выламывало. 

У давления есть главная проблема какая. Если я запомню высоту допустим на 3 барах в подушке и кину мешок картошки, то 3 бара это будет ниже, тк машиной придавит и давление возрастет. Плюс к датчикам надо подвести трубки потоньше, т.к когда открываешь клапан(в ресивере 9 атмосфер) то проходит скачек давления и датчики немного троят. Тонкие трубки спасут. Но есть различные дорогущие американские системы, они работают на датчиках давления, в них теже косяки, но их раскупают за баснословные деньги. Я готов мириться с этой проблемой. Датчики давления реже выйдут из строя, грязью не забьются, не сломаются. Они гораздо практичнее. Но повторюсь, минус для меня самый главный в том - допустим на 3 барах в подушке и кину мешок картошки, то 3 бара это будет ниже, тк машиной придавит и давление возрастет.

Кстати за ссылку на али по датчикам ренжа спасибо! А то все продаваны местные их продают по 2500, а это на всю машину 10т, что очень накладно. Тут даже более менее бюджетно.

И кстати довольно красиво на экране все расположено, очень даже зачетнО! я бы только накладку в черный сделал, чтоб с машиной сочеталось больше)

Илья73
Offline
Зарегистрирован: 06.09.2013

Ну смотрите сами.

На драйве сообщение получил.

Датчики имеют резиновые сочлинения, их так просто не сломаешь. Тем более если на машинке по асфальту ездить, вообще проблем не будет.

Это для внедорожников сложности, ветки, палки (бывает и кузов пробивают)

У меня они на амортах стоят, там в кино видно.

Схему тут выложил. Но она под датчики высоты заточена для arduino nano. Файл для сплан 7.

Код тоже под датчики высоты.

#include "U8glib.h"

U8GLIB_ST7920_128X64 u8g(0, 1, 2, U8G_PIN_NONE); // настройка пинов

long dispMillis = 0;          // переменная обновления дисплея
float davlenie  = 0;          // переменная датчика давления
float bortset = 0;            // переменная напряжения бортовой сети
int visota = 0;               // установка высоты
int krenLevo = 0;             // переменная крена лево
int krenPravo = 0;            // переменная крена право
int kren = 0;                 // установка крена

int pl = 0;                   // переменная датчика высоты переднее левое
int pp = 0;                   // переменная датчика высоты переднее правое
int zl = 0;                   // переменная датчика высоты заднее левое
int zp = 0;                   // переменная датчика высоты заднее правое

int plp = 5;                  // выходы для управления клапанами
int pls = 4;

int ppp = 7;                  // к примеру если pls то это переднее левое спуск
int pps = 6;                  // или zpp означает заднее правое подъем

int zlp = 9;           
int zls = 8;

int zpp = 11;
int zps = 10;
int knp_visota = 12;         // кнопка выполнения установки высоты
int knp_kren = 13;           // кнопка выполнения установки крена





  //static unsigned char u8g_logo_bits[] U8G_PROGMEM = 


void setup() 
{
  u8g.setFont(u8g_font_6x10); // Выбор шрифта
  pinMode(3, OUTPUT);
  pinMode(plp, OUTPUT);
  pinMode(pls, OUTPUT);
  pinMode(ppp, OUTPUT);
  pinMode(pps, OUTPUT);
  pinMode(zlp, OUTPUT);
  pinMode(zls, OUTPUT);
  pinMode(zpp, OUTPUT);
  pinMode(zps, OUTPUT);
  pinMode(knp_visota, INPUT);       
  pinMode(knp_kren, INPUT);       

}


void loop() 
{
  pl = analogRead (A3);                    // читаем датчик высоты переднее левое колесо
  pl = map(pl, 400, 700, -10, 10);          // высота от 42см до 52см отцентра ступицы
  
  pp = analogRead (A4);                    // читаем датчик высоты переднее правое колесо
  pp = map(pp, 446, 731, -10, 10);          // высота от 42см до 52 см от центра ступицы 
  
  zl = analogRead (A5);                    // читаем датчик высоты заднее левое колесо
  zl = map(zl, 460, 805, -10, 10);          // одно деление соответсвует 41 единице АЦП 
  
  zp = analogRead (A6);                    // читаем датчик высоты заднее правое колесо
  zp = map(zp, 428, 791, -10, 10);          // одно деление соответсвует 41 единице АЦП 
  
  
  bortset = analogRead(A2);                   // измеряем напряжение бортовой сети
  bortset = bortset/65.2 ;
  
  davlenie = analogRead(A7);                   // измеряем давление в системе
  davlenie = map(davlenie, 102, 921, 0, 120);  // приводим значения к читаемым
  davlenie = davlenie/10 ;
  
  visota = analogRead(A0);                     // читаем резистор установки высоты
  visota = map(visota, 0, 1023, -10, 10);
  
  krenLevo = analogRead(A1);                   // читаем резистор установки крена в лево
  krenPravo = analogRead(A1);                  // читаем резистор установки крена в право
  krenLevo = map(krenLevo, 0, 1023, -9, 9);
  krenPravo = map(krenPravo, 0, 1023, 9, -9);
  
    if(davlenie < 6.0 && bortset >12.8)        // если давление ниже 6.0 кг/с и напряжение больше 12.8в то включаем компрессор накачки
     {digitalWrite (3,1);}            
    if(davlenie > 8.0 || bortset <10.5)          
     {digitalWrite (3,0);}                     // если давление выше 8.0 кг/с  или напряжение ниже 10.5в то выключаем компрессор накачки
     
  if(digitalRead(knp_visota) == HIGH)             // установка высоты автоматически
   {
    if(visota > pl) {digitalWrite (pls, HIGH);} else {digitalWrite (pls, LOW);}   // установка высоты переднее левое при установке высоты
    if(visota < pl) {digitalWrite (plp, HIGH);} else {digitalWrite (plp, LOW);}
   
    if(visota > pp) {digitalWrite (pps, HIGH);} else {digitalWrite (pps, LOW);}   // установка высоты переднее правое при установке высоты
    if(visota < pp) {digitalWrite (ppp, HIGH);} else {digitalWrite (ppp, LOW);}
    
    if(visota > zl) {digitalWrite (zls, HIGH);} else {digitalWrite (zls, LOW);}   // установка высоты заднее левое при установке высоты
    if(visota < zl) {digitalWrite (zlp, HIGH);} else {digitalWrite (zlp, LOW);}
    
    if(visota > zp) {digitalWrite (zps, HIGH);} else {digitalWrite (zps, LOW);}   // установка высоты заднее правое при установке высоты
    if(visota < zp) {digitalWrite (zpp, HIGH);} else {digitalWrite (zpp, LOW);}  
   }
    else if (digitalRead(knp_kren) == HIGH)                 // установка крена автоматически
   {
    if(krenLevo > pl) {digitalWrite (pls, HIGH);} else {digitalWrite (pls, LOW);}   // установка высоты переднее левое при установке крена
    if(krenLevo < pl) {digitalWrite (plp, HIGH);} else {digitalWrite (plp, LOW);}
    
    if(krenLevo > zl) {digitalWrite (zls, HIGH);} else {digitalWrite (zls, LOW);}   // установка высоты заднее левое при установке крена
    if(krenLevo < zl) {digitalWrite (zlp, HIGH);} else {digitalWrite (zlp, LOW);}
    
    if(krenPravo > pp) {digitalWrite (pps, HIGH);} else {digitalWrite (pps, LOW);}   // установка высоты переднее правое при установке крена
    if(krenPravo < pp) {digitalWrite (ppp, HIGH);} else {digitalWrite (ppp, LOW);}
    
    if(krenPravo > zp) {digitalWrite (zps, HIGH);} else {digitalWrite (zps, LOW);}   // установка высоты заднее правое при установке крена
    if(krenPravo < zp) {digitalWrite (zpp, HIGH);} else {digitalWrite (zpp, LOW);}
   }
    else
   {
     digitalWrite (pls, LOW);
     digitalWrite (plp, LOW);
     digitalWrite (pps, LOW);
     digitalWrite (ppp, LOW);
     digitalWrite (zls, LOW);
     digitalWrite (zlp, LOW);
     digitalWrite (zps, LOW);
     digitalWrite (zpp, LOW);
   }
  
  u8g.firstPage();
  if (millis() - dispMillis >200)
  do 
   {
    u8g.drawLine(46, 4, 46, 54);             // левая сторона
    u8g.drawLine(81, 4, 81, 54);             // правая сторона
    u8g.drawLine(48,56, 79, 56);             // низ
    u8g.drawPixel(47, 55);                   // закругление низ лево
    u8g.drawPixel(80, 55);                   // закругление низ право
    u8g.drawLine(58, 0, 69, 0);              // перед прямо
    u8g.drawLine(46, 4, 58, 0);              // перед лево косая
    u8g.drawLine(69, 0, 81, 4);              // перед право косая
    u8g.drawLine(44, 7, 45, 7);              //левое переднее колесо
    u8g.drawLine(42, 9, 44, 7);              //
    u8g.drawLine(42, 9, 42, 20);             //     
    u8g.drawLine(42, 20, 44, 22);            //
    u8g.drawLine(44, 22, 45, 22);            //
    u8g.drawLine(44, 38, 45, 38);            // левое заднее колесо
    u8g.drawLine(42, 40, 44, 38);            //
    u8g.drawLine(42, 41, 42, 50);            //
    u8g.drawLine(42, 51, 44, 53);            //
    u8g.drawLine(44, 53, 45, 53);            //
    u8g.drawPixel(56, 57);                   // заднее колесо
    u8g.drawPixel(56, 61);                   //
    u8g.drawPixel(71, 61);                   //
    u8g.drawPixel(71, 57);                   //
    u8g.drawLine(55, 58, 55, 60);            //
    u8g.drawLine(57, 62, 70, 62);            //
    u8g.drawLine(72, 60, 72, 58);            //
    u8g.drawLine(82, 7, 83, 7);              // переднее правое колесо
    u8g.drawLine(85, 9, 85, 20);             //
    u8g.drawLine(82, 22, 83, 22);            //
    u8g.drawPixel(84, 8);                    //
    u8g.drawPixel(84, 21);                   //
    u8g.drawLine(82, 38, 83, 38);              // заднее правое колесо
    u8g.drawLine(85, 40, 85, 51);             //
    u8g.drawLine(82, 53, 83, 53);            //
    u8g.drawPixel(84, 39);                    //
    u8g.drawPixel(84, 52);                   //
    u8g.drawStr(51, 15, "Kg/s");
    u8g.drawStr(51, 41, "Volt");
    u8g.drawLine(105, 25, 105, 36);
   u8g.setPrintPos(90, 35);                // вывод на дисплей значения крена влево
    u8g.print(krenLevo);
   u8g.setPrintPos(116, 35);               // вывод на дисплей значения крена вправо
    u8g.print(krenPravo);
   u8g.setPrintPos(53, 51);               // вывод на дисплей напряжения бортовой сети
    u8g.print(bortset,1);
   u8g.setPrintPos(56, 26);              // вывод на дисплей давления в системе
    u8g.print(davlenie,1);
   u8g.setPrintPos(56, 26);
    u8g.setPrintPos(16, 35);              // вывод на дисплей установки высоты    
   u8g.print(visota);
       u8g.drawFrame(6, 9, 32, 13);
    u8g.setPrintPos(16, 19);              // вывод на дисплей датчика высоты высоты переднее левое   
   u8g.print(pl);
       u8g.drawFrame(90, 9, 32, 13);
    u8g.setPrintPos(99, 19);              // вывод на дисплей датчика высоты высоты переднее правое   
   u8g.print(pp);
       u8g.drawFrame(6, 40, 32, 13);
    u8g.setPrintPos(16, 50);              // вывод на дисплей датчика высоты высоты заднее левое   
   u8g.print(zl);
       u8g.drawFrame(90, 40, 32, 13);
    u8g.setPrintPos(99, 50);              // вывод на дисплей датчика высоты высоты заднее правое   
   u8g.print(zp);
    
    if(digitalRead (plp) == HIGH) {u8g.drawFrame(6, 22, 32, 2);}
    if(digitalRead (pls) == HIGH) {u8g.drawFrame(6, 7, 32, 2);}
    
    if(digitalRead (ppp) == HIGH) {u8g.drawFrame(90, 22, 32, 2);}
    if(digitalRead (pps) == HIGH) {u8g.drawFrame(90, 7, 32, 2);}
    
    if(digitalRead (zlp) == HIGH) {u8g.drawFrame(6, 53, 32, 2);}
    if(digitalRead (zls) == HIGH) {u8g.drawFrame(6, 38, 32, 2);}
    
    if(digitalRead (zpp) == HIGH) {u8g.drawFrame(90, 53, 32, 2);}
    if(digitalRead (zps) == HIGH) {u8g.drawFrame(90, 38, 32, 2);}
    
    
    
   
   dispMillis = millis();
   }
   
  while(u8g.nextPage()); 
} 

 

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Илья73 пишет:

Ну смотрите сами.

На драйве сообщение получил.

Датчики имеют резиновые сочлинения, их так просто не сломаешь. Тем более если на машинке по асфальту ездить, вообще проблем не будет.

Это для внедорожников сложности, ветки, палки (бывает и кузов пробивают)

 

 

Они выламывались в "колене". Ну и ветки, хлам бывает на дороге валяется такой, что реально обломать. Пока решил на них, если совсем не понравится, перейду на датчики ренджа, это пока самый оптимальный вариант без гемора.

 

За код и схему поклон до земли :) Очень полезно будет!!

evgta
Offline
Зарегистрирован: 02.09.2016

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

И вопрос насколько меняется давление в подушке для небольшого увеличения высоты? там ведь по большому счету надо не давление увеличивать а объем газа в подушке.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Если ультразвуком смотреть на землю, то не подойдет, потому что у нас в россии дороги - грязь, ямы, бугры, точность будет сбиваться. А для сбития сход развала разница в полсантиметра будет существенная. А оттуда и жор резины.

Вообще есть 2 типа подушек. "рукава" и бублики. Рукава это как.. мужской половой орган) Там с повышением количества воздуха он расправляется больше. Но так как при спуске\подьеме он складывается по разному, а еще и при росте давления не факт что он так же расправится. Там только по датчикам положения кузова.

Но если бублики там все просто, воздух наполняется, растет давление, подушка идет вверх. 

Плюс подушки разного размера, машина разного веса. Но в среднем где то 1 бар на сантиметра 2 наверно. Приблизительно.

evgta
Offline
Зарегистрирован: 02.09.2016

ултразвук напрявлять на элементы подвески с кузова , или на оборот, естественно не на землю.

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

я знаю что их 2 типа. 

1 тут тоже если брать средние значения по высоте тоже надо только объемом воздуха регулировать.

и второй тип

 

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

evgta пишет:

начинаем пускать воздух в подушки зад приподнимается, перекрываем воздух, и давление в подушках останется тоже что и до подъема, ведь масса задка не изменилась

Если ты пускаешь воздух в подухи, то давление полюбому растет. Подуха ведь не растягиваеся, как шарик, она скорее жесткая как бутылка. И соответственно если ты в бутылку надул немного, наступил, она прогнулась, а если больше воздуха надуешь, то давляк вырастет и соответветнно меньше прогнется под тобой

Это я про 1 тип подушки пишу, я на них строю сейчас.

А вот когда ты ушел, допустим у тебя где то травит и машина подспустила.  Ты знаешь что у тебя ездовое где то 3 атмосферы. И тут ты такой подошел, мешок цемента кинул и начинаешь накачивать, то на 3 атмосферах у тебя будет ниже

Второй момент, в процессе езды не хочу настраивать автоматику, это очень сложно разработать все возможные варианты событий. Такое бы доверил только автоконцернам, тк могу проводить испытания. Я хочу чтоб на месте выставил как надо автоматикой и поехал и чтоб автоматика не вмешивалась пока я не нажму кнопку.

evgta
Offline
Зарегистрирован: 02.09.2016

а если взять другой пример, например пакет полиэтиленойвый положить в кастрюлю, надуть его на треть, то высота получится 5см, а если надуть на половину 10см, а ведь давление в нем не изменилось, изменилось в нем только кол-во воздуха. вот к этому веду, что по датчикам давления ориентироваться сильно коряво получается

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

evgta пишет:

а если взять другой пример, например пакет полиэтиленойвый положить в кастрюлю, надуть его на треть, то высота получится 5см, а если надуть на половину 10см, а ведь давление в нем не изменилось, изменилось в нем только кол-во воздуха. вот к этому веду, что по датчикам давления ориентироваться сильно коряво получается

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

Т.е. тебе надо сначала пакет полностью надуть и когда ты в нем будешь преодолевать все выше и выше давление, тогда уже будет похоже на наш эксперимент. Пустая подушка, это ты лежишь на земле. Как и полпакета, как и треть пакета, ты все еще лежишь на земле.

evgta
Offline
Зарегистрирован: 02.09.2016

Непоняли. Вес машины одинаков независимо от ее высоты. Площадь дна и верха подушки одинакова независмо от ее высоты . Меняется только высота. Соответственно если перемножить высоту и площадь получим объем. Изменив высоту изменим объем но не площадь. А ведь давление это имеено усилие на единицу площади.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

evgta пишет:
Непоняли. Вес машины одинаков независимо от ее высоты. Площадь дна и верха подушки одинакова независмо от ее высоты . Меняется только высота. Соответственно если перемножить высоту и площадь получим объем. Изменив высоту изменим объем но не площадь. А ведь давление это имеено усилие на единицу площади.

Если на бубликах, высота подушки она неизменна. Просто когда нет давления ее прижимает. Если накачиваешь, т.е делаешь давление, она распрямляется, но не надувается то. 

Обьем воздуха в подушке он всегда постоянный, как и в пакете. давление только разное. Чтоб проще - литровая бутылка. Обьем ее всегда будет литр, неважно сколько воздуха. 

evgta
Offline
Зарегистрирован: 02.09.2016

А с чего взяли что объем подушки одинаков? Чем выше высота тем больше ее объем.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

evgta пишет:
А с чего взяли что объем подушки одинаков? Чем выше высота тем больше ее объем.

Как может изменяться обьем жесткого предмета? вазы, бутылки и тд? она ж не растягивается

Высота машины изменяется изза того, что подушка становится жестче, и следовательно меньше просаживается. До определенного момента она поднимает машину. Допустим до 6 бар она будет подниматься, дальше она будет неизменна по высоте. Но будет жесткая и на кочках "прыгать"

Вот к примеру подушки, которые изготовили мне. Они даже в разобранном состоянии такой высоты, и на снятой машине если я буду в них "дуть" их размеры не увеличатся. А когда на них надавлю, то на разном давлении они по разному просядут

evgta
Offline
Зарегистрирован: 02.09.2016

Ну как бы подушка в нормальном положении это примерно середина между сжатым и полностью разжатым состоянием(соответственно будет разным и объем подушки). Если подушка будет полностью разжата. То это неправильно . Получится подвеска будет на упорах в крайнем верхнем положении. И будет "приятная чувствительность дорожного полотна"

Ладно. Опытным путем увидите что давление в подушках между мимальной высотой и максимальной ( но не на упорах) будет отличаться незначительно. Но конечно будет. Т.к при Увеличении высоты подушки уменьшается ее диаметр а соответсвенно прощадь и понадобится немного приподнять давление.

Илья73
Offline
Зарегистрирован: 06.09.2013

Стоит всетаки прислушаться, высоту мерить по датчикам высоты пусть то ультразвук или нога кузнечика от лэндровера.

Иначе это все выльется в беготню с рулеткой вокруг машины.

По моему опыту в среднем положении подушке достаточно небольшого изменения давления, буквально на солнышке нагрелась слегка и высота сразу меняется. В верхем положении такого явного эфекта нет.

Да, и установка высоты только на месте, на ровном асфальте.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Илья73 пишет:

Стоит всетаки прислушаться, высоту мерить по датчикам высоты пусть то ультразвук или нога кузнечика от лэндровера.

Иначе это все выльется в беготню с рулеткой вокруг машины.

По моему опыту в среднем положении подушке достаточно небольшого изменения давления, буквально на солнышке нагрелась слегка и высота сразу меняется. В верхем положении такого явного эфекта нет.

Да, и установка высоты только на месте, на ровном асфальте.

Тут полностью согласен. Вполне понимаю гемор с давлением. Пока хочу так собрать, поезжу посмотрю. Америкосовские тюнинг системы работают по давлению и довольно неплохо. Значит есть к чему стремиться.

Ну а по теме лендроверов - вот тема, которая постоянно вылазит в сообществах пневмосистем на этих датчиках. И далеко не единичные случаи. https://www.drive2.ru/c/467434829634339559/

Я пока соберу\настрою на датчиках давления, сильно будет напрягать - перейду уже на лендроверы. Тем более датчики давления уже куплены, надо ж попробовать поездить.

Илья73
Offline
Зарегистрирован: 06.09.2013

Буду только рад если получится все нормально. Правда!

Датчики давления нормальные, только обратите внимание на диапазон температур его работы. Вроде как ниже нуля должен врать безбожно. Но у меня минимум было около -5, вроде показывал нормально.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

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

1- я ведь могу питание ардуины uno\mega\nano подключать напрямую к сети автомобиля (11-15 вольт предельные значения) без преобразователей и стабилизаторов дополнительных?

2- Для управления катушками ардуиной, могу ли я подключать катушку по такой схеме? Противотоков и др не будет? надо ли диод добавить между выводами катушки? И транзистора TIP122 ведь хватит для управления катушкой?

И если да по схеме, то мне минус транзистора подключать к ардуине или к внешнему минусу(не погорят ли контакты на плате от нагрузок проходящих через ее от управления катушками). Катушек всего 8, одновременно нажатых будет не более 4.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

по первому - плохая идея, надо обрезать импульсы на уровне вольт 15, по второму - катушку заблокировать диодом, по транзистору не скажу, смотрите ток катушки, ток транзистора по даташиту

Минус - силовой, только в силовую часть, не к ардуине

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

ua6em пишет:

по первому - плохая идея, надо обрезать импульсы на уровне вольт 15, по второму - катушку заблокировать диодом, по транзистору не скажу, смотрите ток катушки, ток транзистора по даташиту

Минус - силовой, только в силовую часть, не к ардуине

По первому - LM2596 за него уже спрашивал, именно через него и надо это делать как понимаю. 

2 - по транзистору я ведь правильно понимаю, что не нужно реле ставить, если ток подобран нормально? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

в принципе не нужно, но я бы поставил, так как блоки реле продаваемые на али включаются через опторазвязку

Илья73
Offline
Зарегистрирован: 06.09.2013

Защитами лучше пользоваться, лишним не будет.

Я с 12-15 в.сети авто понижаю импульсником до 7в. и потом уже 7805 до 5в. меньше нагрузка на 7805 и тепла меьше, а импульсы вч она хорошо отсеивает, контроллер не любит импульсы.

Да и датчики лучше отдельно запитать от контроллера, на датчиках кз словить легко, а кз для 7805 это мгновенная её смерть, и за ней сразу контроллер улетает на тот свет.

Диоды лучше ставить на катушки, и если и кнопки будут то и под кнопки предусмотреть диоды, иначе контакты на кнопках подгарать будут.

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Илья73 пишет:

Защитами лучше пользоваться, лишним не будет.

Я с 12-15 в.сети авто понижаю импульсником до 7в. и потом уже 7805 до 5в. меньше нагрузка на 7805 и тепла меьше, а импульсы вч она хорошо отсеивает, контроллер не любит импульсы.

Да и датчики лучше отдельно запитать от контроллера, на датчиках кз словить легко, а кз для 7805 это мгновенная её смерть, и за ней сразу контроллер улетает на тот свет.

Диоды лучше ставить на катушки, и если и кнопки будут то и под кнопки предусмотреть диоды, иначе контакты на кнопках подгарать будут.

Понял, спасибо. На кнопках конечно диоды будут стоять. 

Экран решил обновить, думаю на этом симпатичнее будет.

Вопрос есть с переменной map. Допустим делаю такую команду. Это для отображения в процентах. Но хотел сделать преобразование в бары, и мне нужно чтоб была целая часть и 1-2 цифры дробная. Допустим 2.3-6.5 и тд. Но Map дает только целочисленные значения делать. Возможно ли как то сделать с дробью?

sensor1 = map(sensor1, 65, 370, 0, 100);

evgta
Offline
Зарегистрирован: 02.09.2016

переменная должна быть float

тогда например 325 делим на 10 получаем 32,5

http://arduino.ru/Reference/Float

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

evgta пишет:

переменная должна быть float

тогда например 325 делим на 10 получаем 32,5

http://arduino.ru/Reference/Float

О, это круто) Сделал вот таким образом, думаю не сильно загадил систему переменными. 

 sensor1 = map(sensor1, 65, 370, 0, 70);
 float z=sensor1/10.0;
display.print(z,1);

 

sir_kimas
Offline
Зарегистрирован: 01.08.2016
#include <Wire.h>                            // подключаем библиотеку для работы с шиной I2C
#include "LCD_1602_RUS.h"                    // подключаем библиотеку для работы с LCD дисплеем с русским языком
//*****************************************

LCD_1602_RUS lcd(0x3F, 20, 4);               // объявляем  переменную для работы с LCD дисплеем
//*****************************************

int sensor = A1;
int dig_out;
//*****************************************
long previousMillis = 0;        // храним время
long interval = 1000;          //задержка подсветки



void setup()
{
  Serial.begin(9600);
  pinMode(sensor, INPUT);                    // Определяем вход
  lcd.init();                                // инициируем LCD дисплей
  lcd.backlight();                           // включаем подсветку LCD дисплея
}
void loop()
{
  float dig_out = analogRead(sensor = A1);    // Считываем входное напряжение
  dig_out = dig_out * 5.0 / 1023.0;           // Преобразуем значение
  dig_out = 1.111 * dig_out - 0.555;
  
  if (dig_out < 0 )
{
     ('-',false); 
     dig_out*=0;
}

  Serial.println(dig_out);
  lcd.setCursor(8, 0);
  lcd.print("MPa");                          // Выводим надпись
  lcd.setCursor(8, 1);
  lcd.print(dig_out);                         // Выводим давление
  
  delay(500);                                // Время задержки
}

 

Ujine
Offline
Зарегистрирован: 06.04.2017

А как насчет разброса значений возвращаемых analogRead(Aх)

у меня получается примерно такая картина:

716

645
660
671
3341
3463
3465
658
405
711
710
663
3218
3485
3130
662
А как с этим бороться может кто подскажет.
evgta
Offline
Зарегистрирован: 02.09.2016

откуда в дуине значения выше 1023 на аналоге?

Ujine
Offline
Зарегистрирован: 06.04.2017

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

Alexandr_sk8
Offline
Зарегистрирован: 27.02.2017

Разгребся с делами и решил дальше немного двигаться.Есть пару вопросов по работе кода. Сейчас думаю над работой автоматики.

 else if (digitalRead(knp_kren) == HIGH)                 // установка крена автоматически

Вот эту функцию я не особо понимаю, для чего выставляешь крен. Обьясните плз)

Сама автоматика выставления высоты, я так понимаю работает в этом коде. Только вот он поднимает сразу все стойки или сначала одну ось, затем 2, 3,4 по очереди или сразу все поднимает? Как я понял логику - пока кнопка нажата, он по строчно пробегает и включает-выключает реле, как только отпускаешь, цикл заканчивается. и если выкинуть крен, то надо оставить  строки такие 

if(digitalRead(knp_visota) == HIGH)             // установка высоты автоматически
   {
    if(visota > pl) {digitalWrite (pls, HIGH);} else {digitalWrite (pls, LOW);}   // установка высоты переднее левое при установке высоты
    if(visota < pl) {digitalWrite (plp, HIGH);} else {digitalWrite (plp, LOW);}
   
    if(visota > pp) {digitalWrite (pps, HIGH);} else {digitalWrite (pps, LOW);}   // установка высоты переднее правое при установке высоты
    if(visota < pp) {digitalWrite (ppp, HIGH);} else {digitalWrite (ppp, LOW);}
    
    if(visota > zl) {digitalWrite (zls, HIGH);} else {digitalWrite (zls, LOW);}   // установка высоты заднее левое при установке высоты
    if(visota < zl) {digitalWrite (zlp, HIGH);} else {digitalWrite (zlp, LOW);}
    
    if(visota > zp) {digitalWrite (zps, HIGH);} else {digitalWrite (zps, LOW);}   // установка высоты заднее правое при установке высоты
    if(visota < zp) {digitalWrite (zpp, HIGH);} else {digitalWrite (zpp, LOW);}  
   }

И добавить в конце вот это, чтоб он реле выключил

 else
   {
     digitalWrite (pls, LOW);
     digitalWrite (plp, LOW);
     digitalWrite (pps, LOW);
     digitalWrite (ppp, LOW);
     digitalWrite (zls, LOW);
     digitalWrite (zlp, LOW);
     digitalWrite (zps, LOW);
     digitalWrite (zpp, LOW);