Вопрос от новичка. Вообще новичка. Ардуино как контроллер управления пневмоподвеской?

eastpoint
Offline
Зарегистрирован: 04.01.2013

Добрый день.

Весь мой опыт программирования - Basic, ассемблер на БК0010-01, все освоено  20 лет назад. И примерно тогда же позабыто.

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

А в результате нужно устройство, которое будет читать показания четырех датчиков угла подвески, на выходе которых напряжение 0 - 5 В.  Контроллер должен иметь возможность предварительной настройки: положение подвески "внизу" - данные датчиков разные, но они должны быть сохранены параметры положения подвески. Далее подвеска подкачивается в среднее положение, а параметры датчиков сохраняются как соответствующие ей. И т.п. для верхнего положения.

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

 

Скажу откровенно: я потеряю на этой разработке времени, т.к. придется пройти процесс обучения, а сами знаете - сначала сотня глюков и вопросов "я заливаю так, а оно что-то не то", потом первый код будет кривым и некрасивым. Потом его улучшишь. Потом, когда научишься писать красиво - уже и не разберешь что и где было.

Потому - лучше заплачу тому, кто разработает по ТЗ.

Либо уж уверьте, что "все получится" :)

Спасибо.

maksim
Offline
Зарегистрирован: 12.02.2012

Могу и написать по ТЗ и помочь в разработке/выборе железа (перенос МК на плату, разводка, выбор "рассыпухи"). Вопрос цены за мои услуги, скажу сразу - не дешево, если интерсно:

скайп: maksimkstovo1985

 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>И под силу будет ли вообще результат.<<

Я делал контроллер пневмоподвески на заказ.  Это большая, сложная и трудоемкая работа .

Начните с "Чего по проще".

>> потом первый код будет кривым и некрасивым.<<

Сто первый будет таким же. Не все так быстро.

>>Потому - лучше заплачу тому, кто разработает по ТЗ.<<

ТЗ завист от того насколько точно вы опишите ВСЕ что вам нужно.

Обычно бывает так что первоначальное ТЗ и конечное устройство даже не похожи друг на друга.

Первый опыт создания контроллера пневмоподвески начинился так же с трех положений (предустановок) , а закончился автоматической системой корректировки и автоматической самодиагностикой устройства.

eastpoint
Offline
Зарегистрирован: 04.01.2013

Цена за ваши услуги - то, сколько вы назовете, а так - готовый контроллер accuair - 600 долларов, уже готовые в россии - 200 (не видел не щупал, только слышал) и 450 долларов - обещается что будет все что нужно.

Т.е. иными словами говоря - с нуля не возметесь, наверно. А сразу готовое ТЗ я не могу вам дать по простой причине - как только я захочу завязать стандартную приборку на отображение текущего режима работы подвески (моя имеет "карту" автомобиля и на ней отображался режим подвески TEM-S, который легко адаптировать для отображения состояния пневмы - просто подавая питание на соответствующий ввод на приборку), так сразу ТЗ поменяется. А кроме этого столько нюансов, которые будут "выловлены" в процессе эксплуатации и настройки, что сразу о них и не подумаешь даже.

Т.е. лучше посоветуйте комплект и сопутствующее железо. Я правда не столь деревянный. Тот же БК0010 у меня был подключен к древнему принтеру Sintra - железный ящик весом килограмм 50. Неужели не разберусь и здесь..

eastpoint
Offline
Зарегистрирован: 04.01.2013

Скажу откровенно - я готов и дольше поездить. Думаю, программную часть осилю. Не сразу, постепенно. 

А вот если уже разработали - может продается?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Вы озвучте тот необходимый набор функций. Продумайте все хорошо. 

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

Все это выводилось на дисплей и управлялось двумя кнопками.

>>А вот если уже разработали - может продается?<<

Не совсем понял. Если вы имеете в иду мой контроллер , то да наверное продается. У заказчика был прицел на коммерческое изготовление устройства.

eastpoint
Offline
Зарегистрирован: 04.01.2013

да, имелось ввиду - продается ли готовый контроллер и стоимость оного. Те функции которые вы описали - их достаточно вполне

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>да, имелось ввиду - продается ли готовый контроллер и стоимость оного.<<

Я не знаю. С тем закзчиком я давно не контактирую.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Ну что будем работать ? Кстати как у вас дела с электроникой, ЛУТом , пайкой и т.д. ?

eastpoint
Offline
Зарегистрирован: 04.01.2013

паяльник держать умею, распаять могу, плату рисовал цапон-лаком, травил. Думаю, утюгом не сложнее перенести.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Ну и хорошо. С прошлым заказчиком я работал так.

Я писал программу, и консультировал его что купить как собрать/подключить  как залить программу и т.д.

Вас такой вариант устраивает ?

Если да то мне нужно несколько дней для подготовки железа.  Все остальное в личной переписке 

heruvim219@mail.ru

 

eastpoint
Offline
Зарегистрирован: 04.01.2013

Сначала бы на берегу определиться - во сколько это выльется и смогу ли я модифицировать ПО в дальнейшем.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Сначала бы на берегу определиться <<

Вот и я об этом. О таких вещах не принято говорить в открытой переписке.

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

>>смогу ли я модифицировать ПО в дальнейшем<<

Зависит только от вас. Я могу детально откоментировать исходник.

Так же , в программе будут участки кода которые требуют настройки именно под ваши параметры.

Т.к. я не могу воссоздать у себя полный прототип устройства (только приблизительный стенд-макет).

italius
Offline
Зарегистрирован: 19.12.2011

eastpoint пишет:

Добрый день.

Весь мой опыт программирования - Basic, ассемблер на БК0010-01, все освоено  20 лет назад. И примерно тогда же позабыто.

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

А в результате нужно устройство, которое будет читать показания четырех датчиков угла подвески, на выходе которых напряжение 0 - 5 В.  Контроллер должен иметь возможность предварительной настройки: положение подвески "внизу" - данные датчиков разные, но они должны быть сохранены параметры положения подвески. Далее подвеска подкачивается в среднее положение, а параметры датчиков сохраняются как соответствующие ей. И т.п. для верхнего положения.

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

 

