2024年6月10日月曜日

出入り検知器をPCB化する(その4)

 その3に引き続き次のバージョンに向けた開発を進めている。SPIインターフェイスをUARTやI2Cインターフェイスに変更するため、基板を少し手改造した。具体的にはボイスシンセサイザはUART接続に、気圧計、時計、それに新たに追加するEEPROMはI2Cインターフェイス接続に変更した。

 また音階を出したいという要望があるので送信部と同じ8ピンのPIC16F18313を使いUARTで通信する事を前提に回路を設計した。音階はICを追加しないでPIC18F27Q43自体でも対応できると思うが割り込みを使っている関係上不規則に音にブツブツとノイズが入りそうなのでとりあえず安全策をとった。I2Cインターフェイスのデバッグでは安価(\1.5K程度)な中華製ロジックアナライザが活躍した。これはPulseViewというフリーソフトを使うと単にデジタル信号を見せるだけでなくプロトコルの解析もできるので非常に便利で有効であった。次図は気圧センサー(LPS-25HB)の0x0F番目のレジスタにあるwho am i 値(0xBD)を読み出しているところ。

 I2Cインターフェイスで一番の問題だったのは時々クロックがローレベル(スレーブからの応答待ち)になったままハングアップする事である。一度ハングアップするとソフトの再起動では解決せず(I2Cデバイスにはリセット端子も無いため)一度電源を落とすしかない。 この点はスレーブからの応答待ちのないSPIが優れており、これに戻す事も検討した。そんな中でEEPROMの説明の中にソフト的にI2Cをリセットする方法が書かれていたのでこれを実装した(下図)。EEPROMはきちっとリセットしておかないと(内部状態が中途半端な時にコマンドを送ると)不正な書き込みが起こる事があるらしい。これでハングアップの問題が解決したのか分からないが必要な機能だろう。

 I2Cインターフェイスのデバッグが済んだ所でKiCADで3世代目のPCBの設計を始めたが、色気を出して最新の KiCAD 8.0 をインストールしたのが運の尽き。バージョン7.0で使っていたフットプリントの一部が使えなくなってしまった。が、いろいろ弄っているうちに何とか使えるようにできた。理由は不明。

 これを使って新しい基板を設計した。基板のサイズは前と同じである。

 前バージョンよりICが2個増えているのでこれらを詰め込めるか心配し、PICのピンの割り当てを配線がしやすいように変更したが実際にパターンを作ってみたらまだ面積に余裕があるようである。いざとなったら表面実装部品を裏面に配置する裏技もある。

 ボイスシンセサイザICにはこれまでATP3011を使っていたが、知らずに(ATP3011だと思って)ATP3012を買い、音が出なくて色々調べているうちにATP3012である事を知った。同時に両者が一部ピンコンパチブルではない事、またATP3012はサンプリング周波数が高く音質が良い事、外付けの発振子(セラミック発振子)が必要な事を知り、新しい基板は両者に対応できるよう設計しなおした(切り替え用のはんだジャンパーは基板裏面に配置した)。

 (その5へ続く)


0 件のコメント:

コメントを投稿