KD240でモータ制御してみた!
皆さん、こんにちは。Avnetエンジニアのノリさんです!今回はhttps://xilinx.github.io/kria-apps-docs/kd240/build/html/docs/foc-motor-ctrl/docs/app_deployment.htmlを元にKD240でモータ制御を行います!
2024-04-01
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 サーバーへのリンク (
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>
感想
今回はKD240での信号処理を実行しました。KD240を使った企画は今回が初めてなので、苦労することも多くありましたが、その分達成感は得られたように感じます。今後もKD240を用いた企画を行う場合があるかもしれないので期待していてください! それでは、また次回お会いしましょう!See you next time!

Kria
Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。
AMD製品に関連する技術ブログ
- エンジニアブログの再開およびテクニカルウェビナーのご案内
- 初心者のためのPython & Numpy入門
- KR260でIntel RealSenseを動かしてみた!
- Vitis HLSで足し算IPを作ってみた!(プログラミング編)
- KD240でモータ制御してみた!
- KR260でデジタル信号処理してみた! (3)
- KR260でデジタル信号処理してみた! (2)
- KR260でデジタル信号処理してみた! (1)
- KR260でロボットアームを動かしてみた! (2)
- KR260でロボットアームを動かしてみた! (1)
- KR260でROS2を使ってキャリブレーション&マーカー検出してみた!
- KR260とPynqでAIカメラを動かしてみた!
- KR260でROS2 Perception Stack Applicationを動かしてみた!【2】
- KR260でROS2 Perception Stack Applicationを動かしてみた!
- Kria SOMでTPM2.0を動かしてみた!
- VivadoでKR260のハードウェアデザインを作って動かしてみた!
- ROS2 Multi-Node Communications via TSNを動かしてみた!
- AIBOX-ReIDを動かしてみた!