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

ブラインド(または任意のAC電源モーター)制御

コンポーネントと消耗品

>
Arduino Nano R3
× 1
>
ControlEverything.comI2C用4チャンネルリレーコントローラー
× 1
ソリッドステート4チャネルボード
× 1
ブラインドモーター
1つのArduinoで最大4つのモーターを制御できます。
× 1
コンデンサ100nF 630 V
モーターあたりの数量。
× 1
抵抗100オーム(0.5 W分!)
高精度の抵抗器(青い抵抗器)は使用しないでください。モーターあたりの数量。
× 1
バリスタ275VAC
モーターあたりの数量。
× 1
ダイオードジェネリック
どの信号またはパワーダイオードでも問題ありません。ブラインドあたりの数量。
× 3
Raspberry Pi3モデルB
リモートコントロールのオプション
× 1
nRF24モジュール(汎用)
リモートコントロールのオプション
× 2

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE
Domoticz
オプション、リモートコントロールのみ。他の自動化コントローラーを使用することも、使用しないこともできます。コンソールコマンドをトリガーするだけです。

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

イントロ

新しい家を購入したばかりで、ブラインドから始めてすべてを自動化したいと考えていました。簡単なプロジェクトのように見えたものは、少し悪夢であることが判明しました。比較的高出力のモーター(150W)がリレーとトライアックを破壊し、使用するワイヤレス通信とコントローラー、およびそれを機能させる方法は明らかではありませんでした。ノイズラインの中でブラインドがランダムにアクティブ化されていました(深夜はかなり怖いです)...最終的に私は非常に安価なコンポーネントでこれらすべての問題を解決することができました。時間。

プログラムは好きではありませんが、はんだ付けは好きですか?とにかくチュートリアルを読んでください、そして最後にあなたは同じことをするが知性のない個別の回路を見つけます。

説明

モーターを制御する場合、重要な問題はインダクタンスです。これにより、回路を開こうとすると、電流が遮断装置を流れ続け、非常に高い電圧が発生します。小さなリレーで予防策を講じずに回路を遮断しようとすると、それらの接点がくっつき、トライアック(ソリッドステートリレー)を使用すると、過電圧(私の場合は1600Vを超えるピークを測定)が破壊されます半導体。

私はグーグルで他の人がこれに問題を抱えていることに気づきましたが、彼らは簡単で高価で膨大な方法を取りました、彼らはただ大きなリレーを手に入れました、それでも大きなリレーをアクティブにするためだけに安いリレーが必要ですが、連絡先はまだ苦しんでいるかもしれません最終的に失敗します。エンジニアとして、私は自分自身が最も効率的な解決策を得られないようにすることはできませんでした。 :)以下に添付されている回路図では、1つの抵抗、1つのコンデンサ、1つのバリスタを追加するだけで、この大きなリレーを節約するソリューションがあります。

バリスタはトライアックを過電圧から保護します。抵抗とコンデンサは、整流の遮断中にエネルギーを吸収するRCスナバ回路を形成します。

[ PS: プロジェクトを作成してから長い間、頭から直接チュートリアルを書いたので、先日、ボードを詳しく見て、実際の回路では、抵抗とコンデンサを茶色の線と灰色の線の間に配置したことに気付きました(トライアック接点ではなく、各モーターの概略色)。この場合、両方のソリューションが機能しますが、この2番目のオプションの利点は、スナバが主電源に恒久的に接続されていないことです。 ]

[ PS2: SebDominguezも、実際の構成で優れたスキーマを作成しました。

<図>

]

各ブラインドのアップコマンドに1つのピンを使用し、ダウンに別のピンを使用する代わりに、スイッチは、ブラインドを上げるか下げる必要があるかを示す共通の線を共有します。したがって、8ではなく5つの入力を使用します。フィルターは必要ありません。入力はソフトウェアでデバウンスされます。

最初に、Arduinoはリレーモジュールをアクティブにしてモーターの方向を選択します。少し遅れて、リレー接点がすでに配置されているので、トライアックをアクティブにし、安価なリレーとトライアックモジュールを介してモーターに230VACを問題なく供給します。回路を遮断するプロセスは逆で、最初にトライアック、次にリレーであるため、リレーがライブ転流することはありません。

コードを変更することなく、1〜4個のモーターを使用できます。他のモーターのピンが必要でない限り、他のモーターを使用しない場合でも、他のモーターのロジックを使用しても問題はありません。

