【FPGA】ZyboにモータドライバとDCモータを2つつないでスイッチで動かしてみる(FPGAとDCモータで遊ぼう日記3日目)

投稿日:2021年10月3日
最終更新日:2021年10月3日

ZyboでDCモータを2つつなげてみる

前回はZyboでDCモータ回してみたが、このモータドライバPmodDHB1は2つDCモータを接続することができる。そして実はDCモータを2つ買っていたので、今回はRTLを少し書き換えてDCモータを2つ回せるようにしてみる。

 

開発環境

Windows 10

Vivado 2020.1

Zybo(Zynq-7000、型番410-279)

Digilent 290-008 DC Motor/Gearbox (1:53 Gear Ratio) × 2個

Digilent 410-259 PmodDHB1

 

実際に回している様子

普通にモーターを2個回すだけだとちょっと面白くないので、3Dプリンターでクランク機構を作ってちょっとしたロボットのようなものを作ってみたのが以下の動画↓

なお、本題から外れるが3Dプリンターで色々つくっている日記もやっているので、興味があれば覗いてみてください。

【3Dプリンター】3Dプリンターで遊ぼう日記 まとめ

 

ZyboでDCモータを2つ回すプロジェクト

前回同様、特にIPは使わずに自作のRTLのみでモーターをZybo上のスイッチで制御できるようにした。RTL + xdcファイル + Tclの形式でプロジェクト一式を以下に置いてある。

https://github.com/WakkyFree/FpgaDCmotor/tree/master/DCmotorTestDouble

Tclファイルからプロジェクトを作成する方法は以下を参照。

【FPGA】Vivadoのプロジェクトをtclから生成する

 

モーターを制御するRTL

基本的には前回のモーターを1個回したRTLと内容は同じなので、差分のポイントだけ書いておく。といってもいじったのはtopモジュールのzybo_topくらいで、Zybo上のスイッチSW1、BTN2をinputとして追加して、2つめのDCモータ制御モジュールのmotor_controller2に接続して2つめのDCモータを制御できるようにしている。

そしてMOTOR_EN2、MOTOR_DIR2のoutputは、モータドライバPmodDHB1に接続している。

module zybo_top (

input         CLK,
input         RST,
input         SW0,
input         SW1,
input         BTN0,
input         BTN1,

output [3:0]  LED,
output        MOTOR_EN1,
output        MOTOR_EN2,
output        MOTOR_DIR1,
output        MOTOR_DIR2

);

今のところはDCモータは常にMOTOR_ENをHIGHにして回しているが、モータドライバ、DCモータはPWM制御に対応しているので、次回からはmotor_controller.vの中身をいじって、PWM制御をできるようにしてみたいと思う。

 

日記まとめ

ZyboとDCモータで色々と試してみた軌跡を以下でまとめてます。興味があればどうぞ。

【FPGA】ZyboでDCモータを回そう日記

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください