お湯の中に横たわっているビール、揚げdump子、イパディク、バイドロコッドを飲むのが一番です。
しかし、この牧歌は恐ろしい生き物に侵されており、彼の名前は「ガイザー」です。
問題の本質:
私たちの家は古く、パイプラインもまたそれぞれ古く、水ライザーの圧力はうんざりしています。
蛇口から水を入れ、スピナーで40度にコラムを調整すると、40度になりますが、長くはなりません。 シャワーをオンにすると、気温は50以上に急上昇します。 また、離陸は曜日によって異なります(週末には、列が変更されていない水温グラフは、ダブステップの視覚化のように見えます)。
理由は、シャワーをオンにすると簡単です シャワーホースの直径はパイプの直径よりも小さいため、同じ火炎でカラム内の熱交換器を通過する水は少なくなります。 したがって、水はより強く加熱されます。 誰もが水処理を行い、一般システムの圧力がさらに低下する週末にも同じ効果が観察されます。この効果は、肉体のあらゆるものから月の満ち欠けや土星の位置まで観察することもできます。
私は非常に長い間復ven計画を立てましたが、私は回路から非常に遠いので、私は決めることができませんでした。
しかし、計算の時間が来て、私は決めました。
行こう©
だから私はかかりました:
-Arduino Uno
-シンプルなサーボ
-ワイヤー、抵抗器、その他の小さなもの
-常にこの非常に小さなものをドラッグする猫
Oasis 20RGコラムがあります
デバイスを作成することになったのは、列に現在の水温が表示されるということです。つまり、読み取り可能なセンサーがあるということです。
写真からわかるように、左のノブツイストが炎の高さの原因であり、温度がそれによって駆動され、それからねじれます。
すべての商品は、ウェブサイトampereka.ruで注文しました。はい、ebayを使用すると、数倍安くなり、費用がかかります。 しかし、復venへの渇望は待つことができませんでした。
そのため、フロントパネルを取り外した後、温水の出口で温度センサーが検出されました
これは普通のサーミスタです。
分圧器をオンにしてデータをアナログ入力に貼り付けることで、簡単な操作とマップ機能により温度に変換されるアナログ値を取得しました。
実際、分圧器に関するジェレミーブルームのビデオチュートリアルを完全に忘れてしまったため、長い間苦しみましたが、すぐにすべてを掴んだ後、問題は小さいままでした。
私は温度を得た、それはサーボを配置し、スタッドのハンドルをねじる機構を思い付くために残っています。
サーボはヘアピンの下にはっきりと配置されています
固定方法を考えて、最初に固定用の穴を開けましたが、コラムの金属は、スレッドがすぐに食べた金属ボルトよりも強かったです。
不可欠な材料が取られました-ナイロンタイ。 しっかりと修正されました。
さらに動揺し、何が私を襲ったのかはわかりませんが、サーボを尖塔に機械的に接続する方法がわかりませんでした。頭の中にロッカーがくるというアイデアは実現しませんでした。 神のQ&Aに促された結果、サーボと同じ長さのロッカーがPCBからカットされ、ヘアピンに接着されました。
ロッドは柔軟なワイヤで作られていました(その後交換されました)。
さらに、カラムをオンにするとプロセス全体がオンになり、カラムをオフにしたときに温度を上げようとする必要がなくなるようにしました。 これを行うには、画面の電源コード(スピーカーがオンになっているときのみ機能します)の電圧を監視します。 もしそうなら、私はプロセスを開始します。
いわゆる 「ウォームアップ」-コントローラーは、カラムの電源を入れてから10秒間待機してから動作を開始します。 熱交換器が加熱する時間があるように作られています。
その結果、コントローラーのアルファ版が誕生しました(悪いビデオをおIびします。
いくつかのテストの後、次のバグに気付きました。
さて、最初に、ロッドの明らかなバグ、彼らはそれぞれ柔らかく、伸びていない、温度の急速な設定を妨げるバックラッシュがあります。
ビンでは、銅線が発見され、簡単な操作で簡単な推力が加えられました。
以下を測定します。
それは判明した:
次のバグは、温度センサーがランダムに20度低く表示されることでしたが、数秒後に正常に戻りました。 長い間、私はこれを捕まえて、最終的に私は問題が何であるかを理解しました。
センサーに3.3VからArduinoに電源を供給しましたが、理由はわかりませんが、これらの同じ3.3がジャンプして、センサーの読み取り値が変化しました。 5Vからセンサーに給電すると、すべてが正常になりました。
結果はベータテストでした:
残念ながら、2つの動画を1つに統合する方法はわかりません。
Arduinkiログ:
新しいロッドのあるServa:
原則として、これですべてです。以降、プログラムのリストを示します。記事を書いた後、プログラムは、温度を最も速く均等化するために少し長くなりました。
リスト:
#include <Servo.h> int termalPin=A5; int enablePin=8; int ledPin=7; int temp; int lastTemp=0; boolean enabled=false; static int minAngle=5; static int maxAngle=100; static int needTemp=40; Servo myservo; void setup() { // Serial.begin(9600); // pinMode(enablePin,INPUT); pinMode(ledPin,OUTPUT); } void loop() { // temp = map(analogRead(termalPin),800,635,31,51); if(digitalRead(enablePin)==HIGH) { // if(!enabled) { // // myservo.attach(9); // myservo.write(50); Serial.println("WARMING UP BOILER."); // delay(10000); Serial.println("BOILER READY!"); } // enabled=true; // digitalWrite(ledPin,HIGH); Serial.print("BOILER ONLINE. CURRENT TEMP: "); Serial.print(temp); Serial.println(" C"); // if(temp>needTemp) decTemp(); if(temp<needTemp) incTemp(); delay(300); } else { if(enabled) { // Serial.println("BOILER OFFLINE. GOOD LUCK!"); // myservo.write(50); // myservo.detach(); enabled=false; } // digitalWrite(ledPin,LOW); } } void incTemp() { int p=needTemp-temp; Serial.print("Increasing TEMP. P="); Serial.println(p); int pos=myservo.read(); int newpos=pos-p; for(int i=pos;i>=newpos;i--) { if(i>minAngle) myservo.write(i); if(i<minAngle) myservo.write(minAngle); delay(50); } if(p>5) { delay(p*1000); } else { if(p<=3) delay(p*3000); else delay(p*2000); } } void decTemp() { int p=temp-needTemp; Serial.print("Decreasing TEMP. P="); Serial.println(p); int pos=myservo.read(); int newpos=pos+p; for(int i=pos;i<=newpos;i++) { if(i<maxAngle) myservo.write(i); if(i>maxAngle) myservo.write(maxAngle); delay(50); } if(p>5) { delay(p*1000); } else { if(p<=3) delay(p*3000); else delay(p*2000); } }
それで、Arduinoはネイティブコントロールユニットの隣の列自体に配置されました。 ビンにある電源ごとの外部電源。
ちなみに、ネイティブスクリーンをその場所に戻しましたが、それも機能します。ゲストは、列のハンドルが回転する様子を見るとしばしば怖がります)
これはHabrに関する私の最初の記事です。厳密に判断し、理解し、許さないようにしてください:)
すべての質問に喜んでお答えします。