[過去ログ] Arduino初心者熱烈大歓迎質問スレ part25 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
267
(3): 2019/10/30(水)16:39 ID:ibOUt6Y5(1) AAS
>>254
そろそろマジレスすると
モーターの回転数を取得する方法だけど
手段はいくつもあるので参考までに

attachInterrupt()を使いモーター1回転毎に割り込みを使う(1回転1パルス前提)
モーター用のカウンターを用意
最初にモーター用のカウンターをリセットする
現在のタイマーを取得する micros()関数でμs単位で取得できる(分解性能は4μs)
モーター400回のカウントする
400回に達成したらmicros()を使い前回のタイマーからに経過時間を計算する
省5
268
(1): 2019/10/30(水)17:08 ID:ockfGgwM(1) AAS
>>267
方法としてはポピュラーなものだけど
>10nsの分解精度があるはず
ってのがよくわからないので説明よろしくお願い
質問者ではないですが
276
(1): 267 2019/10/31(木)02:13 ID:TuwdFCoT(1/3) AAS
>>268

おそらく質問者は回転数(分or秒)を求める手段として1回転の時間を測りそれを元に計算しようと試みたと思われる
1回転の時間がms単位では回転数の計算に使えない
例>1ms単位なら計算で出せる回転数は1000,500,333,250,200,166・・・回転/秒の刻みでしか計算できない
もっと細かな単位(ns)なら細かな回転数を計算出来ると思ったよう思われる

質問者の
>おっしゃる通り回転数ムラもみれればと考えております。回転数を1/10000の精度で見るために、10ns周期でサンプリング出来ればと構想してます。
この書き込みを翻訳すると
回転数を確認するために1回転の回るのに掛かる時間を1/100000秒単位で測りたい
(1/100000秒は10μsで10000nsなんだけど・・・・)
省6
277: 267 2019/10/31(木)02:16 ID:TuwdFCoT(2/3) AAS
>>271
割り込みだと割り込み後の処理によって計測可能な速度が大きく左右されるので具体的な速度は出せません。
UNOだとして単純にカウンターの変数に1足す(インクリメント)するのと数値の比較なら30サイクルから100サイクル程度じゃないでしょうか?
アセンブラで詰めればもっと早くなるとは思いますが
16Mhzで100サイクル必要なら最大160KHz程度になりますがもっと少ない可能性があります
今回の質問のようなモーターの周期なら十分に対応可能な速度で動くと思われます

また他の人も回答してますがUNOにはハードウェアでパルスなどの入力をカウントする機能が備わってます
そちらを使用すればより高い周波数のパルスをカウント出来ます
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.726s*