Скажу откровенно: я потеряю на этой разработке времени, т.к. придется пройти процесс обучения, а сами знаете - сначала сотня глюков и вопросов "я заливаю так, а оно что-то не то", потом первый код будет кривым и некрасивым. Потом его улучшишь. Потом, когда научишься писать красиво - уже и не разберешь что и где было.

Потому - лучше заплачу тому, кто разработает по ТЗ.

Либо уж уверьте, что "все получится" :)

Спасибо.

Друг, купи готовое и не парься. Ничего ты толком не выгадаешь, на круг выйдет купить готовый и проверенный дешевле. Обкатывать контроллер на Абдурино ты будешь долго и нудно. И все что будет написано работает только на столе в виде потенциометров и светодиодов. Как только поставишь на машину, пойдут проблеммы. Я тоже начинал с этого форума и тоже Абдурино, так вот - начало вроде как февраль, что-то более-менее рабочее появилось к лету, глюки мелкие до сих пор убираются, было написано штук пять версий глобально отличающихся и штук под 100!!! вариантов почти в каждой версии. Вспоминая начало своих работ, думаю, что лучше бы готовое купил и не ездил бы с кучей проводов почти год. Кстати прогу писал парень с этого-же форума и живем мы с ним в одном городе и он достаточно работоспособный и писал бывало по три-четыре версии в день. Подумай хорошенько. Кстати Акку-Левел вроде подороже 600 долларов стоит, но если он работает, то цена вполне адекватная, правда посмотреть что он могЁт.

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

chaytan
Offline
Зарегистрирован: 02.02.2012

italius, а с датчиком давления твой работает??? ну, тот который на штатном блоке клапанов....

eastpoint
Offline
Зарегистрирован: 04.01.2013

Что же... Вас уже двое, кто меня отговорил. Давайте обусдим

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Да, действительно. Я согласен с постом italiusом дело долгое и нудное. Вспомнил я как с прошлой такой темой мучались ... не дай бог еще раз ...

Вобщем я отказываюсь учавствовать в этом проекте.

italius
Offline
Зарегистрирован: 19.12.2011

chaytan, версия со штатным датчиком присутствовала, есть  у меня в архиве, но до конечного варианта так и не дошла, так как проблемно было обыграть работу с данным датчиком, и поэтому решили дошлифовать алгоритм в целлом. Сейчас основа работает! Датчик штатный в архиве, да и он малопригоден по причине того, что многие строят не на штатных клапанах, да и у меня без ресивера все стоит.

nestandart, вроде как парня Андрей (или Алексей) зовут, и он из Москвы и поставил контроллер на квадроцикл?

eastpoint, тема к обсуждению какова? Я высказал свое мнение. Если нужно готовое что-то, то могу предложить я, а можно и на Америку посмотреть, да вроде и на Украине ребята что-то делают.....

 

chaytan
Offline
Зарегистрирован: 02.02.2012

я от задействования датчика давления отказываться нехочу. с использовнием ресиверов просто реально интересней.

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

chaytan
Offline
Зарегистрирован: 02.02.2012

eastpoint пишет:

Что же... Вас уже двое, кто меня отговорил. Давайте обусдим

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

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

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

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>nestandart, вроде как парня Андрей (или Алексей) зовут, и он из Москвы <<

Даже близко не попали. 

>>поставил контроллер на квадроцикл?<<

Изначально да. Но потом заказчик поставил его на машину (не помню какую), немного откатали и как то рзошлись .

leshak
Offline
Зарегистрирован: 29.09.2011

 

eastpoint пишет:

Что же... Вас уже двое, кто меня отговорил. Давайте обусдим

На самом деле просто многие промолчали :)

В любых раскладах если есть что-то готовое удовлетворяющие ваши потребности в 99% купить его дешевле (даже если выглядит дорого). Бывают, конечно, "завихи маркетинга" когда трансформатор с амперметром в красивом корпусе за $300 продают, но...

Гораздо чаще, даже "самому все делать" - дороже выходит. Даже не считая "скрытой цены" собственного времени (за счет массового производства, в "разнобой" покупать, плюс инструменты, плюс сломал/спалил в разы все может привысить и т.д. и т.п.).

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

Так что IMHO все это "монстрячить" имеет смысл только в трех случаях:

1. Собираетесь потом сами продавать разработки (но тут еще на порядок цены увеличить нужно будет).

2. Просто нравится копатся в своей машине Just for Fun (и готовы тратить деньги на хобби, как любое автомобильное хобби - хорошие деньги).

3. Вам нужны уникальные фичи, которых в готовых продуктах просто нет. А нажны настолько что "цена рояля не играет".

italius
Offline
Зарегистрирован: 19.12.2011

nestandart, Да тот парень, просто в Мскв встречался с ним и говорил он про програмиста из Кемерово (или близкое к Уральскому региону), да в принципе какая разница. Суть в другом, надеюсь что заказная разработка не будет продана но второму кругу, а будет написана как новый вариант.

chaytan Работу ресивера легче обыграть с реле давления с гистерезисом, подсоединив еще и проводком через диод на датчик тормоза. Так и дешевле и надежнее. Жалко, конечно, штатного датчика, но мы его все-таки допишем, поработав над теорией алгоритма.

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

chaytan
Offline
Зарегистрирован: 02.02.2012

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

и опять-же, дабы ненарушать целостность проводов укладывать- добавлять новые неочень и хочется. другое дело дополнить некой *черной коробкой* в которой и будет обрабатываться датчик. 

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

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

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>> про програмиста из Кемерово<<

А вот это в точку. 

>>заказная разработка не будет продана но второму кругу<<

Конечно нет. Хотя бы даже по причине того что прошел уже год и я уже плохо помню алгоритмы работы программы.

Ту программу я совершенно бесплатно скинул chaytan у.

>>а будет написана как новый вариант<<

Я же писал выше. Никакого нового варианта, от меня, не будет.

italius
Offline
Зарегистрирован: 19.12.2011

chaytan Да с датчиком давления в штатном блоке я давно разобрался, суть в другом, штатными блоками клапанов мало кто пользуется, в основном ездят на ГБО. И так как я планировал изначально комерческий проект, то рациональней оказалось использовать реле давления.

chaytan
Offline
Зарегистрирован: 02.02.2012

italius пишет:

chaytan Да с датчиком давления в штатном блоке я давно разобрался, суть в другом, штатными блоками клапанов мало кто пользуется, в основном ездят на ГБО. И так как я планировал изначально комерческий проект, то рациональней оказалось использовать реле давления.

в плане рациональности да, согласен.

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

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

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Если кому нужно то вот та программа которую я писал год назад для заказчика.

Когда я писал программу я не был уверен в том что мне заплатят. Поятому вшил туда "Жука".

Жук блокирует систему после 250 циклов вкл/выкл устройства.  Он вшивается в ипром и поэтому простая перепрошивка МК ни к чему не приведет. Мне было лень его убирать. К тому же он может быть кому нибудь интересен.

Жук это раздел "блокировка 1 " , "else { " сразу после него  и предпоследняя скобка программы.

 




 
#include <LiquidCrystal.h>// библиотека дисплея
#include <LiquidCrystalRus.h>//руссификатор дисплея

LiquidCrystalRus lcd(6, 7, 5, 4, 3, 2);//порты подключения дисплея


#include <EEPROM.h>//библиотека работы с энергонезависимой памятью

int dveknopky=0;//переменная для блокировки 

int predustanovka=0;//переменная для хранения значений предустановок

int regim=1;//переменная для хренения значения режимов

int eeprom=0;//сохранение данных в энергонезависимой памяти
int eeprom2=0;//сохранение данных в энергонезависимой памяти

int knopka=0;//переменная для хранания состояния кнопок
int knopka2=0;
int knopka3=0;
int knopka4=0;


int analog=0;//переменная для хранения значений
int analog2=0;//датчиков
int analog3=0;
int analog4=0;


int blok=0;//переменная для блокировки установленных режимов
int blok2=0;
int blok3=0;
int blok4=0;


int modul=0;//переменная для общей блокировки
int modul2=0;
int modul3=0;
int modul4=0;







void setup()
{
 
 lcd.begin(16, 2);//иницифлизация дисплея
 
 pinMode(19,INPUT);//кнопки
 pinMode(18,INPUT);
 
 pinMode(0,OUTPUT);//Клапана сброса
 pinMode(1,OUTPUT);
 pinMode(8,OUTPUT);
 pinMode(9,OUTPUT);
 
 pinMode(10,OUTPUT);//клапана накачки
 pinMode(11,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(13,OUTPUT);
 
}

void loop()
{
  
  
  /////////////////////////блокипровка 1 ////////////////////////
  
      if(knopka4==0)
       {
         EEPROM.write(1,(EEPROM.read(1)+1)); 
         knopka4=1;
       }
       
      eeprom2=EEPROM.read(1);
       
   if(eeprom2>=250)
   {
     lcd.setCursor(0,1);
     lcd.print("  ");
     lcd.setCursor(2,1);
     lcd.print("Заблокирована ");
     lcd.setCursor(0,0);
     lcd.print("    ");
     lcd.setCursor(4,0);
     lcd.print("Система");
     lcd.setCursor(12,0);
     lcd.print("     ");
     
    
    
     digitalWrite(0,LOW);//отключние всех клапанов
     digitalWrite(1,LOW);
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     digitalWrite(12,LOW);
     digitalWrite(13,LOW);
    
    
     delay(1000);
     lcd.setCursor(0,0);
     lcd.print("                ");
     lcd.setCursor(0,1);
     lcd.print("                ");
     delay(1000);
     
   }

   else
   { 
  if(eeprom==0)
   {
   regim=EEPROM.read(0);//чтение энергонезависимой памяти
   eeprom=1;
   }
  //****************Блокировка системы 2 ***************
 
   if(digitalRead(19)==HIGH&&digitalRead(18)==HIGH&&knopka3==0)//если нажаты две кнопки    
   {
   knopka3=1;                                                  //то пишем 1 в переменную "кнопка"
   
  }
   if(digitalRead(19)==LOW&&digitalRead(18)==LOW&&knopka3==1)//если две кнопки не нажаты 
    {
                                                            //то инвертируем переменную "две кнопки" 
      dveknopky=dveknopky+1;                             //и блокируем систему
      if(dveknopky>1)
      {
        dveknopky=0;
      }
      if(dveknopky<0)
      {
       dveknopky=1;
      }
      
       knopka3=0;
       delay(500);
    }

  
  if(dveknopky==1)
  {
     digitalWrite(0,LOW);//отключение всех клапанов
     digitalWrite(1,LOW);
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     digitalWrite(12,LOW);
     digitalWrite(13,LOW);
      
     lcd.setCursor(0,1);
     lcd.print("  ");
     lcd.setCursor(2,1);
     lcd.print("Заблокирована        ");
     lcd.setCursor(0,0);
     lcd.print("    ");
     lcd.setCursor(4,0);
     lcd.print("Система");
     lcd.setCursor(12,0);
     lcd.print("     ");
  }
  
  
  else//если система не заблокирована то ...
  {

  //*********************Переключение режимов***************
   //********************(предустановок)********************
   
   
  if(digitalRead(19)==HIGH&&knopka==0)//если нажата кнопка + то
  {                                   //пишем +1 в переменную "режим"
   knopka=1;                    
   
  }
   if(digitalRead(19)==LOW&&knopka==1)
    {
     
       knopka=0;
      
       regim=regim+1;
  
       if(regim>3)
       {
         regim=3;
        } 
        EEPROM.write(0,regim);//включаем значение последнего режима 
    }
  
  
  if(digitalRead(18)==HIGH&&knopka2==0)//если нажата кнопка - то
  {                              //пишем -1 в переменную "режим"
   knopka2=1;
   
  }
   if(digitalRead(18)==LOW&&knopka2==1)
    {
     
       knopka2=0;
      
       regim=regim-1;
       
       if(regim<1)
       {
         regim=1;
        } 
         EEPROM.write(0,regim);//включаем значение последнего режима 
    }
    
  //*********Индикация режимов в верхней строке********
  
  if(regim==1)//если переменная "режим" равна 1 то..
  {
     lcd.setCursor(4,0);//устанавливаем курсор в верхнюю строку
     
     predustanovka=300;//предустановка равна 300
  //это значение можно изменять в пределах от 100 до 999
  
     lcd.print("нижний");//выводим надпись на дисплей
     lcd.setCursor(10,0);
     lcd.print("       ");
    
  }
  
   if(regim==2)//аналогично 
  {
     lcd.setCursor(4,0);
     
     predustanovka=600;
  
     lcd.print("средний");
    
  }
  
   if(regim==3)//аналогично
  {
     lcd.setCursor(4,0);
     
     predustanovka=900;
  
     lcd.print("верхний");
    
  }
  
  
  
//**************Управление первым блоком *****************
//***********(клапан-впуск , клапан- выпуск , датчик 1)***
  
  
  
  
  if(blok==0)//если переменная "блок" равна 0 то ...
{
  
 analog=analogRead(14);//опрашиваем датчик

 
 if(analog>999)//приводим значение с датчика в диапазон от 100 до 999
 {
   analog=999;
 }
  
 if(analog<100)
 {
   analog=100;
 }
  
 
}
 
  if(analog<(predustanovka-5))//если значение датчика меньше  значения предустановки то ...
  {                
    modul=0;//пишем 0 в переменную "модуль"
    blok=0;//пишем 0 в переменную "блок"
   digitalWrite(13,HIGH);//включаем клапан накачки
   digitalWrite(0,LOW); //отключаем клапан сброса
 
   
  }
  
  if(analog>=(predustanovka-10)&&analog<=(predustanovka+10))//если  значение датчика равно предустановке (+/-10) то...
  
  {
    modul=1;//пишем 1 в переменную "модуль"
    blok=1;//пишем 1 в переменную "блок"
    digitalWrite(0,LOW);//отключаем клапан сброса
    digitalWrite(13,LOW); //отключаем клапан накачки
  
  }
  
  if(analog>(predustanovka+5))//если значение датчика больше  значения предустановки то...
  {
    modul=0;//пишем 0 в переменную "модуль"
    blok=0;//пишем 0 в переменную "блок"
   digitalWrite(13,LOW);//отключаем клапан накачки
   digitalWrite(0,HIGH); //включаем клапан сброса
 
  
  }
  //**************Управление вторы блоком *****************
//***********(клапан-впуск , клапан- выпуск , датчик 2)***
  
  //аналогично
  
   if(blok2==0)
{
 analog2=analogRead(15);

  if(analog2>999)
 {
   analog2=999;
 }
  
  if(analog2<100)
 {
   analog2=100;
 }
 }
 
 
  
   if(analog2<(predustanovka-5))
  {
    modul2=0;
    blok2=0;
   digitalWrite(12,HIGH);
   digitalWrite(1,LOW); 
 
   
  }
  
  if(analog2>=(predustanovka-10)&&analog2<=(predustanovka+10))
  
  {
    modul2=1;
    blok2=1;
    digitalWrite(1,LOW);
    digitalWrite(12,LOW); 
  
  }
  
  if(analog2>(predustanovka+5))
  {
    modul2=0;
    blok2=0;
   digitalWrite(12,LOW);
   digitalWrite(1,HIGH); 
 
  
  }
 
 //**************Управление третим блоком *****************
//***********(клапан-впуск , клапан- выпуск , датчик 3)***
  
  //аналогично
  
  
   if(blok3==0)
{
 analog3=analogRead(16);

  if(analog3>999)
 {
   analog3=999;
 }
  
  if(analog3<100)
 {
   analog3=100;
 }
 }
 
 
  
   if(analog3<(predustanovka-5))
  {
    modul3=0;
    blok3=0;
   digitalWrite(11,HIGH);
   digitalWrite(8,LOW); 
 
   
  }
  
  if(analog3>=(predustanovka-10)&&analog3<=(predustanovka+10))
  
  {
    modul3=1;
    blok3=1;
    digitalWrite(8,LOW);
    digitalWrite(11,LOW); 
  
  }
  
  if(analog3>(predustanovka+5))
  {
    modul3=0;
    blok3=0;
   digitalWrite(11,LOW);
   digitalWrite(8,HIGH); 
 
  
  }
 
 //**************Управление четвертым блоком *****************
//***********(клапан-впуск , клапан- выпуск , датчик 4)***
 
 //аналогично
 
 
 if(blok4==0)
{
 analog4=analogRead(17);

  if(analog4>999)
 {
   analog4=999;
 }
  
  if(analog4<100)
 {
   analog4=100;
 }
 }
 
 
  
   if(analog4<(predustanovka-5))
  {
    modul4=0;
    blok4=0;
   digitalWrite(10,HIGH);
   digitalWrite(9,LOW); 
 
   
  }
  
  if(analog4>=(predustanovka-10)&&analog4<=(predustanovka+10))
  
  {
    modul4=1;
    blok4=1;
    digitalWrite(9,LOW);
    digitalWrite(10,LOW); 
  
  }
  
  if(analog4>(predustanovka+5))
  {
    modul4=0;
    blok4=0;
   digitalWrite(10,LOW);
   digitalWrite(9,HIGH); 
 
  
  }
 
 
 
 //***************Индикация состояния датчиков***************
 //***************и работы режимов***************************
 
 
 if(modul==1&&modul2==1&&modul3==1&&modul4==1)//если все "модули" равны 1 (т.е. все датчики установлены в заданное положение) то...
 {
   //выводим в нижнюю строку надпись "Установлен"
    lcd.setCursor(0, 1);
   lcd.print("   ");
   
    lcd.setCursor(3, 1);
   lcd.print("Установлен");
   
   lcd.setCursor(13, 1);
   lcd.print("   ");
   
 }
 
 else//если установлены не все датчики то...
 {
   
   //выводим в нижнюю строку показания всех датчиков
   lcd.setCursor(1,1);
   lcd.print(analog);
   lcd.setCursor(4,1);
   lcd.print(" ");
   
    lcd.setCursor(5,1);
   lcd.print(analog2);
   lcd.setCursor(8,1);
   lcd.print(" ");
   
    lcd.setCursor(9,1);
   lcd.print(analog3);
   lcd.setCursor(12,1);
   lcd.print(" ");
   
    lcd.setCursor(13,1);
   lcd.print(analog4);
   lcd.setCursor(16,1);
   lcd.print("  ");
   
   
   
   
   }
  }
 }
}
nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Блин, совсем запутался.

Вот более поздняя версия программы без жука ,  с временной задержкой действия и некоторыми функциями самодиагностики.

 

#include <LiquidCrystal.h>

#include <LiquidCrystalRus.h>
LiquidCrystalRus lcd(6, 7, 5, 4, 3, 2);

int state=0;
int state2=0;
int state3=0;
int state4=0;
int state5=0;

int avaria=0;
int avaria2=0;
int avaria3=0;
int avaria4=0;

int ustanovka=0;
int ustanovka2=0;
int ustanovka3=0;
int ustanovka4=0;

long previousMillis = 0;
long previousMillis2 = 0;
long previousMillis3 = 0;
long previousMillis4 = 0;
long previousMillis5 = 0;

int obriv = 0;
int obriv2 = 0;
int obriv3 = 0;
int obriv4 = 0;

#include <EEPROM.h>

int dveknopky=0;

int predustanovka=0;
int regim=1;

int eeprom=0;


int knopka=0;
int knopka2=0;
int knopka3=0;



int analog=0;
int analog2=0;
int analog3=0;
int analog4=0;





int sek=0;
int sek2=0;
int sek3=0;
int sek4=0;

int flag1=0;
int flag2=0;
int flag3=0;
int flag4=0;



void setup()
{
  
 pinMode(14,INPUT);
 pinMode(15,INPUT);
 pinMode(16,INPUT);
 pinMode(17,INPUT);
  
 digitalWrite(14, HIGH);
 digitalWrite(15, HIGH);
 digitalWrite(16, HIGH);
 digitalWrite(17, HIGH);
 
 lcd.begin(16, 2);
 
 pinMode(19,INPUT);
 pinMode(18,INPUT);
 
 pinMode(0,OUTPUT);
 pinMode(1,OUTPUT);
 pinMode(8,OUTPUT);
 pinMode(9,OUTPUT);
 
 pinMode(10,OUTPUT);
 pinMode(11,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(13,OUTPUT);
 
}

void loop()
{
  
  if (millis() -previousMillis5 >=100) 
 {  
   previousMillis5 = millis();  
  state5=!state5;
   
   if(state5==1)
   {
    lcd.clear();
   }
 }
  
  
  
  
    
  if(eeprom==0)
   {
   regim=EEPROM.read(0);
   eeprom=1;
   }
 
 
   if(digitalRead(19)==HIGH&&digitalRead(18)==HIGH&&knopka3==0) 
   {
   knopka3=1;                                                 
   
  }
   if(digitalRead(19)==LOW&&digitalRead(18)==LOW&&knopka3==1)
    {
                                                           
      dveknopky=dveknopky+1;                             
      if(dveknopky>1)
      {
        dveknopky=0;
      }
      if(dveknopky<0)
      {
       dveknopky=1;
      }
      
       knopka3=0;
       delay(500);
    }

  
  if(dveknopky==1)
  {
     digitalWrite(0,LOW);
     digitalWrite(1,LOW);
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     digitalWrite(12,LOW);
     digitalWrite(13,LOW);
      
   
     lcd.setCursor(2,1);
     lcd.print("Заблокирована");
     lcd.setCursor(4,0);
     lcd.print("Система");
    
  }
  
  
  else
  {

    if(analogRead(14)<=1010&&analogRead(15)<=1010&&analogRead(16)<=1010&&analogRead(17)<=1010)
   
  {  
    
 
   
   
  if(digitalRead(19)==HIGH&&knopka==0)
  {                                   
   knopka=1;                    
    avaria=0;
  }
   if(digitalRead(19)==LOW&&knopka==1)
    {
     
       knopka=0;
      
       regim=regim+1;
  
       if(regim>3)
       {
         regim=3;
        } 
        EEPROM.write(0,regim);
         sek=0; 
        
    }
        
  
  
  if(digitalRead(18)==HIGH&&knopka2==0)
  {                             
   knopka2=1;
    avaria=0;
  }
   if(digitalRead(18)==LOW&&knopka2==1)
    {
     
       knopka2=0;
      
       regim=regim-1;
       
       if(regim<1)
       {
         regim=1;
        } 
         EEPROM.write(0,regim);
          sek=0; 
           
    }
         
    
  
  
  if(regim==1)
  {
    
    predustanovka=300;
    
     if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0)
     {
     lcd.setCursor(4,0);
     lcd.print("нижний");
    
     }
  }
  
   if(regim==2)
  {
     predustanovka=600;
     
       if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0)
     {
     lcd.setCursor(4,0);
     lcd.print("средний");
     }
  }
  
   if(regim==3)
  {
    
     predustanovka=900;
     
       if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0)
     {
     lcd.setCursor(4,0);
     lcd.print("верхний");
     }
  }
  

  



 if(flag1==1)
  {
   if (millis() -previousMillis >=500) 
 {  
   previousMillis = millis();  
  state=!state;
   
   if(state==1)
   {
     sek++;
   }
   if(sek>=30)
   {
     sek=30;
   }
 }
   }
  
  
  
analog=analogRead(14);

if(analog>999)
{
  analog=999;
}
if(analog<100)
{
  analog=100;
}

 if(analog>(predustanovka+5)&&sek>=3)
 
  {                
 flag1=1;
  if(sek<30)
  {
    
   
   
   digitalWrite(13,LOW);
   digitalWrite(0,HIGH); 
   
  }
   else
  {
    
   avaria=1;
  digitalWrite(13,LOW);
   digitalWrite(0,LOW);
   
    
  }
  }
  
  if(analog>=(predustanovka-10)&&analog<=(predustanovka+10))
  
  {
    
   
     ustanovka=1;
    avaria=0;
  flag1=0;
    digitalWrite(0,LOW);
    digitalWrite(13,LOW); 
  sek=0;
  }
  else
  {
   
   ustanovka=0;
   flag1=1;  
  }
  
  if(analog<(predustanovka-5)&&sek>=3)
  {
    flag1=1;
     if(sek<30)
  {
    
   digitalWrite(0,LOW);
   digitalWrite(13,HIGH); 
   
  }
   else
  {
    
   avaria=1;
  digitalWrite(0,LOW);
   digitalWrite(13,LOW);
   
    
  }
  
  }
  
  
  if(flag2==1)
  {
   if (millis() -previousMillis2 >=500) 
 {  
   previousMillis2 = millis();  
  state2=!state2;
   
   if(state2==1)
   {
    
     sek2++;
   }
   if(sek2>=30)
   {
     sek2=30;
   }
 }
   }
  
  
  
analog2=analogRead(15);

if(analog2>999)
{
  analog2=999;
}
if(analog2<100)
{
  analog2=100;
}

 if(analog2>(predustanovka+5)&&sek2>=3)
 
  {                
 flag2=1;
  if(sek2<30)
  {
    
   
   
   digitalWrite(12,LOW);
   digitalWrite(1,HIGH); 
   
  }
   else
  {
    
   avaria2=1;
  digitalWrite(12,LOW);
   digitalWrite(1,LOW);
   
    
  }
  }
  
  if(analog2>=(predustanovka-10)&&analog2<=(predustanovka+10))
  
  {
    
   
     ustanovka2=1;
    avaria2=0;
  flag2=0;
    digitalWrite(1,LOW);
    digitalWrite(12,LOW); 
  sek2=0;
  }
  else
  {
   
   ustanovka2=0;  
   flag2=1;  
  }
  
  if(analog2<(predustanovka-5)&&sek2>=3)
  {
    flag2=1;
     if(sek2<30)
  {
    
   digitalWrite(1,LOW);
   digitalWrite(12,HIGH); 
   
  }
   else
  {
    
   avaria2=1;
  digitalWrite(1,LOW);
   digitalWrite(12,LOW);
   
    
  }
  
  }
   
  
  
   
   
   
    
  if(flag3==1)
  {
   if (millis() -previousMillis3 >=500) 
 {  
   previousMillis3 = millis();  
  state3=!state3;
   
   if(state3==1)
   {
    
     sek3++;
   }
   if(sek3>=30)
   {
     sek3=30;
   }
 }
   }
  
  
  
analog3=analogRead(16);

if(analog3>999)
{
  analog3=999;
}
if(analog3<100)
{
  analog3=100;
}

 if(analog3>(predustanovka+5)&&sek3>=3)
 
  {                
 flag3=1;
  if(sek3<30)
  {
    
   
   
   digitalWrite(11,LOW);
   digitalWrite(8,HIGH); 
   
  }
   else
  {
    
   avaria3=1;
  digitalWrite(11,LOW);
   digitalWrite(8,LOW);
   
    
  }
  }
  
  if(analog3>=(predustanovka-10)&&analog3<=(predustanovka+10))
  
  {
    
   
     ustanovka3=1;
    avaria3=0;
  flag3=0;
    digitalWrite(8,LOW);
    digitalWrite(11,LOW);
  sek3=0;
  }
  else
  {
   
   ustanovka3=0;
   flag3=1;  
  }
  
  if(analog3<(predustanovka-5)&&sek3>=3)
  {
    flag3=1;
     if(sek3<30)
  {
    
   digitalWrite(8,LOW);
   digitalWrite(11,HIGH); 
   
  }
   else
  {
    
   avaria3=1;
  digitalWrite(8,LOW);
   digitalWrite(11,LOW);
   
    
  }
  
  }
   
  
  
   
  
   
      
  if(flag4==1)
  {
   if (millis() -previousMillis4 >=500) 
 {  
   previousMillis4 = millis();
  state4=!state4;
   
   if(state4==1)
   {
    
     sek4++;
   }
   if(sek4>=30)
   {
     sek4=30;
   }
 }
   }
  
  
  
analog4=analogRead(17);

if(analog4>999)
{
  analog4=999;
}
if(analog4<100)
{
  analog4=100;
}

 if(analog4>(predustanovka+5)&&sek4>=3)

  {                
 flag4=1;
  if(sek4<30)
  {
    
   
   
   digitalWrite(10,LOW);
   digitalWrite(9,HIGH); 
   
  }
   else
  {
    
   avaria4=1;
  digitalWrite(10,LOW);
   digitalWrite(9,LOW);
   
    
  }
  }
  
  if(analog4>=(predustanovka-10)&&analog4<=(predustanovka+10))
  
  {
    
   
  ustanovka4=1;
  avaria4=0;
  flag4=0;
    digitalWrite(9,LOW);
    digitalWrite(10,LOW); 
  sek4=0;
  }
  else
  {
   
    ustanovka4=0;
   flag4=1;  
  }
  
  if(analog4<(predustanovka-5)&&sek4>=3)
  {
    flag4=1;
     if(sek4<30)
  {
    
   digitalWrite(9,LOW);
   digitalWrite(10,HIGH); 
   
  }
   else
  {
    
   avaria4=1;
   digitalWrite(9,LOW);
   digitalWrite(10,LOW);
   
    
  }
  
  }
   
  
  
   
   
  
   
   
  
   if(ustanovka==1&&ustanovka2==1&&ustanovka3==1&&ustanovka4==1)
   {
     
   lcd.setCursor(3,1);
   lcd.print("Установлен");
   
   }
   else
   {
     if(avaria==1||avaria2==1||avaria3==1||avaria4==1)
     {
  
       delay(1000);
   lcd.setCursor(5,0);
   lcd.print("АВАРИЯ");
   lcd.setCursor(3,1);
   lcd.print(!avaria);
   lcd.setCursor(6,1);
   lcd.print(!avaria2);
   lcd.setCursor(9,1);
   lcd.print(!avaria3);  
   lcd.setCursor(12,1);
   lcd.print(!avaria4);
   
     }
   else
   {
   lcd.setCursor(1,1);
   lcd.print(analog);
   lcd.setCursor(5,1);
   lcd.print(analog2);
   lcd.setCursor(9,1);
   lcd.print(analog3);
   lcd.setCursor(13,1);
   lcd.print(analog4);
   }
   
   
   } 
  }
  else
  {
    if(analogRead(14)>=1010)
    {
      obriv=0;
      
      delay(1000);
    }
    else
    {
      obriv=1;
      
    }
    if(analogRead(15)>=1010)
    {
      obriv2=0;
     
      delay(1000);
    }
    else
    {
      obriv2=1;
    }
    if(analogRead(16)>=1010)
    {
      obriv3=0;
     
      delay(1000);
    }
    else
    {
      obriv3=1;
    }
    if(analogRead(17)>=1010)
    {
      obriv4=0;
     
      delay(1000);
    }
    
    else
    {
      obriv4=1;
    }
    
    
   lcd.setCursor(2,0);
   lcd.print("ОБРЫВ ДАТЧИКА"); 
   lcd.setCursor(3,1);
   lcd.print(obriv); 
   lcd.setCursor(6,1);
   lcd.print(obriv2); 
   lcd.setCursor(9,1);
   lcd.print(obriv3); 
   lcd.setCursor(12,1);
   lcd.print(obriv4); 
   
   
   digitalWrite(9,LOW);
   digitalWrite(10,LOW);
   digitalWrite(11,LOW);
   digitalWrite(8,LOW);
   digitalWrite(12,LOW);
   digitalWrite(1,LOW);
   digitalWrite(13,LOW);
   digitalWrite(0,LOW);
   
   
    
  }

 }
}

 

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

