September 08, 2008パルス頻度をアナログ電圧に変換以前に似たような名前の記事『サーボ信号をアナログ電圧に変換』という記事を書きましたが、今度は時間あたりに何回かやってくるパルスをアナログ電圧に変換することになりました。というのもラジコンモーター用の回転数を計測(タコメーターの機能)し、それをアナログ電圧として取りこみたいという要望があったためです。 回転数を取りたいというニーズはあるようで、回転する物体に磁石を埋め込んで回転数を検出するラジコン用の部品がありました。例えばEagleTreeという製品の RPM Sensor with 4 magnetsがそれに対応すると思います。原理は単純で、埋め込まれた磁石の磁力をホールICで検出しパルスに変換、あとはそのパルスの頻度を監視すればよい、という訳です。先ほどの製品を分解された方もいるようで、製品で利用しているホールICの仕様を知ることができました。その他にも、光学的な方法(ペラが通ると光がさえぎられる)や電気的な方法(モーターを駆動しているスピコンの出力を監視する)といった方法があるようですが、マグネット方式が一番汎用性が広そうなので、ここではそういったセンサから出力されるパルスの頻度に注目することにしました。 ということで表題のとおり、パルスの頻度をアナログ電圧にマイコンを使って変換することを考えました。ここで2つの方式が思い浮かびました。一つは単位時間あたりのパルスの数を数える方式(波数方式と名づけます)、もう一つがパルス間の時間を計測する方式(同じく波長方式)です。この2つの方式を比較してみました。 結果は波長方式に軍配があがりました。というのも波数方式では回転数の計測精度をあげるためには、監視を行う一定時間、つまりサンプリング間隔を長く取らなければならず、更新頻度と精度が比例の関係にあります。一方の波長方式ではタイマーの解像度があれば、比較的短いサンプリング間隔である程度の精度を維持することができます。 実装ですが、基板は以前の記事と同じPIC16F88を使った基板に対して、ほぼコードを入れ替えるだけで機能を実現できました(ホールICによってはオープンドレインのものがあるので、センサからの入力をプルアップに修正する必要があります)。コードをこの辺りにおいておきます。 コードで注目すべきは、波長方式においては除算をしなければならない、ということに話はつきます。除算をしなければならないのは (回転数) = 1.0 / (波長) の関係にあるためですが、マイコンにとって割り算は鬼門であり、今回もご多分に漏れずsdcc-2.8.0 (build.5117)においても16bitsどおしの除算を失敗していました。 コメント
コメントする
|
検索君
スポンサード リンク
最近の記事 HDL-AAX2 シャットダウンスクリプ… 曜日を求める(8bit範囲で) Assisted GPS (A-GPS)… HDL-AAX2の修理 ExcelでMarkdownの表を編集 Rubyで確率分布の性質を求めるgem Windowsのcygwin/MSYS2… RubyでGPS姿勢推定 RubyでGPS受信機 boost::math::distrib… E-MailRelay本体更新(ver … RinRuby (Ruby gem fo… RSpecでのexample間共用のイン… 夏休みの工作: ソースコード公開 夏休みの工作: タッチセンサ GPD Pocketに増設したストレージ… GPD Pocketにストレージ増設 GPD Pocket 内蔵USBハブ基板… GPD Pocket 内蔵USBハブ基板 久しぶりの基板作成 自転車用六角穴付き特注ナット Xiaomi Mi Max (Hydro… Xiaomi Redmi Note 3 … Super Sylphide 進捗状況(… Super Sylphide 進捗状況(… かてごり~一覧 Aero & Astro (100) Computer (189) Embedded System (308) Info (14) Mountain (43) Movable Type (28) Movie & Animation (20) Music (9) Photo (47) Site Management (46) Timely (135) Tips (68) 今月かれんだ~ あ~かいぶ 最近のTrackback ダイナミックDNS 3domain.hk… @ 3年落ちのPCでまだまだがんばる日記 9X到着〜インプレ@ 艦船プラモとRCマイクロヘリが好き! USL-5P@ 谷岡のページ (PukiWiki/TrackBack 0.3) [mbed][猫カメラ]猫カメラつづき@ Embedded 脇見運転 [mbed][猫カメラ]mbed + 猫…@ Embedded 脇見運転 MT4 @ ダイナミックで動く画像リサイ…@ wed@ 私がAudionoではなくBlackfi…@ Blackfin空挺団::Blog 【Web】はぐれメタルできたよー@ I'm St'a'dying English ちっとも、作っていない@ 三D坊主 猫カメラ@ 脇見運転 To 『猫カメラ』 試作中 最近のこめんと いきなりのコメント申し訳ありません。
… by まろまろ先輩 @ GPD Pocket 内蔵USBハブ基板 音楽を読み取りする 説明して欲しいですby 榎本待子 @ iPodからPCに曲を転送 Arduino嫌いだわ。
あんなもの見…by Alice @ 僕がArduinoを使わないわけ やや遅い書き込みで失礼します。
別の機…by LOSスマホ @ Xiaomi Mi Max (Hydrogen) の MIUI8 FM Radio (stock) 日本バンド対応 >Bさま
確か当時、そこまで高くなかっ…by fenrir @ MKS Promenade-Ezy ケージ交換 お値段はおいくらでしたか?
私も曲げて…by Bさま @ MKS Promenade-Ezy ケージ交換 >forester3さん
お返事遅くな…by fenrir @ EZUSB Keilからsdccへ、EZUSB.lib等の移植 お世話になります。3年ほど前sdccの…by forester3 @ EZUSB Keilからsdccへ、EZUSB.lib等の移植 以下のものはどうですかねby て @ VBAで泣かないために >tomi9さん
コメント気づくのが遅…by fenrir @ TCM8240MD breakout (i2cで画像取得モジュール) 動作確認完了 りんく集 |