Darkside(リンクエラー修正しました)

2018年7月9日(月) 21:37

液晶が欲しい

 dsPIC のデバッグやる上で、液晶ディスプレイが無いのは決定的に不便。
 特に今回はブラシレスモーター制御という難物でもあり、LEDに頼って行うのは限界だ。

 しかしピンが余っているものでもないので、LEDをシリアル接続するのは論外。この際やむを得ないので、I2C接続にする。
 I2C接続のLEDに周辺パーツを実装し、2本線とGNDとVCCの4線接続できるようにする。使い回しを考え、基板に情報を書き込みまくった。

 秋月のだが、周辺パーツとして1μFの積層セラミックコンデンサーが2個付属していた。ところがそれをうっかりして、手持ちに1μFが無いからと10μFを取り付けてしまった。推奨容量を超過しているので、動作不良を起こすかもしれない。
 だが、更にでかい問題がI2C通信それ自体にある。

 STM32F4 Discovery でI2C通信ができるようになるまで、とんでもなく大変だった。関連レジスターを精緻な手順と順番で適切に制御しないと、通信が成功しない。ただし成功はしたので、dsPIC33 に対してモーター回転数などの指令を送ることはできる。後は、dsPIC33 側の問題である。
 だが、dsPIC33 なら STM32F4 よりマシではないかという希望的観測は通じないかもしれない。同じぐらい苦労するかもしれない。

 ソフトからI2Cを利用するのは、嫌になるほど面倒臭い。LEDに表示を出すまで猛烈に苦労しそうな予感。

 dsPIC33 試験基板側は、I2C用のピンにプッシュボタンを取り付けていた。配線を切断し、4ピンソケットを増設。ここにLED基板のコネクターを刺すだけで、ハードの準備は終わる。だが、動作確認は果てしないソフト制御を準備した末のスタートとなる。

 そんな訳でI2C関連の仕様を確認していたが、ここで大問題に気付いた。デバッグ用にLEDをI2C接続するところまでは構わない。なぜなら、ブラシレスモータードライバーとして実運用する時は、LEDなど実装しないからだ。
 問題は、ドリル戦車の頭脳として働く STM32F4 から、dsPIC33 に対してモーター回転数を送信する際の話。その通信手段としてI2Cを予定していたが、不適切であると気付いた。

 I2C通信はバッファーに溜め込むことができず、送信終了までソフトが付きっ切りになる。だから、左右2つのモータードライバーに同時送信できない。まず左のドライバーに回転数を送信し、それが終了したら右のドライバーに回転数を送信する、という感じに時間差が生じる。
 これでは、左右のモーター回転数が完全に同期できないかもしれない。
 I2Cは通信速度が遅いため、問題を無視できない。

 幸いこれまでの検証で、モータードライバーとして必要な最小構成は判明している。SPI通信のためのピンを捻出することは可能だ。
 マイコン間通信にはSPIを使用し、LEDはI2Cで良い。ただでさえ複雑なI2C通信で、複数マスター通信などという更に面倒なことを行うことなく、受信した回転数をLED表示することもできるようになる。

written by higashino [ドリル戦車] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4