Страница 2 из 17 ПерваяПервая 1234567812 ... ПоследняяПоследняя
Показано с 11 по 20 из 184

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    27.04.2009
    Возраст
    41
    Сообщений
    17
    Вес репутации
    204

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

    Диоды 1N4001,переменные сопротивления в зависимости есть ли они в приводах, если нет, можно поставить,скажем, по 5Ком,диод Шоттки шунтирующий вентилятор я брал из компьютерного блока питания, серия ST (сдвоенный) сервопривод можно использовать такой - http://www.ae.ru/catalog/?id=517 ,а можно такие - http://www.autoinfo51.ru/page/catalog_468/ .В схеме сервоприводы не шаговые, а обычные моторы с редуктором, они управляются мс L293E которая осуществляет реверс и вкл./выкл. двигателей - http://www.datasheetcatalog.com/data.../3/L293E.shtml . Позиционирование вала зависит от переменных сопротивлений закреплённых на валу сервоприводов (или встроенных в зависимости какие приводы). От принтеров врятли, по опыту( неудачному )мне не подошли даже мощные модельные сервы с усилием на 10кг, слабоваты оказались.
    А вообще управление можно реализовать вот так :

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

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

    Обновил прошивку для ардуино( в шапке), работают все три регулировки печки. Программу для пк выложу чуть позже.
    Последний раз редактировалось interhard; 24.03.2010 в 01:19.

  3. #3
    Новичок
    Регистрация
    01.06.2010
    Возраст
    56
    Сообщений
    1
    Вес репутации
    0

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

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

  4. #4
    Новичок
    Регистрация
    21.09.2010
    Возраст
    34
    Сообщений
    1
    Вес репутации
    0

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

    Тема что, умерла что ли?((

  5. #5
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    39
    Сообщений
    229
    Вес репутации
    409

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

    у меня получилось следующее.

    код ардуино:
    Код:
    #include <DallasTemperature.h>
    #include <EEPROM.h>
    int address = 0;
    DallasTemperature tempSensor;
    #define m1_l  7 //первый влево 
    #define m1_r  8 //первый вправо
    #define m2_l  5 //второй влево 
    #define m2_r  3 //второй вправо 
    #define m3_l  4 //третий влево 
    #define m3_r  2 //третий вправо 
    #define en1  6  //enable
    #define JOY 0 //АЦП первого мотора
    #define val1 1 //АЦП первого мотора
    #define val2 3 //АЦП второго мотора
    #define val3 2 //АЦП третьего мотора
    #define vent 10 //ШИМ вентилятора
    #define kran 11 //управление клапаном ОЖ
    
    byte bytes[8]; 
    int res_dt1;//джойстик
    int motor1, motor2, motor3;//АЦП приводов
    int vent_speed; //значение ШИМ вентилятора 
    int min_1 = 190; //боковые
    int max_1 = 445; //стекло
    int centr_1 = 310; //среднее первый
    int min_2 = 260; //ноги
    int max_2 = 499; //ноги закрыто
    int centr_2 = 380; //среднее второй
    int temp0, temp_s; //temp0 - в салоне, temp_s - заданая
    int t=5, f=5;
    int flow=5;
    
    void setup()      
    {
    pinMode(m1_l,OUTPUT); 
    pinMode(m1_r,OUTPUT);
    pinMode(m2_l,OUTPUT); 
    pinMode(m2_r,OUTPUT);
    pinMode(en1,OUTPUT);
    pinMode(kran, OUTPUT);
    digitalWrite(m1_l,LOW);
    digitalWrite(m1_r,LOW);
    digitalWrite(m2_l,LOW);
    digitalWrite(m2_r,LOW);
    digitalWrite(en1,LOW);
    digitalWrite(kran,LOW);
    tempSensor.begin(12); //Вешаем Датчик на 12 порт
    Serial.begin(115200); // настроить скорость com порт
    temp_s = EEPROM.read(address);//читаем заданую температуру из еепром
      bytes[0] = 0x5A; //шлем ее в комп
      bytes[1] = temp_s;
      Serial.write( bytes,2);
    } 
    
    void loop()     
    {   
      res_dt1 = analogRead(JOY); // прочитать данные АЦП 
      motor1 = analogRead(val1); // прочитать данные АЦП 
      motor2 = analogRead(val2); // прочитать данные АЦП 
      //motor3 = analogRead(val3); // прочитать данные АЦП
      
    termometer();
    
      byte a, b; 
      if (Serial.available() > 1)
      { 
        a = Serial.read();  
        b = Serial.read();
        if(a==0x64)temp_s=b;
        if(a==0xFF)f=b;
      } 
     
    
    if((res_dt1>=843 && res_dt1<=853) || f==0)// на стекло. кнопка MODE
    {
     digitalWrite(en1,HIGH);
     if (analogRead(val2)<max_2)
     {
       digitalWrite(m2_l,HIGH);
       while (analogRead(val2)<max_2)
       {}
       digitalWrite(m2_l,LOW);
     }
     if (analogRead(val1)<max_1)
     {
       digitalWrite(m1_r,HIGH);
       while (analogRead(val1)<max_1)
       {}
       digitalWrite(m1_r,LOW);
     }
     digitalWrite(en1,LOW);
     flow=0;
     f=5;
     bytes[0] = 0x4B;
     bytes[1] = flow; 
     Serial.write( bytes,2);
    }
    
    if((res_dt1>=401 && res_dt1<=411) || f==1)//в ноги. кнопка FILE
    {
      digitalWrite(en1,HIGH);
      if (analogRead(val2)>min_2)
      {
        digitalWrite(m2_r,HIGH);
        while (analogRead(val2)>min_2)
        {}
        digitalWrite(m2_r,LOW);
      }
      digitalWrite(en1,LOW);
      flow=1;
      f=5;
      bytes[0] = 0x4B;
      bytes[1] = flow; 
      Serial.write( bytes,2);
    }
    
    if((res_dt1>=784 && res_dt1<=794) || f==2)//боковые. кнопка SEL
    {
      digitalWrite(en1,HIGH);
      if (analogRead(val1)>min_1)
      {
        digitalWrite(m1_l,HIGH);
        while (analogRead(val1)>min_1)
        {}
        digitalWrite(m1_l,LOW);
      }
      if (analogRead(val2)<max_2)
     {
       digitalWrite(m2_l,HIGH);
       while (analogRead(val2)<max_2)
       {}
       digitalWrite(m2_l,LOW);
     }
      digitalWrite(en1,LOW);
      flow=2;
      f=5;
      bytes[0] = 0x4B;
      bytes[1] = flow; 
      Serial.write( bytes,2);  
    }
    
    if((res_dt1>=307 && res_dt1<=327) || f==3)//на стекло и в ноги. кнопка ATT
    {
      digitalWrite(en1,HIGH);
      if (analogRead(val1)<max_1)
     {
       digitalWrite(m1_r,HIGH);
       while (analogRead(val1)<max_1)
       {}
       digitalWrite(m1_r,LOW);
     }
     if (analogRead(val2)>centr_2)
      {
        digitalWrite(m2_r,HIGH);
        while (analogRead(val2)>centr_2)
        {}
        digitalWrite(m2_r,LOW);
      }
      if (analogRead(val2)<centr_2)
     {
       digitalWrite(m2_l,HIGH);
       while (analogRead(val2)<centr_2)
       {}
       digitalWrite(m2_l,LOW);
     }
     digitalWrite(en1,LOW);
     flow=3;
     f=5;
     bytes[0] = 0x4B;
     bytes[1] = flow; 
     Serial.write( bytes,2);  
    }
    
    if(res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
    {
      temp_s++;
      delay(30);
      if(temp_s>=50)temp_s=50;
      bytes[0] = 0x5A;
      bytes[1] = temp_s; //салон 1 
      Serial.write( bytes,2);
    }
    if(res_dt1>=635 && res_dt1<=645)//temp_s --. кнопка VOL DOWN
    {
      temp_s--;
      delay(30);
      if(temp_s<=0)temp_s=0;
      bytes[0] = 0x5A; 
      bytes[1] = temp_s; //салон 1 
      Serial.write( bytes,2);
    }
    if(res_dt1>=176 && res_dt1<=186)//кнопка SOURCE
    {
      EEPROM.write(address, temp_s);//пишем в еепром temp_set
    }
    }
    
    void termometer() 
    {
        switch(tempSensor.isValid())
        {
            case 1:
                Serial.println("Invalid CRC");
                tempSensor.reset(); // сбросить девайс
                return;
            case 2:
                Serial.println("Invalid device");
                tempSensor.reset(); // сбросить девайс
                return;
        }
        temp0=tempSensor.getTemperature();
        
        if(temp0>=temp_s+1)digitalWrite(kran,HIGH);//закрываем клапан - охлаждаем салон
        if(temp0<=temp_s-1)digitalWrite(kran,LOW);//открываем - греем
        
        bytes[0] = 0x64;
        bytes[1] = temp0; //салон  
        Serial.write( bytes,2);
    }
    схема:
    Нажмите на изображение для увеличения. 

Название:	cxema.jpg 
Просмотров:	2396 
Размер:	199.8 Кб 
ID:	10201

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

Название:	climate2.JPG 
Просмотров:	1082 
Размер:	41.8 Кб 
ID:	10202   Нажмите на изображение для увеличения. 

Название:	climate3.JPG 
Просмотров:	940 
Размер:	32.2 Кб 
ID:	10203  
    Вложения Вложения
    Последний раз редактировалось manu_245; 09.11.2010 в 23:07.

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

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

    без драйвера транзистор нормально себя чувствует, не греется? Двигатель не "поет"?

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

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

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

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

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

    сообщи, пожалуйста, о результатах, как попробуешь на машине.

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

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

    Сообщаю о результатах) Сегодня решил потестить ШИМ для вентилятора печки.Сначала о потреблении,померял, движок потребляет - 15А пусковой ток, 14А - рабочий. За неимением мосфета с логическим управлением соорудил схемку на ir2101+irf1405 с управлением от ардуинки через переменник.
    код:
    PHP код:
    int pwm 5;
    int sense 0;
    int res 0;
    void setup()
    {
      
    pinMode(res,INPUT);
      
    pinMode(pwm,OUTPUT);
      
    TCCR0B TCCR0B 0b11111000 0x04;    
      
    // частота ШИМ - 244.140625Гц 
    }
    void loop()
    {

              
    sense analogRead(res); 
              
    analogWrite(pwm,sense);

    Теперь, одно но.При ШИМе - 8Кгц (prescalerVal =2 свистит даже маломощный мотор(на вентиляторе пробовать не стал), при ШИМе - 64Кгц (prescalerVal =1 не регулируется скорость вентилятора, греется мосфет(хотя на маломощном отлично все регулируется ).Я понял , что надо играться с частотой ШИМа, но как на ардуино получить больше 10Кгц? если изменять счетчики там значения - 8 -32 -64
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	pwm.JPG 
Просмотров:	1820 
Размер:	19.1 Кб 
ID:	8145  
    Последний раз редактировалось interhard; 28.03.2010 в 20:13.

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

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

    На частоте 200Гц ничего не свистит и MOSFET не греется, даже без драйвера, я же уже писал об этом.

Страница 2 из 17 ПерваяПервая 1234567812 ... ПоследняяПоследняя

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

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

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

Ваши права

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