1
0
forked from me/IronOS

Merge branch 'master' into master

This commit is contained in:
discip
2020-05-30 00:15:19 +02:00
committed by GitHub
36 changed files with 921 additions and 307 deletions

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -274,6 +274,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -277,6 +277,22 @@
"Taste Lang?" "Taste Lang?"
], ],
"desc": "Temperaturwechselschritte bei langem Tastendruck!" "desc": "Temperaturwechselschritte bei langem Tastendruck!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -276,6 +276,22 @@
"long" "long"
], ],
"desc": "Temperature change steps on long button press" "desc": "Temperature change steps on long button press"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -275,6 +275,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -13,8 +13,8 @@
"BadTipString": "PANNE HS", "BadTipString": "PANNE HS",
"SleepingSimpleString": "Zzzz", "SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "En veille...", "SleepingAdvancedString": "En veille...",
"WarningSimpleString": "HOT!", "WarningSimpleString": "CHAUD!",
"WarningAdvancedString": "ATTENTION! CHAUD", "WarningAdvancedString": "ATTENTION! CHAUD!",
"SleepingTipAdvancedString": "Panne:", "SleepingTipAdvancedString": "Panne:",
"IdleTipString": "Tip:", "IdleTipString": "Tip:",
"IdleSetString": " Set:", "IdleSetString": " Set:",
@@ -238,41 +238,57 @@
"text": "PLIMEN", "text": "PLIMEN",
"text2": [ "text2": [
"P Limit", "P Limit",
"Enable" "Activer?"
], ],
"desc": "Enable power limit" "desc": "Activer la limite de puissance"
}, },
"PowerLimit": { "PowerLimit": {
"text": "PLIM", "text": "PLIM",
"text2": [ "text2": [
"Power", "Puissance",
"Limit" "Limite"
], ],
"desc": "Maximum power the iron can use <Watts>" "desc": "Puissance maximale utilisable <Watts>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text": "RVTCHG", "text": "RVTCHG",
"text2": [ "text2": [
"Key +-", "Key +-",
"reverse?" "Inverser?"
], ],
"desc": "Reverse the tip temperature change buttons plus minus assignment." "desc": "Inversez l'assignation +/- du bouton de changement de température de la pointe."
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text": "TCHGST", "text": "TCHGST",
"text2": [ "text2": [
"Temp change", "Temp change",
"short?" "Court?"
], ],
"desc": "Temperature change steps on short button press!" "desc": "Incrément de changement de température sur appui court."
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text": "TCHGLT", "text": "TCHGLT",
"text2": [ "text2": [
"Temp change", "Temp change",
"long?" "Long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Incrément de changement de température sur appui long."
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -235,44 +235,60 @@
"desc": "A tápegység által leadott teljesítmény" "desc": "A tápegység által leadott teljesítmény"
}, },
"PowerLimitEnable": { "PowerLimitEnable": {
"text": "PLIMEN", "text": "TELJH",
"text2": [ "text2": [
"P Limit", "Telj H",
"Enable" "Bekapcsolva"
], ],
"desc": "Enable power limit" "desc": "Bemeneti teljesitmény korlátozása"
}, },
"PowerLimit": { "PowerLimit": {
"text": "PLIM", "text": "TELJM",
"text2": [ "text2": [
"Power", "Telj",
"Limit" "maximum"
], ],
"desc": "Maximum power the iron can use <Watts>" "desc": "Maximális teljesitmény beállitása <Watts>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text": "RVTCHG", "text": "HÖVÁLT",
"text2": [ "text2": [
"Key +-", "GOMB +-",
"reverse?" "Felcseréled?"
], ],
"desc": "Reverse the tip temperature change buttons plus minus assignment." "desc": "A páka hömérséklet növelés csökkentési gombok felcserélése."
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text": "TCHGST", "text": "HÖRÖV",
"text2": [ "text2": [
"Temp change", "Hömérséklet",
"short?" "váltás rövid?"
], ],
"desc": "Temperature change steps on short button press!" "desc": "Hömérséklet váltás rövid gombnyomásrs bekapcsolva!"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text": "TCHGLT", "text": "HÖHOS",
"text2": [ "text2": [
"Temp change", "Hömérséklet",
"long?" "váltás hosszú?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!"
},
"PowerPulsePower":{
"text": "TELJP",
"text2": [
"Telj power",
"bank üzem W"
],
"desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. "
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -275,6 +275,22 @@
"pressione lunga" "pressione lunga"
], ],
"desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti" "desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -3,17 +3,17 @@
"languageLocalName": "Русский", "languageLocalName": "Русский",
"cyrillicGlyphs": true, "cyrillicGlyphs": true,
"messages": { "messages": {
"SettingsCalibrationDone": "Калибровка выполнена!", "SettingsCalibrationDone": "Калибровка завершена!",
"SettingsCalibrationWarning": "Убедитесь, что жало остыло до комнатной температуры, прежде чем продолжать!", "SettingsCalibrationWarning": "Прежде чем продолжить, пожалуйста, убедитесь что жало имеет комнатную температуру!",
"SettingsResetWarning": "Вы действительно хотите сбросить настройки до значений по умолчанию?", "SettingsResetWarning": "Вы уверены, что хотите сбросить настройки к значениям по-умолчанию?",
"UVLOWarningString": "НАПРЯЖ--", "UVLOWarningString": "НАПРЯЖ--",
"UndervoltageString": "Под питанием", "UndervoltageString": "Низк. напряжение",
"InputVoltageString": "Питание B: ", "InputVoltageString": "Питание В: ",
"WarningTipTempString": "Жало t°: ", "WarningTipTempString": "Темп. жала: ",
"BadTipString": ало--", "BadTipString": АЛО--",
"SleepingSimpleString": "Сон ", "SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Ожидание...", "SleepingAdvancedString": "Ожидание...",
"WarningSimpleString": " ГОРЯЧО!", "WarningSimpleString": "ГОРЯЧО!",
"WarningAdvancedString": "!!! ГОРЯЧЕЕ ЖАЛО !!!", "WarningAdvancedString": "!!! ГОРЯЧЕЕ ЖАЛО !!!",
"SleepingTipAdvancedString": "Жало:", "SleepingTipAdvancedString": "Жало:",
"IdleTipString": "Жало:", "IdleTipString": "Жало:",
@@ -23,18 +23,18 @@
"OffString": "Выкл.", "OffString": "Выкл.",
"ResetOKMessage": "Сброс OK", "ResetOKMessage": "Сброс OK",
"YourGainMessage": "Прирост:", "YourGainMessage": "Прирост:",
"SettingsResetMessage": "Настройки \nсброшены!" "SettingsResetMessage": "Настройки сброшены!"
}, },
"characters": { "characters": {
"SettingRightChar": "П", "SettingRightChar": "П",
"SettingLeftChar": "Л", "SettingLeftChar": "Л",
"SettingAutoChar": "A", "SettingAutoChar": "А",
"SettingFastChar": "+", "SettingFastChar": "Б",
"SettingSlowChar": "-", "SettingSlowChar": "М",
"SettingStartSolderingChar": "T", "SettingStartSolderingChar": "П",
"SettingStartSleepChar": "S", "SettingStartSleepChar": "О",
"SettingStartSleepOffChar": "O", "SettingStartSleepOffChar": "К",
"SettingStartNoneChar": "F" "SettingStartNoneChar": "В"
}, },
"menuDouble": true, "menuDouble": true,
"menuGroups": { "menuGroups": {
@@ -47,234 +47,250 @@
}, },
"PowerSavingMenu": { "PowerSavingMenu": {
"text2": [ "text2": [
"Режим", "Режимы",
"сна" "сна"
], ],
"desc": "Параметры экономии энергии" "desc": "Найстроки режима ожидания"
}, },
"UIMenu": { "UIMenu": {
"text2": [ "text2": [
ользовател", араметры",
"интерфейс" "интерфейса"
], ],
"desc": "Параметры пользовательского интерфейса" "desc": "Найстройки пользовательского интерфейса"
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": [ "text2": [
"Дополнител.", "Дополнител.",
"параметры" "найстройки"
], ],
"desc": "Дополнительные параметры" "desc": "Дополнительные настройки"
} }
}, },
"menuOptions": { "menuOptions": {
"PowerSource": { "PowerSource": {
"text": "ИстП", "text": "ИстчнПит",
"text2": [ "text2": [
"Источник", "Источник",
"питания" "питания"
], ],
"desc": "Источник питания. Установка напряжения отключения. <DC = 10 В, S = 3.3 В на батарею, ограничение мощности выкл.>" "desc": "Источник питания. Устанавливает напряжение отсечки. <DC 10В> <S 3.3В на ячейку, без лимита мощности>"
}, },
"SleepTemperature": { "SleepTemperature": {
"text": "Тожд", "text": "ТмпОжд",
"text2": [ "text2": [
"Темпер.", "Темп.",
"сна" "ожидания"
], ],
"desc": "Температура режима ожидания <С>" "desc": "Температура режима ожидания"
}, },
"SleepTimeout": { "SleepTimeout": {
"text": "Вожд", "text": "ВрмОжид",
"text2": [ "text2": [
"Таймаут", "Таймаут",
"сна" "ожидания"
], ],
"desc": "Время до перехода в режим ожидания <Минуты/Секунды>" "desc": "Время до перехода в режим ожидания <Минуты/Секунды>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text": "Тоткл", "text": "ВрмОткл",
"text2": [ "text2": [
"Время до", "Таймаут",
"отключения" "выключения"
], ],
"desc": "Время до отключения <Минуты>" "desc": "Время до отключения паяльника <Минуты>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text": "ЧувсДв", "text": "ЧувсАксл",
"text2": [ "text2": [
"Чувст. сенсо-", "Чувствительн.",
"ра движения" "акселерометра"
], ],
"desc": "Акселерометр <0 = Выкл, 1 = Мин. чувствительный, 9 = Макс. чувствительный>" "desc": "Чувствительность акселерометра <0=Выкл., 1=Мин., 9=Макс.>"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text": "ЕдТемп", "text": "ЕдТемп",
"text2": [ "text2": [
"Формат темпе-", "Единицы",
"ратуры(C°/F°)" "температуры"
], ],
"desc": "Единица измерения температуры <C = Цельсия, F = Фаренгейт>" "desc": "Единицы изменения температуры <C=Цельция, F=Фаренгейта>"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text": "ИнфОжд", "text": "ИнфОжд",
"text2": [ "text2": [
"Подробный ре-", "Подробный",
"жим ожидания" "реж. ожидания"
], ],
"desc": "Показывать детальную информацию маленьким шрифтом на домашнем экране" "desc": "Отображать детальную информацию уменьшенным шрифтом на домашнем экране"
}, },
"DisplayRotation": { "DisplayRotation": {
"text": "ПовЭкр", "text": "ПовЭкр",
"text2": [ "text2": [
"Автоповорот", "Ориентация",
"экрана" "экрана"
], ],
"desc": "Ориентация дисплея <A = Авто, Л = Левая рука, П = Правая рука>" "desc": "Ориентация экрана <А=Авто, Л=Левая рука, П=Правая рука>"
}, },
"BoostEnabled": { "BoostEnabled": {
"text": "Турбо", "text": "Турб",
"text2": [ "text2": [
"Режим", "Турбо",
"Турбо" "режим"
], ],
"desc": "Активирует \"Турбо-режим\" при удержании кнопки А во время пайки" "desc": "Включить активацию турбо-режма, при удержании ближней к жалу кнопки во время пайки"
}, },
"BoostTemperature": { "BoostTemperature": {
"text": "Ттур", "text": "ТемпТурб",
"text2": [ "text2": [
"Темпер.", "t° турбо",
"Турбо" "режима"
], ],
"desc": "Температура в \"Турбо-режиме\"" "desc": "Температура жала в турбо режиме"
}, },
"AutoStart": { "AutoStart": {
"text": "Астарт", "text": "АвтоРеж",
"text2": [ "text2": [
"Горячий", "Авто",
"старт" "старт"
], ],
"desc": "Автоматический запуск паяльника при включении питания <T = Нагрев, S = Режим ожидания, F = Выкл.>" "desc": "Режим с которым запускается паяльник при подаче питания <П=Пайка, О=Ожидание, К=Ожидание при комн. темп., В=Выкл.>"
}, },
"CooldownBlink": { "CooldownBlink": {
"text": "Охлажд", "text": "МигТемп",
"text2": [ "text2": [
"Показ t° при", "Мигание t°",
"остывании" "при остывании"
], ],
"desc": "Показывать температуру на экране охлаждения, пока жало остается горячим" "desc": "Мигать температурой на экране охлаждения, пока жало еще горячее"
}, },
"TemperatureCalibration": { "TemperatureCalibration": {
"text": "КалибрТ", "text": "КалТемп?",
"text2": [ "text2": [
"Калибровка", "Калибровка",
"температуры" "температуры"
], ],
"desc": "Калибровка термодатчика" "desc": "Калибровка термодатчика жала"
}, },
"SettingsReset": { "SettingsReset": {
"text": "СБРОС?", "text": "Сброс?",
"text2": [ "text2": [
"Сбросить все", "Сброс",
"настройки?" "Настроек"
], ],
"desc": "Сброс всех настроек" "desc": "Сброс настроек к значеням по-умолчанию"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text": "КалибрU?", "text": "КалНапр",
"text2": [ "text2": [
"Калибровка", "Калибровка",
"напряжения" "напряжения"
], ],
"desc": "Калибровка входного напряжения. Настройка кнопками, нажать и удержать чтобы завершить" "desc": "Калибровка входного напряжения <длинное нажатие для выхода>"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text": "ИнфПай", "text": "ИнфПайк",
"text2": [ "text2": [
"Подробный ре-", "Подробный",
"жим пайки" "экран пайки"
], ],
"desc": "Показывать детальную информацию при пайке" "desc": "Показывать детальную информацию на экране пайки"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text": "DESCSP", "text": "СкорТекс",
"text2": [ "text2": [
"Скорость", "Скорость",
"текста" "текста"
], ],
"desc": "Скорость прокрутки текста" "desc": "Скорость прокрутки текста <М=медленно, Б=быстро>"
}, },
"TipModel": { "TipModel": {
"text": "TIPMO", "text": "МодЖала",
"text2": [ "text2": [
"Модель", "Модель",
"жало" "жала"
], ],
"desc": "Выбор модели жало" "desc": "Выбор модели жала"
}, },
"SimpleCalibrationMode": { "SimpleCalibrationMode": {
"text": "SMPCAL", "text": "УпрКал",
"text2": [ "text2": [
"Простая", "Упрощенная",
"калибровка" "калибровка"
], ],
"desc": "Простая калибровка с использованием горячей воды" "desc": "Упрощенная калибровка с использованием горячей воды"
}, },
"AdvancedCalibrationMode": { "AdvancedCalibrationMode": {
"text": "ADVCAL", "text": "УлучшКал",
"text2": [ "text2": [
"Подробная", "Улучшенная",
"калибровка" "калибровка"
], ],
"desc": "Калибровка с помощью термопары" "desc": "Улучшенная калибровка с импользованием термопары жала"
}, },
"PowerInput": { "PowerInput": {
"text": "PWRW", "text": "МощнИст",
"text2": [ "text2": [
"Мощность", "Мощность",
"адаптера" "питания"
], ],
"desc": "Мощность используемого адаптера питания" "desc": "Мощность используемого источника питания"
}, },
"PowerLimitEnable": { "PowerLimitEnable": {
"text": "PLIMEN", "text": "ВклЛимW",
"text2": [ "text2": [
"Ограничение", "Ограничение",
"мощности" "мощности"
], ],
"desc": "Включает ограничение мощности потребления" "desc": "Включить лимит потреблямой мощности"
}, },
"PowerLimit": { "PowerLimit": {
"text": "PLIM", "text": "ЗначЛимW",
"text2": [ "text2": [
"Максимальная", "Максимальная",
"мощность" "мощность"
], ],
"desc": "Макс. мощность, которую может использовать паяльник <Ватт>" "desc": "Максимальная мощность которую может использовать паяльник <Ватт>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text": "RVTCHG", "text": "ИнвКноп",
"text2": [ "text2": [
"Инвертировать", "Инвертировать",
"кнопки +-?" "кнопки"
], ],
"desc": "Инвертировать кнопки изменения температуры." "desc": "Инвертировать кнопки изменения температуры"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text": "TCHGST", "text": "ШагКорт",
"text2": [ "text2": [
"Изменение темп.", "Шаг темп.",
"коротко?" "кор. наж."
], ],
"desc": "Изменять температуру при коротком нажатии!" "desc": "Шаг изменения температуры при коротком нажатии кнопок"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text": "TCHGLT", "text": "ШагДлин",
"text2": [ "text2": [
"Изменение темп.", "Шаг темп.",
олго?" лин. наж."
], ],
"desc": "Изменять температуру при длинном нажатии!" "desc": "Шаг изменения температуры при длинном нажатии кнопок"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -274,6 +274,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"long?" "long?"
], ],
"desc": "Temperature change steps on long button press!" "desc": "Temperature change steps on long button press!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -273,6 +273,22 @@
"довго?" "довго?"
], ],
"desc": "Змінювати температуру при довгому натисканні!" "desc": "Змінювати температуру при довгому натисканні!"
},
"PowerPulsePower":{
"text": "POWPLS",
"text2": [
"Power",
"Pulse W"
],
"desc": "Keep awake pulse power intensity"
},
"TipGain": {
"text": "TG",
"text2": [
"Modify",
"tip gain"
],
"desc": "Tip gain"
} }
} }
} }

