Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

DIY-контроллер паяльника 862D+ — точность и надёжность

Компоненты и материалы

Компонент Количество Примечание
Arduino Nano R3 1
Обычный диод (фляйбэк) 1
MOSFET IRF540N (N-канальный) 1
Линейный стабилизатор 5 В 1
Резистор 330 Ом 1
Пин-хадеры (мама) 2
OLED 0.96" 1

Необходимые инструменты

О проекте

Обновление (21.10.2019): крупное обновление кода. Читайте ниже — кое-что изменилось.

Мой паяльник 862D+ сломался. Вместо покупки нового взял второй такой же и починил. Сложность: в сети нет решения. Плата была сломана — после замены жала всё равно выдавало S-E (sensor error).

DIY-контроллер паяльника 862D+ — точность и надёжность

Решил сделать свой контроллер и затхнуть внутрь. Потребовался второй трансформатор, но он дешёвый, места внутри хватает.

DIY-контроллер паяльника 862D+ — точность и надёжность
DIY-контроллер паяльника 862D+ — точность и надёжность

Может, некрасиво, но работает идеально. Бонус: убрал кнопку питания паяльника, поставил её между 5 В и Arduino.

Советы по сборке

Теперь вы знаете основы. Это дешёвая альтернатива качественным паяльникам. Есть и лучше, но этот — очень дешёвый и DIY.

Код

Control Code (C/C++)

int output = 0; int temp = 0; int settemp = 630;
String inputString = ""; boolean rap = false; boolean stringComplete = false; int t = 0;
void setup() { Serial.begin(9600); inputString.reserve(200); pinMode(6, OUTPUT); digitalWrite(6, LOW); }
void loop() { serialEvent(); if (stringComplete) { Serial.println(inputString); t = inputString.toInt(); inputString = ""; stringComplete = false; } rapid(); pid(); }
void rapid() { if (rap == false) { digitalWrite(6, HIGH); do { temp = analogRead(0); Serial.print("rapid"); Serial.println(temp); } while (temp - settemp > 10); digitalWrite(6, LOW); rap = true; } }
void pid() { temp = analogRead(0); output = temp - settemp; if (output < 0) output = 0; if (output > 255) output = 255; Serial.print("pid"); Serial.print(temp); Serial.print(", "); Serial.println(output); analogWrite(6, output); }
void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n') stringComplete = true; } }

The Code (C/C++) — с OLED

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(-1);
int settemp = 590;
int output = 0; int temp = 0;
String inputString = ""; boolean rap = false; boolean stringComplete = false;
int t = 0; int mappedpower = 0; byte powermultiply = 0; long counter = 0;
int temp2 = 0; byte outputoffset = 0; byte scaleread = 0;

void setup() {
  Serial.begin(9600);
  pinMode(12, OUTPUT); digitalWrite(12, LOW);
  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
  display.clearDisplay(); display.display();
  rapid();
}
void loop() { pid(); display.clearDisplay(); updatebar(); updatetext(); display.display(); }
void rapid() { if (rap == false) { digitalWrite(12, HIGH); output = 255; do { temp = analogRead(0); Serial.print("rapid"); Serial.println(temp); display.clearDisplay(); updatebar(); updatetext(); display.display(); } while (temp - settemp > 1); digitalWrite(12, LOW); rap = true; } }
void pid() {
  temp = analogRead(0);
  temp2 = temp; delay(50); temp = analogRead(0); temp = (temp + temp2) / 2; // усреднение
  zeroscale(); // проверка наличия жала
  temp = temp + outputoffset;
  output = temp - settemp; output = output + powermultiply; output = output * 4;
  if (output < 0) output = 0; if (output > 255) output = 255;
  counter++;
  if (counter > 10) { counter = 0; if (temp > settemp + 3) powermultiply++; if (temp < settemp - 3 && powermultiply > 0) powermultiply--; }
  Serial.print(powermultiply); Serial.print(", "); Serial.print(temp); Serial.print(", "); Serial.println(output);
  analogWrite(12, output);
}
void updatebar() { mappedpower = map(output, 0, 255, 0, 127) - 10; display.fillRect(0, 0, mappedpower, 8, WHITE); display.fillRoundRect(mappedpower - 5, 0, 20, 8, 3, WHITE); }
void updatetext() { display.setCursor(0, 9); display.setTextColor(WHITE); display.setTextSize(1); display.print("Set Temp: "); display.print(settemp); display.setCursor(0, 20); display.print("Temp: "); display.print(temp); }
void zeroscale() {
  if (output < 200) {
    display.clearDisplay(); display.setCursor(0, 9); display.setTextColor(WHITE); display.setTextSize(1);
    display.print("No soldering iron, or defective"); display.setCursor(0, 15); display.print("iron.");
    display.setCursor(0, 20); display.print("Testing in 5 seconds."); display.display(); delay(5000);
    if (output < 200) outputoffset = temp;
    display.clearDisplay(); display.setCursor(0, 9); display.print("Output offset set."); display.setCursor(0, 20); display.print("Please plug in the iron."); display.display();
    do { scaleread = analogRead(0); } while (scaleread < 200);
  }
}

Code Updated 10/21/2019 (C/C++) — исправленная версия

// ... те же инклуды и переменные ...
void zeroscale() {
  if (temp < 200) {
    display.clearDisplay(); display.setCursor(0, 20); display.setTextColor(WHITE); display.setTextSize(1);
    display.print("No soldering iron."); display.display(); delay(10000);
    display.setCursor(0, 0); display.print("Testing in 5 seconds."); display.display(); delay(5000);
    if (temp < 200) outputoffset = temp;
    display.clearDisplay(); display.setCursor(0, 20); display.print("Output offset set."); display.setCursor(0, 0); display.print("Connect the iron."); display.display();
    do { scaleread = analogRead(0); } while (scaleread < 200);
  }
}
// остальные функции без изменений

Схемы

Используйте эту схему для сборки контроллера:

DIY-контроллер паяльника 862D+ — точность и надёжность

Производственный процесс

  1. Многопозиционная система датчиков температуры для интеграции в умный дом
  2. Создание рулетки на 37 светодиодов с Arduino Nano
  3. MotionSense: умная система обнаружения проникновения на Arduino и ESP8266
  4. Пожарная безопасность 3D-принтера: умная система обнаружения дыма
  5. MIDI-интеграция для цифровых органов: превращение старой консоли в MIDI-контроллер на Arduino Mega
  6. Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
  7. Продвинутый дистанционно управляемый манипулятор-робот для точной работы
  8. Продвинутая лаборатория микроконтроллеров: ESP32, Arduino, PIC и сенсорные модули
  9. DIY POV-сфера: LED-световизуализация на Arduino Mega
  10. CoroFence: термический детектор на GridEye + PIR с IoT