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

    По умолчанию Замена ручного управления печкой

    Всем привет. Задумался над переделкой ручного управления печкой на электронный с дальнейшим вкорячиванием туда климата. Действо сие назрело уже давно, поскольку при установке дисплея в Фокус I пришлось переносить все крутилки под руль и стало очень неудобно туда тянуться.Информацию по переделке нашёл здесь - http://forum.2112.ru/showthread.php?t=18165 и на форуме где-то была инфа про леокар. В итоге купил два фокусовских сервопривода и установил их вместо ручного регулятора.Силовая схема для регулятора воздушных потоков и температуры выполнена на L293E с допустимым током 1А, для вентилятора пока не определился, скорее всего будет ШИМ с драйвером IR2121 + IRF1405.
    Уровни положения заслонки откалибровал через ардуино, который выводил значения напрямую в ком-порт.Соответственно при повторе конструкции калибровка должна быть заново.
    Код для ардуино :

    PHP код:
    #define m1_l  5
    #define m1_r  6
    #define m2_l  8
    #define m2_r  9
    #define chip1  4
    #define chip2  7
    int pos[5] = {560630720810910};                   //значения получены с переменных резисторов обратной связи двигателя
    #define tMIN 220                                          //-----
    #define tMAX 560                                          //-----
    int t_center = (tMAX-tMIN)/2+tMIN;
    int pwm[5] = {51102153204255};                
    int data 0;
    #define sensor1 1
    #define sensor2 2
    #define pwm 10
    void rigth (int posit);
    void left (int posit);



    void setup()
    {
      
    Serial.begin(9600);
      
    pinMode(m1_l,OUTPUT);
      
    pinMode(m1_r,OUTPUT);
      
    pinMode(m2_l,OUTPUT);
      
    pinMode(m2_r,OUTPUT);
      
    pinMode(chip1,OUTPUT);
      
    pinMode(chip2,OUTPUT);
      
    pinMode(sensor1,INPUT);
      
    pinMode(sensor2,INPUT);
      
    pinMode(pwm,OUTPUT);
     
     
     
    }


    void loop()
    {
      if (
    Serial.available() > 1)
      {
         switch (
    Serial.read())
        
        {
         case 
    0x01:
         
    flowloop();
         break;
         case 
    0x02:
         
    temploop();
         break;
         case 
    0x03:
         
    pwmloop();
         break;
        }
      }
    }



    void left (int posit)                                                 //левый двигатель цикл
    {
           
    digitalWrite(m1_l,HIGH);                                            
           
    digitalWrite(m1_r,LOW);            
           while (
    analogRead(sensor1)> pos[posit-1])
           {}
           
    digitalWrite(m1_l,LOW);

    }



    void rigth (int posit)                                                //правый двигатель цикл
    {
           
    digitalWrite(m1_r,HIGH);                                           
           
    digitalWrite(m1_l,LOW);                                        
           while (
    analogRead(sensor1)< pos[posit-1])
           {}
           
    digitalWrite(m1_r,LOW);
    }
        
    void flowloop()                                                        //цикл заслонки регулировки направления потоков 
    {
      
    data=Serial.read();                                                 //получаем данные с порта
      
    digitalWrite(chip1,HIGH);                                           //разрешаем управление двигателем 1
      
    {

       if (
    data == 0x01)                                                  //принимаем с ком порта команду на положение заслонки 1 (ноги)
       
    {
          if (
    analogRead(sensor1) > pos[0])                               
          {
           
    left(data);                                                     
          }
       }
      
       if (
    data == 0x02)                                                   //принимаем с ком порта команду на положение заслонки 1 (ноги-салон)                                      
       
    {
          if (
    analogRead(sensor1) > pos[1])                   
         {
           
    left(data);
         }
         else
           {
           
    rigth(data);
           }
        }
      
        if (
    data == 0x03)                                                   //принимаем с ком порта команду на положение заслонки 1 (салон) 
       
    {
          if (
    analogRead(sensor1) > pos[2])                                 
         {
           
    left(data);
         }
         else
           {
           
    rigth(data);
           }
        }
       
        if (
    data == 0x04)                                                     //принимаем с ком порта команду на положение заслонки 1 (салон-лобовое стекло) 
       
    {
          if (
    analogRead(sensor1) < pos[3])
         {
           
    rigth(data);          
         }
         else
           {
           
    left(data);
           }
        }
       
        if (
    data == 0x05)                                                     //принимаем с ком порта команду на положение заслонки 1 (лобовое стекло) 
       
    {
          if (
    analogRead(sensor1) < pos[4])
          {       
           
    rigth(data);
          }
       }
        
    delay(100);                                                           //задержка для АЦП                                                          
      
    }
    }
      
      
    void temploop()                                                           //цикл управления заслонкой регулировки температуры
    {
      
    data=(Serial.read())*4;                                                 //т.к температурой управляем с трекбара (диапазон значений 0-255) приводим данные в диапазон значений с сопротивления обратной связи двигателя
      
    digitalWrite(chip2,HIGH);                                               //разрешаем управление двигателем 2
        
            
    if (analogRead(sensor2)> data)
            {
            
    digitalWrite(m2_l,HIGH);                                            
            
    digitalWrite(m2_r,LOW);            
            while (
    analogRead(sensor2)> data)
            {}
            
    digitalWrite(m2_l,LOW);
            }                                       
            
          if  (
    analogRead(sensor2)< data)
            {
            
    digitalWrite(m2_r,HIGH);                                            
            
    digitalWrite(m2_l,LOW);            
            while (
    analogRead(sensor2)< data)
            {}
            
    digitalWrite(m2_r,LOW);
            }
         
          
    delay(100);
    }  
     
    void pwmloop()                                                             //цикл управления скоростью вентилятора
       
    {
             
    data=Serial.read();
             
    analogWrite(pwmdata);
       } 
    реализовано пока управление заслонкой распределения потоков на 5 положений, управляться будет в итоге с ПК через ком-порт + отдельный пульт(резистивные копки)на случай неисправности компьютера.
    принимаю вопросы, советы и альтернативые решения
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	flow.JPG 
Просмотров:	9951 
Размер:	69.9 Кб 
ID:	7882  
    Последний раз редактировалось interhard; 24.03.2010 в 00:52.

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

    По умолчанию Re: Замена ручного управления печкой

    Для кулера можно использовать MOSFET без драйвера и ШИМ-ить на частоте 100-400 Гц

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

    По умолчанию Re: Замена ручного управления печкой

    Это вентилятор печки, (может на схеме не все указал) который ест довольно много.Правда я ток не замерял, но предохранитель стоит штатный на 30А.Двигатель там должен быть коллекторный и при запуске ток великоват. Тема на форуме по этому поводу была, вроде про климат. Мосфет будет ли полностью открываться без драйвера?Боюсь спалить иначе можно транзистор.

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

    По умолчанию Re: Замена ручного управления печкой

    Кулер потребляет не больше 2А , в пике может быть и 10А
    Есть MOSET управляемые логическим уровнем с индексом IRL
    Здесь обсуждали MOSFET IRLU8259 так вот к нему можно до 900ватт нагрузки подключать. Я проверял его без драйвера, на частоте ШИМ-а 8000Гц с нагрузкой 3А даже не было намеков на нагрев
    Название: MOTOR Mosfet.png
