Инфракрасная паяльная станция на ARDUINO Часть 1.

Тема в разделе "Глядите, что я сделал", создана пользователем Scrypto, 28 июн 2015.

?

Продолжать выкладывать видео?

  1. Да

    30 голосов
    100,0%
  2. Нет

    0 голосов
    0,0%
  1. Scrypto

    Scrypto Нерд



    Операционный усилитель для датчика температуры.
    1deae7a00bc9eed14b080a9b23cb3d69.jpg

    Симмисторный регулятор на BTA16
    shem_dimmer.jpg

    Код (Text):
    int incomingByte = 0;  // for incoming serial data

    int AC_LOAD = 3;    // Output to Opto Triac pin
    volatile int dimming = 117;  // Dimming level (0-128)  0 = ON, 128 = OFF
      int temp_PIN=0; // Порт датчика температуры
    void setup()
    {

      pinMode(AC_LOAD, OUTPUT);      // Set the AC Load as output
      attachInterrupt(0, zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above
      Serial.begin(9600);
    }

    void zero_crosss_int()  // function to be fired at the zero crossing to dim the light
    {
      // Firing angle calculation :: 50Hz-> 10ms (1/2 Cycle)
      // (10000us - 10us) / 128 = 75 (Approx)
      int dimtime = (75*dimming);  
      delayMicroseconds(dimtime);    // Off cycle
      digitalWrite(AC_LOAD, HIGH);  // triac firing
      delayMicroseconds(10);        // triac On propogation delay
      digitalWrite(AC_LOAD, LOW);    // triac Off
    }

    void loop()
    {
    /*
    Управления с клавиатуры
    if (Serial.available() > 0) {
                  // read the incoming byte:
               
                  int  x=map(Serial.read(),49,57,128,10);
                  if(x>9&&x<129)
                    dimming= x;        
            }
        */

     
      // Управления датчиком
        int temp = map(analogRead(temp_PIN),0,40,10,116);
        if(temp>9&&temp<117)
    dimming=temp;
    Serial.println(analogRead(temp_PIN));

        /*
     
        Управление в цикле
            for (int i = 2; i <= 117; i++){
        dimming = i;
        delay(20);
      }

      for (int i = 117; i >= 2; i--){
        dimming = i;
        delay(20);
      }
    */
     


    }
     
    dredivan и Mestniy нравится это.
  2. 9xA59kK

    9xA59kK Гик

    Начало интригует.
    Ждем продолжения.
     
  3. Scrypto

    Scrypto Нерд

    Еще немного процесса
    uF22nogVZuc.jpg MT7WQp_tzfM.jpg aqP255w117E.jpg o7RDHWKHyP8.jpg QBCUf0WQymI.jpg -YMLrp3-KWw.jpg
     
    Securbond нравится это.
  4. KamAdm

    KamAdm Нерд

    У меня тоже есть ИК лампы, термодатчики и термоограничители от лазерных принтеров. Корпус от лампы дневного света можно подрядить, там даже рефлекторы взять можно. Я немного не понял, что за штуковины, на которые вы посадили лампы. Что-то керамическое, но я не узнаю.
     
  5. Scrypto

    Scrypto Нерд

    Керамические это обычные патроны R7s разрезанные пополам, и раздвинутые на нужную длину.
    Еще немного фоточек
    7.jpg 4.jpg 1.jpg 2.jpg 6.jpg 5.jpg
     
    Securbond нравится это.
  6. ZxKill

    ZxKill Нуб

    Только начинаю разбираться с ардуино, пытаюсь собрать не что похожее и наткнулся на Ваш код. Интересует каким образом прерывание настроено на 2 пин?) По схеме видно, что сигнал идет на 2 пин, а вот в коде ничего связанного со 2 пином, нет. Как я понял эту самую привязку делает вот эта строчка
    Код (Text):
    attachInterrupt(0, zero_crosss_int, RISING);
    Разъясните, если не сложно.
    И еще, как я понимаю эта функция void zero_crosss_int() будет выполняться не зависимо от находящихся delay() в основном коде? Или если, например, я в коде напишу delay(2000), регулировка яркости замрет на 2 секунды?
    С нетерпением жду продолжения проекта, выкладывайте развитие своего проекта :)
     
  7. Scrypto

    Scrypto Нерд

    Привет, тут немного запутанно из-за того, что в ардуине уно, всего два прерывания, и они номерами никак не связаны ногами, поэтому просто прими, что 0е прерывание, на ноге 2, а 1е на третьей ноге )

    Да, прерываниям пофигу на этот Delay )
     
  8. 9xA59kK

    9xA59kK Гик

    Комментариев не хватает ,на русском, например как в "Вики" . Это нужно для тех, кто хочет повторить и особенно для начинающих. Еще на схеме moc3052 не правильный рисунок с "контролем нуля". Должен быть без контроля.[​IMG]
     
  9. ZxKill

    ZxKill Нуб

    Если можно, ответьте еще на впросик
    Код (Text):

    x=map(Serial.read(),49,57,128,10);
    map(analogRead(temp_PIN),0,40,10,116)
    для чего нужен map и откуда берутся эти цифры?

    нашел ответ в гугле
     
    Последнее редактирование: 31 авг 2015
  10. geher

    geher Гуру

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

    В данном конкретном случае: с клавиатуры (участок кода, правда, закоменнтирован) поступают коды символов цифр от 49 до 57 (цифры от 1 до 9).
    Диапазон 49-57 растягивается на 10 128 (допустимый интервал для параметра диммирования). Причем, поскольку сначала идет 128, а потом 10, то при растягивании еще происходит переворачивание, в результате чего ввод большей цифры приводит к присваиванию меньшего значения
    Т.е. если на входе цифра 1 (код 49), то x получит значение 128.
    Если 57, то 10. Если что-то между 49 и 57, то значение будет между 10 и 128.

    При считывании с термодатчика предполагается диапазон 0-40. Его тоже требуется отобразить примерно на тот же диапазон (в данном случае по каким-то соображениям выбрано 10-116). В этом случае сначала идет меньшее значение. Значит, растягивание на больший диапазон пройдет без переворачивания.
    Т.е. если на входе от датчика 0, то x получит значение 10.
    Если 40, то 116. Если что-то между 0 и 40, то значение будет между 10 и 116.
    Почему тут 116 а не 128 (диапазон уже) - к автору.

    Таким образом данные из разных источников переводятся в значение параметра для диммирования, который, будучи умноженным на 75 превратится в интервал между 10-микросекундными импульсами в микросекундах.
     
    Scrypto нравится это.
  11. Scrypto

    Scrypto Нерд

    116, так как при большем значении, лампа вела себя не адекватно. ) Подогнано с небольшим запасом, методом проб и ошибок )
     
  12. Mestniy

    Mestniy Гуру

    А управление будет с кнопок или с ПК?
     
  13. Scrypto

    Scrypto Нерд

    Управление с кнопок. 2 режима. 1 Просто выставляю мощность, и он держит ее. 2й, будет ориентироваться на показания термопары, и автоматически регулировать мощность, чтобы поддерживать нужную температуру.
     
  14. Mestniy

    Mestniy Гуру

  15. Mestniy

    Mestniy Гуру

    Кстати, Вашь пример вдохновил меня на создании ИК станции.
     
    Scrypto нравится это.
  16. Help-mi

    Help-mi Нуб

    Здравствуйте уважаемый! Можете подробно полное подключение ИК станции на Ардуино. Собрать хочу станцию, но ищу на чем сделать и понравился ваш проект! , Но вы уже 3 месяца назад обещали выложить видео продолжения, но так и не выложили, Можете хотя бы полное подключение нарисовать и выложить в виде картинки, а так же что для этого требуется. Еще хотел узнать на сколько лампы ВТ у вас ? очень благодарен.
     
  17. TarLink

    TarLink Нуб

    Здравствуйте ребята ! Наткнулся в ютубе на несколько роликов с подобным устройством и решил спросить тут. Я новичек в этом деле и с Arduino сталкиваюсь впервые. Есть желание сделать что-то подобное , только это будет так называемый "Бутерброд для ЛУТ" или "ЛУТ без утюга". Смотрю на фотографиях имеется уже ЖК дисплей с отображением температуры. Сам диммер уже собран , далее будет собираться ОУ на LM358 , все как тут , только хотелось бы увидеть полный скетч если таковой имеется , а точнее "ЖК дисплей + кнопки управления температурой + диммер". Если что-то не так , заранее прошу прощения. Повторюсь я никогда не сталкивался ранее с Arduino , но имею большое желание собрать подобное устройство. Заранее спасибо !
     
  18. Scrypto

    Scrypto Нерд

    Немного переделал станцию. Теперь работает на MAX6675 вместо lm358, точность температуры гораздо выше. Пока еще тестирую доделываю и т.п. Видео обязательно выложу.
     
  19. xake

    xake Нерд

    скетчем под MAX6675 поделитесь?
     
  20. vector99

    vector99 Гик

    Тоже хотел бы взглянуть на скетч!