工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Wake Me Up!

コンポーネントと消耗品

>
Arduino Nano R3
× 1
マキシムインテグレーテッドDS3231MPMB1ペリフェラルモジュール
× 1

このプロジェクトについて

冬が来て、夜は日より長くなり、午前6時に暗くて寒い部屋で目を覚ますのは悪夢です。部屋をより暖かく快適に感じさせる人工的な「日の出」を作成する方法があったとしたらどうでしょうか?

これは簡単な作業です。現在のシーリングランプに合うスマート電球を作成します。部屋をゆっくりと照らすことで日の出をシミュレートします。動作する場合は、スマートフォンに接続して適切な目覚まし時計にします。

電球

スマート電球を作成するには、ランプにねじ込まれて電源を供給するソケットがあるため、最初に「ダム」電球が必要です。ハンマーで叩きました。この楽しい手順では、アルミニウムソケットからガラスを取り外し、下部のソケットとピンにワイヤーをはんだ付けした後、スマート電球のベースの準備が整いました。

次に、すべての電子機器のサポートが必要です。私はパフォーマンスボードを使用して、Arduino Nanoマイクロコントローラー、5V電源、およびすべての電子部品に合うようにカットしました。

高電圧回路

安全上の警告: 50Vを超える電圧で作業しています。高電圧に触れると、重傷を負ったり死亡する可能性があります。

AC主電源電圧から電力を供給される通常の電球を使用しているため、マイクロコントローラーを直接使用して電球に供給される電力を制御することはできません。トライアックが必要です。この小さなデバイスは、非常にすばやくオンとオフを切り替えることができるリレーとして機能します。マイクロコントローラーは、AC正弦波を変更するためにトライアックの電源をオン/オフし、光を暗くしたり明るくしたりします。

ただし、AC電圧はDC電圧とは異なる方法で制御されます。 AC正弦波は正確な方法でカットする必要があるため、トライアックはそれを実現するために正確な瞬間にオンとオフを切り替える必要があります(下の画像を参照)。言い換えると、マイクロコントローラは、主電源電圧の正弦波がゼロと交差するタイミングを認識して、各半波を同じサイズにカットする必要があります。そうしないと、ライトがちらつきます。

主電源電圧のゼロ交差を検出するために、正弦波がゼロと交差するとオンになるトランジスタを備えた4N35(U1)オプトカプラがあります。マイクロコントローラは、それを入力ピンのHigh信号として認識します。オプトカプラーには別の機能があります。それは、主電源電圧回路から低電圧を分離することです。

出力にトライアックを備えた2番目のオプトカプラー(MOC3063(U2))は、マイクロコントローラーを高電圧トライアック(Q2)から分離するために使用されます。正弦波がゼロを横切るときにのみオンになるため、ゼロクロス機能を備えたオプトカプラーを使用していないことを確認してください。

低電圧回路

マイクロコントローラーとして、ArduinoNanoを使用しています。その主な目的は、トライアックを制御し、設定された時間になるとライトをオンにし始めることです。リアルタイムクロックを提供するために、DS3231の正確なリアルタイムクロックモジュールがあり、電源が失われたときの時間を保持します。

チップ用に5Vを提供するために、電球ソケットからの主電源電圧に接続された安価な5V700mA降圧電源を使用しています。便利で便利なソリューションです!

コード

プログラムはとてもシンプルです。ランプがスイッチによってパワーアップされると、電子機器がまだ機能していることを確認するために、部屋がゆっくりと暗くなります。夜間はDS3231モジュールに保存されているリアルタイムクロックをチェックし、最終的に午前6時に、スイッチによってランプの電源が切れるまで、部屋はゆっくりと完全な「昼光」まで点灯します。

以下に添付されているコードを確認してください。一目瞭然だと思います。そうでなければ、私は悪い開発者です!

次は何ですか?

今、私は数日または数週間実験し、それが朝に私を目覚めさせることができれば、私はこのプロジェクトをより賢く、より粗雑でないものに進化させます!

おやすみなさい!

コード

  • lightalarm.ino
