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

投稿

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カメラの画像と比較すると塗りのキツい絵作りになっている。  高画質化のためにセンササイズ拡大を...

週末電波天文

自宅で電波観測 衛星運用で鍛えた心眼(?) を鈍らせないために、天体観測の延長で電波観測設備を構築してみることにした。   ひとつのきっかけはSkyWatcherのAZ-GTI。自動架台として数kgの物体を振り回せる能力があるのを知って興味が湧いた。  さらに21cm線専用のLNAを見つけた。SDRのオプションとして製造されたものが、安価に入手できる。  果たして都市雑音に包まれ、携帯基地局が林立する都市部という悪条件でも検出できるだろうか。   装置構成  先行事例に習い、アンテナと受信系はまず流用で済ませる。 例1  https://spectrum.ieee.org/geek-life/hands-on/track-the-movement-of-the-milky-way-with-this-diy-radio-telescope 例2  https://cyberdynesystems.ai/cheap-and-easy-hydrogen-line-radio-astronomy-with-an-rtl-sdr-wifi-parabolic-grid-dish-lna-and-sdrsharp/ 今回の実験における装置構成は以下のとおり。 Antenna: Wifi Grid dish (24dbi@2.4GHz ビーム角は10度ほど) LNA+Filter : SAWbird + H1  https://www.nooelec.com/store/sdr/sdr-addons/sawbird/sawbird-h1.html SDR          :  Airspy R2 or mini  Software  : Astro spy (SDRSharpに付属)  Wifi用のグリッドパラボラについて。同じスペックのアンテナをいろいろなサプライヤが提供していて、OEMかどうかはわからないが入手性は良い。グリッドなので多少の風があっても安心。21cm線観測だけなら天頂に向けて固定すればよいので、後述の架台は必要無い。    電動架台にはAZ-GTiを使用。アリミ...

最近の基地局

閑話  近所に某社の4G基地局が生えてきた。柱の埋設を含めて工事は半日程度で終わっていた。今どきの基地局ハードウェアがどうなっているのかを詳細に観察できて面白い。  構成自体はアンテナ3基クラスタにGNSSアンテナという一般的な構成。腕がやけに太いなと思ったらRTSという電動架台が各アンテナに取り付けられているモデルだった。 Youtubeに開発元のプロモーション映像があり見てみると、遠隔で角度指定して首振りする様子が紹介されている。動いているのをみるともはやロボットである。  PVで謳われているように、一部で電動架台が採用されるメリットはいくつかある。都市部の基地局設置場所はすでに飽和しているので、後発局の立地は必ずしも見通しが効くとは限らない。近所に背の高い建物が建ったりすれば、伝播環境は変わってしまう。後からアンテナ方向の調整を行うにしても、微調整を人の手で行うのは大変だ。  開発元は設置から調整までのメンテナンスにかかる工数削減に加え、端末が集中するエリアへの能動的なビーム制御まで提案している。ついでに衛星通信もできたりしないかな…。  PVを一通り見たあと、静かにそびえる基地局を見上げていると、制御を乗っ取られたアンテナが腕の多い深海生物のようにゆっくりと蠢き始める姿を想像してしまうようになった(終)

新AVRの内蔵温度センサを試す

 AVRにはADCの内部入力として温度センサが搭載されているものがある。シリコンダイオード方式ゆえに製造工程で特性がばらつくため、個体毎に面倒な校正作業が必要となっていた。 http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf  新しいmegaAVR-0やTinyAVR-1、AVR-DAはXMEGAの系譜なので、内蔵温度センサの校正係数があらかじめSignature ROW領域に記述されている。これを読みだしてキャリブレーションを行う手順がデータシートに記述されていたので試してみた。  Arduino Nano Everyで試せるサンプルスケッチ。    https://github.com/kentN/samplecodes/tree/main/Arduino/NANOEVERY-TEMPSENSE IDE付属のシリアルプロッタでモニタしてみると温度グラフが現れる。ホットエアでダイ温度が100℃になるほど炙ってしまったが、そのまま動作しつづけていた。 手元にあった二つのArduino Nano Everyはそれぞれ校正値を読み出すと次のようになっていた。 DEBUG: 305k, offset :-31 gain :142 DEBUG: 305k, offset :-6 gain :144  実機で比較テスト tinyPDUテスト基板  実際に温度を調節して試験してみよう。比較対象として、tinyPDUに接続してあるパルス温度センサLMT01の一つ(CH2)をQFNパッケージに張り付けた。  LMT01は高精度ADC内蔵、2端子カレントループ、温度データを約100ms毎にパルス数で出力するという面白いセンサ。-20度~90℃範囲で±0.5℃の測定精度とあるので、用途的には十分すぎる。(ただし割り込み管理が甘いとパルスカウントの取りこぼしで正確な温度を示さないことがある) テストプログラム。CH1、CH2はLMT01。CH2はMCUに張り付けている。  緑色...