スキップしてメイン コンテンツに移動

投稿

2023の投稿を表示しています

CANトランシーバーを使わずにCAN通信をする

 CANバスの物理層は差動通信で、RS485の様にマルチドロップ接続が可能。  自動車におけるノイズ環境でも通信が成立するように、トランシーバICには様々な対策が施されている。  一方で、基板にマイコンを複数載せて、例えばブロードキャストメッセージを含んだ通信をさせたいとなったとき、ハードウェアとしてデータリンク層にあたるコントローラが実装されていて、メッセージフィルタ等が可能なCANバスは魅力的だ。しかし、長くても1m未満の配線長で差動ドライバのバスを駆動するのは電力的なペナルティが大きい。 CANバスの構成  トランシーバーには5Vレベルと3.3Vレベルの製品があり、車載以外だと省電力化のために3.3Vバスを採用する例があるらしい。(電圧が低いほうがドミナント時の電流は下がるので)製品によってはフォールトトレラントのための様々な機能が付加されている。    トランシーバーをつかわず、UARTの様に単純に接続することもできる。過去にはこのようなアプリケーションノートがあった。 On-Board Communication via CAN without Transceiver https://www.mikrocontroller.net/attachment/28831/siemens_AP2921.pdf CANコントローラの入出力を1線式マルチドロップバスとしてつなぐことで、トランシーバーが無くても通信が可能になる。規格外の使い方ではあるけれど、大幅に単純、かつ省電力になる。 コントローラのみでの接続 R4 MinimaにはCANコントローラーが内蔵されているため、上記アプリケーションノートの様に接続してみた。ダイオード2個と数kΩのプルアップ抵抗だけでサンプルコードの通信ができた。 https://docs.arduino.cc/tutorials/uno-r4-minima/can  とりあえず1Mbpsでも通信できていたけれど、Lowレベルの電位が下がり切っていないので、OD出力のバッファをTXに挟むとよいかもしれない。  R4 Minimaのコントローラのみで通信させている様子(250kbps) https://github.com/sandeepmistry/arduino-CAN/blob/master/API.md ライブラリの実装は以下で確認

UNO R4 Minimaの仕様を眺める

CANバス内蔵Classicボードたち。 しかし割高になってしまった… Uno R4 Minimaを入手したので遊びつつ、どのような実装になっているのか、仕様を眺めてみた。 UNOは現在のArduino製品の中ではClassic Familyというカテゴリに入っており、歴史的なフォームファクタを継承している。ルネサス製MCUの採用で話題だけれど、5V単電源動作可能なARMマイコンとしては高機能だ。 要点としては、初学者向けのClassicファミリにCortex-M4が降りてきて、内蔵RTC、DAC出力、CANバスといった機能にもAPIレベルで対応しているという点になる。  スペックだけ見ると、反射的に3.3Vで動いてほしいとかいろいろ要望が湧いてくるが、ターゲットはあくまで初心者なのを忘れないようにする。 (いい感じの互換ボードに期待) ボードとピンマップを眺める 公式サイトのボード紹介ページでは、回路図と基板図をAltium365ビューワーで見ることができるようになっていた。回路図で抵抗を選択すると詳細が表示されるし、基板図上の実装と連携して位置をハイライトできたりする。 Minimaの実際の基板には16MHzの水晶は空きパターンとなっている。内蔵オシレーターで動いているようだ。 Minima 回路図 https://docs.arduino.cc/resources/schematics/ABX00080-schematics.pdf Wifi R4回路図 https://docs.arduino.cc/resources/schematics/ABX00087-schematics.pdf MinimaとWifi R4ではソケットに引き出されたSPIバスのマッピングが異なっている。これに伴いCANで使うピンも位置が変わっている。APIが用意されてるのにピンマップ表で表記していないのはボード依存のためかもしれない。 CANを使いたければシールド設計で対処するしかなさそう。  他にも、Minimaのソケットの3.3V出力は、Minimaのデータシートに書いてある通りMCUの内部電圧を生成しているLDOの出力を引き出している。そこまでやるのかというくらい割り切っている。  内部レギュレータから引き出せる電流量はArduinoとしては表向き載っていないけれど、ルネサス

Saleae Logic pro8

(1年前に書いていて投稿を忘れていたので放流)  ゼロ年代後半 個人的にオシロも持っておらず、プロトコルアナライザもデバッガの概念もなかったころ、デバッグ中の基板にはAMモードにした広帯域受信機(DJ-X11)を近づけて動作検証していた。   一昔前の5V動作の16bitマイコンはクロックの放射ノイズも大きく(周波数拡散クロックなんて無かった)、ループ処理の過程でピーとかザーとか激しく主張していた。UARTもRS232レベルシフタを通していたので、文字送信があるたびに  チ、チ、チ、 とリズムを奏でていた。書き込まれたプログラムが止まってしまうとそうした喧噪も止まり、ユニバーサル基板の切れ端とUEW線とリード抵抗の足の切れ端だらけの机はホワイトノイズに包まれた。  機器間通信が増え、処理性能とソフトウェア規模が肥大化し、無料版の純正ツールやフレームワークに落とし穴があることが前提な昨今、ハードウェアの挙動をリアルタイムで把握することは問題の早期解決に役立つ。  4年前に  https://www.saleae.com/ja/  のロジックアナライザ を導入して使っているが、早くから導入していればと思ったデバイスの一つ。現在はソフトウェアがLogic 2.xになり大幅に更新されている。昨今の半導体不足の流れで一度仕様変更があり、いつの間にか市販価格が倍近いお値段になっている…。 収録動作  理論上USB3.0帯域をフルで使う信号キャプチャ機器なので、レコード長はPCのメモリ容量に依存する。なのでRAM容量が許すかぎり設定したサンプルレートで連続したキャプチャを続けることができる。 ロジックの場合変化が無い区間はデータは増加しない。 負荷テストということでわざとアナログ多チャンネルの高速キャプチャを行ってみると、数秒でGB単位の信号がRAMに保存される。    開発PCのメインメモリを64GBにしたので、限界まで収録できるか実験してみたが、クラッシュせずちゃんと記録できた。  サンプルレートの最高値はUSB3.0の帯域を上限に、同時に取得するch数で割ることになる 。  パラレルバスや多数の信号を同時にデバッグするなら、値段を気にせずLogic Pro16を買っておくのが良さそう。   とはいえ、シリアルバスのモニターであれば、プロトコルトリガーをかけることができる。観

新春マクロ撮影テスト

2022年に投稿するのをすっかり忘れていたら2023年になっていた。ということで今年もよろしくおねがいします。 主題としては、手元のマクロ撮影機材を比較する話。デジタル一眼レフとしてK-70を導入して数年になるが、最近ようやく標準ズームレンズ以外のレンズとしてHD PENTAX DA のマクロレンズ 35mmF2.8 Macro Limitedを入手。   マクロ撮影の領域については、Olympus TG-5でほぼ網羅されている。ほぼというのは、手軽さを追求した結果であり、一眼で真面目にマクロ撮影をしてこなかったという背景がある。一眼のキットレンズでも数十センチ離せば基板写真は撮れるので、画質の必要な用途でも棲み分けができていた。   iPhone13proもマクロ撮影が可能だが、こちらは普段あまり使っていないので比較に加えた。 テスト撮影の被写体として、Arduino Dueを使う。適度に大きく、背の高い部品が生えていて、シルク印刷のエッジが出ているので比較には持ってこいだ。 (市場では物凄い値段になってしまっているけれど) 基板全体を撮影する HD DA Macroは端までピントを出すためF8くらいまで絞った。TG-5も画角50mm相当で撮影する。iPhone13proは標準アプリとサードパーティアプリで撮影した。 HD DA Macro 35mm 50mm相当 TG-5 50mm相当  iPhone13pro 26mm (Procamを使用) iPhone13 pro 13mmクロップ状態(標準アプリ 26mm相当)  APS-CサイズだとRAW画像の素性が良いので処理しやすい。ファインダーを覗けばピントも追いこめる。 TG-5は大抵AFで撮影しているが、実はピントが出ていない眠い画像になることが多かった。大画面で見るまで気づくのが遅れやすい。明るければいい写真が取れるし、RAW処理でノイズは目立たないレベルに持っていくことができる。  iPhone13 proはお任せで撮ると、被写体が近ければ超広角13mm 遠ければ広角26mmを使う。Dueの基板全体を写そうとフレーミングを行うと、標準アプリ上では倍率1倍表示でも、13mmカメラをクロップして撮影しており、26mmカメラの画像と比較すると塗りのキツい絵作りになっている。  高画質化のためにセンササイズ拡大を