自宅には2つのストーリーがあるため、2つの回路があります。リモートコマンドは一意である必要があるため、アップロード時に1行コメントすることで、コードをそれらのいずれに対しても有効にするようにしました。回路を1つだけ取り付ける場合は、何も変更する必要はありませんが、2つを構築する場合は、すでに無料のソリューションがあります。実際、私はあなたに嘘をつきました、私たちは3つの回路を持っていますが、合計8つのブラインド、1つの回路で4つのモーターすべてを占有しますが、他の4つのブラインドは1つのArduinoの最初の3つの入力と入力番号のみを使用して2つに分割されます秒で4。複製された回路は、リモートコマンドにまったく同じように反応しますが、接続されているものがない場合、アクティブにするものはありません。 :) MySensorsバージョンのコードを使用している場合は、コード内の1行を変更せずに、それぞれ4つのブラインドで最大256のノードを接続できます。これは、宮殿に住んでいる場合は十分です。

システム全体は次のようになります:

<図>

申し訳ありませんが、それはあまり派手で明確ではありませんが、これは実際のインストールであり、このチュートリアル用に準備された回路だけでなく、テーブルに並べて表示することはできません。ご覧のとおり、22 x 15 x 5.2 cmのウォールボックスに収まりますが、かなりタイトです。私が作った方法は、ホットグルーガンを使用してすべてを開いた木箱に入れることでした。実用的で、すばやく、簡単です。

ArduinoスケッチにWebIDEを使用すると、必要なすべてのライブラリが自動的に検出されます。

リモートコントロール(オプション)

このチュートリアルの目的はインダクタンスの問題を解決することでしたが、追加として、リモートコントロール機能もあります。

提供されているコードには、無線モジュールnrf24l01 +を介したリモート制御の2つの方法が含まれています。MySensorsを使用する(推奨)か、ブラインドの数を含む整数を送信し、上下にコマンド0または1を送信します。

どちらの場合も、RPiをマスターとして使用し、nRF24L01 +モジュールを直接接続し、コントローラー(Domoticz)をインストールします。

最初のオプションでは、MySensorsを使用して、MySensorsMQTTゲートウェイをインストールする必要があります。 (https://www.mysensors.org/build/raspberry)。私の実装では、ローカルホストでイーサネットとして構成します。リンクの手順に従ってください。ここに、役立つ可能性のある構成パラメーターがあります(同じものが必要かどうかを確認してください):

sudo ./configure --my-gateway =mqtt --my-controller-ip-address =127.0.0.1 --my-mqtt-publish-topic-prefix =domoticz / in / MyMQTT --my-mqtt-subscribe-topic -prefix =domoticz / out / MyMQTT --my-mqtt-client-id =mygateway1 --my-transport =rf24 --my-port =1883 --my-rf24-irq-pin =15

Domoticzでの統合が完了すると、非常に簡単になります。HWMySensorsMQTTゲートウェイを追加し、ノードに電力を供給します。新しいハードウェアのセットアップで直接見つけることができます。

2番目のオプションでは、MySensorsではなくカスタムアプリケーションを直接使用して、仮想スイッチがコンソールコマンドを実行します。

  ./remote -m XY  

(X:ブラインド#、Y:アクション)。

Arduinoスクリプトのヘッダーで詳細を確認できます。

このリモートコマンドのコードはhttp://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/で説明されています。Node.jsセクションとArduinoスケッチを忘れてください。必要ありません。それらとそのスケッチには実際にバグがあります。ここから必要なのは「ランプスイッチアプリケーション」セクションのみです。ハードウェアセクションは、無線接続にも役立ちます。ちなみに、無線機の電源ピンには必ず10uFのコンデンサを入れてください。また、スペースがある場合は、外部アンテナ付きの無線モジュールを入手することを検討してください。屋内では、特にこのプロジェクトのようにモジュールが壁に囲まれている場合、PCBアンテナの範囲は非常に制限される可能性があります(10 m未満)。

このコードを少し変更して、無線パラメータをArduinoのパラメータと一致させ、応答がない場合は最大5回再試行するのではなく、コードがコマンドを1回だけ送信するようにする必要があることに注意してください。 Arduinoのフィードバックでは、ブラインドが動作-停止-動作-停止-動作していることがわかります。

ラズベリーの最終的なコードは次のようになります:

  #include  #include  #include  #include  #include  #include  #include  using名前空間std; // RF24 radio( "/ dev / spidev0.0"、8000000、25); // RF24ラジオ(RPI_V2_GPIO_P1_15、RPI_V2_GPIO_P1_24、BCM2835_SPI_SPEED_8MHZ); RF24ラジオ(RPI_V2_GPIO_P1_22、RPI_V2_GPIO_P1_24、BCM2835_SPI_SPEED_8MHZ); // CONST INT role_pin =7; CONST uint64_tを管[2] ={0xF0F0F0F0E1LL、0xF0F0F0F0D2LL}; // CONST uint8_tパイプ[] [6] ={"1Node"、 "2Node"}; // SEG FAULTを回避するためのハック、RF24 github https://github.com/TMRh20/RF24.gitunsigned long got_message; void setup(void){で#46を発行//無線モジュールを準備しますprintf( "\ nインターフェースの準備\ n"); radio.begin(); radio.setRetries(15、15); radio.setChannel(0x70); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_MAX); radio.printDetails(); radio.openWritingPipe(pipes [0]); radio.openReadingPipe(1、pipes [1]); // radio.startListening();} bool sendMessage(int action){//この関数はメッセージ「action」をarduinoに送信し、応答を待ちます// ACKパッケージを受信した場合はtrueを返します//ラジオのリスニングを停止します.stopListening(); unsigned long message =アクション; printf( "%luを送信しています..."、メッセージ); //メッセージを送信boolok =radio.write(&message、sizeof(unsigned long)); if(!ok){printf( "失敗しました... \ n \ r"); } else {printf( "ok!\ n \ r"); } // ACKをリッスンするradio.startListening(); // unsigned long start_waiting_at =millis();をリッスンしている間時間をかけてみましょう。ブールタイムアウト=false; while(!radio.available()&&!timeout){// printf( "%d"、!radio.available()); if(millis()-started_waiting_at> 1000){timeout =true; }} if(timeout){//待機時間が長すぎると、送信に失敗しましたprintf( "Puta mierda、no me responsee nadie ... \ n \ r"); falseを返します。 } else {//メッセージを時間内に受信したら、それを読んで印刷しましょうradio.read(&got_message、sizeof(unsigned long)); printf( "ええ、私は応答します>%lu。\ n \ r"、got_message); trueを返します。 }} int main(int argc、char ** argv){char choice;設定();ブールスイッチ=false; intカウンター=0; //オプションを定義しますwhile((choice =getopt(argc、argv、 "m:"))!=-1){if(choice =='m'){printf( "\ n NRF24l01 +の友達と話します.... \ n "); while(switched ==false &&counter <1){//メッセージの送信試行回数switched =sendMessage(atoi(optarg));カウンター++; sleep(1); }} else {//ちょっとした助け:printf( "\ n \ rいくつかの選択をする時が来ました... \ n"); printf( "\ n \ rTIP:送信するメッセージに-m idActionを使用します。"); printf( "\ n \ r例(ID番号12、アクション番号1):"); printf( "\ nsudo ./remote -m 121 \ n"); } //すべてがうまくいった場合は0を返し、そうでない場合は2を返します(counter <5)return 0;それ以外の場合は2を返します。 }}  

コンパイルなどが必要なため、簡単に作成し、必要なものすべて(Raspberry側のみ、Arduinoスケッチは以下)を変更したソースコード、ライブラリ、およびコンパイル済みコードを含むzipファイルに入れます。ラズベリーパイ3:

https://goo.gl/ocCwk3

これをRPiに抽出すると、リモートコマンドを実行できるようになります。

結果

ここで、私がすべてをどのように実装したかを見ることができます。

<図>

壁のスイッチの3つのペアは、3つのブラインドを制御します。壁のタブレットは、仮想スイッチを備えたDomoticzインターフェースを示しています。タブレットの後ろには、コントローラーがインストールされているラズベリーなどがあります。 Arduinoはここにはありません。前に示した写真のブラインドの近くにあります。 RPiとArduinoは無線モジュールを介してワイヤレスでリンクされています。

<図>

ここでは、Google Homeも見ることができます。これは、WebhookサービスでIFTTTを使用することで、Domoticzは、「ねぇGoogle、ブラインドダウン」などの音声コマンドを可能にするのに役立ちます。この時点に達した場合は、音声コマンドを機能させるのに問題はありません。

ここに、結果を示す非常に簡単なビデオがあります。

このチュートリアルが役に立ったかどうか教えてください!

よろしくお願いいたします。

ゴメシン

P.S.好奇心のために、またはコンピューターやプログラミングなどが本当に嫌いなため、最初に私はインテリジェンスをまったく使用せずに個別にソリューションを作成しようとしました。結果は次のとおりです。

<図>

私もそれを構築し、回路がその役割を果たしますが、より柔軟で完全に信頼できるArduinoプラットフォームに慣れる前にそれを行ったので、説明しません。役に立ったら素晴らしいですが、このチュートリアルの範囲ではないので、使用しないことをお勧めします。

コード

Arduinoスケッチ

回路図

4つのブラインドモーターを制御するArduino

製造プロセス

  1. 許容回路とインターロック回路
  2. モーター制御回路
  3. 電力計算
  4. ブルドーザー
  5. 音声制御のアルゴリズムとハードウェアパワーの上昇
  6. ソフトウェアスイートは、モーター制御設計を簡素化します
  7. インフィニオンは、自動車用途向けのTLE985x組み込み電源シリーズを発表しました
  8. 品質管理はモーターの信頼性への第一歩です
  9. 電気制御盤の基本
  10. 電力および HVAC/気候制御
  11. 油圧モーターの速度はどのように制御しますか?