電気オーブン「ハリコフ」の第二の人生

みなさんこんにちは。



私は、家電製品の運命がどれほど短く残酷であるかについて、長く叙情的な紹介を行いません。 昨日の進歩の最後の成果として認識されていたものは、今日はすでに平均的な家庭のなじみのある部分であり、明日は単に仕事のための全能力、またはせいぜい部品供与者としての部品のために解体されたにもかかわらず、埋め立て地に捨てられます。 「ボタンはあるが、センサーが欲しい」、「デザインはソビエト」、「このチップはない」。 そして、大丈夫、ある種の中国の電子レンジまたはティーポットについて話している場合、それらは短いライフサイクルと精神性のプラスチック不足のために本当に慣れません。



しかし、それはあなたの家族の何世代にもわたって記憶されてきたものに関してはどうするべきか、そして幼少期はあなたにとって家の快適さ、祖母のグッズ、そして全体の「ランプ」の具現化でした。 このことに関する記憶が多すぎるため、手を放すことは起きません。一般的にこれは冒blです。 しかし、完全に陳腐化し、率直に表現できない外観のため、使用することはまったく不可能です。



どうする



そう! 復活する。



ヒロインに会おう。 電気オーブン「ハリコフ」。



画像



初めに、主題についての簡単な知識:





そしてそれだけです。 タイマー、温度または電源コントローラー、温度計はありません。 ワイファイも、どこでも正直に検索されていません。 まあ、いや、それだけです。 何もありません。 スイッチがなくても、発熱体とソケットへのプラグを備えたケースのみ。 好きなように焼きます。



以前の学士時代にガレージの腸でこの希少性を掘り起こし、懐かしい涙を吹き飛ばして何かを調理しようとすると、この「ヴィンテージジェネレーター」は最初のようにユーザーフレンドリーであることがわかりましたカール・フォン・ドレスによる1817年の木製自転車 博物館も見ることができ、ヴィンテージにも驚かされますが、最初の条件付き旅行の後、シーザーは帝王切開であり、博物館では珍しい場所であることがわかります。腎臓を打ちたくないので、私はまだ現代の自転車に乗っています。



画像



ここにあります。 オンにすると、このストーブデーモンはすぐに400度でローストされ、有機物は加熱すると石炭に変わることが保証されていることを確信させました。 そして、トライアルピザも例外ではありませんでした。 このストーブの上にパイを作るためのレシピが、高炉の技術的な動作モードの説明に似ていることは、家族のアーカイブで不思議ではありません。 10分間加熱してから、天板にソースを入れ、ドアを半開きにしてX分間焼いてから、ドアを完全に開いた状態で、天板を定期的に交換することをお勧めします。 1980年には、ソビエトのエンジニアは、ソビエトの女性に、オーブンのドアを開ける以外の方法で温度を調整する方法を提供することができませんでした。 ユラ・ガガーリンは19年間軌道を回っていて、私たちの核爆弾は最も核でしたが、ソビエトの主婦はハリコフのオーブンで地球を暖め続けました。



わかった 状況が明確になり、目標が設定され、ツールが研ぎ澄まされました。 技術的な部分に移りましょう。






ソフトウェアコンポーネント



「私はすべての人に見え、見えない天と地の創造者、全能の父を信じています。 私の神の名前はArduinoです。 アーメン。」



Arduinova教会の熱心な教区民である私は、この慈善プラットフォームで私の子供を自然に彫ることに決めました。 シンプルで安価で、足にフィットするからです。 しかし、電子スタッフィングについては少し後で、今はソフトウェアスタッフィングに注目します。 スケッチ、つまり。



次の課題に直面しています。 次の機能をオーブンコントローラーに実装する必要があります。





ArduinoForumsで賢者の巻物を描いた後、次のgovnokodは神の助けを借りて作成されました。 批判は受け入れられません。 批判する人は誰もパイを取得しません。



スケッチ
/* d6 -    () d7 -   ()     () d8 -  d9 - ce () () d10 - rst () () d11 - dc () () d12 - din  () d13 - clk  () gnd - bl  ( gnd) a0 -   () a1 -   () a2 -   () a4 -  .  10   4  +5.   -  4 vcc -  () gnd -  () */ #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> #include <EEPROM2.h> #include <SPI.h> volatile byte seqA = 0; volatile byte seqB = 0; volatile byte cnt1 = 0; volatile byte cnt2 = 0; volatile int Temp = 150; //    volatile int Time = 30; //     boolean heat = false; boolean work = false; boolean first_heat; volatile boolean right = false; volatile boolean left = false; volatile boolean button = false; long previousMillis = 0; int temp_count; long time_ost; long time_millis; byte menuitem = 1; //     1 byte page = 1; //   1 unsigned long heatMillis = 0; #define RT0 10000 //  #define B 3950 // K #define VCC 5 //-  #define R 10000 //R=10  float RT, VR, ln, TX, T0, VRT, temp_izmer, temp_itog; Adafruit_PCD8544 display = Adafruit_PCD8544(13, 12, 11, 9, 10); //************************************************************************************************** void setup() {//************************************************************************************* //*************************************************************************************************** Serial.begin(115200); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A4, INPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(A0, HIGH); // digitalWrite(A1, HIGH); // digitalWrite(A2, HIGH); //  digitalWrite(6, LOW); //   digitalWrite(7, HIGH); //  digitalWrite(8, LOW); // T0 = 25 + 273.15; // T0  ,      PCICR = 0b00000010; // 1. PCIE1: Pin Change Interrupt Enable 1 PCMSK1 = 0b00000111; // Enable Pin Change Interrupt for A0, A1, A2 // Initialize LCD display.setRotation(2); // Set LDC orientation display.begin(60); // Set LCD contrast display.clearDisplay(); // Clear display display.display(); // Apply changes Temp = EEPROM_read_byte(0); Time = EEPROM_read_byte(3); sei(); } //************************************************************************************************ void loop() {//********************************************************************************** //************************************************************************************************ //   unsigned long currentMillis = millis(); //   ***************************************************************************** if (page==1) { display.setTextSize(1); display.clearDisplay(); display.setTextColor(BLACK, WHITE); display.drawFastHLine(0,0,83,BLACK); display.drawFastHLine(0,47,83,BLACK); display.drawFastVLine(0,0,47,BLACK); display.drawFastVLine(1,0,47,BLACK); display.drawFastVLine(2,0,47,BLACK); display.drawFastVLine(3,0,47,BLACK); display.drawFastVLine(4,0,47,BLACK); display.drawFastVLine(83,0,83,BLACK); display.setCursor(5, 2);//   if (menuitem==1) { display.setTextColor(WHITE, BLACK); //     display.drawFastHLine(0,1,83,BLACK); //************************* } else {display.setTextColor(BLACK, WHITE); //        } display.print(" TEMP "); display.setCursor(5, 14); if (menuitem==2) { display.setTextColor(WHITE, BLACK); display.drawFastHLine(0,13,83,BLACK); } else {display.setTextColor(BLACK, WHITE);} display.print(" TIME "); if (menuitem == 3) { display.setTextColor(WHITE, BLACK); display.drawFastHLine(0,25,83,BLACK); } else { display.setTextColor(BLACK, WHITE); } display.setCursor(5, 26); display.print(" START: "); if (work) { display.print("ON "); } else { display.print("OF "); } display.setCursor(5, 38); if (menuitem==4) { display.setTextColor(WHITE, BLACK); display.drawFastHLine(0,37,83,BLACK); } else {display.setTextColor(BLACK, WHITE);} display.print(" INFO "); if (left) { left = false; menuitem--; if (menuitem==0) { menuitem=1; } } if (right) { right = false; menuitem++; if (menuitem==5) { menuitem = 4; } } display.display(); if (button) { button = false; digitalWrite(8, HIGH); delay (50); //        digitalWrite(8, LOW); if (page == 1 && menuitem==1) { page=3; } else if (page == 1 && menuitem==2) { page=4; } else if (page == 1 && menuitem==4) { page=5; } //  ******************************************************************************** else if (menuitem == 3 && page == 1) { if (work) { work = false; digitalWrite(6, LOW); //    } else { heatMillis = currentMillis; work = true; first_heat = true; digitalWrite(6, HIGH); //    } } } } //   ()*************************************************** if (page==3) { display.setTextSize(1); display.clearDisplay(); display.drawFastHLine(0,0,83,BLACK); display.drawFastHLine(0,1,83,BLACK); display.drawFastHLine(0,47,83,BLACK); display.drawFastVLine(0,0,47,BLACK); display.drawFastVLine(83,0,83,BLACK); display.drawFastVLine(82,0,10,BLACK); display.drawFastVLine(81,0,10,BLACK); display.drawFastVLine(80,0,10,BLACK); display.drawFastVLine(79,0,10,BLACK); display.setTextColor(WHITE, BLACK); display.setCursor(1, 2); display.print(" Temp "); display.drawFastHLine(0,10,83,BLACK); display.setTextColor(BLACK, WHITE); display.setCursor(26, 12); display.print("Degree"); display.setTextSize(3); if (Temp >=100) { display.setCursor(16, 23); } else { display.setCursor(27, 23); } display.print(Temp); if (left) { left = false; Temp--; } if (Temp==49) { Temp=50; } if (right) { right = false; Temp++; } if (Temp==251) { Temp=250; } if (button) { digitalWrite(8, HIGH); delay (50); digitalWrite(8, LOW); button = false; page=1; EEPROM_write_byte(0, Temp); } display.display(); } //   ()*************************************************************************** else if (page==4) { display.setTextSize(1); display.clearDisplay(); display.drawFastHLine(0,0,83,BLACK); display.drawFastHLine(0,1,83,BLACK); display.drawFastHLine(0,47,83,BLACK); display.drawFastVLine(0,0,47,BLACK); display.drawFastVLine(83,0,83,BLACK); display.drawFastVLine(82,0,10,BLACK); display.drawFastVLine(81,0,10,BLACK); display.drawFastVLine(80,0,10,BLACK); display.drawFastVLine(79,0,10,BLACK); display.setTextColor(WHITE, BLACK); display.setCursor(1, 2); display.print(" Time "); display.drawFastHLine(0,10,83,BLACK); display.setTextColor(BLACK, WHITE); display.setCursor(22, 12); display.print("Minutes"); display.setTextSize(3); if (Time >=10) { display.setCursor(27, 23); } else { display.setCursor(38, 23); } display.print(Time); if (left) { left = false; Time--; } if (Time==0) { Time=1; } if (right) { right = false; Time++; } if (Time==61) { Time=60; } if (button) { digitalWrite(8, HIGH); delay (50); digitalWrite(8, LOW); button = false; page=1; EEPROM_write_byte(3, Time); } display.display(); } //   ( )*********************************************************** else if (page==5) { display.clearDisplay(); display.setTextColor(BLACK, WHITE); display.setTextSize(1); display.drawFastHLine(0,0,83,BLACK); display.drawFastHLine(0,47,83,BLACK); display.drawFastVLine(0,0,47,BLACK); display.drawFastVLine(83,0,83,BLACK); display.setCursor(3, 5); display.print("TEMP_UST:"); display.setCursor(64, 5); display.print(Temp); display.setCursor(3, 20); display.print("TEMP_TEK:"); display.setCursor(64, 20); display.print(temp_itog, 0); display.setCursor(3, 35); display.print("TIME_OST:"); display.setCursor(64, 35); display.print(time_ost); if (button) { digitalWrite(8, HIGH); delay (50); digitalWrite(8, LOW); button = false; page=1; } display.setTextSize(2); display.display(); } //  ********************************************* if (work) { time_millis = Time * 1000; time_millis = time_millis * 60; time_ost = ((time_millis) - (currentMillis - heatMillis)); time_ost = time_ost/1000; time_ost = time_ost/60; } else { time_ost = 0; } //  ******************************************* if (((currentMillis - heatMillis) > time_millis) && (work)) { work = false; digitalWrite(6, LOW); //    digitalWrite(8, HIGH);//   delay (1000); digitalWrite(8, LOW); delay (500); digitalWrite(8, HIGH); delay (1000); digitalWrite(8, LOW); delay (500); digitalWrite(8, HIGH); delay (1000); digitalWrite(8, LOW); } // ************************************************* if (currentMillis - previousMillis > 500) { previousMillis = currentMillis; VRT = analogRead(A4); //   VRT VRT = (5.00 / 1023.00) * VRT; //   VR = VCC - VRT; RT = VRT / (VR / R); // RT ln = log(RT / RT0); TX = (1 / ((ln / B) + (1 / T0))); //   TX = TX - 273.15; //   temp_count++; temp_izmer = temp_izmer + TX; } if (temp_count == 10) { temp_itog = temp_izmer/10; temp_count = 0; temp_izmer = 0; } //     ********************** if (temp_itog < (Temp - 1)) { //  heat = true; } if (temp_itog > (Temp + 1)) { heat = false; if (first_heat) { //        first_heat = false; digitalWrite(8, HIGH);//   delay (200); digitalWrite(8, LOW); delay (300); digitalWrite(8, HIGH); delay (200); digitalWrite(8, LOW); delay (300); digitalWrite(8, HIGH); delay (200); digitalWrite(8, LOW); } } // ***************************************************** if ((work) && (heat)) { digitalWrite(7, LOW); //   digitalWrite(5, HIGH); //    } else { digitalWrite(7, HIGH); //   digitalWrite(5, LOW); //    } //     ******************************************** if ((temp_itog < 0) || (temp_itog > 250)) { digitalWrite(8, HIGH);//   delay (500); digitalWrite(8, LOW); delay (500); } } //    ****************************************************************** ISR (PCINT1_vect) { // If interrupt is triggered by the button if (!digitalRead(A0)) { button = true; } else { // Else if interrupt is triggered by encoder signals boolean A_val = digitalRead(A1); // Read A and B signals boolean B_val = digitalRead(A2); // Record the A and B signals in seperate sequences seqA <<= 1; seqA |= A_val; seqB <<= 1; seqB |= B_val; // Mask the MSB four bits seqA &= 0b00001111; seqB &= 0b00001111; // Compare the recorded sequence with the expected sequence if (seqA == 0b00001001 && seqB == 0b00000011) { cnt1++; left = true; } if (seqA == 0b00000011 && seqB == 0b00001001) { cnt2++; right = true; } } }
      
      







基本的にNokia 5110スクリーン、エンコーダー、サーミスター、リレーを操作する最も基本的な例から作られています。 これらのコンポーネントを支持する選択は、魅力的な物語の次の部分で正当化されます。



メニューは、「TEMP」、「TIME」、「START」、「INFO」の4つの項目で構成されています。 何に責任があるのか​​、写真から明らかだと思います。 必要に応じて、プログラムを停止し、時間または温度を追加または削減して、再度続行できます。



画像



当然、設定は不揮発性メモリに保存されます。



また、オーブンの過熱の制御と温度センサーの破損または損傷の制御が追加されました。 温度が250度を超えた場合(リレーがスティックしたり、障害が発生していないもの)、または温度が0を下回った場合(センサーが開いている場合、センサーは開いた状態で270度を示します)、アラームがトリガーされます。






ハードウェアコンポーネント



上記の機能を実装するには、次のコンポーネントが必要です。





画像



大気を大きくするには、画面を仕上げる必要があります。 デフォルトでは、Nokia 5110の画面には白色または明るい青色のバックライトLEDが付いています。 白色LEDは計画された外部スタイルに対応せず、青色vyviglazny LEDはユーザーの間でてんかんの攻撃を誘発するようです。一般的に、反キリストの迅速な到来を促進するために設計されたサタンの創造があります。 また、Weき火でそれらを飲みます。 ペイター・ノスター。 アーメン



次に、スクリーンの金属ベゼルとその下のLCDスクリーンを取り外した後、古い学校の白熱電球をシミュレートし、標準の電球の代わりにはんだ付けするように設計されたオレンジ色のsmd LEDを使用します。 今ではすべてが風水です。



取り付け耳付きの適切なプラスチックボックスを見つけます。 その中に、電源、アルドゥインカ、キーキーカー、リライシュカを配置します。 主電源に1組のワイヤ、サーミスタに1組のワイヤ、スクリーンにフロントパネルに配線ハーネス、ディフューザ付きエンコーダおよびステータスLEDを出力します。 コントロールユニットの場所はオーブンの腹の上です。



画像






鉄成分



古い技術に対する私の愛を込めて、私はこのオーブンが1つの目的でなければ、このオーブンを復元しようとはしなかったでしょう。私はプロヴァンススタイルのキッチンを持ち、このオーブンの丸みを帯びたビンテージケースがインテリアにぴったり収まります。 したがって、だまされることにしました。



ストーブの内部空洞の後壁に到達するように4つの固定耳を曲げて、背面パネルを取り外します。 「グラスウール」と呼ばれる大量破壊兵器の層を取り出します。 内腔の後壁の中央に、サーミスタロッドのサイズに穴を開け、サーミスタを挿入し、ナットを締め、体の下のワイヤーを取り外し、グラスウールの残りを取り出し、代わりに玄武岩のコットンウールを詰めて回収します。



次に、コントロールパネル、装飾用のペンとステンシルの要素を準備します。 プラスチックなし、ただ金属。 AutoCADでの描画方法がわからないため、Photoshopで必要な詳細を描画し、何らかのクラウドサービスを介してdwg形式に変換します。 はい、私は変態です、私は知っています、私はそれが好きです。 レーザー切断用の図面を提供します。



画像



