Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

KD240でモータ制御してみた!

皆さん、こんにちは。Avnetエンジニアのノリさんです!今回はhttps://xilinx.github.io/kria-apps-docs/kd240/build/html/docs/foc-motor-ctrl/docs/app_deployment.htmlを元にKD240でモータ制御を行います!

2024-04-01

Long Copy_body

Step0:ハードウェア要件

  • KD240 ドライブ スターター キット
  • KD240 モーターアクセサリーキット
  • KD240 電源およびアダプター (KD240 ドライブ スターター キットに付属)
  • KD240 スターターキット用 12V AC アダプターおよびモーターアクセサリーキット用 24V AC アダプター
  • USB-A - micro-B ケーブル (KD240 ドライブ スターター キットに付属)
  • MicroSD カード (32GB カードは KD240 ドライブ スターター キットに含まれています)
  • CAT6イーサネットケーブル
  • ディスプレイ付きホストマシン

 

Step1: イメージの書き込みと起動

https://ubuntu.com/download/amdからUbuntuイメージをダウンロードします ダウンロードしたイメージを書き込みます、Linuxの場合ddコマンドでも書き込めますが、ここではBalena Etcher (https://etcher.balena.io/) を用います

イメージが書き込み終わったら下の図の手順でコネクタを繋げていきます この際、コンセントはまだ繋がないでください

下の図を元にTera TermやPuttyを使ってボードとシリアル通信を行います

Tera Termの場合

ポート番号は異なる場合があります

Puttyの場合

$ ls /dev/ | grep ttyUSB で先にUSBの接続先を見ておきます 他にUSBデバイスが挿さっていなければSerial lineはttyUSB0~ttyUSB3のいずれかになるはずです $ sudo puttyでPuttyを起動します

シリアル通信に成功したら、KD240とモータのコンセントを繋げて起動を確認します 起動を確認したらログインを行います(ユーザ名、初期パスワード共にubuntu) 初期パスワードでログインするとパスワードの変更を求められるので変更してください

 

Step2: セットアップとモータ制御アプリケーションの実行

下のコマンドを元にaptパッケージをアップグレードします

$ sudo add-apt-repository ppa:xilinx-apps --yes &&
$ sudo add-apt-repository ppa:ubuntu-xilinx/sdk --yes &&
$ sudo add-apt-repository ppa:xilinx-apps/xilinx-drivers --yes &&
$ sudo apt update --yes &&
$ sudo apt upgrade --yes

アップグレードが終わったら下のコマンドを元にファームウェアバイナリとモータ制御アプリケーションをインストールします

$ sudo apt install xlnx-firmware-kd240-motor-ctrl-qei
$ sudo apt install xlnx-app-kd240-foc-motor-ctrl

既に動作しているアプリケーションファームウェアをアンロードし、モータ制御用のアプリケーションファームウェアをロードします

$ sudo xmutil unloadapp
$ sudo xmutil loadapp kd240-motor-ctrl-qei

bokeh サーバーを起動します

$ export PATH=${PATH}:/opt/xilinx/xlnx-app-kd240-foc-motor-ctrl/bin
$ start_motor_dashboard

IPアドレスが設定されている場合はKD240上のbokeh サーバーへのリンク (:5006) が表示されます

 

Step3: ホストマシン上でのモータ制御

Web ブラウザでbokeh サーバーへのリンクにアクセスします 注: サーバーが実行されると、ブラウザを何度閉じたり、開いたり、更新したりしても、その設定は保持されます

オフラインでのデモの実行はStep4を参照してください

Off、Speed、Torque、Open Loopの4モードを切り替えることでモータの状態を変化させられます 注: モータ動作のOpen Loopモードは、Vd、Vq の値の構成が正しくないと、モータが定格を超える速度で回転し、モータが過度に加熱される可能性があるため、Open Loopモードを使用する場合は注意してください

ダッシュボードの機能については、https://xilinx.github.io/kria-apps-docs/kd240/build/html/docs/foc-motor-ctrl/docs/app_deployment.html#dashboard-featuresを参照してください

Step4: トラブルシューティング

$ sudo apt updateに失敗する

下のコマンドでKD240がインターネットに接続されていることを確認してください

$ ping 8.8.8.8

ネットワークに接続されている場合でも、時刻同期が有効になっていない場合は失敗するので、時刻同期を行います 下のコマンドでKD240上の時刻を確認します (Local timeとUniversal timeを確認)

$ timedatectl

時刻がずれている場合は$ sudo vi /etc/systemd/timesyncd.confでtimesyncd.confを開き、#NTP= を NTP=ntp.nict.jp に変更します timesyncd.confを変更したら、下のコマンドで設定を反映します

$ sudo timedatectl set-ntp true

再び時刻を確認して同期されていることとNTP service: activeとなっていることを確認します

$ timedatectl

オフラインでデモを行いたい場合(パッケージが全てインストール済みであることが前提)

パッケージが全てインストールされていない場合はオンラインにてインストールする必要があります イーサネットケーブルでホストマシンとKD240を繋ぎます Windowsの場合は$ ipconfig、Linuxの場合は$ ifconfig eth0でイーサネットとの接続を確認します 表示されるIPアドレスはリンクローカルアドレスなので169.254.XXX.XXXになるはずです Windowsでの例を下の図に示します

KD240側のIPアドレスを設定します

$ ifconfig eth0 <IP>

は上6桁をホストマシンのIPに合わせるようにし、下6桁は合わせないようにします 上の図の場合を169.254.XXX.XXXにします、XXX.XXXは225.170以外の任意の数字です その他のトラブルシューティングはhttps://xilinx.github.io/kria-apps-docs/kd240/build/html/docs/foc-motor-ctrl/docs/known_issues.htmlを参照してください

 

感想

今回はKD240での信号処理を実行しました。KD240を使った企画は今回が初めてなので、苦労することも多くありましたが、その分達成感は得られたように感じます。今後もKD240を用いた企画を行う場合があるかもしれないので期待していてください! それでは、また次回お会いしましょう!See you next time!