2021年06月26日

トランジスタテスタ

今回は先日、Aliexpressで購入したトランジスタテスタを紹介します。画面の大きさや表示画面の違い等でいくつか種類がありますが、今回購入したものはLCR-TC1です。

トランジスタテスタという名称ですが、MOSFetやダイオードや抵抗、コンデンサ等の特性をボタン1つで測定することが可能な万能テスタです。

img1.jpg

測定可能は範囲は下記の通りです。

トランジスタ電圧範囲0.01V~4.5V
ツェナーダイオード範囲0.01V~30V
コンデンサ25pF~100mF
抵抗0.01~50Mohm
インダクタ0.01mH~20H
電圧0.1~4.5V



折角なので内部を開けてみるとAtmega 324PAと電源系ICが乗った非常にシンプルな構成でした。電池は350mAhのリチウムポリマー電池を搭載していました。

img2.jpg

img3.jpg

FETではRds(オン抵抗)等も確認できるため、製品のバラつき等の確認できます。ピンアサインを忘れたFETやトランジスタのチェック、FETの故障有無の確認やコンデンサの容量チェック等、1台で多目的に使用できるため、電子工作に1台あると非常に便利です。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2021年06月19日

STM32 WDG機能注意点

今回はSTM32マイコンのIWDG(独立ウォッチドッグ)について紹介します。WDG(ウォッチドッグ)は名の通り、MPUの動作を見張る番犬です。WDGを有効化するとMPUに異常な処理が発生した場合や意図しない処理の無限ループに入ってしまった場合に異常としてMPUをリセットさせることができます。そのような異常な状態にならないようにコードを実装することはもちろんですが、意図しない電源の急激な変化や強い静電気や電磁波といった外乱によって万一、動作が不安定になった場合にWDGによってリセットさせることで自動的に異常な状態から復帰させることができるようになります。

WDGの動作原理として、監視の時間間隔を予め設定し、監視を開始します(HAL_IWDG_Init)。そのあと、コード上で定期的にWDGカウントリフレッシュ関数HAL_IWDG_Refreshを呼び出します。正常な場合は予め設定した監視時間よりも前にHAL_IWDG_Refresh関数で正常に動いていることをWDGに知らせます。何かしらの異常が発生した場合はHAL_IWDG_Refresh関数が予め設定した監視時間になってもHAL_IWDG_Refresh関数による知らせがWDGにないため、監視時間を超えた時点でWDGが強制的にMPUのリセットを実行する仕組みです。正常動作にも関わらず、監視時間に達してリセットされてしまうということがないように、ある程度余裕のある監視時間を設定すべきです。ただ、余裕にしすぎると万一、異常な状態になった場合にリセットがかかるまでに時間を要することになるため、バランスを見て設定する必要があります。例えば、長い処理ではリフレッシュ関数を所々に予め入れておくといった対応が想定されます。


STM32マイコンのWDGにはWWDGとIWDGの2種類ありますが、IWDGはMPUのメインクロック供給源から独立した内蔵32kHzクロックを使用しています。そのため、意図しない電源の急激な変化や強い静電気や電磁波といった外乱に強くなります。なお、WWDGはMPUと共通のクロックを使用するため、クロック系に異常が発生した場合はWWDGとMPUともに共倒れします。



WDGとして強力なIWDGはCubeMX上で設定可能です。一方でIWDGを使用する上ではいくつか注意点があります。

STM32_IWDG.jpg

■IWDG注意点@
IWDGはソフトウェアモードとハードウェアモードの2種類あります。デフォルトでは「ソフトウェアモード」が有効です。ソフトウェアの場合、独立クロックという面ではWWDGよりも有利ですが、外乱によってはリセットが働かない場合があります。ハードウェアモードの方が、ハードウェア上で監視するため、ソフトウェアに比べてより幅広い外乱や異常に対応することができます。

ソフトウェアモードとハードウェアモードの切り替えはCubeMX上ではできません。オプションバイトにアクセスして変更する必要があります。コード上でオプションバイトを操作する方法もありますが、簡単な方法は書き込みソフトウェアでオプションバイトを操作する方法です。

STLinkUtilityの場合はTarget→OptionBytesから下記の画面を表示させて、IWDG_SWのチェックを外すことでハードウェアモードになります。MPUのシリーズによって項目名が多少異なりますが、デフォルトがソフトウェアモードになっており、チェックを外すとハードウェアモードになる点では同じです。チェックを外してApplyをクリックすると設定がMPUに反映されます。



STM32CubeProgrammerの場合はOB(OptionBytes)のUserConfigurationから設定変更可能です。チェックを外してApplyをクリックすると設定がMPUに反映されます。

IWDG_CubePrg.jpg

