2025年02月08日

万年カレンダーユニット

今回は先日、スイッチサイエンスで販売開始したデバイス、万年カレンダーユニットについて、紹介したいと思います。

以前からサイズ2.13インチ、解像度250x122、消費電流14uA前後の超低消費電力LCDを活用したいと考えていました。Aliexpressの商品サイトにはe-paperと記載がありますが、電源断で表示が消えるため、厳密にはe-paperではありません。ただし、非常に消費電力が小さいことからバッテリやキャパシタを組み合わせればe-paperのように使え、高コントラストで見やすいことからこのような表現をしていると思われます。また、詳細は不明ですが、見た目や挙動からベースはシャープのメモリ液晶から派生したLCDだと思われます。

海外では高解像度、超低消費電力、高コントラストの特徴を活用したデバイスがいくつか紹介されています(hacksterhackaday)。

高解像度、超低消費電力、高コントラストの特徴を活かし、日頃からデスクサイドで活躍できそうな万年カレンダーを設計してみました。市販品の万年カレンダーは壁掛けタイプや大きなものが多いと感じていました。パソコンのディスプレイ横に置いても邪魔にならないサイズ、サイズ幅82mm 、高さ32mm、奥行30mm(突起部、USBコネクタ除く)にしてみました。


img1.jpg


マイコンは今なら低消費電力のRP2350を選択しますが、開発段階では販売されていなかったため、RP2040を使用しています。電池で駆動させるため、電源管理ICとしてプッシュボタンロードスイッチ、XC6194を使用しています。XC6194は押しボタンでON/OFFするためのロードスイッチで、ONのパルス信号を送ると、ロードスイッチがON、ラッチします。今回は押しボタンのパルス信号の代わりにRTCのINT信号に接続し、RTCのINTを1分タイマ割込に設定することで、電源管理ICからRP2040を1分に1回、起動させています。LCDの描画処理後、シャットダウン信号をRP2040からXC6194に出すことでOFFさせています。

BLEデバイスに限らず、電池駆動のデバイス開発に便利なPower Profiler Kit II (PPK2)で1分間の電流を測定したところ、平均200~300uAと分かりました。2000mAh程度のニッケル水素充電池で約1年程度の寿命を実現することができました。なお、電流や電池寿命は使用環境や使用方法によって大きく変動するため、数値を保証するものではありません。



posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2025年01月11日

RP2040 BOOTスイッチの注意点

明けましておめでとうございます。本年もよろしくお願いいたします。RP2040を実装したある組込基板を開発している中で不思議な現象に悩まされていましたが、原因が分かったため、紹介したいと思います。

不思議な現象として、電源投入後、概ね正常に起動するが、時々起動しないという現象でした。起動しない状態になった際、RSTボタンを押すとすると正常に起動しました。プログラムが意図せずハングアップしているのかと思い、watchdogを有効にしてみましたが、上手くwatchdogのRSTが働かない・・・・という現象でした。


原因としてはBOOTがLOWと判断され、意図せずに書き込みモードで起動していたようです。基板の電源仕様の影響も多少ありますが、真因としてはBOOTスイッチのチャタリング防止0.1uFのキャパシタが邪魔して、起動時にBOOT信号がLOWとして判断されていたようです。当然ながら書き込みモードではwatchdogは働かず、書き込み待機状態になっていたようです。


RP2040_BOOT_SEQ.png


RP2040のBOOTピンは外部FlashのCSピンと併用のため、起動直後にCSの状態を見て、通常起動するか、書き込みモードに入るか、判断される仕様です。RP2040のデータシートを確認するとCSのプルアップを有効にしてから100usec後にCSの状態を確認するようです。推奨回路やPico基板では10kΩでプルアップしつつ、1kΩでBOOTスイッチに接続されています。その回路そのままであれば問題ありませんが、抵抗で接続されたBOOTスイッチに更にキャパシタがあるとローパスフィルタとなってCSの立ち上がりが遅くなります。それにより、電源投入直後にCSがLOWと判断され、意図せず書き込みモードに入っていたようです。

電源の立ち上がりや最初のBOOTローダの起動時間を無視して、単純にCRのローパスフィルタとして考えると、抵抗は合計11kΩ、キャパシタは0.1uFなので、立上りは約2msecとなり、起動時の100usecに間に合いません。100usecに間に合わせるためには理論上、キャパシタを3.3nF程度より小さくする必要(3.3nF→立上り84usec)があります。

RP2040_BOOT_SW_Capacitor.png
今回のRP2040を実装した組込基板はRP2040自体の電源をロードスイッチで管理する仕様だったため、通常の電源の立ち上がりに比べて緩やかであったことも多少影響していると思われます。

プッシュボタンスイッチがあるとチャタリング防止のため、習慣として0.1uF程度のキャパシタをパラに入れてしまいますが...Picoの標準回路同様にRP2040のBOOTスイッチにおいてはチャタリング防止のキャパシタを入れるのは避けた方がよさそうです。もし、入れるとしても0.1uFではなく、1nF程度の十分に小さなキャパシタに限られます。RP2040の他、最近リリースされたRP2350、RP2354等のBOOTスイッチは外部FlashのCSピンと併用のため、BOOTスイッチ周辺の回路設計には注意が必要だと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2024年11月09日

Web ADC Tool

以前にWeb HID APIを用いたMCP2210とWeb HID APIでブラウザを介して磁気エンコーダの動作確認をする通信するツール、Web USB Encoder Toolを紹介しました。今回はWeb HID APIとMCP2210を応用して、ブラウザを介して簡単にSPI接続のADコンバータ、MCP3208やMCP3204と通信するツール、Web ADC Toolを実装してみました。

WebAdcTool.png


対応するADコンバータはMicrochip社製のMCP3208、MCP3204に対応しています。ADコンバータの動作確認や接続確認等に便利です。接続後、Start/Stopボタンを押すと各チャンネルを順番に200msec毎に変換して電圧値が更新されます。Web HID APIに対応したブラウザはEdgeもしくはChromeのみ対応となっており、24年9月時点ではFirefoxやSafariは対応していません。Web HID APIを用いることで専用のソフトウェアなしでブラウザ単体で様々なツールを実装できるのは非常に魅力的だと思いました。今後もWeb HID APIを用いた応用的な機能を開発して順次公開したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2024年10月12日

GreenPAK Writer

以前にプログラマブルデバイスGreenPAKを紹介させて頂きましたが、今回はUSBシリアルI2C変換基板V2[スイッチサイエンスElecrow]を使って何度も書き換え可能なMTPタイプのGreenPAKに書き込みを行うツール、GreenPAK Writerを開発しましたので、紹介したいと思います。MTPタイプのデバイス、SLG46824 /SLG46826 /SLG47004にプログラムを書き込む方法として、下記の方法があります。

1. 専用のデバッガ書込ツールSLG4DVKGSD
 販売サイト[秋月]、[Digi-key]、[Mouser]


3. マイコン等からの書込



開発環境Go Configure Software Hubからデバッグや書込が可能な1.のSLG4DVKGSDが王道ですが、流通量が少ないようで、在庫なしのタイミングが多々あるのが難点です。その次に多いのは2.のArduinoからの書込ですが、コード上にプログラムを埋め込んでいるため、プログラムを変更する度にArduino側も書き換えが必要なため、手間が非常にかかります。既に確定したプログラムを大量に書込する場合は2.や3.が便利ですが、試行錯誤しながら使用する場合で、1.を使用しない場合は非常に不便でした。そこでUSBシリアルI2C変換基板V2を使ってEdgeやChrome等のブラウザから簡単に書込可能なGreenPAK Writerを開発しました。


GreenPAK_Writer.png


Web Serial APIを活用して、ブラウザから直接、COMポートを介してI2CデバイスのGreenPAKを制御しています。そのため、スクリプトはすべてブラウザ内で完結しているため、クラウド等を介さずに書込や読込等の操作をすることが可能です。

Connection.png

使用方法は下記の手順で行います。
@事前に上図のようにUSBシリアルI2C変換基板V2のRST端子とIO0をケーブルでジャンパさせます。
AUSBシリアルI2C変換基板V2とGreenPAKをI2Cで接続してPC等のUSBポートにUSBシリアルI2C変換基板V2を接続します。
BGreenPAK Writerにアクセスして、接続後、ControlCode(I2C Address)をPing機能で確認します。多くのデバイスの初期状態は0x01(0x08)です。
CNVM消去を行います。
DGo Configure Software HubのExportからhexファイル形式を選択してエクスポートして、そのファイルをGreenPAK Writerに読み込ませて、NVM書込を実行します。
EGreenPAKの電源を一旦切ってから再度、投入すると書き込んだプログラムが実行されます。

GreenPAK_Export1.png

GreenPAK_Export2.png


なお、@でRST端子とIO0をジャンパさせる理由はSLG46824/SLG46826でNVM消去時にACKを返さないというエラッタがあるためです。エラッタによってI2Cに準拠しない挙動をします。そのため、消去時にI2C通信エラーが毎回発生して以降のI2C通信ができません。対策としてページ消去ごとにUSBシリアルI2C変換基板V2内のSC18IM704をリセットさせて、I2C通信エラーを強制的にクリアさせています。SLG47004ではこのようなエラッタはありませんが、共通仕様としてSLG46824/SLG46826に合わせてジャンパさせてください(ジャンパなしの場合、処理が進まない場合があります)。

また、GreenPAKの設定メモリの書き込みや削除は1ページ16byte単位となっており、1ページ毎に書き換える必要があります。USBシリアルI2C変換基板V1ではSC18IM700を搭載しており、バッファサイズが16byteです。コマンドやアドレスを含めると20byte以上になり、バッファサイズ16byteを超えるため、書込ができません(分割して書込できない)。そのため、バッファサイズが256byteに拡張されたSC18IM704を搭載するUSBシリアルI2C変換基板V2のみ対応しています。なお、現在販売[スイッチサイエンスElecrow]しているUSBシリアルI2C変換基板はすべてSC18IM704を搭載したV2です。

MTPタイプのデバイスはSLG46824/SLG46826/SLG47004の他に先日発表されたSLG46827もありますが、まだ入手できていないため、使用可能か現時点では不明です。個人的にはSLG46824/SLG46826よりも、エラッタがなく、アナログ機能が強化されたSLG47004が好みです。SLG47004を活用したデバイスを今後、紹介したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2024年04月20日

Web USB Encoder Tool

以前にWeb HID APIを用いたMCP2210とWeb HID APIでブラウザを介して通信するツール、Web USB SPI Toolを紹介しました。今回はWeb HID APIとMCP2210を応用して、ブラウザを介して簡単にSPI接続の磁気エンコーダの角度を読み込むツール、Web USB Encoder Toolを実装してみました。


WebUsbSpiEncoder.png

対応する磁気エンコーダはAMS製のAS5048A、MPS(Monolithic Power Systems)製のMA730/732に対応しています。ちょっとした動作確認や接続の確認等に便利です。接続後、開始/停止ボタンを押すと200msec毎に角度を読み込んで値が更新されます。

Web HID APIに対応したブラウザはEdgeもしくはChromeのみ対応となっており、24年1月時点ではFirefoxやSafariは対応していません。Web HID APIを用いることで専用のソフトウェアなしでブラウザ単体で様々なツールを実装できるのは非常に魅力的だと思いました。今後もWeb HID APIを用いた応用的な機能を開発して順次公開したいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする