Armadilloフォーラム

Armadillo-IoT G3での電源電圧監視について

y-wada

2023年7月26日 8時51分

お世話になっております。
Armadillo-IoT G3の製品マニュアル6.8.2節にあるvintriggerの仕様に関して質問をお願いいたします。

マニュアルを読むと、オプションで周期設定はできるようですが、
このvintrigerの判定結果は一回データを読みだした結果から
(つまり、その瞬間の値だけを元に)判定されているのでしょうか?
それとも、複数回のサンプリング結果の平均などを元に判定が行われるのでしょうか?

以上、よろしくお願いいたします。

コメント

溝渕です。

> このvintrigerの判定結果は一回データを読みだした結果から
> (つまり、その瞬間の値だけを元に)判定されているのでしょうか?
> それとも、複数回のサンプリング結果の平均などを元に判定が行われるのでしょうか?

ユーザーランドのアプリケーション(vintriger)としては、1回だけ読み出した結果から判定されています。

vintriggerが読み出す値は、BMIC(Board Management IC)のADコンバーター機能を利用しています。BMICのサンプリングタイムは約3.8msです。

上記で回答になっていますか?

溝渕様

ご回答ありがとうございます。

> ユーザーランドのアプリケーション(vintriger)としては、1回だけ読み出した結果から判定されています。
> vintriggerが読み出す値は、BMIC(Board Management IC)のADコンバーター機能を利用しています。BMICのサンプリングタイムは約3.8msです。

1回の結果で判定されている旨、了解しました。

つまり、一定時間(例えば2秒間)電圧が規定値を下回ったら・・・という条件で判断しようとした場合は、
「vintriggerのインターバルのオプションで設定可能な範囲(1秒刻み)で周期実行させて判定結果を確認する」
または、
「自前で/sys/bus/iio/devices/iio:device0/in_voltage0_rawを周期的に確認する処理を作成する」
のどちらかが必用という認識でよろしいでしょうか。他に有効な方法があればご教示願います。

また、vintriggerのインターバルオプションで0を指定した場合の挙動はどうなるのでしょうか?
BMICのサンプリングタイム(約3.8ms)で動き続けるということでしょうか?

溝渕です。

> つまり、一定時間(例えば2秒間)電圧が規定値を下回ったら・・・という条件で判断しようとした場合は、
> 「vintriggerのインターバルのオプションで設定可能な範囲(1秒刻み)で周期実行させて判定結果を確認する」
> または、
> 「自前で/sys/bus/iio/devices/iio:device0/in_voltage0_rawを周期的に確認する処理を作成する」
> のどちらかが必用という認識でよろしいでしょうか。他に有効な方法があればご教示願います。

私も考えついたのはご提示いただいた2パターンのみです。

> また、vintriggerのインターバルオプションで0を指定した場合の挙動はどうなるのでしょうか?
> BMICのサンプリングタイム(約3.8ms)で動き続けるということでしょうか?

概ね上記ご認識で正しいのですが、サンプリングタイム(3.8ms)以外にも、ADコンバート時間や、BMICからデータを読み出す時間(大半がsystem callのオーバーヘッドと思います)があるので、3.8ms間隔でサンプリングを行うわけではありません。

溝渕様

> 概ね上記ご認識で正しいのですが、サンプリングタイム(3.8ms)以外にも、ADコンバート時間や、BMICからデータを読み出す時間
> (大半がsystem callのオーバーヘッドと思います)があるので、3.8ms間隔でサンプリングを行うわけではありません。

上記、了解しました。
ご回答ありがとうございました。

溝渕様

お世話になっております。度々申し訳ありません。
昨日の私の記載で誤りがありましたので、訂正とその確認をさせて下さい。

> つまり、一定時間(例えば2秒間)電圧が規定値を下回ったら・・・という条件で判断しようとした場合は、
> 「vintriggerのインターバルのオプションで設定可能な範囲(1秒刻み)で周期実行させて判定結果を確認する」

昨日時点で上記のように記載しましたが、vintriggerの動きを誤解しており、実際は
インターバルのオプションを設定しない場合であっても単発の電圧判定は行えないこと、かつ
インターバルのオプションを設定した場合では設定した電圧条件を満たすまでは判定結果が得られない(処理が終了しない)ため、
vintriggerのみで一定時間(例えば2秒間)の電圧低下を検出することはできないと思われます。

製品マニュアルやコマンドのヘルプを見る限り、単発での電圧判定やインターバル毎の判定結果は確認できない
という認識ですが、間違いありませんでしょうか?何か手段が考えられる場合はご教示下さい。

以上、よろしくお願いいたします。

溝渕です。

> 製品マニュアルやコマンドのヘルプを見る限り、単発での電圧判定やインターバル毎の判定結果は確認できない
> という認識ですが、間違いありませんでしょうか?何か手段が考えられる場合はご教示下さい。

「単発での電圧判定」はどのような事でしょうか?
# 質問を質問で返して申し訳ございません

「1回A/Dコンバータから電圧を読み出し、指定した電圧より上か下かを判定して表示する」ような意図でしょうか?

もし、上記理解で合ってりうのであればできません。

vintriggerは、事前に指定した電圧を越え(または下回っ)た場合に、任意のコマンドを実行するアプリケーションです。現在の状態表示を目的として作成されていません。

なので、現在の状態を取得だけしたい場合は、IIOデバイスから読み出しを行うアプリケーションを作成する必要があります。

溝渕様

お世話になっております。

> 「単発での電圧判定」はどのような事でしょうか?
> # 質問を質問で返して申し訳ございません
> 「1回A/Dコンバータから電圧を読み出し、指定した電圧より上か下かを判定して表示する」ような意図でしょうか?

文面が分かりずらくて申し訳ありません。
上記に記載いただいた意味合いで結構です。

> もし、上記理解で合ってりうのであればできません。
> vintriggerは、事前に指定した電圧を越え(または下回っ)た場合に、任意のコマンドを実行するアプリケーションです。現在の状態表示を目的として作成されていません。
> なので、現在の状態を取得だけしたい場合は、IIOデバイスから読み出しを行うアプリケーションを作成する必要があります。

上記了解しました。
アプリケーションを作成する方向で検討します。