Друзья сайта |
Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)
Электроника на KitPost
|
Наш опрос |
Оцените мой сайт
Всего ответов: 86
|
|
Инфракрасная паяльная станция своими руками на ARDUINO
| |
Alexandr_ | Дата: Среда, 08.02.2017, 19:55 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 814
Статус: Offline
| Форумчане, куплю-продажу и личные сделки выяснять в личке, либо в новом форуме, этот форум для вопросов по электронной части станции.
Архив по станции от hominidae с проектом efimsu ->здесь Проект Леонида, Leonid0071 "UNO-MAX6675-PC" и его доработки на форуме Амперки -> скачать
Люби грешников, ненавидь сам грех!
|
|
|
Пользователи поблагодарившие Alexandr_ за этот пост: |
|
|
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.
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
DIM | Дата: Понедельник, 10.12.2018, 13:24 | Сообщение # 347 |
Подполковник
Группа: Пользователи
Сообщений: 172
Статус: Offline
| dscOlga, я так понял что вы просто убрали " делить на 10", т.е. " /10" и поменяли значение которое задает скорость набора цифр, я уже это попробовал, так же пробовал делить на 1, и на 100, к сожалению ничего не помогает. число с запятой не появляется, меняется только скорость перебора цифр.
Сообщение отредактировал DIM - Понедельник, 10.12.2018, 13:41 |
|
|
Пользователи поблагодарившие DIM за этот пост: |
|
|
dscOlga | Дата: Понедельник, 10.12.2018, 14:33 | Сообщение # 348 |
Майор
Группа: Пользователи
Сообщений: 83
Статус: Offline
| Цитата DIM ( ) число с запятой не появляется, меняетсятолько скорость перебора цифр. Никаких чисел с запятой не должно быть и нет никаких значений для скорости набора цифр. Коэффициент ki это целое число в диапазоне 0-255. И выводился он разделенный на 10, а это не правильно, поэтому вы видели только значения 0..10..20 и т.д. Теперь у вас весь спектр значений выводится будет, если перепишите код как я написал.
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
Cinema | Дата: Понедельник, 10.12.2018, 14:40 | Сообщение # 349 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Цитата DIM ( ) число с запятой не появляется, меняется DIM, дело в том, что ардуиновская библиотека PID_v1.h больше в скетче этом не используется. Dmitrysh переписал функцию ПИД в тело самого скетча и перевел её на целые числа. Это позволило и уменьшить код и увеличить быстродействие модуля PID. Связано увеличение быстродействия с тем, что используемый нами микроконтроллер очень тяжело обрабатывает дробные числа. Теоретически, может, конечно, случиться такое, что диапазона задания коэффициентов от 0 до 255 единиц не хватит для точной настройки станции, но пока никто не пожаловался...
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
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 |
|
|
Пользователи поблагодарившие DIM за этот пост: |
|
|
Cinema | Дата: Понедельник, 10.12.2018, 21:35 | Сообщение # 351 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Цитата DIM ( ) первом включении всегда еррор наблюдаю Наводки/помехи на термопару. Преобразователь из-за них выдает гадость и контроллер кажет что есть проблема с данным каналом измерения. Не вы один с этим сталкиваетесь.
Цитата DIM ( ) ув. Dmitrysh переписал что то? Dmitrysh = dscOlga
Цитата DIM ( ) а сейчас куда делась запятая там где я выделил? Память EEPROM, в которой микроконтроллер сохраняет настройки профилей, является энергонезависимой - это просто напоминаю. Изначально вы ввели настройки, когда к скетчу ещё подключалась ардуиновская библиотека PID_v1.h. Смотрите пост # 173. Затем я предложил вам скетч, в котором Dmitrysh много оптимизировал. А настройки-то, сохранились прежние! - вы же их не трогали - сами же и признались! Но и скетч из поста # 328 уже устарел - там проблемы с размерностью некоторых переменных, с заданием уставки НИ выше 250*С, с уже упомянутым вами делением на 10...
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Понедельник, 10.12.2018, 21:38 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
dscOlga | Дата: Понедельник, 10.12.2018, 22:10 | Сообщение # 352 |
Майор
Группа: Пользователи
Сообщений: 83
Статус: Offline
| Dmitrysh и dscOlga это один и тот же человек
Цитата 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 и термопару(допустим поменяйте верх и низ).
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
Cinema | Дата: Понедельник, 10.12.2018, 23:11 | Сообщение # 353 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Dmitrysh Вот тут DIM точняк не врёт про дробные значения при установке Ki в меню! Посмотрите у Roniks59 тут: Я их лично видел! И хрен знает, почему так было, да ещё и какой-то "левый" ноль справа от значения Ki вырисовывался все время - одним словом - глюкавый скетч тогда был
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
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) --------------------------------------------- Если вопрос в точке принципиальный я скажу вам куда она делась, появились мысли, завтра проверю.
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
Cinema | Дата: Вторник, 11.12.2018, 01:33 | Сообщение # 355 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Не-не! Мне дроби не нужны в AtMega. Помнится, revolover что-то на что-то делил, но у него библиотека им переделанная, я с ней не разбирался даже - хочу в порядок привести то, с чем работаю сейчас, а то бардак и недоделки вокруг. Вы помогаете и это очень вдохновляет! Спасибо!
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
DIM | Дата: Вторник, 11.12.2018, 02:15 | Сообщение # 356 |
Подполковник
Группа: Пользователи
Сообщений: 172
Статус: Offline
| dscOlga и Cinema, спасибо вам, все разъяснили. dscOlga, а вам еще и спасибо отдельное за сам скетч, раз уж у меня теперь есть возможность лично поблагодарить автора. dscOlga, вы уж простите, но реально я наблюдал функцию выражаемую как 0,.. и так далее с шагом в 0,25, по этому и уперся, думал это важно. слабо вообще то понимаю в настройках. теперь нужно как то через комп настроить пид низа, и думаю станция будет законченна.
|
|
|
Пользователи поблагодарившие DIM за этот пост: |
|
|
DIM | Дата: Вторник, 11.12.2018, 02:46 | Сообщение # 357 |
Подполковник
Группа: Пользователи
Сообщений: 172
Статус: Offline
| добавил таймер отсчета времени, кому как, но мне удобно наблюдать процесс по времени. вот только как еще бы разделить на секунды\минуты для информативности, а пока только в секундах.
Сообщение отредактировал DIM - Вторник, 11.12.2018, 02:51 |
|
|
Пользователи поблагодарившие DIM за этот пост: |
|
|
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. Не стоит символы грузить постоянно, один раз загрузили и пользуйтесь.
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
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 соответственно, то сейчас какое значение забивать? т.е. новый код как настраивать пид?
Сообщение отредактировал DIM - Вторник, 11.12.2018, 13:27 |
|
|
Пользователи поблагодарившие DIM за этот пост: |
|
|
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 ( ) т.е. новый код как настраивать пид? Код остался тот-же по сути, он просто немного оптимизирован. ПИД настраивается не под новый код, а под новое железо(нагреватели, корпуса, термопары и т.д). Если железо не изменилось, то должно работать с минимальными подстройками или без них.
|
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
|