ИК паяльная станция на Arduino Mega 2560. Доработка скетча "ARS_v2_Lilium_JSN"

Тема в разделе "Глядите, что я сделал", создана пользователем Jalnin, 2 ноя 2012.

Статус темы:
Закрыта.
  1. dredivan

    dredivan Нуб

    скажите, зачем используется детектор нуля, если в твердотельных реле стоят оптопары в которых есть контроль перехода через ноль
    [​IMG]
     
  2. Dmitrysh

    Dmitrysh Гуру

    У нас фазовое управление нагревателями, т.е мы можем включить нагреватель на 0-100%. А твердотельное реле с контролем перехода через ноль сразу включает нагреватель на 100% до того момента, пока не будет снято с него напряжение управления. Это в общих чертах.
     
  3. SOLOway

    SOLOway Гуру

    @dredivan Это, чтоб контроллер был также синхронизирован с датчиком в твердотелке. Иначе получается что контроллер выдает "надо переключить ...", а твердотелка - "сейчас нуль придет, тогда переключу".
    Во! пока калякал - уже ответили.
    Ладно. Вот тогда ссылка на плату аналога одноканального твердотельного реле, может, кому пригодится.
    пояснение к ссылке:
    текст.jpg
     
    Последнее редактирование: 31 мар 2020
  4. dredivan

    dredivan Нуб

    а разве нельзя через ШИМ задать мощьность? 255 = 100% , 127=50% и так далее
     
  5. Dmitrysh

    Dmitrysh Гуру

    Да, можно, если бы нагрузка коммутировалась транзисторами. А у нас симистор, он медленный и открыть его можно только при не нулевом потенциале на аноде, а закрывается он сам при переходе сетевого напряжения через ноль. Советую прочитать принципы управления симисторами - отпадет большое количество вопросов.
     
  6. bamik

    bamik Нерд

    Пересмотрел почти все скетчи. Маленькое замечание или вопрос. Почему пины объявляются как переменные, а не как константы? Зачем занимать память этим?
    Вот, например:
    Код (C++):
    //Назначаем пины кнопок управления
    byte upSwitchPin = 9;
    byte downSwitchPin = 10;
    byte cancelSwitchPin = 11;
    byte okSwitchPin = 12;
     
    Я думаю, что если записать так:
    Код (C++):
    //Назначаем пины кнопок управления
    const byte upSwitchPin = 9;
    const byte downSwitchPin = 10;
    const byte cancelSwitchPin = 11;
    const byte okSwitchPin = 12;
     
    либо
    Код (C++):
    //Назначаем пины кнопок управления[/COLOR][/SIZE][/I]
    [I][SIZE=14px][COLOR=rgb(20, 20, 20)]#define upSwitchPin = 9;[/COLOR][/SIZE][/I]
    [I][SIZE=14px][COLOR=rgb(20, 20, 20)]#define downSwitchPin = 10;[/COLOR][/SIZE][/I]
    [I][SIZE=14px][COLOR=rgb(20, 20, 20)]#define cancelSwitchPin = 11;[/COLOR][/SIZE][/I]
    [I][SIZE=14px][COLOR=rgb(20, 20, 20)]#define okSwitchPin = 12;[/COLOR][/SIZE][/I]
    [I][SIZE=14px][COLOR=rgb(20, 20, 20)]



    то как минимум сохранится 4 байта.​
     
    Последнее редактирование: 24 апр 2018
  7. Dmitrysh

    Dmitrysh Гуру

    Ничего у меня не изменилось.
     
  8. bamik

    bamik Нерд

    Очевидно, компилятор "умный". И сам преобразует неиспользуемые переменные в константы.
     
  9. Dmitrysh

    Dmitrysh Гуру

    Исходя из вашей логики, если мы пины объявляем как переменные, то мы захламляем ОЗУ, а если как константы то - флеш. А теперь подумайте, какая разница, если и того и другого у нас с избытком.
    Я думаю, что пины объявлены как переменные для того, чтобы к ним можно было обращаться как к переменным а не как к константам.
     
  10. Dmitrysh

    Dmitrysh Гуру

    А ещё можно кнопочки "на лету" из программы подменить ;)
     
  11. bamik

    bamik Нерд

    Но назначение пинов не должно меняться. И для того, чтобы константа хранилась во флеше (не в программной), то используется другое объявление константы. А так значение константы просто подменяется в программе при компиляции. И хранится в области программ.
     
  12. bamik

    bamik Нерд

    А смысл?
     
  13. Dmitrysh

    Dmitrysh Гуру

    Смысла никакого, но возможность то есть. А ещё можно в этих переменных что нибудь временно похранить, чтобы не забивать озу новыми. Скорее всего так сделано чтобы не было проблем при обращении к подпрограммам.
     
  14. bamik

    bamik Нерд

    Я думаю, что когда писались эти строки, автор только начинал свое движение в изучении С++. С той поры утекло много воды, а строчки остались.
    Пусть автор решает.
     
  15. Dmitrysh

    Dmitrysh Гуру

    Согласен, что в нашем скетче такое объявление можно не делать, скорее всего автор планировал что-то ещё дописать. А вообще такой ход часто применяется, вот посмотрите пример:
    Код (C++):
    #define FIRST_LED   4
    #define TOTAL_LEDS  10
    int ledPin = FIRST_LED;
    void setup()
    {
        pinMode(4,  OUTPUT);
        pinMode(5,  OUTPUT);
        pinMode(6,  OUTPUT);
        pinMode(7,  OUTPUT);
        pinMode(8,  OUTPUT);
        pinMode(9,  OUTPUT);
        pinMode(10, OUTPUT);
        pinMode(11, OUTPUT);
        pinMode(12, OUTPUT);
        pinMode(13, OUTPUT);
    }
    void loop()
    {
        digitalWrite(ledPin, HIGH);
        delay(100);
        digitalWrite(ledPin, LOW);
        ledPin = (ledPin - FIRST_LED + 1) % TOTAL_LEDS + FIRST_LED;
    }
     
  16. Dmitrysh

    Dmitrysh Гуру

    А ещё можно программно заблокировать кнопки от случайного нажатия, например, при удалённом управлении станцией с компьютера.
     
  17. bamik

    bamik Нерд

    Проще блокировать вызов функции, опрашивающей кнопки.
    Ваш пример - редкостный по своей сути изврат, если честно. Тогда уж установку мода пинов надо было делать в цикле. Наверное, какой-то программист стебался на 1ое апреля.
    Куда-то нас понесло. Кончаем оффтопить. Если автор решит подправить код, то решит. Или объяснит, почему так.
     
  18. Dmitrysh

    Dmitrysh Гуру

    Не представляю как это проще сделать в нашем, допустим, скетче, когда чтений кнопок много.
    А пример, кстати, прикольный, хотя с циклом был бы по памяти оптимальнее.
    А автор скетча на сколько я понял, не в нашем форуме.
     
  19. vector99

    vector99 Гик

    Автора скетча я не знаю. И что он планировал на будущее я тоже незнаю. Но до моего первого вмешательства, скетч был не пригоден для реальной пайки, ну а теперь у нас много авторов, и сделано много, а скетч МЫ вместе дорабатываем!
     
    revolover и SOLOway нравится это.
  20. Dmitrysh

    Dmitrysh Гуру

    Полностью с вами согласен и выражаю огромную благодарность за проделанную работу.
     
Статус темы:
Закрыта.