lightalarm.ino Arduino
ベッドから出るときに点灯するスマート電球。
 / *ベッドから出るときに点灯するスマート電球。仕組み:1)電源を入れたとき、ライトが機能することを確認するためにオンになります2)完全にオフになるまでゆっくりと暗くなります3)午前6時にライトがゆっくりとオンになり、夕方にオフになります4)部屋が暗くないときはライトがオンになりませんもう(フォトセル)使用方法:-就寝時にライトをオンにすると、朝起きたときに部屋が明るくなり、部屋を出るときにライトをオフにしてオフにします。-時間は保持されます。 DS3231モジュールへ@authorJiri Praus(https://twitter.com/jipraus)AChttp://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html*に触発されたライトコントロール/#include  //http://www.arduino.cc/playground/Code/#includeから入手可能#defineTRIAC_PIN 2#define ZERO_CROSS_PIN 3#define LIGHT_SENSOR_PIN A6#define FREQUENCY_STEP 75 //これは、50Hzの場合はマイクロ秒単位の明るさあたりの遅延ステップです(60Hzの場合は65の値を変更します)#defineCHANGE_DIM_LEVEL_EVERY 1 // N秒ごとに暗さレベルを変更し、明るさ/暗さの速度を遅くします#define MAX_DIM_LEVEL 128 // off# define MIN_DIM_LEVEL 0 // on#define DARK_THRESHOLD 300 //外が暗いと見なされたときのフォトセルの抵抗//トライアック制御変数volatilebyte triacCounter =0; //トライアック制御timervolatileboolean zeroCrossed =false; // ACフェーズゼロクロスフラグ// dim controlbyte dimLevel =MIN_DIM_LEVEL; //電源をオンにすると、ライトがオンになり、チェックブールとしてゆっくりと暗くなりますlightOn =false; //アラームクロックRTC_DS3231rtc; void setup(){Serial.begin(115200); digitalWrite(TRIAC_PIN、LOW); pinMode(TRIAC_PIN、OUTPUT); pinMode(ZERO_CROSS_PIN、INPUT); pinMode(LIGHT_SENSOR_PIN、INPUT); //リアルタイムクロックを初期化しますif(!rtc.begin()){Serial.println( "RTCが見つかりませんでした"); while(1); } if(rtc.lostPower()){Serial.println( "RTCが電力を失った、時間を設定しましょう!"); rtc.adjust(DateTime(F(__ DATE __)、F(__ TIME__))); //次の行は、RTCをこのスケッチがコンパイルされた日時に設定します} //トライアック制御の割り込みとタイマーを初期化しますnoInterrupts(); attachInterrupt(digitalPinToInterrupt(ZERO_CROSS_PIN)、zeroCrossDetected、RISING); //ゼロクロス検出割り込み();のためにピン2(割り込み0)に割り込みを接続します。 Timer1.initialize(FREQUENCY_STEP); Timer1.attachInterrupt(triacTimerInterrupt、FREQUENCY_STEP);} void loop(){delay(CHANGE_DIM_LEVEL_EVERY * 1000); checkAlarmClock(); AdjustDimLevel(); debugPrint();} void zeroCrossDetected(){zeroCrossed =true; //ブール値をtrueに設定して、調光関数にゼロクロスが発生したことを通知しますtriacCounter =0; //トライアックを開く必要があるときにカウントを開始しますdigitalWrite(TRIAC_PIN、LOW); //ライトをオフにします} void triacTimerInterrupt(){if(dimLevel> =MAX_DIM_LEVEL){//永久にオフdigitalWrite(TRIAC_PIN、LOW); } else if(dimLevel <=MIN_DIM_LEVEL){//永久にdigitalWrite(TRIAC_PIN、HIGH); } else if(zeroCrossed){if(triacCounter> =dimLevel){digitalWrite(TRIAC_PIN、HIGH); //トライアックを開くzeroCrossed =false; //ゼロクロス検出を次の半分までリセットしますvawe} else {triacCounter ++; //タイムステップカウンターをインクリメントします}}} void AdjustDimLevel(){if(lightOn &&dimLevel> MIN_DIM_LEVEL){dimLevel--; } else if(!lightOn &&dimLevel  

回路図


製造プロセス

  1. シリーズバッテリー
  2. 分圧器
  3. 熱電
  4. 電位差電圧計
  5. ポテトバッテリー
  6. 位相シフト
  7. 電圧レギュレーター
  8. ボルテージフォロア
  9. マルチステージアンプ
  10. 差動アンプ
  11. 専用ダイオード