Если кому нужно то вот та программа которую я писал год назад для заказчика.

Мое IMHO что нового заказчика "продают ему повторно" или "пишут с нуля" - волновать не должно (если он не хочется дополнительно оплатить "эксклюзив"). Есть проблема - есть стоимость ее решения. А вто что оно обошлось програмеру - его личное дело.

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

Если кого волновать и должно, то только "прошлого заказчика". Но тут уж как вы с ним изначально договорились на "он владелец интелектуального продукта" или ему важно только "лишь бы работало" и дальнейшая судьба кода его не интересует (кстати большинство именно такие, а некоторые еще и сами собираются в OpenSource отдавать ;).

nestandart пишет:

Когда я писал программу я не был уверен в том что мне заплатят. Поятому вшил туда "Жука".

Ну если отдаются исходиники,то любые "жуки" - можно отдихлофосить :)

Я встречал еще такой вариант (когда отдается только бинарная прошивка): разводится лишняя дорожка на ногу. В прошивке - есть ограничитель каких-нибудь циклов достаточный для проверки работоспособности.

Когда клиент все проверил и  оплатил и ему говорится: возьми скальпель и перереж вот эту дорожку и ограничение уйдет :)

Но, честно говоря, сам никогда таким не страдал ;)

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Ну если отдаются исходиники,то любые "жуки" - можно отдихлофосить :)<<

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

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

