モータ制御器の定量設計 回転量と方向の高精度計測
エンコーダの2相パルスを読取る Pythonプログラム
エンコーダの基礎
![]() |
---|
図1 エンコーダの2つのパルス信号(A相とB相)の位相ずれを検出すれば回転方向を判定できる.A相,B相の両方の立ち上がりと立ち下がりをカウントすれば,計測分解能が4倍に上がる.画像クリックで動画を見る.または記事を読む.[提供・著]南 裕樹 詳細:[VOD/Pi KIT] ラズパイ×Pythonで動かして学ぶモータ制御入門 |
モータの回転量や回転方向を高精度に計測するために,エンコーダが利用されます.エンコーダには光学式と磁気式があり,測定方法の違いによってインクリメンタル型とアブソリュート型に分類されます.
- 光学式エンコーダ:回転盤に設けたスリットを通して光を透過させ,フォトダイオードで受光する方式
- 磁気式エンコーダ:磁石の極性変化をホール素子で検出する方式
- インクリメンタル型:回転量に応じてパルス信号を出力
- アブソリュート型:原点からの絶対位置をコード化して出力
インクリメンタル型は,回転量を直接パルスとして取得できるため,プログラムによる処理が容易です.
回転方向の検出と逓倍原理
エンコーダの出力信号はA相とB相の2つのパルス信号で構成されており,これらの位相のずれを利用することで回転方向を判定できます.A相が先行する場合とB相が先行する場合を区別することで,モータの回転方向を識別します.
カウントするタイミングを増やすことで精度を向上させることが可能です.
- 1逓倍:A相の立ち上がりだけをカウント
- 2逓倍:A相の立ち上がりと立ち下がりをカウント
- 4逓倍:A相・B相の両方の立ち上がりと立ち下がりをカウント
4逓倍を利用すれば,1パルスあたりの分解能を4倍に向上させることができます.
Pythonを用いたエンコーダ信号の読取
エンコーダのパルス信号をPythonで取得する方法として,ラズベリー・パイのGPIOを利用する方法があります.エンコーダのA相とB相をGPIOピンに接続し,立ち上がりや立ち下がりをイベント検出することでカウントを行います.
- GPIOピンの設定
- A相・B相の立ち上がり・立ち下がりを検知
- パルスカウントの記録と可視化
回転量はパルス数から求められます.1回転あたり180パルスの場合,1パルスごとに$\frac{360}{180} = 2$ 度回転したことになります.パルス信号の周波数を計測すれば回転速度も算出可能です.
キーワード
A相・B相信号
エンコーダの出力には,A相・B相と呼ばれる2つのパルス信号があります.これらは1/4周期ずれており,位相の進み方によって回転方向を判定できます.
- A相が先行:正方向回転
- B相が先行:逆方向回転
この関係を利用することで,正確な回転検出が可能になります.
逓倍カウント
逓倍とは,パルスカウントの精度を向上させるための技術です.通常,1逓倍ではA相の立ち上がりだけをカウントしますが,4逓倍ではA相とB相の両方の立ち上がりと立ち下がりをカウントするため,分解能が4倍になります.
- 1逓倍:1回の立ち上がりだけカウント
- 2逓倍:立ち上がりと立ち下がりをカウント
- 4逓倍:A相・B相両方の立ち上がりと立ち下がりをカウント
インクリメンタル型とアブソリュート型
エンコーダには2つの方式があります.
- インクリメンタル型:パルスを出力し,積算することで位置を判定
- アブソリュート型:各位置に固有のコードを割り当て,絶対位置を判定
インクリメンタル型は構造がシンプルで多くの用途に使われますが,停電時に位置情報を失う欠点があります.対してアブソリュート型は電源が切れても位置を保持できます.〈著:ZEPマガジン〉
チャプタ・リスト
著者紹介
- 2009年3月 京都大学大学院情報学研究科博士後期課程修了.日本学術振興会特別研究員(DC2),舞鶴工業高等専門学校助教,京都大学特定助教,奈良先端科学技術大学院大学助教,大阪大学講師
- 2019年3月 大阪大学大学院工学研究科機械工学専攻准教授.ノイズシェーピング理論に基づく量子化器設計およびその応用に関する研究に従事.博士(情報学).
著書
- [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【ロバスト制御編】,ZEPエンジニアリング株式会社.
- [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【PID制御編】,ZEPエンジニアリング株式会社.
- [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【状態フィードバック制御編】,ZEPエンジニアリング株式会社.
- [VOD/Pi2W KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
- Pythonによる制御工学入門(改訂2版),オーム社(2024).
- 制御系設計論,コロナ社(2021).
- やさしくわかるシーケンス制御,オーム社(2020).
- Pythonによる制御工学入門,オーム社(2019).
- 倒立振子で学ぶ 制御工学,森北出版(2017).
- Arduino×Pythonで動かしながら学ぶモータ制御入門,トランジスタ技術 2020年9月号,CQ出版社.
参考文献
- [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
- [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.