初めて投稿させて頂きます。yamaと申します。
マイコンを使用したモーター制御システムの開発業務を受けて、対応しております。
■仕様ツール・機器
ツール ・CS+ for CC V8.03.00 [21 Nov 2019]
・CC-RX V3.02.00
・Renesas Motor Workbench V2.00.01
エミュレータ ・E1
サンプルコード 永久磁石同期モータのセンサレスベクトル制御RX23T実装編
RX23T_MRSSK_SPM_LESS_FOC_CSP_RV101
永久磁石同期モータのエンコーダベクトル制御 (RX23T実装編)
RX23T_MRSSK_SPM_ENCD_FOC_CSP_RV101
■やりたい事
モーター評価ボード「24V Motor Control Evaluation System for RX23T」を使用して
評価ボードに付属しているモーター以外の別モーターでエンコーダベクトル制御を行いたい。
■現在の状況
現在、別モーターをRenesas Motor Workbench V2.00.01のチューナー機能にてパラメータを確認し、
そのパラメータをサンプルコード「永久磁石同期モータのエンコーダベクトル制御 (RX23T実装編)」に組み込んで
まずはサンプルコード通りにボードから別モーターを回転させようとしていますが、モーターが一回転程度振動しながら
動いた後に停止してしまいます。
(別モーターを上記のようにチューナー機能を使い「永久磁石同期モータのセンサレスベクトル制御RX23T実装編」で
使用した際は回転しましたので、本評価ボードの能力で回転させれる事は確認しています。)
■質問したい内容
本評価ボードで違うモーターを使用する時に注意する事・変更しなければならない所などのノウハウ・資料など
ないでしょうか?
私もタイミングよく(?)同様な現象に遭遇しました。まだ解決していません。
RX24T エンコーダー制御のサンプルで、Nidecのモータは無事に制御できたのですが、手元の別モータが動きませんでした。現象としては同じように、ちょっと動いて止まる感じです。
TunerでDrive Testをしても動きませんでした。以下はそのときの波形画像です。Encode Countsはデフォルトの1200から仕様書に記載の500にしています。
ちょっと識者にたずねているところですが、タイミングが一緒だったもので同じ悩みを投稿させていただきました。
吉光屋の次男坊さん
アドバイスをいただきありがとうございます。
極数と極対数は確かにその通りで、モータ仕様書には極数10とあったため、TunerのPole Paires(極対数)の設定では5にしました。
あれから、エンコーダのパルスを確認したところ、正常動作したものとA相、B相が逆に配線されていました。
これは位相計数モードのレジスタ設定を変えればよいのですが、Tunerはmotしか公開されていないため、配線をケーブル配線を変えました。
ただ、これだけでは解決できず、識者に確認したところ、エンコーダのカウントとしてはパルスの数でなく、A相/B相のエッジの数を指定するようです。
つまりA相のHi-Low、Low-Hi、B相のHi-Low、Low-Hiと、パルス×4を指定しないといけないようで、モータの仕様に記載の500P/Rを4倍にした2000を指定したところ、TunerのDrive Testで正常に回転しました。そのときの画像は以下です。
ただ、もとに戻って、エンコーダ制御のサンプルはまだ動いてません。
多分、Configだけでなく、driver/r_mtr_ctrl_encoder.hの以下のパラメータを変えればよいと思いますが、MTR_ENCD_CPR_MECHの(1200)を(2000)に変えただけでは、きちんと動きませんでした。この辺をもう少し識者に聞いてみます。
#define MTR_ENCD_CPR_MECH (1200) /* encoder counts per revolution (mechanical) */#define MTR_ENCD_ANGLE_ADJ_TIME (128) /* encoder angle adjustment time [ms] */#define MTR_ENCD_CNTAVG (4) /* encoder pulse width average */#define MTR_ENCD_ZEROSPEED_PW (20000000) /* encoder pulse width[counts] considered as zero speed */#define MTR_ENCD_ANGLE_DIFF (MTR_TWOPI / (float)MTR_ENCD_CPR_MECH) /* encoder minimum angle [rad]*/#define MTR_ENCD_CALC_AVG (MTR_ENCD_CNTAVG * MTR_ENCD_TIMER_FREQ * 1000000.0f) /* encoder avg calc parameter */