>>Ну если отдаются исходиники,то любые "жуки" - можно отдихлофосить :)<<

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

Это да. "отдихлофосить" по трудозатратам может быть не меньше (а зачастую даже больше) чем написать с нуля по готовому ТЗ (кроме прошивки, вы же еще, фактически ТЗ ему основательно устаканили).

Да и вообще, если четко знаешь что "кинули предшественника", то как-то для кармы вредно этим заниматся (и противно).

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

Хотя пару раз были клиенты, которые "на грани броска" убегали к индусам типа "у них дешевле", а потом когда "сроки поджимают" и "индусы наворотили" - возвращаются. "Спасите, помогите, разгребите". Причем мы даже никаких "жуков/ловушек" никогда не ставили.  Всегда хватало низкой квалификации "дешовых конкурентов" ;)

Но если и вернулся - можно и помочь :) По двух-кратному прайсу ;). Теперь-то клиент четко знает нашу ценность :)

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Да и вообще, если четко знаешь что "кинули предшественника", то как-то для кармы вредно этим заниматся (и противно).<<

Это в мой огород ?

После перевода оплаты. Я скинул ему программу без жука. Объяснив ситуацию и собственно показав ему этого самого жука.

Он понял и отнесся к этому нормально.

italius
Offline
Зарегистрирован: 19.12.2011

Прав, leshak, если я его правильно понял. Говоря о твоем, nestandart, действии, это называют подлостью. Взяв с человека деньги, ты всю оплаченную другим человеком работу, выложил в открытый доступ. Или тебе все-таки не заплатили? И ты решил перевести проект в открытый доступ? Вот такой вот гуманизм и мораль.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

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

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

Во вторых, у меня есть с десяток файлов программ этого проекта (самые последние были утеряны когда навернулся жесткий).

Я выложил только две версии.

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

На момент написания программы он даже не умел прошивать дуину. Мы с железом с месяц ковырялись.

eastpoint
Offline
Зарегистрирован: 04.01.2013

Дружище, а зачем и вправду выложил то, что делал по заказу? 

Вы говорите про стенд с лампочками? Зачем мне это - у меня все железо по пневме скоро будет готово и собрано.

Вы говорите купить готовое решение? Нет, неинтересно. ECU двигателя - стороннее. Японская коробка управляется другим,  широкоизвестным в узких кругах процессором российской разработки. Самодельный круиз-контроль, активный, с сонарами. Самоделка, где заводское только тяга на др.заслонку. Родная приборная панель, где есть отображение состояния всех систем авто. Включая и бывшую когда то на машине подвеску TEMS. Теперь эту шкалу хотелось бы использовать для индикации состоянии пневмы. И таких нюансов - с десяток. 

Дальше? На машине где была ABS 2+1 установлены датчки ABS 4, установлен датчик положения рулевого колеса, датчики ускорения. Все это нужно, чтобы на старой машине реализовать систему антизанос. Вот это - практически нереализуемо, если у вас нет второй "стендовой" машины, на которой готовы боком заходить в повороты в любую погоду. 

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

И почему "сам". Машина давно полная самоделка. Там ничего не осталось от завода. Сшита сторонняя электроника, ДВС с одной тойоты, коробка от другого ДВС, пусть и той же серии, АБС4 вообще не ставилась на эту машину. И доверяться сторонним специалистам, не вникая в суть сделанных работ - означает остаться беспомощным в случае каких то поломок или глюков.

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

Всё, что я спросил - посоветуйте набор железа - что потребуется. Сама Дурина, но которая? Далее - модули - LCD простой - да, хочу. Только зеленый, в две строчки. И не спрашивайте почему. А реле? ну ведь потребуются. Есть ли готовые? Какие?

Собственно и всё, что хотелось узнать. Цена всего этого не столь высока, чтобы расстроиться в случае неудачи. Так же выставлю на ebay как б/у - и уйдет в миг. Тем более, что в бюджете машины давно похоронена квартира в новостройке.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>Дружище, а зачем и вправду выложил то, что делал по заказу? <<

Ну если вам всем это так не нравиться сегодня же подчищу посты.

chaytan
Offline
Зарегистрирован: 02.02.2012

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

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

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

управление клапанами нерационально делать с использованием релюх. здесь лучше силовые транзисторы.

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

