立命館大学 大学院 講義資料
(C) by T.IZUMI @ Ritsumeikan U, Apr 2021 - 無断複製・再配布を禁ず
Zynqによるモーター制御
0. Zybot-R の Servo&Motor
まずZybot-RのMotorの仕様と接続を確認する。特に★のついた資料は後で必要になる。
Servo Motors
Motors
設計条件の確認と検討
これらZybot-Rのモータを制御するPWMを設計する。
これまでの講義と演習の内容、仕様書、設計ファイル、実機をよく確認し、
さらに自身で仕様を検討して、
以下の下線部・空欄を埋めよ。
- PWM とは_________の略である。
- サーボモータのPWMの周期は_____にする。
- サーボモータのパルス幅は最大_____、最小_____にする。
- 車輪モータに対して、HB5のDIR信号で_____をEN信号で_____を指示する。
- HB5のSA,SB信号で車輪モータの_____を計測することができる。
- 車輪モータの出力制御のPWMの周期は_____にする。
- PL部のクロックは_____である。
- PWMを実現するためのカウンタは___bitにする。
- 次の信号が接続されているコネクタ、ピン、信号名をまとめよ。
信号 | コネクタ名 | コネクタ ピン番号 | FPGA ピン番号 | Verlog記述中 の信号名 |
入出力 の方向 |
---|
カメラ上下サーボの制御信号 |
Pmod JD |
9 |
V17 |
jd9 |
output |
カメラ左右サーボの制御信号 |
| | | | |
右車輪モータのDIR信号 |
| | | | |
右車輪モータのEN信号 |
| | | | |
右車輪モータのSA信号 |
| | | | |
右車輪モータのSB信号 |
| | | | |
左車輪モータのDIR信号 |
| | | | |
左車輪モータのEN信号 |
| | | | |
左車輪モータのSA信号 |
| | | | |
左車輪モータのSB信号 |
| | | | |
設計の基本方針
以下では、
Zybot-Rのモーター制御のためのPWM制御回路を自身で設計する。
次の基本方針に沿って設計するとよい。
- 前の演習の設計をベースに追加・改造する。
- 汎用的なPWMモジュールをPL部の回路として設計する。
(使いまわす。必要に応じて、これを部品としてより複雑なモジュールを設計する。)
- まずはPL部のみで設計・動作テストを行う。
- PS-PL間のGPIOを増設してPWMモジュールと接続する。
- PS部のプログラムでPWMモジュールを制御する。
- (初級)カメラ用サーボモータの制御。
- (中級)サーボモータのデフォルト位置(値0での位置)を可動範囲の中心にする。リセット時にデフォルト位置になるようにする。(安全設計)
- (中級)車輪モータの出力、方向の制御。
- (中級)パルス幅の上限、下限を設定できるようにする。(安全設計)
- (中級)パルス幅出力を繰り返し(車輪出力制御用)と単発(カメラ角度制御用)で切り替えられるようにする。
- (上級)車輪モータの回転数・回転方向の測定。
- (上級)車輪モータが目標回転数になるように制御する。
回転数を検知して出力をフィードバック制御する。
参考:いずみサンプル設計の仕様
- axi_gpio_1, port 1 に上下カメラ用PWM値を出力する。
ゼロで中央位置、マイナス値で上、プラス値で下。
- axi_gpio_1, port 2 に左右カメラ用PWM値を出力する。
ゼロで中央位置、マイナス値で右、プラス値で左。
- axi_gpio_2, port 1 に右輪用PWM値を出力する。
ゼロで停止、マイナス値で後退、プラス値で前進。
- axi_gpio_2, port 2 に左輪用PWM値を出力する。
ゼロで停止、マイナス値で後退、プラス値で前進。
- axi_gpio_2, port 1 から右輪の回転数を入力する。
電源投入時点でゼロ、前進するとカウントアップ、後退するとカウントダウン。
- axi_gpio_2, port 2 から左輪の回転数を入力する。
電源投入時点でゼロ、前進するとカウントアップ、後退するとカウントダウン。
- linaro版のPWM制御と仕様がことなるので注意!
- Vivado プロジェクト名: zynqpwm,
ファイル名: zybo_top_pwm.v(前の演習のzybo_top.vを改造), pwm.v(新規設計), uart.v, hex2oled.v, zybo.xdc, debug.xdc(これらは前の演習のまま)
- SDK プロジェクト名: testpwm, ファイル名: testpwm.c(前の演習の testgpio.cを改造)
1. PWM制御回路の設計
- 自分自身のPWM制御回路を設計せよ。
- 実機動作確認せよ。
2. PWM制御回路用テストプログラムの設計
- 自身のPWM制御回路をPS部に接続せよ。
- テストプログラムを設計せよ。
- 実機動作確認せよ。
※PWMモジュールのデバグがうまくできない場合、
プロセッサを使わずにロジックだけでPWMモジュールをテストするサンプル
zynqpwmtest.tgz を参考にする。
※自身での設計を途中でギブアップした場合、サンプルの生成結果
zynqpwm_generated.tgz を使用する。
Vivado IDE で
ハードウェア情報に zynqpwm/ZYBO_top.xsa および
PL部をプログラムするビットストリームに zynqpwm/zynqpwm.runs/impl_1/ZYBO_top.bit を使用する。
-1. Verilog の復習が必要な方へ
まずはLチカでリハビリすべし
- 1Hz程度、Duty比1:1でLD3を点滅させよ。
- 1Hz程度、Duty比3:1でLD3を点滅させよ。
- 2Hz程度、Duty比3:1でLD3を点滅させよ。
- SW3で周期、SW2で点灯時間を変更できるようにせよ。
- PSから周波数、Duty比を変更できるようにせよ。
Duty比 = 点灯時間 : 消灯時間 である。
(1)~(4) はPSを使わずPLのみで実現すること。
いずみ研的リハビリ課題
泉 知論
@
立命館大学
理工学部
電子情報工学科
その他の講義&演習資料はこちら