M-Duino is a convenient IO box for handling 12V to 24V IO and relay outputs. I will introduce M-Duino's digital output, digital input, analog output and analog input using LINX sample VI.
「LabVIEWとLINXのサンプルVIでM-Duinoを使ってみる」
M-Duinoは12Vから24VのIOやリレー出力を扱うときに便利なIOボックスです。LINXのサンプルVIを使ってM-Duinoのデジタル出力、デジタル入力、アナログ出力、アナログ入力を紹介します。
M-Duinoは12Vから24VのIOやリレー出力を扱うときに便利なIOボックスです。結線しやすいプッシュイン端子台とスクリュー端を備えた筐体の中にはArduino MEGA 2560とインターフェース回路が収められています。
LINXはご存知の方も多いと思いますが、ArduinoやRaspberry PiをLabVIEWから使うためのアドオンでVI Package Managerから「Digilent LINX(Control Arduino, Raspberry Pi, Beaglebone and more)」をインストールします。ArduinoにLINXファームウェアを書き込むことでLabVIEWがインストールされているPCからUSB(シリアル)経由でArduinoのIOを使用することができます。
ファームウェアのアップロードは、「ツールメニュー > Maker Hub > LINX > LINX Firmware Wizard...」をクリックして「Arduino MEGA 2560」用ファームウェアをアップロードします。
LINXのサンプルVIを使ってM-Duinoのデジタル出力、デジタル入力、アナログ出力、アナログ入力を紹介します。
サンプルVIは「ヘルプメニュー > サンプルを検索...」でNIサンプルファインダを起動し、表示オプションのディレクトリ別を選択して、「MakerHub > LINX」で表示されます。
デジタル出力は「LINX - Blink (Advanced).vi 」、デジタル入力 は「LINX - Digital Read 1 Channel.vi 」を使います。アナログ出力は「LINX - PWM 1 Channel.vi」、アナログ入力は「LINX - Analog Read 1 Channel.vi」を使います。
M-Duinoの電源
DC12Vから24Vの外部電源を用意してVdcとGND端子に接続します。
デジタル出力
出力用の電源(5Vから24V)をQ/VddとCOM(-)端子に接続します。今回はLEDを点滅させるので、M-Duinoの5V出力を使用しました。
デジタル出力Q0.0はArduino MEGA2560の36pinなので、Digital Output Channelは36にします。シリアルポートはCOM25でした。出力を青色LED(1kΩの電流制限抵抗)に接続します。実行ボタンを押すとwhileループ内の250msの待機関数があるので4Hzで点滅します。
デジタル入力
デジタル入力は10Vから24Vの入力端子と10Vの入力端子があり、ON/OFFの閾値は5Vから9Vぐらいでばらついています。今回はプッシュスイッチで12VのON-OFF入力を試します。12Vとスイッチと10kΩの抵抗を直列に接続して、スイッチと抵抗が接続されたポイントをデジタル入力I0.0に接続します。スイッチを押すと12VとなりON、スイッチを離すと0VでOFFとなります。(-)I0.0端子にはグランドを接続します。
デジタル入力I0.0はArduino MEGA2560の22pinなので、DI Channelは22にします。
アナログ出力
Arduinoでのアナログ出力はPWMのデューティで電圧の平均値を変化させてLEDの明るさやDCモーターの回転数を制御します。M-DuinoではディップスイッチONの時にPWM出力、ディップスイッチOFF の時にアナログ(DC)出力となります。
アナログ出力A0.5を黄色LED(3.3kΩの電流制限抵抗)に接続します。
LINXではPWMのデューティを指示します。アナログ出力A0.5はArduino MEGA2560の4pinなので、PWM Channelは4にします。Duty Cycle (0-1)が1.0の時に10Vとなるはずですが、実際には上限が9.5Vぐらいしか出ませんので校正が必要です。
アナログ入力
アナログ入力はI0.7を使ってみます。Arduino MEGA2560の54pinですが、LINXでは54pinは登録されていないらしくエラーが発生します。54pinはA0 pinと同じピンを指しているようなので、AI Channnel入力に0を入力すると動作しました。I2.5は69pinですが、AI Channel 15で動作します。アナログ入力は0Vから10Vですが、LINXは0Vから5Vを想定しているので1/2の値を表示します。係数を変更すれば良いでしょう。
LabVIEWで12Vから24VのIOやリレー出力を扱う時に便利なのではないでしょうか?