산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

862D+용 DIY 납땜 인두 제어

구성품 및 소모품

Arduino Nano R3
× 1
일반 플라이백 다이오드.
× 1
irf540n n-채널 MOSFET
× 1
5v 선형 조정기
× 1
저항 330옴
× 1
핀 헤더(남성)
× 2
.96인치 올레드
× 1

필요한 도구 및 기계

납땜 인두(일반)
8mm 드릴 비트/w 드릴

이 프로젝트 정보

업데이트(2019년 10월 21일):코드에 대한 주요 업데이트입니다. 아래도 읽어보세요. 조금 바뀌었습니다.

내 862D+ 납땜 인두가 부러져서 새 인두를 사는 대신 두 번째 인두를 가져와 수리했습니다. 가장 어려운 점은 온라인에는 다른 곳에서 솔루션이 없다는 것입니다. 철을 교체한 후에도 여전히 S-E 또는 센서 오류라고 표시되어 PCB가 파손되었습니다.

그래서 나는 내 자신의 컨트롤러 회로를 만들고 내부에 채우기로 결정했습니다. 두 번째 변압기가 필요했지만 값이 싸서 내부에 충분한 공간이 있었습니다.

보기에는 좋지 않을 수 있지만 매력처럼 작동합니다. 보너스로 인두 전원 버튼을 제거하고 5v와 arduino 사이에 추가했습니다.

빌드 팁:

모든 부품을 지금 구입할 수 있습니다. LCSC는 벌크 전자 사이트입니다. 미국은 배송비가 비싸지만 구성품은 터무니 없이 저렴합니다.

Amazon의 EX MOSFET은 6달러이지만 LCSC의 MOSFET은 32센트입니다. 그러나 저항과 같은 것은 대량으로 구매해야 합니다. 그래도 저항 50개는 말 그대로 0.84센트입니다.

접지된 알루미늄 호일 또는 다른 것으로 긴 데이터 와이어를 보호해야 합니다. 예를 들어 12c 스크린 와이어.

코드에서:

1023 가장 차가운 0 용암. 설정 온도를 원하는 대로 변경하십시오. 일반적으로 약 600개 정도입니다.

납땜 인두 컨트롤러는 인두가 연결되었는지 또는 파손되었는지 감지할 수 있습니다. 납땜 인두가 분리되면 arduino는 아날로그 입력을 0으로 만듭니다. 납땜 인두가 제대로 가열되는 데 사용되었지만 지금은 가열되지 않는 경우:인두를 분리하고 인두를 꽂으라는 메시지가 표시될 때까지 기다리면 계속 진행됩니다. (이것은 저에게 문제였습니다)

이제 다리미의 기본 사항을 알았습니다. 이것은 고품질 납땜 인두를 구입하는 것보다 저렴한 대안이 될 수 있습니다. 더 높은 품질의 다리미가 있지만 이것은 매우 저렴하고 DIY입니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 제어 코드
  • 강령
  • 2019년 10월 21일 코드 업데이트
  • 제어 코드C/C++
    이것을 arduino에 붙여넣고 업로드하십시오. 이것은 제공된 회로에서만 작동합니다.
    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); 핀모드(6, 출력); digitalWrite(6, LOW);} 무효 루프() { 직렬 이벤트(); if (stringComplete) { Serial.println(inputString); t =inputString.toInt(); //settemp =t //설정 온도를 직렬 입력으로 설정합니다. inputString =""; 문자열 완성 =거짓; } 빠른(); pid();}void Rapid() { //처음에 빠르게 가열하여 납땜 인두를 제어합니다. if (랩 ==false) { digitalWrite(6, HIGH); do { 임시 =analogRead(0); Serial.print("빠른"); Serial.println(임시); } 동안 (temp - settemp>
     10); 디지털 쓰기(6, 낮음); 랩 =사실; }}void pid() { //저속 유효 전력 가열로 납땜을 제어합니다. 온도 =analogRead(0); 출력 =온도 - 설정 온도; if (출력 <0) { 출력 =0; } if (출력> 255) { 출력 =255; } Serial.print("피드"); Serial.print(임시); Serial.print(", "); Serial.println(출력); analogWrite(6, output);}void serialEvent() { //settemp 업데이트에 사용할 수 있는 직렬 통신 while (Serial.available()) { char inChar =(char)Serial.read(); 입력 문자열 +=inChar; if (inChar =='\n') { stringComplete =true; } }}
    코드C/C++
    편집기에 붙여넣고 업로드합니다. 설계된 회로도에서만 작동합니다.
    #include #include #include #define OLED_ADDR 0x3CAdafruit_SSD1306 display(-1);int settemp =590; //수동 설정 변수int output =0;int temp =0;String inputString ="";boolean rap =false;boolean stringComplete =false;int t =0;int mappingpower =0;byte powermultiply =0;long counter =0; int temp2 =0, 바이트 outputoffset =0, 바이트 scaleread =0, 무효 setup() { Serial.begin(9600); 핀모드(12, 출력); 디지털 쓰기(12, 낮음); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); 디스플레이.디스플레이(); Rapid();} 무효 루프() { pid(); display.clearDisplay(); 업데이트바(); 업데이트 텍스트(); display.display();}void Rapid() { //처음에 빠르게 가열하여 납땜 인두를 제어합니다. if (랩 ==false) { digitalWrite(12, HIGH); 출력 =255; do { 임시 =analogRead(0); Serial.print("빠른"); Serial.println(임시); display.clearDisplay(); 업데이트바(); 업데이트 텍스트(); 디스플레이.디스플레이(); } 동안 (temp - settemp>
     1); 디지털 쓰기(12, 낮음); 랩 =사실; }}void pid() { //저속 유효 전력 가열로 납땜을 제어합니다. 온도 =analogRead(0); //온도 평균기 temp2 =temp; 지연(50); 온도 =analogRead(0); 온도 =온도 + temp2; 온도 =온도 / 2; 제로 스케일; // 납땜 인두 검사기를 활성화하지 않음 temp =temp + outputoffset; 출력 =온도 - 설정 온도; 출력 =출력 + 전력 곱하기; 출력 =출력 * 4; if (출력 <0) { 출력 =0; } if (출력> 255) { 출력 =255; } 카운터 =카운터 + 1; if (카운터> 10) { 카운터 =0; if (temp>
     settemp + 3) { powermultiply =powermultiply + 1; } if (temp  0) { powermultiply =powermultiply - 1; } } Serial.print(전력곱하기); Serial.print(", "); Serial.print(임시); Serial.print(", "); Serial.println(출력); analogWrite(12, output);}void updatebar() { //OLED 디스플레이의 Powerbar 업데이트 mappingpower =map(output, 0, 255, 0, 127) - 10; display.fillRect(0, 0, 매핑된 전원, 8, 흰색); display.fillRoundRect(mappedpower - 5, 0, 20, 8, 3, WHITE);}void updatetext() {//Oled 디스플레이의 텍스트 업데이트 display.setCursor(0, 9); display.setTextColor(흰색); display.setTextSize(1); display.print("온도 설정:"); display.print(settemp); display.setCursor(0, 20); display.print("온도:"); display.print(temp);}void zeroscale() { //납땜 인두가 뽑혀 있으면 입력 핀 값을 조정하여 0으로 만듭니다. if (output <200) { display.clearDisplay(); display.setCursor(0, 9); display.setTextColor(흰색); display.setTextSize(1); display.print("납땜 인두가 없거나 결함이 있습니다."); display.setCursor(0, 15); display.print("철."); display.setCursor(0, 20); display.print("5초 후에 테스트합니다."); 디스플레이.디스플레이(); 지연(5000); if (출력 <200) { outputoffset =온도; } 디스플레이.clearDisplay(); display.setCursor(0, 9); display.setTextColor(흰색); display.setTextSize(1); display.print("출력 오프셋 세트입니다."); display.setCursor(0, 20); display.print("다리미를 꽂아주세요."); 디스플레이.디스플레이(); do { scaleread =analogRead(0); } 동안 (스케일 읽기 <200); }}
    2019년 10월 21일 코드 업데이트C/C++
    IDE에 붙여넣고 업로드합니다. shematic에서만 작동합니다.
    #include #include #include #define OLED_ADDR 0x3CAdafruit_SSD1306 display(-1);int settemp =590; //수동 설정 변수int output =0;int temp =0;String inputString ="";boolean rap =false;boolean stringComplete =false;int t =0;int mappingpower =0;byte powermultiply =0;long counter =0; int temp2 =0, 바이트 outputoffset =0, 바이트 scaleread =0, 무효 setup() { Serial.begin(9600); 핀모드(12, 출력); 디지털 쓰기(12, 낮음); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); 디스플레이.디스플레이(); Rapid();} 무효 루프() { pid(); display.clearDisplay(); 업데이트바(); 업데이트 텍스트(); display.display();}void Rapid() { //처음에 빠르게 가열하여 납땜 인두를 제어합니다. if (랩 ==false) { digitalWrite(12, HIGH); 출력 =255; do { 임시 =analogRead(0); Serial.print("빠른"); Serial.println(임시); display.clearDisplay(); 업데이트바(); 업데이트 텍스트(); 디스플레이.디스플레이(); } 동안 (temp - settemp>
     1); 디지털 쓰기(12, 낮음); 랩 =사실; }}void pid() { //저속 유효 전력 가열로 납땜을 제어합니다. 온도 =analogRead(0); //온도 평균기 temp2 =temp; 지연(50); 온도 =analogRead(0); 온도 =온도 + temp2; 온도 =온도 / 2; 제로 스케일(); // 납땜 인두 검사기를 활성화하지 않음 temp =temp + outputoffset; 출력 =온도 - 설정 온도; 출력 =출력 + 전력 곱하기; 출력 =출력 * 4; if (출력 <0) { 출력 =0; } if (출력> 255) { 출력 =255; } 카운터 =카운터 + 1; if (카운터> 10) { 카운터 =0; if (temp>
     settemp + 3) { powermultiply =powermultiply + 1; } if (temp  0) { powermultiply =powermultiply - 1; } } Serial.print(전력곱하기); Serial.print(", "); Serial.print(임시); Serial.print(", "); Serial.println(출력); analogWrite(12, output);}void updatebar() { //OLED 디스플레이의 Powerbar 업데이트 mappingpower =map(output, 0, 255, 0, 127) - 10; display.fillRect(0, 0, 매핑된 전원, 8, 흰색); display.fillRoundRect(mappedpower - 5, 0, 20, 8, 3, WHITE);}void updatetext() {//Oled 디스플레이의 텍스트 업데이트 display.setCursor(0, 9); display.setTextColor(흰색); display.setTextSize(1); display.print("온도 설정:"); display.print(settemp); display.setCursor(0, 20); display.print("온도:"); display.print(temp);}void zeroscale() { //납땜 인두의 플러그가 뽑혀 있으면 입력 핀 값을 조정하여 0으로 만듭니다. if (temp <200) { display.clearDisplay(); display.setCursor(0, 20); display.setTextColor(흰색); display.setTextSize(1); display.print("납땜이 없습니다."); 디스플레이.디스플레이(); 지연(10000); display.setCursor(0, 0); display.print("5초 후에 테스트합니다."); 디스플레이.디스플레이(); 지연(5000); if (temp <200) { outputoffset =temp; } 디스플레이.clearDisplay(); display.setCursor(0, 20); display.setTextColor(흰색); display.setTextSize(1); display.print("출력 오프셋 세트입니다."); display.setCursor(0, 0); display.print("다리미를 연결하세요."); 디스플레이.디스플레이(); do { scaleread =analogRead(0); } 동안 (스케일 읽기 <200); }}

    회로도

    이 회로도를 사용하여 철에 대한 회로를 만듭니다.

    제조공정

    1. 다중 온도 센서
    2. DIY 37 LED 룰렛 게임
    3. 모션센스
    4. 3D 프린터 화재 안전
    5. 디지털 오르간용 MIDI
    6. Arduino 반발 전자기 부상
    7. 원격 제어 그리퍼 봇
    8. 마이크로컨트롤러 연구실
    9. 시력 지속성(POV) 글로브
    10. CoroFence - 열 감지기🖖