GetQのページ

   (2011/07/25作成)
   (作成中)

係数カウンター

安易ですが、ガイガーカウンターの検出パルスを取り出してカウントするものをMB+OBで作ってみました。
使ったGMカウンターは、SBM20を使用しているC6979セットです。

このC6979というキットはどうも長時間の計測に向かないらしく、3時間ほど電源を入れっぱなしにするととたんに検出時のパルスが弱弱しくなります。そのため、1時間に1回、10分だけ計測するようにMB側で制御しています。


とりあえずこの手の工作もCのプログラムも初めてですが、何とか動いてます。
動画が取れるのが携帯しかないんで画像が汚いですが、下のような感じです。

20110710:C6979とMB+OBをケースに入れてみました。
左側がC6979、右側がMB+OBです。電源は9Vですが、ひとつの電源から共用で取れるようにしています。

これがMB+OBのアップ。データは一時間に一回、5日分の測定値ををプロットするように変更してあります。


16X2キャラクタLCDの接続

とにかく何でもやってみよう、ということで、よく見る16X2のLCDをつないで見ました(34mmX34mmからはみ出した、こんなでかいものを繋ぐのはOKなの?というのはおいておきます)。

何とかちゃんと動いてます。
ピン配置は次のとおりです。
LCD:01(+5V)-MB:CN1_2(Vcc5)
LCD:02(GND)-MB:CN1_1(GND)
LCD:03(Vo )-可変抵抗-GND
LCD:04(RS )-MB:CN4_7(PIO0_9)
LCD:05(RW )-MB:CN4_5(PIO0_8)
LCD:06(E )-MB:CN4_3(PIO0_6)
LCD:07(DB0)-
LCD:08(DB1)-
LCD:09(DB2)-
LCD:10(DB3)-
LCD:11(DB4)-MB:CN3_7(PIO0_5)
LCD:12(DB5)-MB:CN3_5(PIO0_4)
LCD:13(DB6)-MB:CN3_3(PIO0_2)
LCD:14(DB7)-MB:CN3_1(PIO1_8)

ただ出力できました、だとつまらないので、制御用APIを作成しました。
作成に当たっては、undemande様のdelay()関数と、圓山様のOLED_printf()関数をそのまま流用させていただきました。申し訳ありません。

LCD制御用API
void Init_LCD1620(void);
LCDを初期化し、コマンドが送れる状態にします。

void LCD1620_Screen_Cfg(int mode);
LCD画面の設定を行います。modeの値は次のとおりです。
  • ONE_LINE_5x7FONT:1行表示5X7フォント
  • ONE_LINE_5x10FONT:1行表示5X10フォント
  • TWO_LINE_5x7FONT:2行表示5X7フォント

void LCD1620_Screen_mode(int mode);
文字とカーソル表示の設定を行います。modeの値は次のとおりです。
  • DISPLAY_OFF:表示しない
  • DISPLAY_CHAR:文字表示のみ
  • DISPLAY_CHAR_BLNK:文字、ブリンク表示
  • DISPLAY_CHAR_CRSR:文字、カーソル表示
  • DISPLAY_CHAR_CRSR_BLNK:文字、カーソル、ブリンク表示

void LCD1620_Clear_Screen(void);
画面をクリアします。

void LCD1620_printf_Position(uint32_t posx , uint32_t posy);
LCD1620_printf()で表示する先頭位置を指示します。

void LCD1620_printf(const char *format, ...);
LCDに文字を表示します。サポートしているフォーマットはOLED_printf()と同じです。
なお、文字を表示する際に、表示位置が1行目16桁目になったときは自動的に2行目の先頭に回りこみ、2行目16桁目の時は1行目に回りこみます。

ここにAPIとサンプルをおいておきます(ソースを晒すのは恥ずかしいですが)。
lcd1602.h lcd1602.c main.c
  • ブレットボードでは、外出難しいでしょうね。どんなケースに入れるのか楽しみにしています。 -- gingax (2011-07-09 09:15:07)
名前:
コメント:
最終更新:2011年08月01日 23:41