ダッシュボードを計画された場所に溶接します。 欠けている三角形を側面で溶接し、パテで溶接スポットをきれいにし、ソリッドパーツの外観を最大限にします。 ダッシュボードには4つのスロットがあります。スクリーン用の場所、ひねりの下の「美しさ」のためのひねりの下にLEDの穴があるエンコーダーのための場所、および操作および加熱インジケータ用のカーリースロットです。 パネルは厚さ2 mmのスチールでできていますが、これでは不十分です。 「重量は信頼できます。」 ボリス・レイザー。



オーブンの由緒ある時代と長年の非人道的な状態は、その体に痕跡を残さずにはいられませんでした。 塗料の傷、小さなへこみ、腐食の巣がありました。 グラインダーのブラシをつけて、可能な限りきれいにします。 車のパテによるパテのへこみと欠陥。 もう一度掃除します。 脱脂。



画像



さらに塗装について。 私の地域では、ペンタフタル酸エナメルを自分の選択した色に着色する機会を見つけられなかったため、利用可能な既製の色から選択しました。 アイボリーはケースのメインカラーに、ピスタチオはケースの装飾の要素に選ばれました。



塗り、刈り、宣誓、汚れの除去、塗り直し、刈り直し、そのようなことで二度とバカにしないことを誓いますが、普通の男性のように平和的に叩き、落ち着いて、もう一度塗り、満足します。 ペンキが乾くまで1週間待ちます。



画像



ストーブが乾燥している間に、ドアの施錠用の留め具で調理し、木製のハンドルのスケッチを描いて、ターナーに渡します。 ペン自体をペイントし、乾燥させます。 エンコーダーノブとスクリーン本体の金属板をペイントします。



画像



画像



ケースが完全に乾いた後、ステンシルを塗り、ピスタチオ塗料で塗ります。



次に、すべてをヒープにまとめて、オーブンの側面が刺激的に空であり、他の何かに固執する以外に方法がないことを理解します。 しかし、金属製のステンシルを使用したペイントは、ステンシルの下にペイントが漏れ、画像を調整するために溶剤でブラシを塗る必要があるため、非常に不便です。 また、広告代理店の「マネージャー」との理解不足のため、スカンシルを注文することはできませんでした。 したがって、私は既成の、サイズが適切なものをインターネットで見つけました。



頑張って ペイントします。 感心します。



画像



次に、すべてをまとめます-スクリーン、エンコーダー、エンコーダーノブを取り付けます。 割れたプレキシガラスから、動作モードのインジケータ用のディフューザーを作成し、ダッシュボードの下部から接着します。 モジュールのワイヤを伸ばしてはんだ付けし、電源ボタン付きのネットワーク電源コネクタを取り付けます。 木製のハンドル用のホルダーをドリルで取り付けます。 回転中にハンドルがドアの表面を傷つけないように、接着剤が開閉ポインタの内側に感じました。



次に、ホステスに電話して、彼女にこのクリエイティブを渡し、私がどれほど賢くて美しいかを聞いてください。パイを待っている間に、さらに行を追加し、なぜそうしないのかを説明します。



画像



画像



画像



1.温度維持アルゴリズムがPIDではなく、なぜ馬鹿げているのですか?



単に必要がないからです。 標準的な作業プログラムである30〜40分では、ストーブの温度は目標ポイントを数回通過します。 ストーブは小さく、十分に断熱されており、ゆっくりと冷却されます。 PIDアルゴリズムはどこにも向き直りません。 最初の一連の温度でわずかな温度慣性が発生しますが、重なりは約20度であり、これはベーキングにはまったく重要ではなく、パンを置くためにこの瞬間にドアを開くことで簡単に水平になります。 このため、動作温度に到達するための信号が鳴ります。 次の反復は、通常、±2度程度の範囲で発生します。



2.なぜトライアックではなくリレーで、なぜPWMではないのですか?



すべて同じです。 私はシミスタが大好きで、調理する方法は知っていますが、少なくとも30分間の操作でリレーが4回クリックするデバイスに押し込むにはクラックが必要だとは思わないでしょう。 また、800ワットの電力、つまり3アンペアの電流では、中国のリレーでも十分な安全マージンがあります。 しかし、PWMはここでは関係ありません。デバイスのそのレベルではありません。 はい、そしてリレーは誠実でランプであり、トライアックは慢と誇りです。 そして、ホステスは幸せ以上のものであり、これは戦略的な目標でした。 要するに、それだけです。



3.他に何が計画されていますか?



ステンレス製天板。 オリジナルにはブラックベリーからの天板があり、熱がすでにそうであれば、天板は対応するはずです。 後で描いてレーザーに渡します。



画像



シムのために休暇を取らせて、パイをテストしに行きました。 ウクライナからのプライベート。



All Articles