ラズパイ5 +Python+CANopenでモータを回す ① 構成と環境(オリエンタルモーター の「BLMR5100K-A-B」 + 「BLVD-KRD」)
ラズパイを利用してCANopen対応BLDCモータをpythonのプログラミングで回します。ラズパイだけではツール類が足りないので、Arduino、Windows10の環境も利用します。
●環境
- ハードウェア Raspberry Pi 5(4GBモデル)
- OS Raspberry Pi OS (64ビット)、リリース日December 5th 2023
- ラズパイ環境 Python 3.11.2
- Windows10 22H2にて、ssh(OpenSSH_9.2p1 Debian-2+deb12u2, OpenSSL 3.0.11 19 Sep 2023)および、VNC Viewerを動作させている
- Windows環境 Python 3.10.5
- Arduino 2.x
●使用したモータ
オリエンタルモーター のブラシレス・モータBLVシリーズ Rタイプを使います。2021年購入時には品種はほとんどなかったのですが、現在(2024年4月)、ギアの有無、出力が60~400Wと各種用意されています。400Wの一部を除き、コントローラのBLVD-KRDは、共通部品です。
「BLMR5100K-A-B」 + 「BLVD-KRD」
<モータBLMR5100K-A-B> 定格出力(連続) 100 W PCとの接続 USBマイクロコネクタ <サポート・ソフト(無償) BLST01(初期)、現在MEXE02> |
●使用した電源
DINレール用の、モータBLMR5100K-A-B用には24V 2.5A、コントローラBLVD-KRD用には24V 1.7Aを使いました。モータの電源は、専用のLC03D06Aケーブルを使いました。
●接続
モータとコントローラは専用のケーブルでつなぎます。UVWの電源と、エンコーダ/電磁ブレーキのコネクタが用意されています。延長用が「接続ケーブル」で、交換用が「可動接続ケーブル」と呼ばれているようです。近距離ならば、別途購入は不要です。
マニュアルHP-5139J.pdfの6項に従ってコネクタを差し込みます。
28ピンのCN4コネクタは、5ピンがCAN_L、6ピンがCAN_H、7ピンがCAN_GND、20ピンNET-VIN(コントローラ24V)、21ピンNET-GND(コントローラGND)をつなぎます。
●構成
初期段階、ユーティリティなどはWindowsとUSB経由で動かします。最終的には、ラズパイ+CANインターフェースでCANバス経由で命令を実行します。
CANバスへの接続は、D-SUB9ピンのコネクタを利用しました。ほかにも規定されているようなので、自分の環境にあったもので接続しましょう。
WindowsマシンをCANバスにつなげているのは、IXXATのUSB-to_CAN V2 Compactです。5万円以下でマルツで入手しました。使ったことはありませんが、アナログ・デバイセズのUSB-2-RTMIが2万円以下です。別の記事で紹介する TCML-IDEでは利用できるようですが、canopenライブラリでは不明です。
ラズパイでは、mcp2515コントローラを搭載したWaveshare製CAN HATボードを、アマゾンで購入しました。GPIBコネクタに挿すだけで接続は完了します。ただ、純正のFANを利用した場合は、ぶつかってしまうので、コネクタに約10mmの下駄をはかせています。
mcp2515は、ラズパイにデバイス・ドライバが用意されているので、利用は簡単です。クロックは16MHzがデフォルトのようですが、このボードは12MHzです。昔試したとき、ほかのボードで8MHzクロックでは利用できませんでした。
組み込みが成功したなら、
$ sudo ip link set can0 up type can bitrate 1000000
で、ネットワーク・デバイスとして利用ができるようにしておきます。
●CANopenのサポート
コントローラBLVD-KRDのマニュアル類は、下記のWebからダウンロードできます。
https://www.orientalmotor.co.jp/ja/products/detail?hinmei=BLVD-KRD
コントローラBLVD-KRDのModbusでは、運転などの日本のマニュアルがあります。CANopen用はありません。用意されているのは、
英語版のBLV Series R Type Driver CANopen Communication Profile
だけです。したがって、CANopenの規格でモータを回すための方法は、別途どこかで学習しなければなりません。
また、Python用ライブラリ、C++用ライブラリやAPIはなにも用意されていません。
本連載では、canopenライブラリを利用します。
https://github.com/christiansandberg/canopen/tree/master
●実現できること
マブチモータにHブリッジのドライバ回路をつないで、Arduinoもしくはラズパイで制御するのと同じことができます。
たとえば、ベルトコンベアで、一定の速度でベルトを動かそうとします。モータは、停止状態から徐々に速度を上げ、設定した目標速度に達したら、その速度を維持します。ベルトの上に、様々な重さの荷物が載ったり、降ろされたりします。でも、速度を一定に保ちたいです。
CANopenのモータ制御の機能を利用すると、加速や減速時の速度、目標速度を設定すれば、それだけで、実現できます。
Arduinoやラズパイのシステムで直接モータを駆動している場合は、速度計を別途用意し、それが一定になるようなプログラムを開発しなければなりません。もちろん、定格の大きなモータを使えば、負荷の変動をほぼ無視できますが、省エネではありません。