■IWDG注意点A
IWDGはソフトウェアモードでは問題になりませんが、ハードウェアモードの場合、外乱により強い一方で特に注意が必要となります。一度、オプションバイトを操作してハードウェアモードにした場合、再度、オプションバイトを元に戻さない限り、ファームウェアを書き換えてもハードウェアモードが維持されます。このハードウェアモードの状態では必ずIWDG初期化関数HAL_IWDG_Initとリフレッシュ関数HAL_IWDG_Refresh関数が入ったファームが必要です。

コード上にIWDG初期化関数HAL_IWDG_Initとリフレッシュ関数HAL_IWDG_Refreshがない場合、起動直後にIWDGによるリセットが連続で発生し、コードが停止します。例えば、ハードウェアモードを有効化したMPUに対してIWDGを有効化する前の古いファームを書き込むとデバッガや入出力が停止して、応答が何もなくなり、MPUが文鎮化した状態になります。このような場合はコード上にIWDG初期化関数とリフレッシュ関数があるファームを書き込むか、オプションバイトを操作して、ソフトウェアモードに切り替えてから再度、ファームを書き込むことでまた元通りに正常に動くようになります。これらのことから、ファームを頻繁に入れ替えたりする場合は当面、ソフトウェアモードで運用した方が利便性が高いです。

今回はSTM32マイコンのIWDGについて紹介しました。特に注意点AについてはIWDGをハードウェアモードにしたことを忘れて、別のファームを書き込んだ際に全くマイコンが動作せず、何が原因か悩んだ挙句、IWDGがハードウェアモードだったことが原因ということがありました。オプションバイトはファームと独立しており、余計にややこしくなるため、注意が必要だと分かりました。数か月後の自身に知らせるためにもMPUに「IWDGハードウェア」の印を貼っておいた方が無難だと実感しました。
posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする

2021年06月12日

エアフローセンサ構造

今回はOMRON製のMEMS風量センサD6F-Vの構造を紹介したいと思います。MEMS風量センサD6F-Vは1個3000円前後でMouser等から入手可能です。親指サイズ ( 24 x14 x8mm )ながら、MEMS技術で微風の風量を安定して測定することが可能です。

D6F-V_1.jpg

2か所の爪で固定された構造のため、比較的簡単に分解することが可能です。なお、分解を推奨するものでなく、分解によって精度悪化や破損する場合があります。

airflow0.jpeg

側面の穴から流路を通って外に出るまでの気流の流れを検出します。

airflow2.jpeg

基板の表面(筐体シール裏)には2つの調整用の可変抵抗があり、基準電圧ICとオペアンプと思われる部品が実装されています。MEMSセンサ部のアナログ信号を調整してアナログ出力する回路のようです。可変抵抗はシールをはがすとアクセスできるようになっており、工場出荷時にキャリブレーションしてからシールを貼って出荷していると思われます。

airflow1.jpeg
流路側にはヒータと温度センサが一体になったMEMSセンサが実装されており、温度変化から風速を検出するようです。MEMSセンサから基板上のパッドに金線でリード配線されている構造です。MEMSセンサ部やリード部は何も保護されていないため、触らないように注意が必要です。

MEMSセンサ部はともかく、思った以上にアナログ回路部がシンプルで驚きました。肉眼では詳細は分かりませんでしたが、MEMSセンサ部分にもヒータの温度管理や温度センサの補正回路等が入っていると思われます。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2021年06月05日

エアフローセンサ

今回はOMRON製のMEMS風量センサD6F-Vを紹介したいと思います。MEMS風量センサD6F-Vは1個3000円前後でMouser等から入手可能です。親指サイズ ( 24 x14 x8mm )ながら、MEMS技術で微風の風量を安定して測定することが可能です。


D6F-V_1.jpg

風量範囲は0~3m/sとなっており、電源電圧が3.3V、出力範囲が0.5~2Vで一般的なマイコンとの相性がよいです。D6F-V以外の機種もありますが、出力範囲が1~5Vで電源電圧が10.8V以上必要なため、一般的なマイコンでは少し扱いづらいです。

D6F-V_2.jpg

製品側面の手前に小さな穴があり、手前から奥側に抜ける風量を電圧値として出力します。製品として保証しているのは0~3m/sで電圧範囲は0.5V~2V±0.15Vですが、手持ちのセンサは無風状態で0.47Vを示し、試しに息を吹きかけると最大2.66V、風速3.25m/s程度まで出力されました。製品の保証外ですが、逆向きから息を吹きかけると0.47Vから0Vまで出力電圧が低下しました。また、センサ流入口から5cmくらいの距離で手で少し強めに仰ぐと風速0.5m/s~1m/s前後のようです。

本センサは空気清浄機等にフィルタ詰まり検出を目的にしているため、風量の絶対値を正確に測定する目的には使用できませんが、非常に小型なため、例えば、換気している窓際の風速を確認したり、局所排気装置の風量を簡易的に測定することや、PC内の各箇所の冷却風量の確認や監視に最適だと思いました。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする