Четверг, 28.11.2024, 22:55
Радиосервис - ИЗМАИЛ

Меню сайта

Статистика
Форма входа
Друзья сайта

Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)

Электроника на KitPost
Поиск
Наш опрос
Оцените мой сайт
1. Отлично
2. Хорошо
3. Неплохо
4. Ужасно
5. Плохо
Всего ответов: 86
Ссылки по uCoz
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    Модератор форума: Alexandr_  
    Инфракрасная паяльная станция своими руками на ARDUINO
    Alexandr_
    Дата: Среда, 08.02.2017, 19:55 | Сообщение # 1        
    Генералиссимус
    Группа: Администраторы
    Сообщений: 814
    Статус: Offline

    Форумчане, куплю-продажу и личные сделки выяснять в личке, либо в новом форуме, этот форум для вопросов по электронной части станции.

    Архив по станции от hominidae с проектом efimsu ->здесь
    Проект Леонида, Leonid0071 "UNO-MAX6675-PC" и его доработки на форуме Амперки -> скачать

    Люби грешников, ненавидь сам грех!
     

    dscOlga
    Дата: Понедельник, 10.12.2018, 06:03 | Сообщение # 346        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    Перепишите вот так
    Код
    case REFLOW_STATE_MENU_BOTTOM_I:
          lcd2.setCursor(8, 1);
          lcd2.print("I=");
          lcd2.print(ki2);
          lcd2.print(" ");
          if (upSwitchState == HIGH && ( millis() - ms_button)>200)
          {
            ms_button =  millis();
            ki2 = ki2 + 1;
            if (ki2 >= 255)
            {
              ki2 = 255;
            }
          }
          if (downSwitchState == HIGH && ( millis() - ms_button)>200)
          {
            ms_button =  millis();
            ki2 = ki2 - 1;
            if (ki2 <= 0)
            {
              ki2 = 0;
            }
          }
          if (okSwitchState == HIGH && !button_state && ( millis() - ms_button)>200)
          {
            ms_button =  millis();
            button_state = true;
          }
          if (okSwitchState == LOW && button_state && ( millis() - ms_button)>200)
          {
            ms_button =  millis();
            button_state = false;
            reflowState = REFLOW_STATE_MENU_BOTTOM_D;
          }
          if (cancelSwitchState == HIGH && ( millis() - ms_button)>50)
          {
            ms_button =  millis();
            reflowState = REFLOW_STATE_IDLE;
          }
          break;

    Добавлено (10.12.2018, 06:06)
    ---------------------------------------------
    Аналогично перепишите для ki1.

     

    DIM
    Дата: Понедельник, 10.12.2018, 13:24 | Сообщение # 347        
    Подполковник
    Группа: Пользователи
    Сообщений: 172
    Статус: Offline

    dscOlga, я так понял что вы просто убрали " делить на 10", т.е. " /10" и поменяли значение которое задает скорость набора цифр, я уже это попробовал, так же пробовал делить на 1, и на 100, к
    сожалению ничего не помогает. число с запятой не появляется, меняется
    только скорость перебора цифр.


    Сообщение отредактировал DIM - Понедельник, 10.12.2018, 13:41
     

    dscOlga
    Дата: Понедельник, 10.12.2018, 14:33 | Сообщение # 348        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    Цитата DIM ()
    число с запятой не появляется, меняетсятолько скорость перебора цифр.
    Никаких чисел с запятой не должно быть и нет никаких значений для скорости набора цифр. Коэффициент ki это целое число в диапазоне 0-255. И выводился он разделенный на 10, а это не правильно, поэтому вы видели только значения 0..10..20 и т.д. Теперь у вас весь спектр значений выводится будет, если перепишите код как я написал.
     

    Cinema
    Дата: Понедельник, 10.12.2018, 14:40 | Сообщение # 349        
    Генерал-майор
    Группа: Проверенные
    Сообщений: 618
    Статус: Offline

    Цитата DIM ()
    число с запятой не появляется, меняется
    DIM, дело в том, что ардуиновская библиотека PID_v1.h больше в скетче этом не используется. Dmitrysh переписал функцию ПИД в тело самого скетча и перевел её на целые числа. Это позволило и уменьшить код и увеличить быстродействие модуля PID. Связано увеличение быстродействия с тем, что используемый нами микроконтроллер очень тяжело обрабатывает дробные числа. Теоретически, может, конечно, случиться такое, что диапазона задания коэффициентов от 0 до 255 единиц не хватит для точной настройки станции, но пока никто не пожаловался...

    "Опыт — это то, что получаешь, не получив того, что хотел" © интернет
     

    DIM
    Дата: Понедельник, 10.12.2018, 15:02 | Сообщение # 350        
    Подполковник
    Группа: Пользователи
    Сообщений: 172
    Статус: Offline

    Cinema, я вас совсем не понят. до переделки станции и установки другого дисплея все было, а теперь за меня ув. Dmitrysh переписал что то? я тот скетч как использовал так и использую, только переработал его благодаря конечно же dscOlga, под работу с моим огромным дисплеем. в настройки ни кто не лазил. и что я имею раньше в этих настройках:
    

    так было а сейчас куда делась запятая там где я выделил? и как без нее настраивать, только десятками?
    к тому же в скетче по прежнему прописано это:
    
    а это "ki1/10" говорит об функции / (division) то бишь деление, то бишь запятая должна быть. так?
    так причем тут первосоздатель с его усовершенствованным кодом? у меня и этот работал как бы.

    Добавлено (10.12.2018, 16:44)
    ---------------------------------------------
    Цитата dscOlga ()
    Теперь у вас весь спектр значений выводится будет, если перепишите код как я написал.
    я уже так переписывал, ничего не меняется, единственно что меняется это СКОРОСТЬ возрастания\убывания значения, но оно как и было так и осталось 0-до, а тут как напишешь, в первоначальном варианте где
           
    Код
    if (ki1 >= 500)
            {
              ki1 = 500;
     там 250 и это странно т.к. это / 10 не удалял, в вашем случае если оставить / 10 то 25, если удалить / 10 то 255 впрочем смотрите сами:
    там еще я пальцем показываю что при первом включении всегда еррор наблюдаю но как только тут же переключу питание сразу все нормально. что это еще за блажь?


    Сообщение отредактировал DIM - Понедельник, 10.12.2018, 16:44
     

    Cinema
    Дата: Понедельник, 10.12.2018, 21:35 | Сообщение # 351        
    Генерал-майор
    Группа: Проверенные
    Сообщений: 618
    Статус: Offline

    Цитата DIM ()
    первом включении всегда еррор наблюдаю
    Наводки/помехи на термопару. Преобразователь из-за них выдает гадость и контроллер кажет что есть проблема с данным каналом измерения. Не вы один с этим сталкиваетесь.
    Цитата DIM ()
    ув. Dmitrysh переписал что то?
    Dmitrysh = dscOlga

    Цитата DIM ()
    а сейчас куда делась запятая там где я выделил?
    Память EEPROM, в которой микроконтроллер сохраняет настройки профилей, является энергонезависимой - это просто напоминаю. Изначально вы ввели настройки, когда к скетчу ещё подключалась ардуиновская библиотека PID_v1.h. Смотрите пост # 173. Затем я предложил вам скетч, в котором Dmitrysh много оптимизировал. А настройки-то, сохранились прежние! - вы же их не трогали - сами же и признались! Но и скетч из поста # 328 уже устарел smile - там проблемы с размерностью некоторых переменных, с заданием уставки НИ выше 250*С, с уже упомянутым вами делением на 10...

    "Опыт — это то, что получаешь, не получив того, что хотел" © интернет

    Сообщение отредактировал Cinema - Понедельник, 10.12.2018, 21:38
     

    dscOlga
    Дата: Понедельник, 10.12.2018, 22:10 | Сообщение # 352        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    Dmitrysh и dscOlga это один и тот же человек smile 

    Цитата DIM ()
    настройка"ПИД" нижнего нагревателяcase REFLOW_STATE_MENU_BOTTOM_P: P 100 I 0.4 D 21

    настройка "ПИД" верхнего нагревателя
    case REFLOW_STATE_MENU_TOP_P: P 100 I 0.7 D 16

    так было а сейчас куда делась запятая там где я выделил?
    Дело в том что не было там запятой и в принципе быть не могло. Функция lcd.print не может выводить дробные числа, это раз. Запомнить дробное значение(допустим 0.7) в переменной byte, которую сохраняет функция EEPROM.write невозможно, это два.
    Цитата DIM ()
    а это "ki1/10" говорит об функции / (division) то бишь деление, то бишь запятая должна быть. так?
    Нет не так. "ki1/10" говорит лишь о том, что вы значения между 0 и 10, 10 и 20, 20 и 30 и т.д. не увидите и будете думать что когда вы задаёте значение 10 вы записываете 10, а в реальности это 100. И поэтому вы не можете задать значения больше чем 25, потому что это уже 250, а максимум у нас 255, но вы последнюю пятёрку не видите. Вот это "ki1/10" - классический косяк. Для проверки попробуйте задать 26 или 27.
    Цитата DIM ()
    я уже так переписывал, ничего не меняется, единственно что меняется это СКОРОСТЬ возрастания\убывания значения
    Нет параметра отвечающего за скорость возрастания\убывания. Есть ошибка "ki1/10" которая скрывает от вас промежуточные значения ki. При "ki1/10" у вас есть 26 значений - 0..25, если вы зададите "ki1/100" у вас будет 3 значения - 0, 1 и 2 и очень очень долго придётся держать кнопку переключения, потому что пока пробегут все значения от 0 до 255, но вы увидите только 0, 1 и 2. Зато если вы поставите значение "ki1/1000" у вас будет только одно значение - 0 и бесконечное держание кнопки перебора. 
    Цитата DIM ()
    так причем тут первосоздатель с его усовершенствованным кодом? у меня и этот работал как бы.
    У вас были разные скетчи. В старой станции использовались "стандартные" библиотеки(а там были ошибки), а в новой уже мной переписанные.
    Цитата DIM ()
    там еще я пальцем показываю что при первом включении всегда еррор наблюдаю но как только тут же переключу питание сразу все нормально. что это еще за блажь?
    А вот это очень странно. Попробуйте проверить max6675 и термопару(допустим поменяйте верх и низ).
     

    Cinema
    Дата: Понедельник, 10.12.2018, 23:11 | Сообщение # 353        
    Генерал-майор
    Группа: Проверенные
    Сообщений: 618
    Статус: Offline

    Dmitrysh Вот тут DIM точняк не врёт про дробные значения при установке Ki в меню! Посмотрите у Roniks59 тут:
    
    Я их лично видел! И хрен знает, почему так было, да ещё и какой-то "левый" ноль справа от значения Ki вырисовывался все время - одним словом - глюкавый скетч тогда был smile

    "Опыт — это то, что получаешь, не получив того, что хотел" © интернет
     

    dscOlga
    Дата: Вторник, 11.12.2018, 00:35 | Сообщение # 354        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    Цитата Cinema ()
    Посмотрите у Roniks59 тут:
    Судя по скетчу там дробные в ПИД он передаёт, а задаёт целые.
    Цитата Cinema ()
    дробные значения при установке Ki в меню!
    Не увидел, кроме как записи в текстовом виде.
    Цитата Cinema ()
    какой-то "левый" ноль справа от значения Ki
    Видимо остался предыдущий от задания кр1

    Добавлено (11.12.2018, 00:46)
    ---------------------------------------------
    Расскажите, зачем вам дробные ki?

    Добавлено (11.12.2018, 00:52)
    ---------------------------------------------
    Если вопрос в точке принципиальный я скажу вам куда она делась, появились мысли, завтра проверю.

     

    Cinema
    Дата: Вторник, 11.12.2018, 01:33 | Сообщение # 355        
    Генерал-майор
    Группа: Проверенные
    Сообщений: 618
    Статус: Offline

    Не-не! smile Мне дроби не нужны в AtMega. Помнится, revolover что-то на что-то делил, но у него библиотека им переделанная, я с ней не разбирался даже - хочу в порядок привести то, с чем работаю сейчас, а то бардак и недоделки вокруг. Вы помогаете и это очень вдохновляет! Спасибо!
    "Опыт — это то, что получаешь, не получив того, что хотел" © интернет
     

    DIM
    Дата: Вторник, 11.12.2018, 02:15 | Сообщение # 356        
    Подполковник
    Группа: Пользователи
    Сообщений: 172
    Статус: Offline

    dscOlga и Cinema, спасибо вам, все разъяснили. dscOlga, а вам еще и спасибо отдельное за сам скетч, раз уж у меня теперь есть возможность лично поблагодарить автора.
    dscOlga, вы уж простите, но реально я наблюдал функцию выражаемую как 0,.. и так далее с шагом в 0,25, по этому и уперся, думал это важно. слабо вообще то понимаю в настройках. теперь нужно как то через комп настроить пид низа, и думаю станция будет законченна.
     

    DIM
    Дата: Вторник, 11.12.2018, 02:46 | Сообщение # 357        
    Подполковник
    Группа: Пользователи
    Сообщений: 172
    Статус: Offline

    добавил таймер отсчета времени, кому как, но мне удобно наблюдать процесс по времени. вот только как еще бы разделить на секунды\минуты для информативности, а пока только в секундах.
    Прикрепления: sketch_dec05a.ino (48.8 Kb)


    Сообщение отредактировал DIM - Вторник, 11.12.2018, 02:51
     

    dscOlga
    Дата: Вторник, 11.12.2018, 06:28 | Сообщение # 358        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    Цитата DIM ()
    добавил таймер отсчета времени
    А где он там есть? Может не тот скетч прицепили?
    Загрузку доп символов в lcd
           
    Код
    lcd2.createChar(2,smile_a);   //  Загружаем в память дисплея второй символ
            lcd2.createChar(3,smile_b);   //  Загружаем в память дисплея третий символ
            lcd2.createChar(1,gradus);   //  Загружаем в память дисплея первый символ
    перенесите из основного цикла в функцию setup. Не стоит символы грузить постоянно, один раз загрузили и пользуйтесь.
     

    DIM
    Дата: Вторник, 11.12.2018, 13:21 | Сообщение # 359        
    Подполковник
    Группа: Пользователи
    Сообщений: 172
    Статус: Offline

    Цитата dscOlga ()
    А где он там есть?
    да дествительно, вот правильный скетч:
    ---------------------------------------------
    Цитата dscOlga ()
    перенесите из основного цикла в функцию setup.
    сделал, спасибо за совет.

    Добавлено (11.12.2018, 13:40)
    ---------------------------------------------
    dscOlga, скажите если раньше я пытался паять при значениях ki BOTTOM и TOP 0,4 и 0,7 соответственно, то сейчас какое значение забивать? т.е. новый код как настраивать пид?

    Прикрепления: 1687756.ino (48.8 Kb)


    Сообщение отредактировал DIM - Вторник, 11.12.2018, 13:27
     

    dscOlga
    Дата: Вторник, 11.12.2018, 14:14 | Сообщение # 360        
    Майор
    Группа: Пользователи
    Сообщений: 83
    Статус: Offline

    По поводу точки в выводе ki1, ki2 пора поставить точку. Что бы её вернуть нужно ki1 и ki2 сделать типом float. Смысла в этом нет никакого, только потеряете память для программ, ОЗУ, быстродействие и глюков больше будет.
    Поясню, что нормальная размерность интегрального коэффициента это тысячные-сотые. В нашем случае - сотые-единицы(0,01-2,55), потому как у нас большая транспортная задержка между воздействием и откликом на него(проще сказать большая инерционность системы).
    Исходя из этого можно сделать вывод, что то что мы выводим на экран(а это либо целые 0-255 либо дробные 0,0-25,5) к реальности не имеют никакого отношения, с одной лишь разницей, что когда мы выводим целые числа мы экономим в размере кода, ОЗУ и быстродействии. Тогда зачем нам платить больше(выводить дробные значения)??? Мало того, скетч всё равно дробные числа не использует.
    Вот статистика
    Для ki1 и ki2 дробных скетч sketch_dec05a занимает 24490 байт(75%) памяти программ и 1082 байт(52%) ОЗУ
    Для ki1 и ki2 целых скетч sketch_dec05a занимает 23984 байт(74%) памяти программ и 1076 байт(52%) ОЗУ

    Делайте выводы - 506 (1,57%) байт за то, что мы увидим ничего не значащую точку между цифрами.

    Добавлено (11.12.2018, 14:19)
    ---------------------------------------------

    Цитата DIM ()
    ki BOTTOM и TOP 0,4 и 0,7 соответственно, то сейчас какое значение забивать?
    Сейчас это 4 и 7 соответственно.
    Цитата DIM ()
    т.е. новый код как настраивать пид?
    Код остался тот-же по сути, он просто немного оптимизирован. ПИД настраивается не под новый код, а под новое железо(нагреватели, корпуса, термопары и т.д). Если железо не изменилось, то должно работать с минимальными подстройками или без них.
     

    Поиск: