【動画あり】村田製作所のDALI電源とNode-REDをつないでみた

株式会社村田製作所は国内の電源メーカーとして一番最初にDALI対応製品を市場に販売しました。

2012年8月にMPA1937シリーズ、2年後の2014年にMPA1948、MPA1960、MPA1967、MPA1968シリーズを発売と様々な出力に対応できるラインナップをおもちです。

国内で使えるPSEを取得したDALIドライバーを販売しているメーカー一覧

今回、株式会社村田製作所様から「MPA1948B(600mA)」タイプの定電流タイプDALI電源サンプルをご提供いただきましたので、電源の検証結果とNode-REDでコントロールした様子をご紹介したいと思います。

また、この記事は2017年度Node-REDアドベントカレンダー12月5日として参加させていただいております。

*アドベントカレンダーとは特定のテーマについて12月1日から25日まで毎日1件づつ個人やグループで記事をアップしていくイベントです。

↓ Node-REDのアドベントカレンダーはこちら

村田製作所 スマートタイプLED電源MPA1948シリーズの特長

DSC 0102

村田製作所スマートタイプLED電源MPA1948シリーズは

  1. DALI/UAR/PWM対応
  2. VCCI class B / CISPR 15/22 class B
  3. 待機電力 0.3W未満

ノイズが嫌われる現場などではCISPRをクリアしている点や、DALIを使って調光するのに待機電力が高いと省エネの効果を十分に発揮できないことがあるので、待機電力が0.3W未満という点が標準の機能として含まれていることは、提案する側としてはとても使いやすいポイントだと思います。

また、品質面や不具合が発生した時の対応など、国内メーカーが製造しているという点もかなり安心できます。

DALI/PWM/UART端子を標準搭載

スクリーンショット 2017 12 05 9 53

出力側には、

  • DALI/PWM端子(共通)
  • UART端子
  • DALI/PWM切り替えスイッチ
  • LED出力端子

といった端子が並び、DALI以外にもPWM、UARTで制御可能です。

DSC 0118

入力はφ0.8-1.6mm 0.5-2.5□対応

DSC 0108

海外製の電源は1次側の入力端子が使いにくいことが多いのですが、入力側の推奨電線はφ0.8-1.6mm 0.5-2.5□に対応しています。ただし、残念ながら送りには対応していません。

DSC 0110

MPA1948シリーズラインナップ

MPA1948シリーズは出力電圧30〜50V、電流値は300から720mAまでのラインナップがあります。

型番 電流値(mA)
MPA1948A 700
MPA1948B 600
MPA1948C 500
MPA1948D 425
MPA1948E 540
MPA1948F 300
MPA1948G 450
MPA1948H 720

寸法

DSC 0105

DSC 0116

DSC 0120

寸法 : 224 x 70 x 35 (mm)

Master Configratorで検証

いつものようにTridonic MasterConfigratorで検証してみました。

MPA1948A 600mAの負荷として選んだのはPHILIPS製Foltimoモジュールです。

DSC 0122

まずはアドレッシング。

001

無事にアドレスが振られDevice informationが表示されました。(Trodinic製のインフォメーションなのでここに表示される内容は重要ではありません。)

002

Physical lower limit(最低調光値)は1.0%となりました。これは製品のスペックどおりです。

では、Node-REDで調光フローをつくって光をみてみましょう。

Node-REDのフローを作成

Node RED

Node-REDのフローはこのとおり作成。

Inputノードから光らせたい名称を文字列でfunctionノードに送信。functionノードにてその文字列をDALIコマンドに変換して、DALIゲートウェイ(DeeBridge)に送り、DALIコマンドが村田製作所のLED電源に届くとLEDが明るくなったり暗くなったりするという仕組みです。

ちなみに、DALIの場合は同じLED(電源)でもDAPとIAPという2つのアドレスを持っているので、送る内容によって送信先のアドレスが変わっています。

↓ 関連記事
第6回ふたつのアドレスDAPとIAP/ゼロから始めるDALI制御

フローはこちらに貼っておきます。

[
    {
        "id": "3472c6f4.41943a",
        "type": "tcp out",
        "z": "11d03b18.09f2b5",
        "host": "192.168.0.22",
        "port": "8421",
        "beserver": "client",
        "base64": false,
        "end": false,
        "name": "DeeBridge(TCP)",
        "x": 780,
        "y": 400,
        "wires": []
    },
    {
        "id": "3d3eb68f.d160fa",
        "type": "function",
        "z": "11d03b18.09f2b5",
        "name": "Check Scene",
        "func": "// DALIに送るシーン命令のリスト\nvar assign = {\n\t\"DAP100\" :   \"#08,254\",\n\t\"DAP50\" :  \"#08,128\",\n\t\"DAP10\" : \"#08,26\",\n\t\"DAP2\" : \"#08,5\",\n\t\"DAP1\" : \"#08,3\",\n\t\"MAX_LEVEL\" : \"#09,5\",\n\t\"MIN_LEVEL\" : \"#09,6\",\n\t\"OFF\" : \"#09,0\",\n};\n\n// injectノードから命令がきたら変数に持つ\nvar command = msg.payload;\n\n// 命令と一致するものをDALIへのシーン命令としてアサイン\nif(assign.hasOwnProperty(command)){\n    msg.payload = assign[command];\n}\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 480,
        "y": 400,
        "wires": [
            [
                "3472c6f4.41943a"
            ]
        ]
    },
    {
        "id": "92d4e4ec.d1dfb8",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "DAP50%",
        "topic": "",
        "payload": "DAP50",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 180,
        "y": 200,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "f0d7e35.d0d282",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "OFF",
        "topic": "",
        "payload": "OFF",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 150,
        "y": 500,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "ffa9b6ac.2c73a8",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "DAP10%",
        "topic": "",
        "payload": "DAP10",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 180,
        "y": 240,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "fdde37e0.852c78",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "DAP100%",
        "topic": "",
        "payload": "DAP100",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 180,
        "y": 160,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "7b782aed.e003c4",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "30",
        "crontab": "",
        "once": false,
        "x": 670,
        "y": 340,
        "wires": [
            [
                "3472c6f4.41943a"
            ]
        ]
    },
    {
        "id": "4a311c63.5f5ec4",
        "type": "comment",
        "z": "11d03b18.09f2b5",
        "name": "明るさ指定(DAP)",
        "info": "",
        "x": 170,
        "y": 100,
        "wires": []
    },
    {
        "id": "2856d7d9.31dad8",
        "type": "comment",
        "z": "11d03b18.09f2b5",
        "name": "接続の維持",
        "info": "",
        "x": 640,
        "y": 300,
        "wires": []
    },
    {
        "id": "f1c8c819.0e0b38",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "Recall Max Level",
        "topic": "",
        "payload": "MAX_LEVEL",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 180,
        "y": 420,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "6721b180.5048d",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "Recall Min Level",
        "topic": "",
        "payload": "MIN_LEVEL",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 180,
        "y": 460,
        "wires": [
            [
                "3d3eb68f.d160fa"
            ]
        ]
    },
    {
        "id": "e9feeaed.2e1098",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "DAP5%",
        "topic": "",
        "payload": "DAP5",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 170,
        "y": 280,
        "wires": [
            []
        ]
    },
    {
        "id": "54c142ff.081d4c",
        "type": "inject",
        "z": "11d03b18.09f2b5",
        "name": "DAP1%",
        "topic": "",
        "payload": "DAP1",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 170,
        "y": 320,
        "wires": [
            []
        ]
    },
    {
        "id": "cd4b7a16.a331b8",
        "type": "comment",
        "z": "11d03b18.09f2b5",
        "name": "コマンド(IAP)",
        "info": "",
        "x": 150,
        "y": 380,
        "wires": []
    }
]

Node-REDを使って調光してみた

Node-REDで作成したフローを使って調光してみました。

こちらは動画でご覧ください。

まとめ

以上、株式会社村田製作所のスマートタイプLED電源MPA1948AをPhilipsのLEDモジュールFoltimoとつなぎ、Node-REDを使って調光させるという検証を行いました。

実をいうと、InjectノードでDAP5%とDAP1%を繋いでなかったので動画ではDAP10%の様子しか写っていませんが、DAP1%の明るさは「Recall Min Level」を押した時と同じなのでご容赦ください。

村田製作所の方のお話によると、新しいスマートタイプのDALI対応LED電源も開発中とのことで、こちらも楽しみです。

ということで、Node-RED Advent Calendar 2017 12月5日の記事を終わります。

明日は@jonathanhさんの「Node-Red でSalesforce 顧客情報をQuickBooks の顧客リストに追加するワークフローを作る」という記事にバトンを送ります。

この記事を書いた人

この記事を書いた人

中畑隆拓

日本ピー・アイ株式会社
照明制御が得意です。
Node-REDを使ってIoT機器の情報を読み込み、DALI-APIを叩いて制御しています。

今後、設備の制御はNode-REDのようなソフトウェアが中心になると実感していて、いろんなところで講演してます。

講演予定・実績一覧

DALIだけでなくKNXやModbus、Lonworksなど、設備制御について意見交換を行うSlackを作りました。参加希望の方は問い合わせフォームより連絡ください。

お問い合わせ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする