迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

2端子温度センサLMT01を試す(4)Arduinoにつなぐ

LMT01をArduinoにつないでみようと思ったのですが、LMT01のパルス列をカウントする方法がわかりません。
Arduinoに載ってるATmega328には16ビットのカウンタがあるのですが、その操作方法がATmega初心者な私にはわからないのです。
ちゃんとデータシートを読んで勉強すればいいのでしょうけど、ここでは内臓のカウンタは使わず、割り込みで処理することにしました。
LMT01のパルス列の周期は約11μSです。パルスの立ち上がりで割り込みをかけてカウント値をインクリメントすることにしました。
処理が間に合うかどうか心配でしたが、やってみるとあっさり動作しました。
前に実験したPSoC1の回路から、ロジックレベルに変換したパルス列とパルス列終了信号を読み取ってArduinoで処理してます。
右がArduinoとLCDシールドです、LCD上の桁がパルス列の数、下が温度、急いでスケッチを書いたので小数点が入ってませんが、PSoC1のと同じです。
LMT01_Arduino.jpg

恥ずかしながらのスケッチ。
パルス列はD2に、停止信号はD9に入れてます。
PSoC1の出力は前に書いたLM393を使った回路とは論理が反転してます、念のため。

 #include <LiquidCrystal.h>

// 接続ピンをして指定してライブラリを初期化
LiquidCrystal lcd(8, 3, 4, 5, 6, 7);

volatile unsigned int pulsecount = 0;

void setup()
{
  lcd.begin(16, 2);
  attachInterrupt(0, periodIrq, RISING);
  pinMode(9, INPUT);
}

void loop()
{
  while (digitalRead(9) == 1) {}
  lcd.setCursor(0, 0);
  lcd.print(pulsecount, DEC);
  lcd.print("     ");
  lcd.setCursor(0, 1);
  lcd.print(pulsecount*10/16-506, DEC);
  lcd.print("     ");
 pulsecount = 0;
  while (digitalRead(9) ==0) {}

}

void periodIrq() // interrupt handler
{
  pulsecount++;
}
関連記事
スポンサーサイト

コメント

うまくいってますね

おはようございます。面白そうなセンサーなので一連の記事を注目して拝見していました。

Arduinoの割り込みでやることを考えると、パルスのカウントだけならたぶん何とかなりそう。でもパルス完了の判定ルーチンまで入れると、タイミング的に無理っぽいなーと思っていましたが、

そうか、回路でパルス完了信号を作って、別のピンに入力する手がありました。参考になります。

コメントありがとうございます。
仕事から帰るなり脇目も振らず半田付けしてました。どうやら無事動いたようです。
スケッチは昨日のうちに出来てました。
もうちょっとスマートな方法があればいいのですが。

割込み速度の限界

この記事に刺激されて調べてみました。リンクも貼らせて頂いたのでご報告。

http://radiopench.blog96.fc2.com/blog-entry-640.html

コメントの投稿

管理者にだけ表示を許可する

トラックバック

この記事へのトラックバックURL
http://edycube.blog2.fc2.com/tb.php/866-5a42efe5

 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

ブリッジドT発振回路(3)光るランプ Oct 16, 2017
ダイソーのかぼちゃで電飾 Oct 08, 2017
ブリッジドT発振回路(2)オペアンプとっかえひっかえ Oct 07, 2017
ブリッジドT発振回路(1) Oct 02, 2017
AD587を使った基準電源【追加有り】 Oct 01, 2017
DABPを使った発振回路(5)ランプの特性、分圧抵抗を変更、コンデンサを変更。 Sep 24, 2017
DABPを使った発振回路(4)ランプ変更(修正版) Sep 18, 2017
DABPを使った発振回路(3)LEDからランプ制御へ Sep 09, 2017
DABPを使った発振回路(2) Sep 03, 2017
DABPを使った発振回路 Aug 27, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (420)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (32)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん