Но, кстати, если уж делаете для себя... то часто ли вы ползуетесь печкой на не заведенном двигателе? Я так предпологаю никогда. Поэтому можено реле стартера поставить нормально разомкнутое непереключающее и на печку такое же отдельное реле, которое будет включать печку только тогда, когда двигатель завелся.
_____Сложно сказать зачем так сделано, может одно замыкается/размыкается чуть раньше другого, это надо видеть замок изнутри, а вообще и стартер и ECCS запускаются в одном положении... но может быть так, что ECCS продалжает работать и после того как ключ не в положении ST и на этом проводе (на ECCS) остается 12 вольт.... а выключается ECCS например при отключении зажигания.____
Не там происходит по другому, сначало ключем коммутируется АСС, затем IGN и печ при этом АСС включено, затем одновременно ECCS и Стартер при этом АСС и печ выключино, потом отпускаем ключ и он возвращается в положение IGN и печ и АСС.
Не там происходит по другому, сначало ключем коммутируется АСС, затем IGN и печ при этом АСС включено, затем одновременно ECCS и Стартер при этом АСС и печ выключино, потом отпускаем ключ и он возвращается в положение IGN и печ и АСС.
Я в предыдущем своем посте залил новую схемку.
Я говорил только о положении ключа ST и о том можно ли соединить стартер с ECCS, а не о том как работает все остальное. ECCS разве работает только при старте?
Уверены? Уверены что ECCS не продолжает работать во время работы двигателя? проверяли мультиметром? Уверены что или стартер или ECCS не может замыкаться/разъеденяться чуть раньше/позже? разбирали замок? Ведь не зря же провода отдельные...
Проверял мультиметром, при повороте ключа появляется проводимостьпри его отпускании проводимость пропадает. эта цепь ECCS нужна только для контроля пуска двигателя и отключения некоторых узлов в самом ECCS. Cедня еще все точно проверю, чтоб не быть голословным
Все проверил. на этом контакте нет напряжения. В книге написано - 34 контакт ECCS - Когда ключ повернут в положение START - Сигнал старт от замка зажигания.
Вот пример моей программы для запуска двигателя Hyundai accent. Все сыро еще конечно же, но это моя первая программа надеюсь получится сделать ее лучше!
//константы
const int ACCPin = 2; //контакт подключения реле АСС
const int IG2Pin = 3; // контакт подключения доп оборудования
const int IG1Pin = 4; // контакт подключения "зажигание"
const int STARTPin = 5; // контакт подключения реле стартера
const int passengerPin = 8; // контакт контроля нахождения людей в салоне
const int doorPin = 9; // контакт контроля состояния тригеров дверей
const int clutch_pedalPin = 10; //контакт контроля состояния педали сцепления
const int indicatorPin = 11; //контакт контроля состояния индикатора заряда батареи аккумуляторов
const int brakePin = 12; //контакт контроля состояния бензонасоса
const int start_stopButton = 7; // кнопка старт стоп
boolean lastButton = 0;
int Button = LOW;
int ledPin = 13;
int X;
//переменные
int passenger = 0; //переменная для хранения данных с контакта контроля нахождения людей в салоне
int door = 0;//переменная для хранения данных с контакта контроля состояния тригеров дверей
int indicator = 0; //переменная для хранения данных с индикатора заряда АКБ
int brake = 0; //переменная для хранения данных с контакта реле бензонасоса
int startButton = 0; //переменная для хранения данных с кнопки старт стоп
int clutch_pedal = 0; //переменная для хранения данных с контакта контроля педали сцепления
void setup() {
// задаем режим выхода для порта, подключенного к реле
pinMode(ACCPin, OUTPUT);
pinMode(IG2Pin, OUTPUT);
pinMode(IG1Pin, OUTPUT);
pinMode(STARTPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// задаем режим входа для портов подключенных к кнопкам и датчикам
pinMode (passengerPin, INPUT);
pinMode (doorPin, INPUT);
pinMode (clutch_pedalPin, INPUT);
pinMode (indicatorPin, INPUT);
pinMode (brakePin, INPUT);
pinMode (start_stopButton, INPUT);
}
void loop()
{
// код АСС
passenger = digitalRead (passengerPin); //сохраняем состояние с контакта контроля пассажиров в переменную
door = digitalRead (doorPin); //сохраняем состояние с контакта контроля тригеров дверей в переменную
unsigned long currentMillis = millis(); //записываем время в переменную currentMillis
if (door == 1 && currentMillis>1) //если дверь открыта и прошло более 1 млСек, ТО
{
digitalWrite (ACCPin, HIGH); // Становится под ток реле АСС
}
if(currentMillis >900000 && door==0 && passenger == 0 ) //если прошло более 15 мин и дверь закрыта и нет пассажиров в салоне
{
delay(1000); //ТО ждем 1 Секунду
digitalWrite(ACCPin, LOW); //Обесточиваем реле АСС
}
// код запуска
startButton = digitalRead(start_stopButton);//сохраняем состояние с контакта кнопки в переменную
clutch_pedal = digitalRead(clutch_pedalPin);//сохраняем состояние с контакта педали сцепления в переменную
indicator = digitalRead(indicatorPin);//сохраняем состояние с индикатора заряда АКБ в переменную
brake = digitalRead(brakePin);//сохраняем состояние с контакта реле бензонасоса в переменную
if (startButton == HIGH && lastButton == LOW)
{
lastButton = HIGH;
if (Button == LOW) Button = HIGH;
else Button = LOW;
}
else
{
lastButton = startButton;
}
if(Button==1)
{
digitalWrite(IG2Pin, HIGH);
digitalWrite(IG1Pin, HIGH);
digitalWrite(ledPin, HIGH);
if(clutch_pedal == HIGH && indicator == HIGH && brake == HIGH)
{
digitalWrite(ledPin, LOW);
delay (500);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
digitalWrite(STARTPin, HIGH);
}
else if (indicator == LOW)
digitalWrite(STARTPin, LOW);
}
if(Button==0)
{
digitalWrite(IG2Pin, LOW);
digitalWrite(IG1Pin, LOW);
digitalWrite(ledPin, LOW);
}
}
Можно сделать проще - входы дуины подключить к коллекторам оптотранзисторов и включить внутреннюю подтяжку, тогда можно убрать подтягивающие резисторы. А вот по поводу полевика управляющего стартером не уверен, он у вас до конца не будет закрываться.
P-канальный мосфет, какой не знаю берите с запасом, такой что бы мог втягивающее реле запустить, так как у многих машин с замка зажигания провод идет прямо на втягивающее реле, а не через дополнительную релюшку.
P.S.по вашей схеме maxim, выходит что когда на пине LOW стартер работает, а когда HIGH не работает?
Нет, транзистор то P-канальный, напряжение на затвор прикладывается относительно +12В, то есть когда на затворе +12В транзистор закрыт, а когда 0В транзистор открыт.
Так я не пойму вы стартером хотите еще через реле управлять? или транзистором? я вам показываю как управлять транзистором без реле. Если хотите релюшкой запускать стартер, то вообще ни полевик не нужен ни опторазвязка, а нужен обычный биполярный транзистор и диод для его защиты.
Не понял, оно и так с дуины 5 вольт, а управлять затвором нужно именно 12-ю, так как на сколько я знаю полевые транзисторы управляются тем напряжением, которым и управляют. Схему можно?
Не понял, оно и так с дуины 5 вольт, а управлять затвором нужно именно 12-ю, так как на сколько я знаю полевые транзисторы управляются тем напряжением, которым и управляют. Схему можно?
Я имел в виду схему с оптроном выше. А с чего бы это "тем напряжением, которым управляют"? Это ток затвора нормируется для этого случая. Вот, взял первый попавшийся p-транзистор IRF5210 - максимальное коммутируемое напряжение 100В, ток 40А, напряжение управления до 20 вольт. Для этого транзистора никаких делителей не потребуется, хотя он стабильно откроется при 5-ти вольтах (максимальный ток 10А), полностью откроется при 10-ти вольтах.
А у человека в симуляторе транзистор взорвался - значит превышены параметры модели - или максимальное напряжение на затворе, или максимальный ток стока.
Вот немного проработанный код моей программы, вышло так что в программировании я вообще ничего не понимаю, сейчас стараюсь разобраться, если у кого будут замечания пишите!!! Спасибо!!
const int ACCPin = 2; //контакт подключения реле АСС
const int IG2Pin = 3; // контакт подключения доп оборудования
const int IG1Pin = 4; // контакт подключения "зажигание"
const int STARTPin = 5; // контакт подключения реле стартера
const int passengerPin = 10; // контакт контроля нахождения людей в салоне
const int doorPin = 9; // контакт контроля состояния тригеров дверей
const int clutch_pedalPin = 8; //контакт контроля состояния педали сцепления
const int indicatorPin = 11; //контакт контроля состояния индикатора заряда батареи аккумуляторов
const int brakePin = 12; //контакт контроля состояния ручного тормоза
const int fuelPumpPin = 1; //контакт контроля состояния бензонасоса
const int start_stopButton = 7; // кнопка старт стоп
boolean lastButton = 0;
int Button = LOW;
int ledPin = 13;
int interval = 500;
int previousMillis = 0;
int ledMig = LOW;
//переменные
int passenger = 0; //переменная для хранения данных с контакта контроля нахождения людей в салоне
int door = 0;//переменная для хранения данных с контакта контроля состояния тригеров дверей
int indicator = 0; //переменная для хранения данных с индикатора заряда АКБ
int brake = 0; //переменная для хранения данных с контакта индикатора ручного тормоза
int fuelPump = 0;//переменная для хранения данных с контакта реле бензонасоса
int startButton = 0; //переменная для хранения данных с кнопки старт стоп
int clutch_pedal = 0; //переменная для хранения данных с контакта контроля педали сцепления
void setup() {
// задаем режим выхода для порта, подключенного к реле
pinMode(ACCPin, OUTPUT);
pinMode(IG2Pin, OUTPUT);
pinMode(IG1Pin, OUTPUT);
pinMode(STARTPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// задаем режим входа для портов подключенных к кнопкам и датчикам
pinMode (passengerPin, INPUT);
pinMode (doorPin, INPUT);
pinMode (clutch_pedalPin, INPUT);
pinMode (indicatorPin, INPUT);
pinMode (brakePin, INPUT);
pinMode (start_stopButton, INPUT);
pinMode (fuelPumpPin, INPUT);
}
void loop()
{
// код АСС
passenger = digitalRead (passengerPin); //сохраняем состояние с контакта контроля пассажиров в переменную
door = digitalRead (doorPin); //сохраняем состояние с контакта контроля тригеров дверей в переменную
unsigned long currentMillis = millis(); //записываем время в переменную currentMillis
if (door == 1 && currentMillis>1 || passenger == HIGH ) //если дверь открыта и прошло более 1 млСек, ТО
{
digitalWrite (ACCPin, HIGH); // Становится под ток реле АСС
}
if(currentMillis >900000 && door==0 && passenger == 0 ) //если прошло более 15 мин и дверь закрыта и нет пассажиров в салоне
{
delay(1000); //ТО ждем 1 Секунду
digitalWrite(ACCPin, LOW); //Обесточиваем реле АСС
}
// код запуска
startButton = digitalRead(start_stopButton);//сохраняем состояние с контакта кнопки в переменную
clutch_pedal = digitalRead(clutch_pedalPin);//сохраняем состояние с контакта педали сцепления в переменную
indicator = digitalRead(indicatorPin);//сохраняем состояние с индикатора заряда АКБ в переменную
brake = digitalRead(brakePin);
fuelPump = digitalRead(fuelPumpPin);//сохраняем состояние с контакта реле бензонасоса в переменную
if (startButton == HIGH && lastButton == LOW && brake== HIGH)
{
lastButton = HIGH;
if (Button == LOW) Button = HIGH;
else Button = LOW;
}
else
{
lastButton = startButton;
}
if(Button==1)
{
digitalWrite(IG2Pin, HIGH);
digitalWrite(IG1Pin, HIGH);
if (indicator == HIGH){ led();}
if(indicator == HIGH && clutch_pedal == HIGH && fuelPump == LOW)
{
digitalWrite(STARTPin, HIGH);
if (clutch_pedal == LOW)
digitalWrite(STARTPin, LOW);
}
if (clutch_pedal == LOW)
digitalWrite(STARTPin, LOW);
else if (indicator == LOW)
{
digitalWrite(STARTPin, LOW);
digitalWrite(ledPin, HIGH);
}
}
if(Button==0)
{
digitalWrite(IG2Pin, LOW);
digitalWrite(IG1Pin, LOW);
digitalWrite(ledPin, LOW);
digitalWrite(STARTPin, LOW);
}
}
void led()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
// сохраняем время последнего переключения
previousMillis = currentMillis;
// если светодиод не горит, то зажигаем, и наоборот
if (ledMig == LOW)
ledMig = HIGH;
else
ledMig = LOW;
// устанавливаем состояния выхода, чтобы включить или выключить светодиод
digitalWrite(ledPin, ledMig);
}
}
const int ACCPin = 9; //контакт подключения реле АСС
const int IG2Pin = 12; // контакт подключения доп оборудования
const int IG1Pin = 10; // контакт подключения "зажигание"
const int STARTPin = 11; // контакт подключения реле стартера
const int passengerPin = 6; // контакт контроля нахождения людей в салоне
const int doorPin = 5; // контакт контроля состояния тригеров дверей
const int clutch_pedalPin = 3; //контакт контроля состояния педали сцепления
const int indicatorPin = 4; //контакт контроля состояния индикатора заряда батареи аккумуляторов
const int brakePin = 2; //контакт контроля состояния ручного тормоза
const int fuelPumpPin = 7; //контакт контроля состояния бензонасоса
const int start_stopButton = 1 ; // кнопка старт стоп
const int safeSist = 8; //имобилайзер
boolean lastButton = 0;
int Button = LOW;
int ledPin = 13;
int interval = 500;
int previousMillis = 0;
int ledMig = LOW;
//переменные
int passenger = 0; //переменная для хранения данных с контакта контроля нахождения людей в салоне
int door = 0;//переменная для хранения данных с контакта контроля состояния тригеров дверей
int indicator = 0; //переменная для хранения данных с индикатора заряда АКБ
int brake = 0; //переменная для хранения данных с контакта индикатора ручного тормоза
int fuelPump = 0;//переменная для хранения данных с контакта реле бензонасоса
int startButton = 0; //переменная для хранения данных с кнопки старт стоп
int clutch_pedal = 0; //переменная для хранения данных с контакта контроля педали сцепления
int safe = 0;
void setup() {
// задаем режим выхода для порта, подключенного к реле
pinMode(ACCPin, OUTPUT);
pinMode(IG2Pin, OUTPUT);
pinMode(IG1Pin, OUTPUT);
pinMode(STARTPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// задаем режим входа для портов подключенных к кнопкам и датчикам
pinMode (passengerPin, INPUT);
pinMode (doorPin, INPUT);
pinMode (clutch_pedalPin, INPUT);
pinMode (indicatorPin, INPUT);
pinMode (brakePin, INPUT);
pinMode (start_stopButton, INPUT);
pinMode (fuelPumpPin, INPUT);
pinMode (safeSist, INPUT);
}
void loop()
{
// код АСС
passenger = digitalRead (passengerPin); //сохраняем состояние с контакта контроля пассажиров в переменную
door = digitalRead (doorPin); //сохраняем состояние с контакта контроля тригеров дверей в переменную
unsigned long currentMillis = millis(); //записываем время в переменную currentMillis
if (door == HIGH) //если дверь открыта , ТО
{
digitalWrite (ACCPin, HIGH); // Становится под ток реле АСС
}
if(currentMillis >900000 && door==LOW && passenger ==LOW ) //если прошло более 15 мин и дверь закрыта и нет пассажиров в салоне
{
digitalWrite(ACCPin, LOW); //Обесточиваем реле АСС
}
// код запуска
startButton = digitalRead(start_stopButton);//сохраняем состояние с контакта кнопки в переменную
clutch_pedal = digitalRead(clutch_pedalPin);//сохраняем состояние с контакта педали сцепления в переменную
indicator = digitalRead(indicatorPin);//сохраняем состояние с индикатора заряда АКБ в переменную
brake = digitalRead(brakePin); // состояние ручного тормоза
fuelPump = digitalRead(fuelPumpPin);//сохраняем состояние с контакта реле бензонасоса в переменную
safe = digitalRead (safeSist);
if (startButton == HIGH && lastButton == LOW && brake== HIGH)
{
lastButton = HIGH;
if (Button == LOW) Button = HIGH;
else Button = LOW;
}
else
{
lastButton = startButton;
}
if(Button==HIGH)
{
digitalWrite(IG2Pin, HIGH);
digitalWrite(IG1Pin, HIGH);
if (indicator == HIGH){ led();}
if(indicator == HIGH && clutch_pedal == HIGH && fuelPump == LOW)
{
if( safe == HIGH)
{
digitalWrite(STARTPin, HIGH);
}
}
if (clutch_pedal == LOW || safe == LOW)
digitalWrite(STARTPin, LOW);
else if (indicator == LOW)
{
digitalWrite(STARTPin, LOW);
digitalWrite(ledPin, HIGH);
}
}
if(Button==0)
{
digitalWrite(IG2Pin, LOW);
digitalWrite(IG1Pin, LOW);
digitalWrite(ledPin, LOW);
digitalWrite(STARTPin, LOW);
}
}
void led()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
// сохраняем время последнего переключения
previousMillis = currentMillis;
// если светодиод не горит, то зажигаем, и наоборот
if (ledMig == LOW)
ledMig = HIGH;
else
ledMig = LOW;
// устанавливаем состояния выхода, чтобы включить или выключить светодиод
digitalWrite(ledPin, ledMig);
}
}
с 53 строки начинается код для работы ACC в автомобиле!!!
сейчас он работает таким образом, когда открывается дверь становится под ток реле АСС, и работает до тех пор пока на сиденьях есть пассажиры, если выйти из машины и пройдет 15 минут то АСС выключтся, при снятии с сигнализации машины происходит ресет arduino.
хочу сделать таким образом чтобы если ты встал или потерялся контакт на сиденье не пропадало питание на АСС, чтобы если пассажиров на сиденьях нет и двери закрыты реле обесточивалось через 2 минуты, а если пассажиры появились то АСС все время было включено!
passenger = digitalRead (passengerPin); //сохраняем состояние с контакта контроля пассажиров в переменную
door = digitalRead (doorPin); //сохраняем состояние с контакта контроля тригеров дверей в переменную
if (door == HIGH) //если дверь открыта , ТО
{
digitalWrite (ACCPin, HIGH); // Становится под ток реле АСС
}
if(door==LOW && passenger ==LOW ) //и дверь закрыта и нет пассажиров в салоне
{
unsigned long currentMillis = millis(); //записываем время в переменную currentMillis
if(currentMillis - previousMillis > interval2)
{
previousMillis = currentMillis;
digitalWrite(ACCPin, LOW); //Обесточиваем реле АСС
}
}
С помощью leshak`a – firmware, maksim`a – PCB design, вот и моя кнопка.
Все как и писал раньше, только еще добавилось управление webasto(автономный предпусковой подогреватель двигателя). Webasto управляется нажав на кнопку - закрыть 3 раза, и выключается нажав один раз - открыть. Дистанционный пульт заводской! - Никого колхоза :) Встроено и множество других функций, слежение за вольтажом акумулятора, слежение за температурой тосола, слежение нажата ли педаль тормоза, управление климат контролем и так далее..
Вы не правильно поняли. Максим не советовал вам купить за 15-тысяч, а сравнил решение Mastino с аналогичным из магазина (хотя "аналогичность" там очень далекая. Это 15-тысячное решение не умеет и трети того что вышло у Mastino).
Dmitry23 пишет:
Да и за помощь спасибо!!! ОГРОМНОЕ!!!
Ваши чувства вполне понятны (более того, боюсь что и этот мой пост воспримится с раздражением. прочитается как очередное "бла-бла-бла").
Но... скажем так. Помощь о которой вы просили - весьма времязатратна. Найти что не так "в такой портянке" - не просто. Как для "первой программы" - ваш код просто замечательный (нет. правда, большинство и к 20-той так хорошо не пишут), но все равно он не соотвествует архитектурно сложности поставленой задачи. Для мелких задач - так и нужно писать, но вот когда у вас начитается "куча датчиков, куча состояний"... сложно начинает расти не линейно. Поменял что-то одно - навернулось другое. И "удержать картину в голове целиком" - уже проблематично.
Если вы смотрели ролик Mastino, то заметили как он в конце показывает код. Обратили внимание на его объем? Да он гораздо более многословен чем ваш. Но именно для того что-бы сделать независимыми разные части. Куча дополнительных слоев и абстракций (отдельный классы для работы с железом, машины состояний и т.п.) И писалось все "так длинно" имено для того что-бы избежать "разбирательств" с кодом похожий на ваш.
И в "двух словах", на форуме, типа "поменяй эту строчку" - объяснить его не выйдет :(
Что-бы у Mastino так "гладко все работало", я рисовал диаграмы состояний, куча стрелочек с условиями переходов между состояниями, не один час обсуждали ее. Искали возможные "тупики" и моделировали "а что будет если...". Это не "две строчки описания задачи на форуме". Сам код фаршировался выводом логов. Открыв Serial монитор можно четко видеть какой датчик какое показание имеет, когда и почему произошел переход из одного состояние в другой и т.д. и т.п. Вообщем куча "подготовительных усилий" что-бы вот потом легче было "разбиратся что не так пошло".
Я не хочу сказать что ваш код - нужно выкинуть. "Дожать его можно", но это "морокливая работа". Тот кто за "это возмется" - дожен реально хотеть его "дожать" :)
Так что тут два выхода. Либо "заказывать исполнение", либо "раскапывать самому" (уж кто как ни вы мотивированы на это). А бесплатную помощь - тут можно получить, только выделяя "проблемные" части, сводя проблемки к "маленьким и обозримым". Которые и другие форумчане могут легко "у себя воспроизвести", да и просто "окинуть взглядом легче". Вообщем "не весь автомобиль сюда тащить", а только "не работающий блок". Старатся по максимуму локализировать проблему (кстати в результате этого, в большинстве случаев вы и сами сразу поймете причину).
Вот на таких мелких задачах "набить руку" и "понимание", а уж потом их компоновать в "большое автомобильное решение". Там задача "обозрима" - и вы сразу получили какой-то отклик (счас и я там вставлю свои пять копеек :)
Но, кстати, если уж делаете для себя... то часто ли вы ползуетесь печкой на не заведенном двигателе? Я так предпологаю никогда. Поэтому можено реле стартера поставить нормально разомкнутое непереключающее и на печку такое же отдельное реле, которое будет включать печку только тогда, когда двигатель завелся.
_____Сложно сказать зачем так сделано, может одно замыкается/размыкается чуть раньше другого, это надо видеть замок изнутри, а вообще и стартер и ECCS запускаются в одном положении... но может быть так, что ECCS продалжает работать и после того как ключ не в положении ST и на этом проводе (на ECCS) остается 12 вольт.... а выключается ECCS например при отключении зажигания.____
Не там происходит по другому, сначало ключем коммутируется АСС, затем IGN и печ при этом АСС включено, затем одновременно ECCS и Стартер при этом АСС и печ выключино, потом отпускаем ключ и он возвращается в положение IGN и печ и АСС.
Я в предыдущем своем посте залил новую схемку.
Не там происходит по другому, сначало ключем коммутируется АСС, затем IGN и печ при этом АСС включено, затем одновременно ECCS и Стартер при этом АСС и печ выключино, потом отпускаем ключ и он возвращается в положение IGN и печ и АСС.
Я в предыдущем своем посте залил новую схемку.
Я говорил только о положении ключа ST и о том можно ли соединить стартер с ECCS, а не о том как работает все остальное. ECCS разве работает только при старте?
Да, я вот как раз об этом и говорю что цепь ECCS только когда стартует двигатель.
Уверены? Уверены что ECCS не продолжает работать во время работы двигателя? проверяли мультиметром? Уверены что или стартер или ECCS не может замыкаться/разъеденяться чуть раньше/позже? разбирали замок? Ведь не зря же провода отдельные...
Проверял мультиметром, при повороте ключа появляется проводимостьпри его отпускании проводимость пропадает. эта цепь ECCS нужна только для контроля пуска двигателя и отключения некоторых узлов в самом ECCS. Cедня еще все точно проверю, чтоб не быть голословным
Нужно не проводимость замка проверять, а напряжение на этом проводе на заведенном двигателе.
Все проверил. на этом контакте нет напряжения. В книге написано - 34 контакт ECCS - Когда ключ повернут в положение START - Сигнал старт от замка зажигания.
Тогда их можно параллелить...
Вот пример моей программы для запуска двигателя Hyundai accent. Все сыро еще конечно же, но это моя первая программа надеюсь получится сделать ее лучше!
Ну вот появилось время и у меня. Кто нибудь из понимающих кинте взгляд на схему, нету ли грубых ошибок?
Можно сделать проще - входы дуины подключить к коллекторам оптотранзисторов и включить внутреннюю подтяжку, тогда можно убрать подтягивающие резисторы. А вот по поводу полевика управляющего стартером не уверен, он у вас до конца не будет закрываться.
Вот так полевик будет работать
понял
какой марки полевик брат?
P.S.по вашей схеме maxim, выходит что когда на пине LOW стартер работает, а когда HIGH не работает?
P-канальный мосфет, какой не знаю берите с запасом, такой что бы мог втягивающее реле запустить, так как у многих машин с замка зажигания провод идет прямо на втягивающее реле, а не через дополнительную релюшку.
P.S.по вашей схеме maxim, выходит что когда на пине LOW стартер работает, а когда HIGH не работает?
Нет, транзистор то P-канальный, напряжение на затвор прикладывается относительно +12В, то есть когда на затворе +12В транзистор закрыт, а когда 0В транзистор открыт.
не знаю почему но в симуляторе взрывается транзистор если подаем 5V. или это симулятор глючит?
а если уменьшить вольтаж с 12 до 5 и поставить диод тогда работает...
Так я не пойму вы стартером хотите еще через реле управлять? или транзистором? я вам показываю как управлять транзистором без реле. Если хотите релюшкой запускать стартер, то вообще ни полевик не нужен ни опторазвязка, а нужен обычный биполярный транзистор и диод для его защиты.
Без реле.. Можно ваш skype? :)
Вместо 50 кОм поставте делитель - нет ничего проще, чем уменьшить напряжение с 12 до 5 вольт.
И что даст делитель?
Делитель уменшит управляющее напряжение на затворе транзистора до 5 вольт.
Не понял, оно и так с дуины 5 вольт, а управлять затвором нужно именно 12-ю, так как на сколько я знаю полевые транзисторы управляются тем напряжением, которым и управляют. Схему можно?
Не понял, оно и так с дуины 5 вольт, а управлять затвором нужно именно 12-ю, так как на сколько я знаю полевые транзисторы управляются тем напряжением, которым и управляют. Схему можно?
Я имел в виду схему с оптроном выше. А с чего бы это "тем напряжением, которым управляют"? Это ток затвора нормируется для этого случая. Вот, взял первый попавшийся p-транзистор IRF5210 - максимальное коммутируемое напряжение 100В, ток 40А, напряжение управления до 20 вольт. Для этого транзистора никаких делителей не потребуется, хотя он стабильно откроется при 5-ти вольтах (максимальный ток 10А), полностью откроется при 10-ти вольтах.
А у человека в симуляторе транзистор взорвался - значит превышены параметры модели - или максимальное напряжение на затворе, или максимальный ток стока.
Вы меня запутали..:) Так как делать? :) Вчера купил IRF4905, он такой маленький не сгорит ли он? :)
Чего бы ему гореть? Максимальный ток 74А :)
Включайте им втягивающее смело. Не забудте поставить на радиатор. Радиатор должен быть изолирован от корпуса автомобиля. Хватит небольшого радиатора.
Вот немного проработанный код моей программы, вышло так что в программировании я вообще ничего не понимаю, сейчас стараюсь разобраться, если у кого будут замечания пишите!!! Спасибо!!
Вот практически готово устройство!!! скоро буду ставить в авто!
печатная плата---
плата без Arduino
и с ним
ну и со стороны пайки!
Прошу помощи!!!
Есть код вот он
с 53 строки начинается код для работы ACC в автомобиле!!!
сейчас он работает таким образом, когда открывается дверь становится под ток реле АСС, и работает до тех пор пока на сиденьях есть пассажиры, если выйти из машины и пройдет 15 минут то АСС выключтся, при снятии с сигнализации машины происходит ресет arduino.
хочу сделать таким образом чтобы если ты встал или потерялся контакт на сиденье не пропадало питание на АСС, чтобы если пассажиров на сиденьях нет и двери закрыты реле обесточивалось через 2 минуты, а если пассажиры появились то АСС все время было включено!
может попробовать вот так
С помощью leshak`a – firmware, maksim`a – PCB design, вот и моя кнопка.
Все как и писал раньше, только еще добавилось управление webasto(автономный предпусковой подогреватель двигателя). Webasto управляется нажав на кнопку - закрыть 3 раза, и выключается нажав один раз - открыть. Дистанционный пульт заводской! - Никого колхоза :) Встроено и множество других функций, слежение за вольтажом акумулятора, слежение за температурой тосола, слежение нажата ли педаль тормоза, управление климат контролем и так далее..
http://www.youtube.com/watch?v=2Yi3lukcjrU
Да... если учесть, что блок ДУ + пульт Webasto стоит ~15 000 рублей... то получилась не плохая вещь + не нужно два брелка таскать.
ну так... :) хоть я в технической части не селен.., за то знаю что есть хорошо :)
Да вообще четко, за 15 то тыщщщщ XD
Да и за помощь спасибо!!! ОГРОМНОЕ!!!
Да вообще четко, за 15 то тыщщщщ XD
Вы не правильно поняли. Максим не советовал вам купить за 15-тысяч, а сравнил решение Mastino с аналогичным из магазина (хотя "аналогичность" там очень далекая. Это 15-тысячное решение не умеет и трети того что вышло у Mastino).
Да и за помощь спасибо!!! ОГРОМНОЕ!!!
Ваши чувства вполне понятны (более того, боюсь что и этот мой пост воспримится с раздражением. прочитается как очередное "бла-бла-бла").
Но... скажем так. Помощь о которой вы просили - весьма времязатратна. Найти что не так "в такой портянке" - не просто. Как для "первой программы" - ваш код просто замечательный (нет. правда, большинство и к 20-той так хорошо не пишут), но все равно он не соотвествует архитектурно сложности поставленой задачи. Для мелких задач - так и нужно писать, но вот когда у вас начитается "куча датчиков, куча состояний"... сложно начинает расти не линейно. Поменял что-то одно - навернулось другое. И "удержать картину в голове целиком" - уже проблематично.
Если вы смотрели ролик Mastino, то заметили как он в конце показывает код. Обратили внимание на его объем? Да он гораздо более многословен чем ваш. Но именно для того что-бы сделать независимыми разные части. Куча дополнительных слоев и абстракций (отдельный классы для работы с железом, машины состояний и т.п.) И писалось все "так длинно" имено для того что-бы избежать "разбирательств" с кодом похожий на ваш.
И в "двух словах", на форуме, типа "поменяй эту строчку" - объяснить его не выйдет :(
Что-бы у Mastino так "гладко все работало", я рисовал диаграмы состояний, куча стрелочек с условиями переходов между состояниями, не один час обсуждали ее. Искали возможные "тупики" и моделировали "а что будет если...". Это не "две строчки описания задачи на форуме". Сам код фаршировался выводом логов. Открыв Serial монитор можно четко видеть какой датчик какое показание имеет, когда и почему произошел переход из одного состояние в другой и т.д. и т.п. Вообщем куча "подготовительных усилий" что-бы вот потом легче было "разбиратся что не так пошло".
Я не хочу сказать что ваш код - нужно выкинуть. "Дожать его можно", но это "морокливая работа". Тот кто за "это возмется" - дожен реально хотеть его "дожать" :)
Так что тут два выхода. Либо "заказывать исполнение", либо "раскапывать самому" (уж кто как ни вы мотивированы на это). А бесплатную помощь - тут можно получить, только выделяя "проблемные" части, сводя проблемки к "маленьким и обозримым". Которые и другие форумчане могут легко "у себя воспроизвести", да и просто "окинуть взглядом легче". Вообщем "не весь автомобиль сюда тащить", а только "не работающий блок". Старатся по максимуму локализировать проблему (кстати в результате этого, в большинстве случаев вы и сами сразу поймете причину).
Вообщем нужно идти по тому пути, который вы верно пошли в другой своей ветке http://arduino.ru/forum/programmirovanie/hc-sr04-relay
Вот на таких мелких задачах "набить руку" и "понимание", а уж потом их компоновать в "большое автомобильное решение". Там задача "обозрима" - и вы сразу получили какой-то отклик (счас и я там вставлю свои пять копеек :)