Simulinkで型​の異なる8bitのデ​ータを結合してint​16に変換する方法に​ついて

SimulinkとArduinoを用いてIMUの加速度データを取得して制御に利用したいです。
IMUでは符号付き16bitのデータが得られるのですが、マイコンへの送信で上位・下位で8bitに分割されます。
Simulinkでは分割された8bitずつのデータが送られ、分割されたデータを統合して再び元の符号付き16bitにしたいのですが方法が分かりません。
何か良い方法を教えていただけたら幸いです。
使用環境は以下になります。
MATLAB/Simulinkのバージョン R2018b
使用しているToolBoxはSimulink Support Package for Arduino Hardware 18.2.0

4 件のコメント

Atsushi Ueno
Atsushi Ueno 2021 年 12 月 5 日
分割された8bitずつのデータの型は何ですか?
maeda777
maeda777 2021 年 12 月 5 日
状況を正確に説明できていなくてすいません。
IMUでは符号付き16bitの加速度情報を取得しますがArduinoとの通信(I2C方式)ではその16bitを単純に8bitで半分に分割して通信しています。
そのため,分割された8bitずつのデータには明確な型は存在していません。
Atsushi Ueno
Atsushi Ueno 2021 年 12 月 5 日
Simulink Support Package for Arduino HardwareのI2C Readブロックならデータタイプをint16に設定できる様ですが、8bitで半分に分割して通信しなければならない何らかの理由があるのですね。
maeda777
maeda777 2021 年 12 月 5 日
IMU自体がデータを8bitに分割して送信してきています。
異なるレジスタアドレスで上位と下位の8bitを送信してきているため,素直にint16で受信ができないです。
使用しているIMUはMPU6050です。

サインインしてコメントする。

 採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 12 月 5 日

0 投票

Simulink Support Package for Arduino Hardwareに質問の操作を意図した良いブロックがあるかも知れませんが、Simulinkのブロックで作るなら下記のように型変換・ビットシフト・加算の組み合わせで実現できます。

1 件のコメント

maeda777
maeda777 2021 年 12 月 5 日
素早い対応ありがとうございます。
試してみようと思います。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2018b

タグ

質問済み:

2021 年 12 月 5 日

コメント済み:

2021 年 12 月 5 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!