前提・実現したいこと
パルス幅計測のプログラムを作成しております。
まずArduino Uno にてパルス幅計測 pulseIn命令を使用して
正確に計測できることを確認しました。10Hzから1.5KHz
Arduino Dueにおいて、pulseIn命令を正しく動作させるための
なにか設定などありますか?
もしくは、パルス幅計測のためのなんらかの方法はありますか?
発生している問題・エラーメッセージ
Arduino Unoで作成したプログラムをそのままArduino dueで使用した場合、
計測結果が正しくありません。
計測結果は周波数に換算していますが、
Arduino Unoで50Hzと出た結果が、Arduino dueでは39Hzから43Hzと
なり、High幅でもLow幅でも同じような結果になります。
該当のソースコード
widthHigh = pulseIn(plsHpin, HIGH);
widthLow = pulseIn(plsLpin, LOW);
widthPulse = widthHigh + widthLow;
rpmNow = 1000000/widthTotal;
試したこと
単なるpulseIn命令のみのみのため、入力ポートを変えてみたものの
同じ結果になります。
補足情報(FW/ツールのバージョンなど)
Arduino IDE 1.8.10
ボード Arduino Due(Programming Port)
Highのパルス幅はplsHpinの信号で測り、LOWのパルス幅はplsLpinの信号で測って、それを足し合わせてパルスの1周期を求めていますが、plsHpinとplsLpinに加えられている信号は何なのですか?
普通は測定したい信号は一つで、その信号のHighのパルス幅とLowのパルス幅を使って周波数を測定します。二つの別々の信号の一方からHighのパルス幅、もう一方からLowのパルス幅を測定して、それを混用する意味が判りません。
ご質問の件ですが、同じ信号を2つのピンに入力し、High幅とLow幅を計測しています。ひとつのピン入力で両方を計測してもよいのですが、短時間に計測したいので、2つのピンを使用しています。
そういう事情は質問に書いて頂くと有難いです。
ソースコードからは別のピンが使われているとしか判りませんから。
回答2件
あなたの回答
tips
プレビュー