Страница 15 из 16 ПерваяПервая ... 5910111213141516 ПоследняяПоследняя
Показано с 141 по 150 из 152
  1. #141
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    197

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    basurman971 Скажите у вас нормально всё с логикой? Может какое заболевание связоное с головой есть? А может акоголизм? Наркомания? Вы расскажите, а то кроме как заболеванием я не знаю как объяснить зачем ты советуешь человеку с трудом отличающим плюс от минуса и в упор на схеме не видящего какой из трех четко подписанных проводов датчика за что отвечает спаять операционник с обвязкой для ардуины и самостоятельно переписать скетч для спидометра под совершенно другую задачу измерения импульсов коленвала с нахождением среди них вмт и отсечкой по ней.
    Вместо того чтобы взять два резистора, подключится к катушке зажигания и использовать готовый скетч. Вопрос все тот же - ЗАЧЕМ ЭТО ДЕЛАТЬ НОРМАЛЬНОМУ ЧЕЛОВЕКУ ?

  2. #142
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    316

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    тебе - В ЛЕС!

  3. #143
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    197

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

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

    А может стадный эффект - и все так делают? Так тоже нет - никому кроме тебя даже в голову не пришло цепляться к датчику коленвала, как бы все понимают что это идиотизм какой то.
    Так что ответь на вопрос ЗАЧЕМ ТЫ ЭТУ АХИНЕЮ ВЫДУМЫВАЕШЬ - а то я в лесу не выживу.

  4. #144
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    316

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

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

  5. #145
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    197

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

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

  6. #146
    Пользователь
    Регистрация
    08.12.2014
    Сообщений
    72
    Вес репутации
    169

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Оживлю тему...
    По скетчу из поста В строке
    251 delay (delay_ign); // Задержка на бензонасос и датчики
    Я так понимаю это для бензиновых ожидание . А для дизеля нужно ждать когда свечи накала погаснут.
    Помогите скетч поправить. Допустим сигнал от свечи идет на A2 (он же D16)

    Если кому надо , то while спасет.
    Получилось вместо
    delay (delay_ign);
    Пишем
    while (digitalRead(svecha)) // Задержка на бензонасос или свечи накала
    {
    LOW;
    }
    Последний раз редактировалось Niferman; 15.05.2018 в 01:22.

  7. #147
    Новичок
    Регистрация
    28.05.2019
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Цитата Сообщение от maestro777 Посмотреть сообщение
    Ребята если кто скачал прогу извините я там в коде ошибку допустил которая мешает экстренному отключению программы по нажатию кнопки вот исправленный код :
    PHP код:
    byte ACCPin 11//Выход на транзистор переферии ACC
    byte EnginePin 10//Выход на транзистор зажигания
    byte StarterPin 9//Выход на транзистор стартера
    byte ButtonPin 8//Вход + с кнопки <----------------------------- Стягивающий резистор на "-"
    byte StopPin 12//Вход с тормоза <----------------------------- Стягивающий резистор на "-"
    byte ImmoPin 7//Вход с иммо <----------------------------- Подтягивающий резистор на "+"
    byte TahoPin 6//Вход с тахометра <----------------------------- Стягивающий резистор на "-"
    byte WordsPin 5//Выход на глазок 1 
    byte YellowGlazokPin 4//Выход на глазок 2 
    byte GreenGlazokPin 3//Выход на глазок 3
    byte statusEngine 0;
    byte sw 2;
    //byte rotate = 0;
    unsigned int rotate=0;
    boolean stateACC false;
    unsigned long lastPress 0;
    unsigned long lastImmo 0;
    unsigned long splitTime 0;
    unsigned long time =0;
    byte stat 0;
    void setup()
    {
    pinMode(sw,INPUT);
    pinMode(EnginePinOUTPUT);
    pinMode(StarterPinOUTPUT);
    pinMode(ACCPinOUTPUT);
    pinMode(WordsPinOUTPUT);
    pinMode(YellowGlazokPinOUTPUT);
    pinMode(GreenGlazokPinOUTPUT);
    //time = 0;
    lastImmo=millis();
    lastPress=millis();
    Serial.begin(9600);
    Serial.println("Arduino is started");
    }

    // 0 - Все выключенно
    // 1 - Включено только зажигание
    // 2 - Крутиться стартер, ждем оборотов
    // 3 - Двигатель работает, все включено
    // 4 - Неудачная попытка запуска, включено только зажигание
    // 5 - Двигатель заглушен, АСС пока еще работает
    void loop()
    {
    if (
    stat != statusEngine) {stat statusEngine;
    Serial.println(stat);
    }
    unsigned long newTime millis() - lastPress;
    unsigned int button pressButton();
    if (
    button != 0Serial.println(button);
    lastImmoTest();
    switch (
    statusEngine
    {
    case 
    0:
    digitalWrite(GreenGlazokPinLOW);
    if (
    stateACCdigitalWrite(YellowGlazokPinHIGH); 
    else 
    digitalWrite(YellowGlazokPinLOW);
    if (
    millis() - lastImmo 10000digitalWrite(WordsPinHIGH); 
    else 
    digitalWrite(WordsPinLOW);
    if (
    button == 1500 && stateACC)
    {
    StopAll();
    }
    else if (
    button == 1500 && !stateACCStartACC();
    else if (
    button != && millis() - lastImmo 2000 && newTime 500) {
    StartEngine();
    statusEngine=1;
    }
    break;
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- 
    case 1:
    if (
    digitalRead(ImmoPin) == LOWStopAll();
    digitalWrite(WordsPinHIGH); 
    if (
    stateACCdigitalWrite(YellowGlazokPinHIGH); else digitalWrite(YellowGlazokPinLOW);
    if (
    millis() - lastImmo 2000 && StopIsPress() && newTime 900
    {
    digitalWrite(GreenGlazokPinHIGH); 
    digitalWrite(WordsPinHIGH);
    }
     else
    {
    digitalWrite(GreenGlazokPin,!digitalRead(GreenGlazokPin));
    delay(100);
    }
     
    if (
    button == 1500) {
    StopAll();
    }
    else if (
    button != && newTime 500) {
    if (!
    stateACC
    StopAll();
    else
    {
    StopEngine();
     
    statusEngine=5;
     }
     }
     else if (
    newTime 9000 && newTime 9100 && StopIsPress())//задержка на 9 секунд тут она не мешает основному циклу если нужна другая просто меняйте 
     
     
    {
     
     
    StartStarter();
     
    statusEngine=2;
     }
     break;
     
     
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 2:
     
    digitalWrite(WordsPinHIGH); 
     
    digitalWrite(GreenGlazokPinHIGH); 
     if (
    stateACCdigitalWrite(YellowGlazokPinHIGH);
     if (
    digitalRead(TahoPin) == HIGH) {
     
    rotate++;
     while (
    digitalRead(TahoPin) == HIGH) if (digitalRead(ImmoPin) == LOW) {StopAll(); break;}
     }
     if (
    rotate>=2
     {
     
    unsigned int rpm = (rotate*60000*10000/2)/(micros()-splitTime);
     
    Serial.print("rpm: ");
     
    Serial.println(rpm);
     
    rotate=0;
     
    splitTime=micros();
     if (
    rpm>1000) { //<-------ВЕРНУТЬ СЮДА ТЫЩУ!!!! <-------
     
    StopStarter();
     
    StartACC();
     
    statusEngine=3;
     
    Serial.println("Engine is WORK!!");
     break;
     }
     }
     if (
    button != && newTime 500) { 
     
    StopAll();
     }
     else if (
    newTime 5000 || !StopIsPress()){
     
    StopStarter();
     
    statusEngine=4;
     }
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 3:
     
    digitalWrite(GreenGlazokPinHIGH);
     
    digitalWrite(YellowGlazokPinLOW);
     if (
    newTime 5000digitalWrite(WordsPinLOW); 
     else 
    digitalWrite(WordsPinHIGH);
     if (
    button == 1500) {
     
    StopAll();
     }
     else if (
    button != && newTime 500) { 
     
    StopEngine();
     
    statusEngine=5;
     }
     break;
     
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
     
    case 4:
     
     
    digitalWrite(WordsPinHIGH);
     
    digitalWrite(GreenGlazokPin, !digitalRead(GreenGlazokPin)); delay(50);
     
    digitalWrite(YellowGlazokPinLOW);
     if (
    button == 1500 || newTime 10000) {
     
    StopAll();
     }
     else if (
    button != && newTime 500 && StopIsPress()) {
     
    StartStarter();
     
    statusEngine=2;
     }
     else if (
    button != && newTime 500 && !StopIsPress()) {
     
    StopAll();
     }
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 5:
     
    digitalWrite(GreenGlazokPinLOW);
     if (
    stateACCdigitalWrite(YellowGlazokPinHIGH); else digitalWrite(YellowGlazokPinLOW);
     if (
    newTime 5000
     {
     if (
    millis() - lastImmo 5000digitalWrite(WordsPinHIGH); else digitalWrite(WordsPinLOW);
     }
     else 
     
    digitalWrite(WordsPinHIGH);
     if (
    button == 1500) {
     
    StopAll();
     }
     else if (
    millis() - lastImmo 2000StopAll();
     else if (
    button != && newTime 500) {
     
    StartEngine();
     
    statusEngine=1;
     }
     
    lastImmoTest();
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    }
     }

    void StartEngine(){
    digitalWrite(EnginePinHIGH);
    Serial.println("Engine is ON");
    lastPress=millis();
     }
     
    void StopEngine(){
     
    digitalWrite(EnginePinLOW);
     
    Serial.println("Engine is OFF");
     
    lastPress=millis();
     }
     
    void StopAll(){
     
    digitalWrite(EnginePinLOW);
     
    digitalWrite(StarterPinLOW);
     
    digitalWrite(ACCPinLOW);
     
    Serial.println("All OFF"); 
     while (!
    digitalRead(ButtonPin)){}
     
    stateACC=false;
     
    lastPress=millis();
     
    statusEngine=0;
     
    lastPress=millis(); 
     }
     
     
    void StartStarter(){
     
    digitalWrite(StarterPinHIGH);
     
    Serial.println("Starter START!");
     
    splitTime=micros();
     
    lastPress=millis();
     }
     
    void StopStarter(){
     
    digitalWrite(StarterPinLOW);
     
    Serial.println("Starter if OFF!");
     
    lastPress=millis();
     }
     
     
    void StartACC(){
     
    digitalWrite(ACCPinHIGH);
     
    Serial.println("Starter ACC!");
     
    stateACC=true;
     
    lastPress=millis();
     }
     
    void lastImmoTest(){
     if (
    digitalRead(ImmoPin) == LOW) { //<----------------------------- Поменял на LOW
     
    lastImmo=millis();
     
    Serial.println("Immo+");
     }
     }
     
     
    unsigned int pressButton(){
     
    unsigned long newTime millis();
     
    boolean currentPosition digitalRead(ButtonPin);
     if (
    currentPosition == HIGH){ 
     
    delay(50);
     
    currentPosition=digitalRead(ButtonPin); 
     }
     while (!
    currentPosition) {
     
    currentPosition=digitalRead(ButtonPin);
     if (
    millis() - newTime 1000) return 1500;
     }
     
    newTime=millis() - newTime;
     if (
    newTime 60newTime 0;
     return 
    newTime
     }
     
    boolean StopIsPress(){
     return 
    digitalRead(StopPin); 
     } 
    подниму тему. кто исправлял ошибку в подсчетах оборотов? у меня почемуто считывает завышенные обороты при запуске на хх больше 3500. Подключил вход тахометра к датчику холла на восьмерке

  8. #148
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Может дребезг ?

  9. #149
    Новичок
    Регистрация
    28.05.2019
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    На входе делитель из двух резисторов и стабилитрон на 5.1 Вольт. Думаете после делителя добавить конденсатор?

  10. #150
    Новичок
    Регистрация
    28.05.2019
    Сообщений
    3
    Вес репутации
    0

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Если не сложно опишите пожалуйста что и как подсчитывается в этой строчке
    unsigned int rpm = (rotate*60000*10000/2)/(micros()-splitTime);
    Serial.print("rpm: ");
    Serial.println(rpm);
    rotate=0;
    splitTime=micros();

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

Страница 15 из 16 ПерваяПервая ... 5910111213141516 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •