Страница 1 из 6 123456 ПоследняяПоследняя
Показано с 1 по 10 из 55
  1. #1
    Новичок
    Регистрация
    27.04.2009
    Возраст
    40
    Сообщений
    17
    Вес репутации
    188

    Восклицание Контроллер вкл/выкл

    Всем привет. Собираю на Ардуино свой контроллер блока питания, но вышла небольшая заминка в скетче ( ну не бог я программирования ) Алгоритм блока очень простой - при заводке двигателя ждем N сек, жмем кнопку компа, ждем M сек, контроль выходного напряжения, включаем усилок - считаем, что комп включен. Если машину заглушили, гасим экран/усилок, ждем ~15..20 мин, жмем кнопку компа, ждем X сек для завершения работы системы. Вот заминка вышла в эти 15..20 минут, хочется сделать так, если в течении этого времени ,допустим я вернулся в машину, останавливалась подпрограммма выключения компа,включался монитор и усилок.По идее нужно использовать прерывание, а вот куда его в код добавлять, не соображу


    PHP код:
    #define acc 4
    #define pw_12v 5
    #define btn_on 6
    #define amp 7
    #define WORK  0
    #define OFF 1

    int State 0;
    int acc_status

    int mode;

    void setup()
    {
      
    Serial.begin(9600);
      
    pinMode(accINPUT);
      
    pinMode(pw_12vOUTPUT);
      
    pinMode(btn_onOUTPUT);
      
    pinMode(ampOUTPUT);
      
    mode WORK;
      
    acc_status 0;
    }
     
    void loop() 
    {
      switch(
    mode
      {
        case 
    WORK:
          
    workLoop();
          break;
        case 
    OFF:
          
    offLoop();
          break;
      }
    }



    void workLoop()
    {
       
    delay(300);
        
    State digitalRead(acc);
        if (
    State == HIGH)
        {
                   
            if (
    acc_status==0)
            {
                
    acc_status=1;
                            
    delay(5000);                                      //задержка на заводку двигателя - 5 сек.
                       
    digitalWrite(pw_12vHIGH);
                       
    delay(1000);
                       
    digitalWrite(btn_onHIGH);
                       
    delay(1000);
                       
    digitalWrite(btn_onLOW);
                       
    delay(40000);                                     //задержка включения усилителя - 40 сек.
                       
    digitalWrite(ampHIGH);
            }
            else
            {
                    
    digitalWrite(pw_12vHIGH);
                       
    digitalWrite(ampHIGH);
            }
        }
        else
        {
            if (
    acc_status ==0)
            {
                            
    digitalWrite(ampLOW);
                       
    digitalWrite(pw_12vLOW);
                    
            }
            else
            {
                  
    digitalWrite(ampLOW);
                       
    mode OFF;
                }
                    
        }
              
    delay(10);
    }

    void offLoop()
    {
       
    delay(300);
       for(
    int timeOut =0;timeOut <= 900timeOut++)                         // "timeOut <= 900" задержка спящего режима, в данном случае - 15 минут                         
       
    {
             
    State digitalRead(acc);
         if(
    State == LOW)
         {
             
    delay(1000);
         }
         else
         {
                    
    mode WORK;
            
    timeOut=5000;
             }
       }
       if(
    State==LOW)
       {
        
    acc_status=0;
            
    digitalWrite(btn_onHIGH);                                      //
               
    delay(1000);                                                     // жмем кнопку питания
            
    digitalWrite(btn_onLOW);                                       // 
            
    delay(30000);                                                    //задержка для корректного завершения работы - 30 сек.
        
    mode WORK;   
       }


    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	схема.png 
Просмотров:	1267 
Размер:	78.0 Кб 
ID:	7870  
    Последний раз редактировалось interhard; 15.03.2010 в 22:14.

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

    По умолчанию Re: Контроллер вкл/выкл

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

  3. #3
    Новичок
    Регистрация
    27.04.2009
    Возраст
    40
    Сообщений
    17
    Вес репутации
    188

    По умолчанию Re: Контроллер вкл/выкл

    Изменил код. Теперь все работает.

  4. #4
    Пользователь
    Регистрация
    20.12.2009
    Возраст
    39
    Сообщений
    38
    Вес репутации
    184

    По умолчанию Re: Контроллер вкл/выкл

    А можешь схемку подключения выложить? в частности интересует как подключаешь Ардуину к зажиганию? Как понял, ардуина принимает на входах +5В максимум, а как же тогда принять +12В от зажигания?

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

    По умолчанию Re: Контроллер вкл/выкл

    делитель из двух резиторов

  6. #6
    Новичок
    Регистрация
    19.05.2009
    Возраст
    43
    Сообщений
    13
    Вес репутации
    186

    По умолчанию Re: Контроллер вкл/выкл

    Цитата Сообщение от C0vax Посмотреть сообщение
    А можешь схемку подключения выложить? в частности интересует как подключаешь Ардуину к зажиганию? Как понял, ардуина принимает на входах +5В максимум, а как же тогда принять +12В от зажигания?
    погугли "резисторный делитель напряжения"

  7. #7
    Гуру Аватар для St@rz
    Регистрация
    20.06.2008
    Возраст
    49
    Сообщений
    2,293
    Вес репутации
    860

    По умолчанию Re: Контроллер вкл/выкл

    Цитата Сообщение от interhard Посмотреть сообщение
    Изменил код. Теперь все работает.
    Что изменил?

  8. #8
    Пользователь
    Регистрация
    20.12.2009
    Возраст
    39
    Сообщений
    38
    Вес репутации
    184

    По умолчанию Re: Контроллер вкл/выкл

    Спасибо, нашел и подобрал резисторы...

  9. #9
    Новичок
    Регистрация
    27.04.2009
    Возраст
    40
    Сообщений
    17
    Вес репутации
    188

    По умолчанию Re: Контроллер вкл/выкл

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

    В схеме использовал оптопары PC123 и реле(К1) 12V/12А.
    схема в шапке.
    Последний раз редактировалось interhard; 15.03.2010 в 22:15.

  10. #10
    Пользователь
    Регистрация
    20.12.2009
    Возраст
    39
    Сообщений
    38
    Вес репутации
    184

    По умолчанию Re: Контроллер вкл/выкл

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

Страница 1 из 6 123456 ПоследняяПоследняя

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

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

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

Ваши права

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