View File

@@ -282,6 +282,16 @@ var def =
"id": "TempChangeLongStep", "id": "TempChangeLongStep",
"maxLen": 6, "maxLen": 6,
"maxLen2": 16 "maxLen2": 16
},
{
"id": "PowerPulsePower",
"maxLen": 6,
"maxLen2": 16
},
{
"id": "TipGain",
"maxLen": 6,
"maxLen2": 8
} }
] ]
} }

View File

@@ -79,7 +79,7 @@ public:
// Draws a number at the current cursor location // Draws a number at the current cursor location
// Clears the buffer // Clears the buffer
static void clearScreen() { static void clearScreen() {
memset(&screenBuffer[FRAMEBUFFER_START], 0, OLED_WIDTH * 2); memset(firstStripPtr, 0, OLED_WIDTH * 2);
} }
// Draws the battery level symbol // Draws the battery level symbol
static void drawBattery(uint8_t state) { static void drawBattery(uint8_t state) {
@@ -101,8 +101,11 @@ public:
bool clear); bool clear);
static void drawHeatSymbol(uint8_t state); static void drawHeatSymbol(uint8_t state);
static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator
static void transitionSecondaryFramebuffer(bool forwardNavigation);
static void useSecondaryFramebuffer(bool useSecondary);
private: private:
static void drawChar(char c); // Draw a character to a specific location static void drawChar(char c); // Draw a character to a specific location
static void setFramebuffer(uint8_t *buffer);
static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer
static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content
static uint8_t* secondStripPtr; //Pointers to the strips static uint8_t* secondStripPtr; //Pointers to the strips
@@ -112,6 +115,7 @@ private:
static int16_t cursor_x, cursor_y; static int16_t cursor_x, cursor_y;
static uint8_t displayOffset; static uint8_t displayOffset;
static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
static uint8_t secondFrameBuffer[OLED_WIDTH * 2];
}; };
#endif /* OLED_HPP_ */ #endif /* OLED_HPP_ */

View File

@@ -12,7 +12,7 @@
#include <stdint.h> #include <stdint.h>
#include "stm32f1xx_hal.h" #include "stm32f1xx_hal.h"
#include "unit.h" #include "unit.h"
#define SETTINGSVERSION ( 0x1E ) #define SETTINGSVERSION ( 0x20 )
/*Change this if you change the struct below to prevent people getting \ /*Change this if you change the struct below to prevent people getting \
out of sync*/ out of sync*/
@@ -21,6 +21,8 @@
* flash in uint16_t chunks * flash in uint16_t chunks
*/ */
typedef struct { typedef struct {
uint8_t version; // Used to track if a reset is needed on firmware upgrade
uint16_t SolderingTemp; // current set point for the iron uint16_t SolderingTemp; // current set point for the iron
uint16_t SleepTemp; // temp to drop to in sleep uint16_t SleepTemp; // temp to drop to in sleep
uint8_t SleepTime; // minutes timeout to sleep uint8_t SleepTime; // minutes timeout to sleep
@@ -37,25 +39,28 @@ typedef struct {
uint8_t detailedIDLE :1; // Detailed idle screen uint8_t detailedIDLE :1; // Detailed idle screen
uint8_t detailedSoldering :1; // Detailed soldering screens uint8_t detailedSoldering :1; // Detailed soldering screens
#ifdef ENABLED_FAHRENHEIT_SUPPORT #ifdef ENABLED_FAHRENHEIT_SUPPORT
uint8_t temperatureInF; // Should the temp be in F or C (true is F) uint8_t temperatureInF :1; // Should the temp be in F or C (true is F)
#endif #endif
uint8_t descriptionScrollSpeed :1; // Description scroll speed uint8_t descriptionScrollSpeed :1; // Description scroll speed
uint8_t KeepAwakePulse; // Keep Awake pulse power in 0.1 watts (10 = 1Watt)
uint16_t voltageDiv; // Voltage divisor factor uint16_t voltageDiv; // Voltage divisor factor
uint16_t BoostTemp; // Boost mode set point for the iron uint16_t BoostTemp; // Boost mode set point for the iron
uint16_t CalibrationOffset; // This stores the temperature offset for this tip uint16_t CalibrationOffset; // This stores the temperature offset for this tip
// in the iron. // in the iron.
uint8_t pidPowerLimit;
uint8_t powerLimitEnable; // Allow toggling of power limit without changing value uint8_t powerLimitEnable; // Allow toggling of power limit without changing value
uint8_t powerLimit; // Maximum power iron allowed to output uint8_t powerLimit; // Maximum power iron allowed to output
uint8_t version; // Used to track if a reset is needed on firmware upgrade uint16_t TipGain; // uV/C * 10, it can be used to convert tip thermocouple voltage to temperateture TipV/TipGain = TipTemp
uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment
uint16_t TempChangeLongStep; // Change the plus and minus button assigment
uint16_t TempChangeShortStep; // Change the plus and minus button assigment
uint32_t padding; // This is here for in case we are not an even divisor so uint32_t padding; // This is here for in case we are not an even divisor so
// that nothing gets cut off // that nothing gets cut off
uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment //MUST BE LAST
uint16_t TempChangeLongStep; // Change the plus and minus button assigment
uint16_t TempChangeShortStep; // Change the plus and minus button assigment
} systemSettingsType; } systemSettingsType;

View File

@@ -19,8 +19,8 @@ extern const uint8_t USER_FONT_6x8[];
* use SettingsShortNames as SettingsShortNames[16][1].. second column undefined * use SettingsShortNames as SettingsShortNames[16][1].. second column undefined
*/ */
extern const enum ShortNameType SettingsShortNameType; extern const enum ShortNameType SettingsShortNameType;
extern const char *SettingsShortNames[26][2]; extern const char *SettingsShortNames[28][2];
extern const char *SettingsDescriptions[26]; extern const char *SettingsDescriptions[28];
extern const char *SettingsMenuEntries[4]; extern const char *SettingsMenuEntries[4];
extern const char *SettingsCalibrationDone; extern const char *SettingsCalibrationDone;

View File

@@ -325,21 +325,21 @@ case BUTTON_B_LONG:
autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX
- PRESS_ACCEL_INTERVAL_MIN; - PRESS_ACCEL_INTERVAL_MIN;
} }
// constrain between 50-450 C // constrain between 10-450 C
#ifdef ENABLED_FAHRENHEIT_SUPPORT #ifdef ENABLED_FAHRENHEIT_SUPPORT
if (systemSettings.temperatureInF) { if (systemSettings.temperatureInF) {
if (systemSettings.SolderingTemp > 850) if (systemSettings.SolderingTemp > 850)
systemSettings.SolderingTemp = 850; systemSettings.SolderingTemp = 850;
if (systemSettings.SolderingTemp < 120) if (systemSettings.SolderingTemp < 60)
systemSettings.SolderingTemp = 120; systemSettings.SolderingTemp = 60;
} }
else else
#endif #endif
{ {
if (systemSettings.SolderingTemp > 450) if (systemSettings.SolderingTemp > 450)
systemSettings.SolderingTemp = 450; systemSettings.SolderingTemp = 450;
if (systemSettings.SolderingTemp < 50) if (systemSettings.SolderingTemp < 10)
systemSettings.SolderingTemp = 50; systemSettings.SolderingTemp = 10;
} }
if (xTaskGetTickCount() - lastChange > 200) if (xTaskGetTickCount() - lastChange > 200)

View File

@@ -24,6 +24,7 @@ uint8_t OLED::fontWidth, OLED::fontHeight;
int16_t OLED::cursor_x, OLED::cursor_y; int16_t OLED::cursor_x, OLED::cursor_y;
uint8_t OLED::displayOffset; uint8_t OLED::displayOffset;
uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2];
/*Setup params for the OLED screen*/ /*Setup params for the OLED screen*/
/*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/ /*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/
@@ -62,6 +63,27 @@ uint8_t OLED_Setup_Array[] = {
const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80, const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80,
0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 }; 0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 };
/*
* Animation timing function that follows a bezier curve.
* @param t A given percentage value [0..<100]
* Returns a new percentage value with ease in and ease out.
* Original floating point formula: t * t * (3.0f - 2.0f * t);
*/
static uint8_t easeInOutTiming(uint8_t t) {
return t * t * (300 - 2 * t) / 10000;
}
/*
* Returns the value between a and b, using a percentage value t.
* @param a The value associated with 0%
* @param b The value associated with 100%
* @param t The percentage [0..<100]
*/
static uint8_t lerp(uint8_t a, uint8_t b, uint8_t t) {
return a + t * (b - a) / 100;
}
void OLED::initialize() { void OLED::initialize() {
cursor_x = cursor_y = 0; cursor_x = cursor_y = 0;
currentFont = USER_FONT_12; currentFont = USER_FONT_12;
@@ -85,6 +107,17 @@ void OLED::initialize() {
sizeof(OLED_Setup_Array)); sizeof(OLED_Setup_Array));
} }
void OLED::setFramebuffer(uint8_t *buffer) {
if (buffer == NULL) {
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
return;
}
firstStripPtr = &buffer[0];
secondStripPtr = &buffer[OLED_WIDTH];
}
/* /*
* Prints a char to the screen. * Prints a char to the screen.
* UTF font handling is done using the two input chars. * UTF font handling is done using the two input chars.
@@ -125,6 +158,62 @@ void OLED::drawScrollIndicator(uint8_t y, uint8_t height) {
fillArea(OLED_WIDTH - 1, 8, 1, 8, column.strips[1]); fillArea(OLED_WIDTH - 1, 8, 1, 8, column.strips[1]);
} }
/**
* Plays a transition animation between two framebuffers.
* @param forwardNavigation Direction of the navigation animation.
*
* If forward is true, this displays a forward navigation to the second framebuffer contents.
* Otherwise a rewinding navigation animation is shown to the second framebuffer contents.
*/
void OLED::transitionSecondaryFramebuffer(bool forwardNavigation) {
uint8_t *firstBackStripPtr = &secondFrameBuffer[0];
uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH];
uint32_t totalDuration = 50; // 500ms
uint32_t duration = 0;
uint32_t start = xTaskGetTickCount();
uint8_t offset = 0;
while (duration <= totalDuration) {
duration = xTaskGetTickCount() - start;
uint8_t progress = duration * 100 / totalDuration;
progress = easeInOutTiming(progress);
progress = lerp(0, OLED_WIDTH, progress);
if (progress > OLED_WIDTH) {
progress = OLED_WIDTH;
}
// When forward, current contents move to the left out.
// Otherwise the contents move to the right out.
uint8_t oldStart = forwardNavigation ? 0 : progress;
uint8_t oldPrevious = forwardNavigation ? progress - offset : offset;
// Content from the second framebuffer moves in from the right (forward)
// or from the left (not forward).
uint8_t newStart = forwardNavigation ? OLED_WIDTH - progress : 0;
uint8_t newEnd = forwardNavigation ? 0 : OLED_WIDTH - progress;
offset = progress;
memmove(&firstStripPtr[oldStart], &firstStripPtr[oldPrevious], OLED_WIDTH - progress);
memmove(&secondStripPtr[oldStart], &secondStripPtr[oldPrevious], OLED_WIDTH - progress);
memmove(&firstStripPtr[newStart], &firstBackStripPtr[newEnd], progress);
memmove(&secondStripPtr[newStart], &secondBackStripPtr[newEnd], progress);
refresh();
osDelay(40);
}
}
void OLED::useSecondaryFramebuffer(bool useSecondary) {
if (useSecondary) {
setFramebuffer(secondFrameBuffer);
} else {
setFramebuffer(NULL);
}
}
void OLED::setRotation(bool leftHanded) { void OLED::setRotation(bool leftHanded) {
#ifdef MODEL_TS80 #ifdef MODEL_TS80
leftHanded = !leftHanded; leftHanded = !leftHanded;

View File

@@ -101,10 +101,11 @@ void resetSettings() {
systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow
systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit
systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV
systemSettings.pidPowerLimit = PID_POWER_LIMIT; // Sets the max pwm power limit
systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit
systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; // systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; //
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; //
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; //
systemSettings.KeepAwakePulse= POWER_PULSE_DEFAULT;
systemSettings.TipGain = TIP_GAIN;
saveSettings(); // Save defaults saveSettings(); // Save defaults
} }

View File

@@ -27,7 +27,7 @@
* This was bought to my attention by <Kuba Sztandera> * This was bought to my attention by <Kuba Sztandera>
*/ */
#define op_amp_gain_stage (1+(OP_AMP_Rf/OP_AMP_Rin))
uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) { uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
// This takes the raw ADC samples, converts these to uV // This takes the raw ADC samples, converts these to uV
// Then divides this down by the gain to convert to the uV on the input to the op-amp (A+B terminals) // Then divides this down by the gain to convert to the uV on the input to the op-amp (A+B terminals)
@@ -39,7 +39,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
uint32_t valueuV = rawInputmVX10 * 100; // shift into uV uint32_t valueuV = rawInputmVX10 * 100; // shift into uV
//Now to divide this down by the gain //Now to divide this down by the gain
valueuV = (valueuV) / op_amp_gain_stage; valueuV = (valueuV) / OP_AMP_GAIN_STAGE;
//Remove uV tipOffset //Remove uV tipOffset
if (valueuV >= systemSettings.CalibrationOffset) if (valueuV >= systemSettings.CalibrationOffset)
valueuV -= systemSettings.CalibrationOffset; valueuV -= systemSettings.CalibrationOffset;
@@ -73,17 +73,19 @@ int32_t LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) {
//based on new measurements, tip is quite linear //based on new measurements, tip is quite linear
// //
tipuVDelta *= TIP_GAIN; tipuVDelta *= 10;
tipuVDelta /= 10000; tipuVDelta /= systemSettings.TipGain;
#ifdef MODEL_TS80
tipuVDelta /= OP_AMP_GAIN_STAGE_TS100 / OP_AMP_GAIN_STAGE_TS80;
#endif
return tipuVDelta; return tipuVDelta;
} }
#ifdef ENABLED_FAHRENHEIT_SUPPORT #ifdef ENABLED_FAHRENHEIT_SUPPORT
uint32_t TipThermoModel::convertuVToDegF(uint32_t tipuVDelta) { uint32_t TipThermoModel::convertuVToDegF(uint32_t tipuVDelta) {
tipuVDelta *= TIP_GAIN; return convertCtoF(convertuVToDegC(tipuVDelta));
tipuVDelta /= 1000;
return ((tipuVDelta * 9) / 50) + 32;
//(Y °C × 9/5) + 32 =Y°F
} }
uint32_t TipThermoModel::convertCtoF(uint32_t degC) { uint32_t TipThermoModel::convertCtoF(uint32_t degC) {

View File

@@ -18,11 +18,11 @@ extern uint32_t lastButtonTime;
void gui_Menu(const menuitem *menu); void gui_Menu(const menuitem *menu);
#ifdef MODEL_TS100 #ifdef MODEL_TS100
static void settings_setInputVRange(void); static void settings_setInputVRange(void);
static void settings_displayInputVRange(void); static void settings_displayInputVRange(void);
#else #else
static void settings_setInputPRange(void); static void settings_setInputPRange(void);
static void settings_displayInputPRange(void); static void settings_displayInputPRange(void);
#endif #endif
static void settings_setSleepTemp(void); static void settings_setSleepTemp(void);
static void settings_displaySleepTemp(void); static void settings_displaySleepTemp(void);
@@ -60,6 +60,8 @@ static void settings_setResetSettings(void);
static void settings_displayResetSettings(void); static void settings_displayResetSettings(void);
static void settings_setCalibrate(void); static void settings_setCalibrate(void);
static void settings_displayCalibrate(void); static void settings_displayCalibrate(void);
static void settings_setTipGain(void);
static void settings_displayTipGain(void);
static void settings_setCalibrateVIN(void); static void settings_setCalibrateVIN(void);
static void settings_displayCalibrateVIN(void); static void settings_displayCalibrateVIN(void);
static void settings_displayReverseButtonTempChangeEnabled(void); static void settings_displayReverseButtonTempChangeEnabled(void);
@@ -68,6 +70,8 @@ static void settings_displayTempChangeShortStep(void);
static void settings_setTempChangeShortStep(void); static void settings_setTempChangeShortStep(void);
static void settings_displayTempChangeLongStep(void); static void settings_displayTempChangeLongStep(void);
static void settings_setTempChangeLongStep(void); static void settings_setTempChangeLongStep(void);
static void settings_displayPowerPulse(void);
static void settings_setPowerPulse(void);
// Menu functions // Menu functions
static void settings_displaySolderingMenu(void); static void settings_displaySolderingMenu(void);
@@ -116,14 +120,14 @@ static void settings_enterAdvancedMenu(void);
* *
*/ */
const menuitem rootSettingsMenu[] { const menuitem rootSettingsMenu[] {
/* /*
* Power Source * Power Source
* Soldering Menu * Soldering Menu
* Power Saving Menu * Power Saving Menu
* UI Menu * UI Menu
* Advanced Menu * Advanced Menu
* Exit * Exit
*/ */
#ifdef MODEL_TS100 #ifdef MODEL_TS100
{ (const char*) SettingsDescriptions[0], { settings_setInputVRange }, { { (const char*) SettingsDescriptions[0], { settings_setInputVRange }, {
settings_displayInputVRange } }, /*Voltage input*/ settings_displayInputVRange } }, /*Voltage input*/
@@ -157,9 +161,9 @@ const menuitem solderingMenu[] = {
{ (const char*) SettingsDescriptions[10], { settings_setAutomaticStartMode }, { { (const char*) SettingsDescriptions[10], { settings_setAutomaticStartMode }, {
settings_displayAutomaticStartMode } }, /*Auto start*/ settings_displayAutomaticStartMode } }, /*Auto start*/
{ (const char*) SettingsDescriptions[24], { settings_setTempChangeShortStep }, { { (const char*) SettingsDescriptions[24], { settings_setTempChangeShortStep }, {
settings_displayTempChangeShortStep } }, /*Temp change short step*/ settings_displayTempChangeShortStep } }, /*Temp change short step*/
{ (const char*) SettingsDescriptions[25], { settings_setTempChangeLongStep }, { { (const char*) SettingsDescriptions[25], { settings_setTempChangeLongStep }, {
settings_displayTempChangeLongStep } }, /*Temp change long step*/ settings_displayTempChangeLongStep } }, /*Temp change long step*/
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
}; };
const menuitem UIMenu[] = { const menuitem UIMenu[] = {
@@ -172,18 +176,21 @@ const menuitem UIMenu[] = {
* Reverse Temp change buttons + - * Reverse Temp change buttons + -
*/ */
#ifdef ENABLED_FAHRENHEIT_SUPPORT #ifdef ENABLED_FAHRENHEIT_SUPPORT
{ (const char*) SettingsDescriptions[5], { settings_setTempF }, { { (const char*) SettingsDescriptions[5], { settings_setTempF }, {
settings_displayTempF } }, /* Temperature units*/ settings_displayTempF } }, /* Temperature units*/
#endif #endif
{ (const char*) SettingsDescriptions[7], { settings_setDisplayRotation }, { { (const char*) SettingsDescriptions[7],
settings_displayDisplayRotation } }, /*Display Rotation*/ { settings_setDisplayRotation }, {
{ (const char*) SettingsDescriptions[11], { settings_setCoolingBlinkEnabled }, { settings_displayDisplayRotation } }, /*Display Rotation*/
settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/ { (const char*) SettingsDescriptions[11], {
{ (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, { settings_setCoolingBlinkEnabled }, {
settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/ settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/
{ (const char*) SettingsDescriptions[23], { settings_setReverseButtonTempChangeEnabled }, { { (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, {
settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */ settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE { (const char*) SettingsDescriptions[23], {
settings_setReverseButtonTempChangeEnabled }, {
settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
}; };
const menuitem PowerMenu[] = { const menuitem PowerMenu[] = {
/* /*
@@ -212,6 +219,7 @@ const menuitem advancedMenu[] = {
* Calibrate Temperature * Calibrate Temperature
* Calibrate Input V * Calibrate Input V
* Reset Settings * Reset Settings
* Power Pulse
*/ */
{ (const char*) SettingsDescriptions[21], { settings_setPowerLimitEnable }, { { (const char*) SettingsDescriptions[21], { settings_setPowerLimitEnable }, {
settings_displayPowerLimitEnable } }, /*Power limit enable*/ settings_displayPowerLimitEnable } }, /*Power limit enable*/
@@ -228,6 +236,10 @@ const menuitem advancedMenu[] = {
settings_displayCalibrate } }, /*Calibrate tip*/ settings_displayCalibrate } }, /*Calibrate tip*/
{ (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, { { (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, {
settings_displayCalibrateVIN } }, /*Voltage input cal*/ settings_displayCalibrateVIN } }, /*Voltage input cal*/
{ (const char*) SettingsDescriptions[26], { settings_setPowerPulse }, {
settings_displayPowerPulse } }, /*Power Pulse adjustment */
{ (const char*) SettingsDescriptions[27], { settings_setTipGain }, {
settings_displayTipGain } }, /*TipGain*/
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
}; };
@@ -365,14 +377,13 @@ static void settings_setSleepTemp(void) {
if (systemSettings.temperatureInF) { if (systemSettings.temperatureInF) {
systemSettings.SleepTemp += 20; systemSettings.SleepTemp += 20;
if (systemSettings.SleepTemp > 580) if (systemSettings.SleepTemp > 580)
systemSettings.SleepTemp = 120; systemSettings.SleepTemp = 60;
} } else
else
#endif #endif
{ {
systemSettings.SleepTemp += 10; systemSettings.SleepTemp += 10;
if (systemSettings.SleepTemp > 300) if (systemSettings.SleepTemp > 300)
systemSettings.SleepTemp = 50; systemSettings.SleepTemp = 10;
} }
} }
@@ -487,12 +498,12 @@ static void settings_displayAdvancedIDLEScreens(void) {
} }
static void settings_setPowerLimitEnable(void) { static void settings_setPowerLimitEnable(void) {
systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable; systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable;
} }
static void settings_displayPowerLimitEnable(void) { static void settings_displayPowerLimitEnable(void) {
printShortDescription(21, 7); printShortDescription(21, 7);
OLED::drawCheckbox(systemSettings.powerLimitEnable); OLED::drawCheckbox(systemSettings.powerLimitEnable);
} }
static void settings_setPowerLimit(void) { static void settings_setPowerLimit(void) {
@@ -503,9 +514,9 @@ static void settings_setPowerLimit(void) {
} }
static void settings_displayPowerLimit(void) { static void settings_displayPowerLimit(void) {
printShortDescription(22, 5); printShortDescription(22, 5);
OLED::printNumber(systemSettings.powerLimit, 2); OLED::printNumber(systemSettings.powerLimit, 2);
OLED::print(SymbolWatts); OLED::print(SymbolWatts);
} }
static void settings_setScrollSpeed(void) { static void settings_setScrollSpeed(void) {
@@ -745,47 +756,112 @@ static void settings_setCalibrateVIN(void) {
} }
} }
static void settings_setReverseButtonTempChangeEnabled(void) { static void settings_setTipGain(void) {
systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled; OLED::setFont(0);
OLED::clearScreen();
for (;;) {
OLED::setCursor(0, 0);
OLED::printNumber(systemSettings.TipGain / 10, 2);
OLED::print(SymbolDot);
OLED::printNumber(systemSettings.TipGain % 10, 1);
ButtonState buttons = getButtonState();
switch (buttons) {
case BUTTON_F_SHORT:
systemSettings.TipGain -= 1;
break;
case BUTTON_B_SHORT:
systemSettings.TipGain += 1;
break;
case BUTTON_BOTH:
case BUTTON_F_LONG:
case BUTTON_B_LONG:
saveSettings();
return;
break;
case BUTTON_NONE:
default:
break;
}
OLED::refresh();
osDelay(40);
// Cap to sensible values
if (systemSettings.TipGain < 150) {
systemSettings.TipGain = 150;
} else if (systemSettings.TipGain > 300) {
systemSettings.TipGain = 300;
}
}
} }
static void settings_displayReverseButtonTempChangeEnabled(void){ static void settings_displayTipGain(void) {
printShortDescription(23, 7); printShortDescription(27, 5);
OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); }
static void settings_setReverseButtonTempChangeEnabled(void) {
systemSettings.ReverseButtonTempChangeEnabled =
!systemSettings.ReverseButtonTempChangeEnabled;
}
static void settings_displayReverseButtonTempChangeEnabled(void) {
printShortDescription(23, 7);
OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled);
} }
static void settings_setTempChangeShortStep(void) { static void settings_setTempChangeShortStep(void) {
systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP; systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP;
if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) { if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) {
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX
} }
} }
static void settings_displayTempChangeShortStep(void) { static void settings_displayTempChangeShortStep(void) {
printShortDescription(24, 5); printShortDescription(24, 5);
OLED::printNumber(systemSettings.TempChangeShortStep, 3); OLED::printNumber(systemSettings.TempChangeShortStep, 3);
} }
static void settings_setTempChangeLongStep(void) { static void settings_setTempChangeLongStep(void) {
systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP; systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP;
if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) { if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) {
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX
} }
} }
static void settings_displayTempChangeLongStep(void) { static void settings_displayTempChangeLongStep(void) {
printShortDescription(25, 5); printShortDescription(25, 5);
OLED::printNumber(systemSettings.TempChangeLongStep, 3); OLED::printNumber(systemSettings.TempChangeLongStep, 3);
} }
static void settings_setPowerPulse(void) {
systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT;
systemSettings.KeepAwakePulse %= POWER_PULSE_MAX;
}
static void settings_displayPowerPulse(void) {
printShortDescription(26, 5);
if (systemSettings.KeepAwakePulse) {
OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1);
OLED::print(SymbolDot);
OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1);
} else {
OLED::drawCheckbox(false);
}
}
static void displayMenu(size_t index) { static void displayMenu(size_t index) {
// Call into the menu // Call into the menu
OLED::setFont(1); OLED::setFont(1);
OLED::setCursor(0, 0); OLED::setCursor(0, 0);
// Draw title // Draw title
OLED::print(SettingsMenuEntries[index]); OLED::print(SettingsMenuEntries[index]);
// Draw symbol // Draw symbol
// 16 pixel wide image // 16 pixel wide image
// 2 pixel wide scrolling indicator // 2 pixel wide scrolling indicator
OLED::drawArea(96 - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * index])); OLED::drawArea(96 - 16 - 2, 0, 16, 16,
(&SettingsMenuIcons[(16 * 2) * index]));
} }
static void settings_displayCalibrateVIN(void) { static void settings_displayCalibrateVIN(void) {
@@ -817,7 +893,7 @@ static void settings_enterAdvancedMenu(void) {
} }
void gui_Menu(const menuitem *menu) { void gui_Menu(const menuitem *menu) {
// Draw the settings menu and provide iteration support etc // Draw the settings menu and provide iteration support etc
uint8_t currentScreen = 0; uint8_t currentScreen = 0;
uint32_t autoRepeatTimer = 0; uint32_t autoRepeatTimer = 0;
uint8_t autoRepeatAcceleration = 0; uint8_t autoRepeatAcceleration = 0;
@@ -826,12 +902,29 @@ void gui_Menu(const menuitem *menu) {
int16_t lastOffset = -1; int16_t lastOffset = -1;
bool lcdRefresh = true; bool lcdRefresh = true;
ButtonState lastButtonState = BUTTON_NONE; ButtonState lastButtonState = BUTTON_NONE;
static bool enterGUIMenu = true;
enterGUIMenu = true;
uint8_t scrollContentSize = 0; uint8_t scrollContentSize = 0;
for (uint8_t i = 0; menu[i].draw.func != NULL; i++) { for (uint8_t i = 0; menu[i].draw.func != NULL; i++) {
scrollContentSize += 1; scrollContentSize += 1;
} }
// Animated menu opening.
if (menu[currentScreen].draw.func != NULL) {
// This menu is drawn in a secondary framebuffer.
// Then we play a transition from the current primary
// framebuffer to the new buffer.
// The extra buffer is discarded at the end of the transition.
OLED::useSecondaryFramebuffer(true);
OLED::setFont(0);
OLED::setCursor(0, 0);
OLED::clearScreen();
menu[currentScreen].draw.func();
OLED::useSecondaryFramebuffer(false);
OLED::transitionSecondaryFramebuffer(true);
}
while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) {
OLED::setFont(0); OLED::setFont(0);
OLED::setCursor(0, 0); OLED::setCursor(0, 0);
@@ -857,7 +950,7 @@ void gui_Menu(const menuitem *menu) {
((xTaskGetTickCount() - descriptionStart) ((xTaskGetTickCount() - descriptionStart)
/ (systemSettings.descriptionScrollSpeed == 1 ? / (systemSettings.descriptionScrollSpeed == 1 ?
1 : 2)); 1 : 2));
descriptionOffset %= descriptionWidth; // Roll around at the end descriptionOffset %= descriptionWidth; // Roll around at the end
if (lastOffset != descriptionOffset) { if (lastOffset != descriptionOffset) {
OLED::clearScreen(); OLED::clearScreen();
OLED::setCursor((OLED_WIDTH - descriptionOffset), 0); OLED::setCursor((OLED_WIDTH - descriptionOffset), 0);
@@ -882,10 +975,23 @@ void gui_Menu(const menuitem *menu) {
case BUTTON_F_SHORT: case BUTTON_F_SHORT:
// increment // increment
if (descriptionStart == 0) { if (descriptionStart == 0) {
if (menu[currentScreen].incrementHandler.func != NULL) if (menu[currentScreen].incrementHandler.func != NULL) {
enterGUIMenu = false;
menu[currentScreen].incrementHandler.func(); menu[currentScreen].incrementHandler.func();
else
if (enterGUIMenu) {
OLED::useSecondaryFramebuffer(true);
OLED::setFont(0);
OLED::setCursor(0, 0);
OLED::clearScreen();
menu[currentScreen].draw.func();
OLED::useSecondaryFramebuffer(false);
OLED::transitionSecondaryFramebuffer(false);
}
enterGUIMenu = true;
} else {
earlyExit = true; earlyExit = true;
}
} else } else
descriptionStart = 0; descriptionStart = 0;
break; break;
@@ -931,7 +1037,7 @@ void gui_Menu(const menuitem *menu) {
osDelay(40); osDelay(40);
lcdRefresh = false; lcdRefresh = false;
} }
if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) { if ((xTaskGetTickCount() - lastButtonTime) > (100 * 30)) {
// If user has not pressed any buttons in 30 seconds, exit back a menu layer // If user has not pressed any buttons in 30 seconds, exit back a menu layer
// This will trickle the user back to the main screen eventually // This will trickle the user back to the main screen eventually
earlyExit = true; earlyExit = true;

View File

@@ -36,16 +36,13 @@ uint32_t MOVTaskBuffer[MOVTaskStackSize];
osStaticThreadDef_t MOVTaskControlBlock; osStaticThreadDef_t MOVTaskControlBlock;
static TaskHandle_t pidTaskNotification = NULL; static TaskHandle_t pidTaskNotification = NULL;
static TickType_t powerPulseRate = 1000;
static TickType_t powerPulseDuration = 50;
void startGUITask(void const *argument); void startGUITask(void const *argument);
void startPIDTask(void const *argument); void startPIDTask(void const *argument);
void startMOVTask(void const *argument); void startMOVTask(void const *argument);
// End FreeRTOS // End FreeRTOS
static const int maxPowerIdleTicks = 1000;
static const int powerPulseTicks = 50;
static const int x10PowerPulseWatts = 3;
// Main sets up the hardware then hands over to the FreeRTOS kernel // Main sets up the hardware then hands over to the FreeRTOS kernel
int main(void) { int main(void) {
/* Reset of all peripherals, Initializes the Flash interface and the Systick. /* Reset of all peripherals, Initializes the Flash interface and the Systick.
@@ -113,14 +110,9 @@ void startPIDTask(void const *argument __unused) {
* control PWM. * control PWM.
*/ */
setTipX10Watts(0); // disable the output driver if the output is set to be off setTipX10Watts(0); // disable the output driver if the output is set to be off
TickType_t lastPowerPulseStart = 0;
TickType_t lastPowerPulseEnd = 0;
#ifdef MODEL_TS80
//Set power management code to the tip resistance in ohms * 10
TickType_t lastPowerPulse = 0;
#else
#endif
history<int32_t, PID_TIM_HZ> tempError = { { 0 }, 0, 0 }; history<int32_t, PID_TIM_HZ> tempError = { { 0 }, 0, 0 };
currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will
// be over-ridden rapidly // be over-ridden rapidly
@@ -183,18 +175,23 @@ void startPIDTask(void const *argument __unused) {
// Unfortunately, our temp signal is too noisy to really help. // Unfortunately, our temp signal is too noisy to really help.
} }
#ifdef MODEL_TS80 //If the user turns on the option of using an occasional pulse to keep the power bank on
//If its a TS80, we want to have the option of using an occasional pulse to keep the power bank on if (systemSettings.KeepAwakePulse) {
if (((xTaskGetTickCount() - lastPowerPulse) > maxPowerIdleTicks)
&& (x10WattsOut < x10PowerPulseWatts)) { if (xTaskGetTickCount() - lastPowerPulseStart
x10WattsOut = x10PowerPulseWatts; > powerPulseRate) {
lastPowerPulseStart = xTaskGetTickCount();
lastPowerPulseEnd = lastPowerPulseStart
+ powerPulseDuration;
}
//If current PID is less than the pulse level, check if we want to constrain to the pulse as the floor
if (x10WattsOut < systemSettings.KeepAwakePulse
&& xTaskGetTickCount() < lastPowerPulseEnd) {
x10WattsOut = systemSettings.KeepAwakePulse;
}
} }
if (((xTaskGetTickCount() - lastPowerPulse)
> (maxPowerIdleTicks + powerPulseTicks))
&& (x10WattsOut >= x10PowerPulseWatts)) {
lastPowerPulse = xTaskGetTickCount();
}
#endif
//Secondary safety check to forcefully disable header when within ADC noise of top of ADC //Secondary safety check to forcefully disable header when within ADC noise of top of ADC
if (getTipRawTemp(0) > (0x7FFF - 150)) { if (getTipRawTemp(0) > (0x7FFF - 150)) {
x10WattsOut = 0; x10WattsOut = 0;
@@ -263,8 +260,7 @@ void startMOVTask(void const *argument __unused) {
datax[currentPointer] = (int32_t) tx; datax[currentPointer] = (int32_t) tx;
datay[currentPointer] = (int32_t) ty; datay[currentPointer] = (int32_t) ty;
dataz[currentPointer] = (int32_t) tz; dataz[currentPointer] = (int32_t) tz;
if (!accelInit) if (!accelInit) {
{
for (uint8_t i = currentPointer + 1; i < MOVFilter; i++) { for (uint8_t i = currentPointer + 1; i < MOVFilter; i++) {
datax[i] = (int32_t) tx; datax[i] = (int32_t) tx;
datay[i] = (int32_t) ty; datay[i] = (int32_t) ty;
@@ -302,21 +298,17 @@ void startMOVTask(void const *argument __unused) {
} }
} }
#define FLASH_LOGOADDR \ // Second last page of flash set aside for logo image.
(0x8000000 | 0xF800) /*second last page of flash set aside for logo image*/ #define FLASH_LOGOADDR (0x8000000 | 0xF800)
/* The header value is (0xAA,0x55,0xF0,0x0D) but is stored in little endian 16 // Logo header signature.
* bits words on the flash */ #define LOGO_HEADER_VALUE 0xF00DAA55
const uint8_t LOGO_HEADER_VALUE[] = { 0x55, 0xAA, 0x0D, 0xF0 };
bool showBootLogoIfavailable() { bool showBootLogoIfavailable() {
uint8_t *header = (uint8_t*) (FLASH_LOGOADDR); // Do not show logo data if signature is not found.
if (LOGO_HEADER_VALUE
// check if the header is correct. != *(reinterpret_cast<const uint32_t*>(FLASH_LOGOADDR))) {
for (int i = 0; i < 4; i++) { return false;
if (header[i] != LOGO_HEADER_VALUE[i]) {
return false;
}
} }
OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4));
@@ -349,12 +341,10 @@ void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
FRToSI2C::CpltCallback(); FRToSI2C::CpltCallback();
} }
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) { void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) {
asm("bkpt");
FRToSI2C::CpltCallback(); FRToSI2C::CpltCallback();
} }
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) { void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
//asm("bkpt");
FRToSI2C::CpltCallback(); FRToSI2C::CpltCallback();
} }
@@ -363,7 +353,7 @@ void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
} }
void vApplicationStackOverflowHook(xTaskHandle *pxTask __unused, void vApplicationStackOverflowHook(xTaskHandle *pxTask __unused,
signed portCHAR *pcTaskName __unused) { signed portCHAR *pcTaskName __unused) {
asm("bkpt");
// We dont have a good way to handle a stack overflow at this point in time // We dont have a good way to handle a stack overflow at this point in time
NVIC_SystemReset(); NVIC_SystemReset();
} }

View File

@@ -54,6 +54,14 @@
#define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value #define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value
#define TEMP_CHANGE_LONG_STEP_MAX 100 // Temp change long step MAX value #define TEMP_CHANGE_LONG_STEP_MAX 100 // Temp change long step MAX value
/* Power pulse for keeping power banks awake*/
#define POWER_PULSE_INCREMENT 1
#define POWER_PULSE_MAX 50 // x10 max watts
#ifdef MODEL_TS100
#define POWER_PULSE_DEFAULT 0
#else
#define POWER_PULSE_DEFAULT 5
#endif
/** /**
* OLED Orientation Sensitivity on Automatic mode! * OLED Orientation Sensitivity on Automatic mode!
@@ -74,21 +82,26 @@
#define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow #define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow
#define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit #define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit
#define TIP_GAIN 210 // 21 uV/C * 10, uV per deg C constant of the tip, Tip uV * 10 / coeff = tip temp
#define OP_AMP_Rf_TS100 750*1000 // 750 Kilo-ohms -> From schematic, R1
#define OP_AMP_Rin_TS100 2370 // 2.37 Kilo-ohms -> From schematic, R2
#define OP_AMP_GAIN_STAGE_TS100 (1+(OP_AMP_Rf_TS100/OP_AMP_Rin_TS100))
#define OP_AMP_Rf_TS80 180*1000 // 180 Kilo-ohms -> From schematic, R6
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
#define OP_AMP_GAIN_STAGE_TS80 (1+(OP_AMP_Rf_TS80/OP_AMP_Rin_TS80))
#ifdef MODEL_TS100 #ifdef MODEL_TS100
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic #define VOLTAGE_DIV 467 // 467 - Default divider from schematic
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV #define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit #define PID_POWER_LIMIT 70 // Sets the max pwm power limit
#define POWER_LIMIT 30 // 30 watts default limit #define POWER_LIMIT 30 // 30 watts default limit
#define MAX_POWER_LIMIT 65 // #define MAX_POWER_LIMIT 65 //
#define POWER_LIMIT_STEPS 5 // #define POWER_LIMIT_STEPS 5 //
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
/**
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
*/
#define OP_AMP_Rf 750*1000 // 750 Kilo-ohms -> From schematic, R1
#define OP_AMP_Rin 2370 // 2.37 Kilo-ohms -> From schematic, R2
#define TIP_GAIN 405
#endif #endif
#ifdef MODEL_TS80 #ifdef MODEL_TS80
@@ -98,11 +111,5 @@
#define POWER_LIMIT 24 // 24 watts default power limit #define POWER_LIMIT 24 // 24 watts default power limit
#define MAX_POWER_LIMIT 30 // #define MAX_POWER_LIMIT 30 //
#define POWER_LIMIT_STEPS 2 #define POWER_LIMIT_STEPS 2
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
/**
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
*/
#define OP_AMP_Rf 180*1000 // 180 Kilo-ohms -> From schematic, R6
#define OP_AMP_Rin 2000 // 2.0 Kilo-ohms -> From schematic, R3
#define TIP_GAIN 115
#endif #endif