italius
Offline
Зарегистрирован: 19.12.2011

Знаешь, что я тебе посоветую?

Забудь про "среду" Абдурино! Пиши в чистой С++, без всяких "сред"! Или ищи того кто это зделает за тебя.

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

chaytan
Offline
Зарегистрирован: 02.02.2012

eastpoint, вот смотрите. в приведенном выше скетче реализована работа с 8 клапанами (4 подьем и 4 спуск) и возможность предустановить три уровня. при желании кол-во уровней можна добавить.

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

eastpoint
Offline
Зарегистрирован: 04.01.2013

chaytan пишет:

 

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

Верно, я и не хочу иначе. Управление компрессором не требует ничего заумного и программного.

и да - я все-таки застрял на железе. 

 

chaytan
Offline
Зарегистрирован: 02.02.2012

italius, вот интересно, чем плох атмел??? и чем лучше тот-же микрочип??? этоо тоже самое как и сторонники амд или интела парафинят противоположную сторону. или виндовс и линукс....  спор о платформах и их преимуществах всеравно бесполезен. а тем более с темпами развития технологий.

chaytan
Offline
Зарегистрирован: 02.02.2012

eastpoint пишет:

chaytan пишет:

 

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

Верно, я и не хочу иначе. Управление компрессором не требует ничего заумного и программного.

и да - я все-таки застрял на железе. 

 

вы определитесь с компонентами. типа вот буду использовать вот этот компрессор и у него вот такие характеристики. вместе с тем какие требования к пневме вцелом. чего от неё ожидаете- комфорта или выпендрежа??? это также повлияет на состав системы.

italius
Offline
Зарегистрирован: 19.12.2011

chaytan пишет:

italius, вот интересно, чем плох атмел??? и чем лучше тот-же микрочип??? этоо тоже самое как и сторонники амд или интела парафинят противоположную сторону. или виндовс и линукс....  спор о платформах и их преимуществах всеравно бесполезен. а тем более с темпами развития технологий.

Я вообще-то про среду програмирования писал, а не про сравнение контроллеров. И конкретно про оболочку Абдурино, лучше ту же программу подписать без оболочки Абдурино. Вот я про что!!!

 

eastpoint
Offline
Зарегистрирован: 04.01.2013

каким образом электроника будет определять параметры "выпендрежа" или комфорта?

расчетная жесткость на подушках будет соответствовать нынешним пружинам 8 и 6 кг соответственно. Подключение или отключение ресиверов для каждой подушки - вручную.

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

 

Ходовые характеристики подвески должны быть сохранены

chaytan
Offline
Зарегистрирован: 02.02.2012

italius пишет:

chaytan пишет:

italius, вот интересно, чем плох атмел??? и чем лучше тот-же микрочип??? этоо тоже самое как и сторонники амд или интела парафинят противоположную сторону. или виндовс и линукс....  спор о платформах и их преимуществах всеравно бесполезен. а тем более с темпами развития технологий.

Я вообще-то про среду програмирования писал, а не про сравнение контроллеров. И конкретно про оболочку Абдурино, лучше ту же программу подписать без оболочки Абдурино. Вот я про что!!!

 

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

chaytan
Offline
Зарегистрирован: 02.02.2012

eastpoint пишет:

каким образом электроника будет определять параметры "выпендрежа" или комфорта?

расчетная жесткость на подушках будет соответствовать нынешним пружинам 8 и 6 кг соответственно. Подключение или отключение ресиверов для каждой подушки - вручную.

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

 

Ходовые характеристики подвески должны быть сохранены

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

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

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

maksim
Offline
Зарегистрирован: 12.02.2012

italius пишет:
Знаешь, что я тебе посоветую?

Забудь про "среду" Абдурино! Пиши в чистой С++, без всяких "сред"! Или ищи того кто это зделает за тебя.

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

italius пишет:
И конкретно про оболочку Абдурино, лучше ту же программу подписать без оболочки Абдурино.
Да вы я посмотрю знаток сред разработаок и оболочек. Есть личный опыт? Или быть может ограничения в ней какие есть? Или глюков больше чем у других? И что вы имеете ввиду под словами чистый С++, без всяких "сред" и "чистом програмировании" ???

Так может скажите какая оболочка или среда разработки лучше, которая годится для "серьезной разработки"?

Или может дело в танцоре, а не в яйцах?

eastpoint
Offline
Зарегистрирован: 04.01.2013

бублики рубена 130х3, амортизаторы бильштайн, сечение подачи 6 мм, сечение на ресиверы 12. Штуцеры на соединения не поздно еще уменьшить/увеличить

italius
Offline
Зарегистрирован: 19.12.2011

maksim, Вам в сущности, что не нравится? Или в этом форуме я ограничен в своем мнении? Как раз и пишу о своем опыте! Об опыте как раз в теме програмирования (програмист другой человек, я разработчик) именно контроллера пневмоподвески. 

Ну, а поддерживая ваш тон, скажу, что мне пофиг какя среда или четверг, или  Атмел или Пик, но все должно работать без проблемм. Так вот после года работ, с Абдурино, все равно что-то да выплывает. Пусть мелочь, но она напрягает. И все время что-то нужно подписывать. Не знаю, что там про яйца вы написали, но "блинк" у меня работает без проблемм!!!! Думаю и у вас тоже?

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

>>Да и вообще, если четко знаешь что "кинули предшественника", то как-то для кармы вредно этим заниматся (и противно).<<

Это в мой огород ?

Да нет. Причем тут ваш огород? Я просто примерил на себя ситуацию "ко мне приходит клиент и просит найти жучка от предыдущего работника". Вот и все. Лично я бы скорее всего отказался.  

Никаких намеков и проч.

По поводу выкладывания "то что делал под заказ" - я тоже не вижу ничего крамольного. Откуда я знаю как вы с клиентом договаривались, что обещали и т.д. (да вообщем и не хочу вникать).

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

Если появится "клиент с криками", так опять-таки - это ваше двоих дело. 

Лично я, стараюсь переспрашивать клиентов в таких случаях. Как вы строите свои отношения с клиентами - дело ваше :)

Но еще раз. Никаких камней, намеков и проч. у меня даже в мыслях небыло. Вообщем "вам виднее" :)