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

投稿

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を使用。アリミゾプレートをアンテナ基部に固定することで、ワンタッチで装着できるようにしてある。構築を始めた当初は入荷待ちだったため、先にAZ-PRONTO(手動経緯台)を入手して始めた。単体入手だと品薄なのだが、

最近の基地局

閑話  近所に某社の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に張り付けている。  緑色はLMT01で、青緑が内蔵センサ出力。内蔵センサ出力は1℃刻みなので階段状に遷移していく

新しいAVRのメモ(2020~)

新AVRのラインナップが増えたので整理した。(2021年更新)  現時点でラインナップに上がっている新しいAVRのシリーズの周辺機能を、旧来のものと比較してみると次のようになる。(TinyAVR-2はこれを書いていた2月時点ではまだ評価ボードの出荷のみだった)  AVR-DA/DB TinyAVR-2 共通項 ・12ビットADCを内蔵した ・Vref電圧が使いやすくなった(ADCのビット数に合わせた値に) ・バス数の増加 TinyAVR2 ・USARTが2chとなった ・ADCはプログラマブルゲインアンプ(PGA)を内蔵。 ・DACは外部出力が削られた(内部ではアナログコンパレータやADCの入力へ繋げられる) AVR-DA ・全電圧範囲で24MHz駆動できる ・10bitDAC搭載 AVR-DB ・DAの特徴に加えアナログ機能へ特化。OPAを3つ内蔵 ただしタッチ検出機能は削除 ・主クロックに外付け水晶が使える(XOSCHF) ・ポートCのI/O電源電圧は独立して設定できる(双方向レベルシフトできる)  新シリーズはどれも、アナログ機能の高精度化が施された。もともとXMEGAは12bit SAR ADCだったけども、レジスタ構成は結構違うし、Vrefなどの構成を見るとPICへ寄ってきているように見える。パッケージはDIPまであるので入門もしやすい。  TinyAVR-2は3㎜角のパッケージでもUARTが2ch使えて、12bitADCが載っている。Tinyと名がつくがCPU仕様は乗算器含めて共通なので、メモリとROM容量以外の処理能力はmegaAVRと一緒だ。  AVR-DA/DBはmegaAVR-0の上位互換となる。ピン互換もあり、ペリフェラル/ROM/RAMは増加し、64ピンパッケージが用意されている。 一番は内蔵オシレータへ手が加わり、電圧を気にせず最大周波数で動かせるようになったこと。(XMEGAでも最大クロック時には2.7Vが下限だった) ※ただし、DAはDBと違ってXOSCHFは無い。  トラ技2021年4月号によると、コア部はレギュレータで別電圧とのこと。今までのシリーズとはコア設計が変わっているようだ。  5V単電源でも動作し、集積度が低く頑丈なMCUが必要な領域というのは存在する。 ここまでくるとDMAを駆使して多チャンネルのバス通信処理をオフロード

電源管理モジュールの製作

2021年が始まった。去年も仕事はあったけれど、納品先に実際に出向いたのは一度だけだった。 日常がじわじわ侵食されていく中、今年はどうなることだろう。   そういう状況下では、実験装置の構成を、どこでも誰でもできるようにしておくという作業がたくさん出てくる。 最小限の装置でPC単体での遠隔開発が行えるような手段。似たようなものはお仕事でもワンオフで何度か作ってきて、今までも役立ってくれている。ということで昨年は仕事の合間に組み込み部品としての試作をいろいろ行っていた。  実際のところ、単体ではマイコン付きFETとシャントモニタでしかない。最近遊んでいるTinyAVR-0をMCUとして載せている。 機能としては以下のとおり。 ・電源ONOFF制御 ・INA226による0.5mA単位 ~4A程度までの電流測定、アラート通知 ・電圧(スイッチ前後)の測定  セルフチェック機能 ・コマンドサーボのようなデイジーチェーン接続 ・拡張性 端面スルーホール加工にしてみた。他の基板への実装も簡単。 USB端子がついた基板は、TinyAVR-0つきFT234Xが載ったUSBシリアル変換器。UPDIプログラマ化できる 試作例1  試験コントローラ 試験用冷蔵庫に入れて、庫内で電源制御や温度監視をさせてみた。 温度センサにはLMT01を複数繋ぎ、庫内や測定対象に取り付ける。 制御例。MegunoLink上でプロットと電源制御を行った例。 試作例2 試作OBC基板の電源制御、モード管理、状態監視 開発中にOBCの電流値を参照したり、電源制御段階ごとの異常検知や、ブートモード切替などをソフトウェア上から行える。実装と冗長性の検討が長引いて回路図段階で何回もやり直したおかげか、試作一号機はとりあえず元気に稼働し始めた。   たいていのシステムには複数の機能別ボードや異機種コントローラが内包されているものだけど、それらの動作を最適化しながら、HILS的なシステムを作りあげるのは結構大変。  個人的に、まずはベースバンド部、アプリケーションプロセッサ、ストレージみたいなまとまりを作りこむために、共通化配線とI/F基板1つでPCにつないで開発できることを目標としている。(電力規模100mW~1W以下)

Raspberry Pi High Quality Cameraを試す

https://www.raspberrypi.org/products/raspberry-pi-high-quality-camera/  ソニー製の1/2.3型 12Mピクセルのセンサモジュール(High Quality Camera)がPi Cameraのラインナップに加わった。    個人的に手持ちの産業用ズームレンズを評価するのにちょうどよさそうなので入手してみた。 背景としてはCマウントレンズがガラクタ箱の中でなぜか増殖しており、我に返ってみれば、Cマウントレンズ沼の中に膝まで浸かっているのだった。  1/2.3型といえばハイエンドスマートフォンでもおなじみのフォーマットだけれど、フルサイズ比で倍率は約5.6倍となる。同じ画を撮るための焦点距離が短くて済む利点がある。OlympusのTGシリーズや、Nikonの超望遠コンデジなど尖った製品も多い。  カメラとして、このクラスのセンサでレンズ遊びをするなら、中古市場でPentax Qシリーズを手に入れて、各種マウントアダプタを漁るほうが満足度は高いかもしれない。   センサ基板はしっかりした金属製マウントに取り付けられている。三脚穴もついておりテストしやすい。バックフォーカス調節リングが取り付けられており、Cマウントレンズ毎にバラついている無限遠点を微調整して合わせることができる。単焦点レンズでは不要なこともあるけれど、特にズーム機構を持つレンズではフォーカスリングの表示と一致させる調整が必須となり、マウントだけでもかなりの価値がある。 バックフォーカス調節リングは、マウント上のマイナスネジを緩めて、すこしテンションが無いと動き始めないので注意。  IRカットフィルタもついているが、これはユーザーが取り外すこともできるようになっている。ただし外すと保証は受けられないようだ。  基板とマウントは低粘着シートを介して封止してあり、光と埃等の侵入を防いでいる。 基板とマウントのネジはシリコーンスペーサだけで固定されているため、レンズの荷重を基板側のネジ穴で支える構造はやめたほうがよい。 カメラシステムの作成  個人的には屋外のRaspi地上局に接続して、星空を連続撮影する全天撮影カメラにしてみたいが、まずは使い勝手の良い実験用システムの構築が必要だ。  今回は手持ちのPi zero Wをベース