mirror of
https://github.com/wagiminator/ATmega-Soldering-Station.git
synced 2025-08-09 13:09:11 +03:00
Update files
This commit is contained in:
23
README.md
23
README.md
@@ -1,3 +1,6 @@
|
|||||||
|
## !!! Warning: the version with "t" is the test version, there may be stability problems! Not recommended for production environments
|
||||||
|
## !!! 警告:带有“t”的是测试版本,可能存在稳定性问题!不建议用于生产环境
|
||||||
|
|
||||||
# 1. Overview
|
# 1. Overview
|
||||||
T12 焊台控制器功能介绍
|
T12 焊台控制器功能介绍
|
||||||
T12 Quick Heating Soldering Station featuring
|
T12 Quick Heating Soldering Station featuring
|
||||||
@@ -54,20 +57,20 @@ T12 Quick Heating Soldering Station featuring
|
|||||||
|
|
||||||
## V1.8t7 New features:
|
## V1.8t7 New features:
|
||||||
|
|
||||||
-EEPROM可用性检查机制
|
- EEPROM可用性检查机制
|
||||||
-EEPROM availability check
|
- EEPROM availability check
|
||||||
|
|
||||||
-允许保存最大30个烙铁头的配置
|
- 允许保存最大30个烙铁头的配置
|
||||||
- Tip change detection30 preservable soldering tip configurations
|
- Tip change detection30 preservable soldering tip configurations
|
||||||
|
|
||||||
-9段温度曲线拟合
|
- 9段温度曲线拟合
|
||||||
-9 segments of temperature curve fitting
|
- 9 segments of temperature curve fitting
|
||||||
|
|
||||||
## Links:
|
Project Video: https://youtu.be/I9ATDxvQ1Bc
|
||||||
- Project on EasyEDA: https://easyeda.com/wagiminator/z-solderingstation-smd-v2
|
|
||||||
- Project Video: https://youtu.be/I9ATDxvQ1Bc
|
Video from John Glavinos (electronics4all): https://youtu.be/4YDcWfOQmz4
|
||||||
- Video from John Glavinos (electronics4all): https://youtu.be/4YDcWfOQmz4
|
|
||||||
- Video from LHW-createskyblue (UI-v1.6L): https://b23.tv/LiOe54
|
Video from LHW-createskyblue (UI-v1.6L): https://b23.tv/LiOe54
|
||||||
|
|
||||||
# 2. Versions, Upgrades and Notes
|
# 2. Versions, Upgrades and Notes
|
||||||
|
|
||||||
|
@@ -343,7 +343,7 @@ void loop() {
|
|||||||
//HelpMeSerialer();
|
//HelpMeSerialer();
|
||||||
ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu)
|
ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu)
|
||||||
SLEEPCheck(); // check and activate/deactivate sleep modes
|
SLEEPCheck(); // check and activate/deactivate sleep modes
|
||||||
SENSORCheck(); // reads temperature and vibration switch of the iron
|
SENSORCheck(1); // reads temperature and vibration switch of the iron
|
||||||
Thermostat(0); // heater control
|
Thermostat(0); // heater control
|
||||||
MainScreen(); // updates the main page on the OLED
|
MainScreen(); // updates the main page on the OLED
|
||||||
//beep(0);
|
//beep(0);
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -166,7 +166,7 @@ void setRotary(int rmin, int rmax, int rstep, int rvalue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reads temperature, vibration switch and supply voltages
|
// reads temperature, vibration switch and supply voltages
|
||||||
void SENSORCheck() {
|
void SENSORCheck(bool mode) {
|
||||||
// shut off heater in order to measure temperature
|
// shut off heater in order to measure temperature
|
||||||
#if UsePMOS
|
#if UsePMOS
|
||||||
analogWrite(CONTROL_PIN, 0);
|
analogWrite(CONTROL_PIN, 0);
|
||||||
@@ -195,6 +195,8 @@ void SENSORCheck() {
|
|||||||
RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading
|
RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading
|
||||||
CurrentTemp = calculateTemp(RawTemp);
|
CurrentTemp = calculateTemp(RawTemp);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// stabilize displayed temperature when around setpoint
|
// stabilize displayed temperature when around setpoint
|
||||||
if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp;
|
if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp;
|
||||||
if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint;
|
if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint;
|
||||||
@@ -210,7 +212,7 @@ void SENSORCheck() {
|
|||||||
}
|
}
|
||||||
// checks if tip is present or currently inserted
|
// checks if tip is present or currently inserted
|
||||||
if (ShowTemp > 500) TipIsPresent = false; // tip removed ?
|
if (ShowTemp > 500) TipIsPresent = false; // tip removed ?
|
||||||
if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ?
|
if (!TipIsPresent && (ShowTemp < 500)&&mode) { // new tip inserted ?
|
||||||
//关闭加热
|
//关闭加热
|
||||||
#if UsePMOS
|
#if UsePMOS
|
||||||
analogWrite(CONTROL_PIN, 0);
|
analogWrite(CONTROL_PIN, 0);
|
||||||
@@ -226,6 +228,7 @@ void SENSORCheck() {
|
|||||||
c0 = LOW; // switch must be released
|
c0 = LOW; // switch must be released
|
||||||
setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder
|
setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -74,15 +74,11 @@ void MainScreen() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//arduboy.invert(1);
|
|
||||||
arduboy.setTextSize(6);
|
|
||||||
SetTextColor(1);
|
SetTextColor(1);
|
||||||
arduboy.clear();
|
arduboy.clear();
|
||||||
if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep();
|
if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep();
|
||||||
if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep();
|
if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep();
|
||||||
arduboy.setCursor(12, 2);
|
DrawNumRect(9, 3, 6, ShowTemp);
|
||||||
|
|
||||||
if (ShowTemp > 500) arduboy.print(999); else arduboy.print(ShowTemp);
|
|
||||||
DrawStatusBar(1);
|
DrawStatusBar(1);
|
||||||
arduboy.display();
|
arduboy.display();
|
||||||
}
|
}
|
||||||
@@ -94,7 +90,7 @@ void DrawNumRect(byte x, byte y, byte size, int n) {
|
|||||||
arduboy.setCursor(3 + x, 3 + y);
|
arduboy.setCursor(3 + x, 3 + y);
|
||||||
arduboy.setTextSize(size);
|
arduboy.setTextSize(size);
|
||||||
if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n);
|
if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n);
|
||||||
arduboy.drawRect(1 + x, 1 + y, 89, 39, 0);
|
if (size != 6)arduboy.drawRect(1 + x, 1 + y, 89, 39, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//绘制状态条
|
//绘制状态条
|
||||||
@@ -330,18 +326,25 @@ uint8_t MenuScreen(uint8_t selected) {
|
|||||||
selected = getRotary();
|
selected = getRotary();
|
||||||
//非线性滑动动画
|
//非线性滑动动画
|
||||||
SlidingAnimationX += (selected - lastselected) * 56;
|
SlidingAnimationX += (selected - lastselected) * 56;
|
||||||
if (SlidingAnimationX != 0) SlidingAnimationX += 0.55 * (-SlidingAnimationX);
|
if (SlidingAnimationX != 0) SlidingAnimationX += 0.5 * (-SlidingAnimationX);
|
||||||
lastselected = selected;
|
lastselected = selected;
|
||||||
arduboy.clear();
|
// if (arduboy.nextFrame()) {
|
||||||
//绘制图标 如果有指定的话
|
arduboy.clear();
|
||||||
for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject());
|
//绘制图标 如果有指定的话
|
||||||
DrawAppText(selected + QueryMenuObject());
|
for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject());
|
||||||
|
DrawAppText(selected + QueryMenuObject());
|
||||||
arduboy.display();
|
arduboy.display();
|
||||||
|
// }
|
||||||
CheckLastButton();
|
CheckLastButton();
|
||||||
//beep(0);
|
//beep(0);
|
||||||
} while (digitalRead(BUTTON_PIN) || lastbutton);
|
} while (digitalRead(BUTTON_PIN) || lastbutton);
|
||||||
|
|
||||||
beep();
|
beep();
|
||||||
|
/*
|
||||||
|
arduboy.invert(1);
|
||||||
|
delay(50);
|
||||||
|
arduboy.invert(0);
|
||||||
|
*/
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,6 +495,7 @@ void ChangeTipScreen() {
|
|||||||
if (selected) arrow = 1;
|
if (selected) arrow = 1;
|
||||||
setRotary(0, NumberOfTips - 1, 1, selected);
|
setRotary(0, NumberOfTips - 1, 1, selected);
|
||||||
lastbutton = (!digitalRead(BUTTON_PIN));
|
lastbutton = (!digitalRead(BUTTON_PIN));
|
||||||
|
arduboy.invert(0);
|
||||||
do {
|
do {
|
||||||
//beep(0);
|
//beep(0);
|
||||||
arduboy.clear();
|
arduboy.clear();
|
||||||
@@ -540,14 +544,14 @@ void ChangeTipScreen() {
|
|||||||
void CalibrationScreen() {
|
void CalibrationScreen() {
|
||||||
float P[4];
|
float P[4];
|
||||||
int xx[9];
|
int xx[9];
|
||||||
for (int CalStep = 0; CalStep < 9; CalStep++) {
|
for (byte CalStep = 0; CalStep < 9; CalStep++) {
|
||||||
if (CalStep != 0) setRotary(0, 1023, 1, xx[CalStep - 1]); else setRotary(0, 1023, 1, 0);
|
if (CalStep != 0) setRotary(0, 1023, 1, xx[CalStep - 1]); else setRotary(0, 1023, 1, 0);
|
||||||
BeepIfWorky = true;
|
BeepIfWorky = true;
|
||||||
lastbutton = (!digitalRead(BUTTON_PIN));
|
lastbutton = (!digitalRead(BUTTON_PIN));
|
||||||
do {
|
do {
|
||||||
arduboy.clear();
|
arduboy.clear();
|
||||||
arduboy.setTextSize(1);
|
arduboy.setTextSize(1);
|
||||||
SENSORCheck(); //读取传感器
|
SENSORCheck(0); //读取传感器
|
||||||
SetTemp = getRotary();
|
SetTemp = getRotary();
|
||||||
Thermostat(1); //加热控制 - ADC数值为基准
|
Thermostat(1); //加热控制 - ADC数值为基准
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user