LoginSignup
1
3

【Simulink】Simulink Support Package for Raspberry PiでSunFounderを動かす(2)

Last updated at Posted at 2024-04-14

はじめに

Simulink Support Package for Raspberry PiでSunFounderを動かす(1)の続き記事です。
前の記事では、Simulinkモデルの構造と実行制御部の説明をしました。
本記事では、初期化処理サブシステムについて説明します。
開発環境と想定読者については、前の記事をご確認ください。

PCA9685の初期化処理サブシステム

PCA9685の初期化を行うサブシステムを下図に示します。
各種レジスタ設定と待機処理をFunction-Call Subsystemで実行するようにモデリングしています。
MATLAB Support Package for Raspberry PiでSunFounderを動かす」の記事で書いたMATLABプログラムと同等の処理をSimulinkでモデリングしています。
それぞれのFunction-Call Subsystemの内容について、順番に説明していきます。
Initialize_Subsystem.png

ALL_LED_ON/OFFレジスタ設定

以下の4つのレジスタを順番に設定するため、本例ではFunction-Call Generatorブロックの反復回数を4に設定して、それぞれのレジスタを設定するFunction-Call Subsystemを実行しています。

  • ALL_LED_ON_L_REG
  • ALL_LED_ON_H_REG
  • ALL_LED_OFF_L_REG
  • ALL_LED_OFF_H_REG
    ClearAllLED_Subsystem.png

レジスタを設定するFunction-Call Subsystem内では、Simulink Support Package for Raspberry Pi HardwareのI2C Master Writeブロックを使用し、I2C通信でPCA9685のレジスタを設定するようにしています。
setRegister_ALL_LED_ON_L_REG.png

I2C Master Writeブロックのパラメーター設定例を示します。
I2C_Master_Write_ALL_LED_ON_L_REG.png

レジスタアドレスの値は、モデルワークスペースにMATLAB変数として定義しています。
ModelWorkspace.png

MODE1とMODE2レジスタの設定

MODE1とMODE2のレジスタを設定するFunction-Call Subsystem内を以下に示します。
I2C通信で送信するデータ(OUTDRV、ALLCALL)は、モデルワークスペースに定義しています。
ResetMode1Mode2.png

500ms待機処理

レジスタ設定を確定させるための待機処理を下図のようにモデリングしています。
時刻取得には、ROS ToolboxのCurrent Timeブロックを使用しています。
本記事内では行いませんが、ホストPCとRaspberry PiをROSネットワークに接続して、ホストPCからRaspberry Piを制御することも考えていたため、ROS Toolboxを使用しています。
WaitForSetting.png

WhileIteratorSubsystem_500ms_Wait.png

Sleepモード設定

Sleepモードのレジスタを設定するFunction-Call Subsystemを以下に示します。
Mode1レジスタの値をI2C Master Readブロックで読み取り、ビット演算をした後、MODE1レジスタを更新しています。
SetSleepMode.png

I2C Master Readブロックの設定を示します。
I2C_Master_Read_BlockParameter.png

プレスケール値の書き込み

プレスケールの設定部を以下に示します。
WritePreScale.png

Sleepモード解除

Sleepモード解除部を以下に示します。
SleepModeOff.png

リスタート

リスタート部を以下に示します。
MATLAB変数RESTARTは、モデルワークスペースに定義しています。
Restart.png

次の記事に続きます。

参考

  1. SunFounder_PiCar-V
  2. SunFounder_PCA9685
  3. TB6612 DC Motor Driver Module
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3