862D +用のDIYはんだごて制御
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
|
このプロジェクトについて
アップデート(2019年10月21日):コードのメジャーアップデート。以下もお読みください。少し変更されました。
862D +のはんだごてが壊れたので、新しいはんだごてを購入する代わりに、2つ目のはんだごてを取り直しました。最も難しい部分は、オンラインの他の場所に解決策がなかったことです。アイロンを交換した後もS-Eまたはセンサーエラーが表示されたため、PCBが破損しました。
<図>そこで、自分でコントローラー回路を作って、中に詰め込むことにしました。 2つ目の変圧器が必要でしたが、安価で、中には十分なスペースがありました。
<図><図>
見た目は良くないかもしれませんが、魅力のように機能します。ボーナスとして、はんだごての電源ボタンを取り外し、5vとarduinoの間に追加しました。
ビルドのヒントについて:
すべての部品を今すぐ購入できます。 LCSCはバルクエレクトロニクスサイトです。アメリカへの輸送は高価ですが、部品は途方もなく安いです。
AmazonのEXMOSFETは$ 6ですが、LCSCのMOSFETは32セントです。ただし、抵抗器などはまとめて購入する必要があります。それでも、50個の抵抗器は文字通り0.84セントです。
接地されたアルミホイルまたは他のもので長いデータワイヤをシールドすることを確認してください。たとえば、12cスクリーンワイヤー。
コード内:
1023最も冷たい0溶岩。 settempを希望に合わせて変更します。通常は約600です。
はんだごてコントローラーは、こてが接続されているか壊れているかを検出できます。はんだごてが切断されている場合、arduinoはアナログ入力をゼロにします。はんだごてが適切に加熱されていたが、現在は加熱されていない場合:はんだごてを外し、こてを差し込むと表示されるまで待ちます。 (これは私にとって問題でした)
今、あなたはあなたの鉄の基本を知っています。これは、高品質のはんだごてを購入する代わりの安価な方法です。より高品質のアイロンがありますが、これは非常に安価でDIYです。
コード
- 制御コード
- コード
- コードは2019年10月21日に更新されました
制御コード C / C ++
これをarduinoに貼り付けてアップロードします。これは、提供された回路でのみ機能しますint output =0; int temp =0; int settemp =630; String inputString =""; //受信データを保持する文字列booleanrap =false; boolean stringComplete =false; //文字列が完全かどうかintt =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(); // settemp =t //設定温度をシリアル入力に設定しますinputString =""; stringComplete =false; } 急速(); 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);出力=temp-settemp; if(output <0){output =0; } if(output> 255){output =255; } Serial.print( "pid"); Serial.print(temp); Serial.print( "、"); Serial.println(出力); analogWrite(6、output);} void serialEvent(){// settempを更新するために使用できるシリアル通信while(Serial.available()){char inChar =(char)Serial.read(); inputString + =inChar; if(inChar =='\ n'){stringComplete =true; }}}
コード C / C ++
エディターに貼り付けてアップロードします。設計された回路図面でのみ機能します。#include#include #include #define OLED_ADDR 0x3CAdafruit_SSD1306 display(-1); int settemp =590; //手動で変数を設定intoutput =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; 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);出力=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; temp =temp / 2;ゼロスケール; //はんだごてチェッカーをアクティブにしないtemp =temp + outputoffset;出力=temp-settemp;出力=出力+ powermultiply;出力=出力* 4; if(output <0){output =0; } if(output> 255){output =255; }カウンター=カウンター+1; if(counter> 10){counter =0; if(temp> settemp + 3){powermultiply =powermultiply + 1; } if(temp 0){powermultiply =powermultiply-1; }} Serial.print(powermultiply); Serial.print( "、"); Serial.print(temp); Serial.print( "、"); Serial.println(出力); analogWrite(12、output);} void updatebar(){// OLEDディスプレイのパワーバーを更新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(){// Oledディスプレイのテキストを更新する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( "はんだごてがない、または欠陥がある"); display.setCursor(0、15); display.print( "iron。"); display.setCursor(0、20); display.print( "5秒でテストしています。"); display.display(); delay(5000); if(output <200){outputoffset =temp; } display.clearDisplay(); display.setCursor(0、9); display.setTextColor(WHITE); display.setTextSize(1); display.print( "出力オフセットセット。"); display.setCursor(0、20); display.print( "アイロンを差し込んでください。"); display.display(); do {scaleread =analogRead(0); } while(scaleread <200); }}
コードは2019年10月21日に更新されました C / C ++
IDEに貼り付けてアップロードします。 shematicでのみ機能します。#include#include #include #define OLED_ADDR 0x3CAdafruit_SSD1306 display(-1); int settemp =590; //手動で変数を設定intoutput =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; 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);出力=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; temp =temp / 2; zeroscale(); //はんだごてチェッカーをアクティブにしないtemp =temp + outputoffset;出力=temp-settemp;出力=出力+ powermultiply;出力=出力* 4; if(output <0){output =0; } if(output> 255){output =255; }カウンター=カウンター+1; if(counter> 10){counter =0; if(temp> settemp + 3){powermultiply =powermultiply + 1; } if(temp 0){powermultiply =powermultiply-1; }} Serial.print(powermultiply); Serial.print( "、"); Serial.print(temp); Serial.print( "、"); Serial.println(出力); analogWrite(12、output);} void updatebar(){// OLEDディスプレイのパワーバーを更新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(){// Oledディスプレイのテキストを更新する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(temp <200){display.clearDisplay(); display.setCursor(0、20); display.setTextColor(WHITE); display.setTextSize(1); display.print( "はんだごてなし。"); display.display(); delay(10000); display.setCursor(0、0); display.print( "5秒でテストしています。"); display.display(); delay(5000); if(temp <200){outputoffset =temp; } display.clearDisplay(); display.setCursor(0、20); display.setTextColor(WHITE); display.setTextSize(1); display.print( "出力オフセットセット。"); display.setCursor(0、0); display.print( "アイロンを接続します。"); display.display(); do {scaleread =analogRead(0); } while(scaleread <200); }}
回路図
この回路図を使用して、鉄の回路を作成します 製造プロセス