2022年08月13日

1-WireマスタコンバータDS2485

1-WireはGNDと電力を兼ねた信号線1本だけで低速なデータ転送を行うシリアルインターフェイス規格です。I2CやSPIと違って基板内や基板同士の通信でなく、外部に延長することを目的としていたシリアル通信規格のため、最長で数百m以上ケーブルを伸ばしてセンシングすることが可能です。

今回、紹介するのはI2Cから1-Wireデバイスを制御するための1-Wireマスタコンバータ、DS2485です。126Byteのバッファ、0.75kbit(32Bytex3)のEEPROMを搭載しています。I2Cから1-Wireに変換するコンバータとして、従来のDS2482、DS2483、DS2484等がありますが、DS2485は細かいタイミング調整やバッファ、EEPROM等を備えています。一方、コマンド等は従来と互換性がなくなっています。また、標準では3.3V系専用で5V系には対応していません。5V系で動作させるためにはレベル変換が必要です。なお、DS2485に備えられたGPIOはユーザ側でオープンドレインIOとして利用可能ですが、データシート内のP.38のP-Channel Enableビット等があることから仕様上はストロングプルアップのP-FET制御用のIOを想定しているようです。


マイコンから直接、1-Wireを制御する場合に比べて、1-Wireマスタコンバータを使用するとI2Cからコマンドを書き込んだり、値を読み込んだりするだけで通信できるため、マイコン側の負荷が低減できます。特に1-Wireはタイミングにセンシティブなため、一般的なマイコンで実装すると1-Wireの通信中は処理が占有されてしまいがちです。そのような場合に便利なのが1-Wireマスタコンバータです。

1-Wireマスタコンバータ、DS2485の変換基板を作成して、有名な1-Wire温度センサ、DS18B20を接続してみました。


1Wire.jpg

1-Wireで必要なコマンドが1-Wireマスタコンバータに予め実装されているため、簡易に1-Wire機能を実装することが可能です。実装後の動作確認ではすんなり動作せず、原因を追ったところ、初期設定が必要なレジスタがあることが分かりました。1-WireマスタコンバータDS2485として電源投入後、Master Reset 62hコマンドくらいで、その他のタイミング等はデフォルト値で問題ありません。ただ、RPUP/BUFコマンドについてはエラッタなのか、デフォルト値から変更が必要なことが分かりました。RPUP/BUF Registerの初期値は803Chとなっており、一般的な条件では0006hに設定変更が必要です。他のレジスタはデフォルトで0006hになっているにも関わらず、RPUP/BUFだけは0006hに変更が必要なため、分かりづらく、注意が必要だと思いました。

1-Wireは省配線でありながら、1-Wire温度センサ、DS18B20の他、熱電対やEEPROMメモリ、I2C/SPIブリッジ等の様々なデバイスがあることから、色々試してみたいと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2022年07月23日

ST製気圧センサLPS25HB注意点

ST製気圧センサLPS25HBを使っていて、うまく気圧データを取得できないという問題に遭遇したため、その対処方法について紹介したいと思います。今回は秋月電子で販売されているLPS25HBの変換基板を使用しました。

現象としては一般的なI2Cデバイス同様にアドレス、レジスタを指定して、データをまとめて読み出すという流れでLPS25HBから気圧データを3byte分読み出すと同じ値のデータが3つ読み出され、意図した値が読み出せてないということが分かりました。データシートをよく見るとLPS25HBは一般的なI2Cデバイスと異なり、まとめてデータを読み出す際の自動アドレスインクリメントがデフォルトで無効化されているということが分かりました(データシートP.25)。自動アドレスインクリメントを有効化する場合はレジスタの最上位ビットに1をセットして読み出すと記載があります。自動アドレスインクリメントとは、2バイト以上のデータを読み出す際に先頭のレジスタのみ指定すると自動的にレジスタをインクリメントして一括で2バイト以上のデータを読み出せる機能です。

つまり、LPS25HBで気圧データ等を取得する場合、個々のレジスタを指定して1つずつ読み出すか、レジスタの最上位ビットに1をセットして読み出す必要があります。

例えば気圧データの場合、レジスタはPRESS_OUT_XL 0x28、PRESS_OUT_L 0x29、PRESS_OUT_H 0x2Aとなり、0x28を指定して3回読み出しするのでなく、レジスタの最上位ビットに1をセットした0xA8を指定して3回読み出しする必要があります。同様に温度の場合は0x2Bでなく、0xABを指定する必要があります。


他のST製気圧センサをざっと調べてみたところ、自動アドレスインクリメントがデフォルトで無効化されているのはLPS25HBのみということが分かりました。



製品名アドレスインクリメント有無
ILPS22QS
LPS22CH
LPS22DF
LPS22HB
LPS22HH
LPS25HB×
LPS27HHTW
LPS27HHW
LPS28DFW
LPS33K

LPS25HBを使用する際は自動アドレスインクリメントがデフォルトで無効化されていることに注意してください。一般的な多くのI2Cデバイスはアドレスの自動インクリメントが有効化されていますが、ごく稀に自動アドレスインクリメントがデフォルトで無効化されているデバイスがあります。LPS25HBに限らず、I2Cデバイスの読み出しで同じ値が読み出されるという場合は自動アドレスインクリメントの設定がどうなっているか確認した方が良いと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2022年07月02日

FPGA入門に最適なicestudio

今回はFPGA入門に最適なicestudioを紹介します。FPGAの開発をする場合、一般的にはメーカ提供のFPGAの開発環境をインストールしますが、開発環境のディスク容量が大きく、パッケージの追加等、インストール作業自体もなかなかハードルが高いのが現状です。

今回紹介するicestudioはメーカが提供する開発環境ではなく、OSSのプロジェクトの1つとしてFPGAの開発環境が開発、提供されています。対応しているFPGAは主にLattite社のiCE40系列、ECP5系列となっていますが、様々なiCE40系列の開発ボードに対応しています。今回はAliexpressで購入したIcesugar-nano開発ボードでicestudioを使ってみました。Icesugar-nano開発ボードはボード上にFPGA書き込みアダプタ、USBシリアル変換機能のマイコンが実装されているため、別に書き込みアダプタ等を購入せずに単体で書き込みや動作確認、デバッグ等を行うことが可能です。

話をIcesugar-nanoから戻して、icestudioの特徴は下記の通りです。
・一言でArduino IDEのFPGA版というイメージ
・Linuxはもちろんのこと、Windows、Macでも動作
・icestudioだけで論理合成、書き込みに対応
・インストールサイズが0.5GB前後と小さい
・評価ボードのサンプルが充実
・ブロックでの記述に対応、Verilogにも対応
・Verilogが分からなくとも、インストール後、すぐにLチカできる
・RISC-V等のブロック等もあり、様々な拡張が可能

今回はicestudio 0.9.0を利用してみました。


ice_studio9.jpg



0.9.0時点で対応しているボードは下記のようです。

ice_studio7.jpgice_studio8.jpg


様々なサンプルプロジェクトが準備されています。

ice_studio2.jpg

ice_studio4.jpg

ice_studio3.jpg

ice_studio5.jpg

ice_studio6.jpg


実際にLチカのサンプルプロジェクトを実行してみました。SelectからIcesugar-nanoを選択し、Examples→04.Muxes内の「01.Blinking Fixed LED」を選択します。

ice_studio1.jpg

右下のUploadボタンを押すと自動的に論理合成が行われ、合成が成功するとIcesugar-nanoに書き込みが行われます。

9zco1-uovw5.gif

上記のようにLEDが点滅したら成功です。デフォルトのブロックの他に有志でRISC-V等の様々なブロックが開発されているため、ブロックだけでちょっとしたFPGAの機能を実現できそうです。icestudioはまだ0.9.0ですが非常に完成度が高いと思いました。icestudioはもともとLinux環境でのFPGA開発環境のOSS、APIO等を開発してきたプロジェクトの1つで、以前からも注目していたため、今後のプロジェクトの発展が楽しみだと思いました。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2022年06月23日

メールサーバ不具合 お知らせ

2022年6月23日前後にCrescent宛のメールサーバに不具合があり、メールが正しく受信できない状況になっていることが判明しました。

2022年6月23日前後に23日前後にCrescent宛にお問い合わせ頂いたお客様はお手数ですが、再度、お問い合わせ頂くようお願い致します。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | お知らせ | このブログの読者になる | 更新情報をチェックする

2022年06月11日

ミニホットプレートMHP30

今回は先日、Aliexpressで購入したミニホットプレートMHP30を紹介したいと思います。これまで簡単な電子工作基板の実装はヒートガンを用いてリフローしていましたが、部品によってはヒートガンの風によって途中で飛んでしまったりと作業しづらい点がありました。一方で専用の温度制御されたホットプレートを買うのは保管場所も要するため、導入を悩んでました。

そこでMakersの中でも話題のミニホットプレートMHP30を購入してみました。プレートサイズとしては30mmx30mmで非常に小さいものの、ちょっとした基板のリフローであれば、十分だと思いました。


mhp30-1.jpeg

PD65W以上の出力に対応したUSB-ACアダプタを電源として動作します。



mhp30-2.jpeg

背面のAのボタンを長押しで加熱スタート、Bボタン長押しで加熱ストップとなります。また、A、Bボタンを短く押すことで温度調整等が可能です。


mhp30-3.jpeg

実際に電子基板の部品実装をしたところ、きれいにQFN部品の実装ができました。


実際に使ってみて驚いたことは単なるホットプレートというよりもUSBガジェットの延長線として完成した製品だと感じました。具体的には下記の通りです。

・USBPDで60W(20V3A)の電源供給
・ヒータ温度をLEDで表示
・USBをPCに接続でUSBドライブとして認識
・USBドライブからファームウェアアップデートや設定ファイルの書き換えが可能
・本体が倒れるとヒーターOFF&アラーム通知


plate2.jpg

USBをPCに接続した場合はPDではないため、加熱ONすると「Low Voltage」のエラーで加熱できないものの、PCからUSBドライブとして認識することでファームアップデートや設定ファイルの書き換えができるのは驚きました。

MHP30は非常に小さく、場所を取らないため、便利だと思いました。本体が小さいため、USBケーブルに引っ張られて机から落ちたりしないように気を付ける必要があると思いました。付属のUSBケーブルは非常に柔らかいため、それを使った方が引っ張られずによいと思います。また、ヒータONから数百秒程度で指定の温度になりますが、逆にヒータOFFして温度が室温程度に下がるまではそれ以上に時間を要するため、付属のシリコンカバー等を付ける等して触れた際にも火傷しないように注意が必要です。今後、MHP30を色々活用してみたいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | モノづくり | このブログの読者になる | 更新情報をチェックする