Просмотров: 17169

Размер: 895 байт
    Последний раз редактировалось Chip; 16.03.2010 в 03:32.

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

    По умолчанию Re: Замена ручного управления печкой

    Ну значит дело упрощается

  6. #6
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Замена ручного управления печкой

    А не хочешь сразу замутить полноценный климат? Просто наработки на эту тему есть и я бы сказал, что серьезные. В моем проекте, правда, используются модельные сервы, но основное их отличие в том, что они требуют меньше выводов для упревления. Ну и пишу я не на arduino языке, а на оригинальном c, поскольку без отладчика повесился через пару дней. По сути язык ардуино отличается тем, что есть куча упрощений, типа digitalWrite.

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

    Ща утыкаюсь в то, что пока никто полноценно не присоединился, а одному, да еще на машине с родным климатом этим активно заниматься ломает.
    Вот тема: http://www.compcar.ru/forum/showthread.php?t=5147

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

    По умолчанию Re: Замена ручного управления печкой

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

  8. #8
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Замена ручного управления печкой

    Ну как сделаешь, будет куча полезных наработок! Буду с интересом следить за твоей темой

  9. #9
    Пользователь Аватар для tores
    Регистрация
    08.07.2009
    Возраст
    43
    Сообщений
    50
    Вес репутации
    193

    По умолчанию Re: Замена ручного управления печкой

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

  10. #10
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Замена ручного управления печкой

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

Страница 1 из 19 123456711 ... ПоследняяПоследняя

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

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

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

Ваши права

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