🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

1986閲覧

サンプリング周波数はどの段階で決定するのかが知りたいです。

LGBG

総合スコア2

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2021/03/09 00:39

前提・実現したいこと

加速度センサから出力されるアナログ電圧値をA/Dコンバータ通してRaspberry Piに取り込みたいと考え、そのA/Dコンバータを選定しています。

応答周波数が0~1000[Hz]の加速度センサを使用する場合、1000Hzまで計測するには最低でも倍の2000Hzのサンプリング周波数が必要になってくると思います。

そのため、A/Dコンバータのサンプリングレートが3000SPSのものを購入し、電圧値を2000個連続で読み取り、配列に格納するC++のプログラムで取得しているのですが、本来サンプリング周波数が2kHzであるなら1秒間で処理が終わらなければいけないところを15秒ほどかかってしまっています。(つまりは、サンプリング周波数が2000/15=133.33...[Hz]であるため、半分の66Hzまでしか計測できていない)

この原因として、A/DコンバータとRaspberry Piの通信速度、Raspberry Piの電圧値を読み取る処理速度が遅い場合は、最も低い方にサンプリング周波数は合わせられてしまうのでしょうか?

そもそも考え方が間違っている場合は申し訳ありません。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

そりゃ処理が遅い部分があれば、その処理が終わらないことには次には移れませんので、遅くなりますね。

投稿2021/03/09 00:47

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LGBG

2021/03/09 00:53

回答ありがとうございます。ということは、コード次第である程度は改善できるかもしれないが、限界があるということですね。
y_waiwai

2021/03/09 00:58

まあ、そういうことになります しかし、秒間2000程度なら十分可能のように思えます。 が、そのそものはなし、応答速度が1000Hzだからといって、フルスピードでサンプルしなければいけないってのはなにか間違ってる気がしますが
LGBG

2021/03/09 01:24

実のところ、今後、10000Hzの加速度センサを使用したいと思っていて、30000SPSのADコンバータが搭載されたAD変換ボード(https://www.switch-science.com/catalog/3136/)を検討しています。現状はとてもじゃないですが。。 「フルスピードでサンプルしなければいけないってのはなにか間違ってる気がしますが」ぜひ、詳しく教えていただきたいです。計測したい周波数の倍のサンプリングレートが必要としか知識が無くて。
y_waiwai

2021/03/09 01:37

なにを目的としてるか、です わかりやすいように外気温センサとしときますと、 十秒に一回とかせいぜい1秒に一回のサンプリングで十分ですよね。 センサが1000Hzだからといってそこで2千のサンプリングする、ってのはどーなん?というはなしになります
LGBG

2021/03/09 01:48

分かりやすい説明ありがとうございます。用途によって必要な能力を判断しなければならないですね。 (使用用途としては、加速度をFFT解析でどの周波数が大きいかを見ようとしているので、その場合だとどうしても倍のサンプリングレートは必要になってくると考えています。)
guest

0

この原因として、A/DコンバータとRaspberry Piの通信速度、Raspberry Piの電圧値を読み取る処理速度が遅い場合は、最も低い方にサンプリング周波数は合わせられてしまうのでしょうか?

はい

投稿2021/03/09 00:48

ozwk

総合スコア13551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LGBG

2021/03/09 00:54

簡潔な回答ありがとうございます。
ozwk

2021/03/09 01:42

そもそもアナログ出力の加速度センサをADCで読み取るぐらいなら 最初からデジタル出力の加速度センサを使えばいい気もします。
LGBG

2021/03/09 02:51

確かにそうですね、検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問