フォト
2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
無料ブログはココログ

« 膝の上の湯たんぽ | トップページ | 無線LANルータ TP-Link TL-WR703NでWebカメラを利用する »

2013年12月14日 (土)

arduinoで4桁7セグメントLEDの表示

arduinoでの4桁7セグメントLEDの表示を行うメモです。

7セグメントLEDの基礎については、下記の記事が参考になると思います(2015/01/28追記)
武蔵野電波のブレッドボーダーズ 「7セグメントLEDを使ってみよう」
武蔵野電波のブレッドボーダーズ  「LEDは楽しい電子部品」

センサー等を付けて、測定する場合に数値を表示したいので作成しました。
電子回路の知識はまだまだ素人に毛が生えたレベルなので、こんな回路でも
まともに動かすのに意外と時間がかかります。

4桁7セグメントLED表示機能の詳細

Dscn2189

arduinoのI/Oピンの利用数を減らすため、シフトレジスタを使いダイナミック点灯にて
LEDを表示します。

利用した部品

赤色7セグメントLED表示器(カソードコモン) OSL40562-LR x 1 ・・・  秋月電子にて購入
12ビットシリアル-パラレル変換IC NJU3714D x 1 ・・・   秋月電子にて購入
トランジスタアレイ(7ch)TD62003AP x 1 ・・・  秋月電子にて購入
1/4W 330Ω カーボン抵抗 x 8 ・・・  秋月電子にて購入

NJU3714Dはポピュラーなシフトレジスタ74HC595と同じように使えます。
12ビットあるので、表示パターン用の8ビットと桁切り替え用の4ビットを1つで制御できます。

LEDに使う抵抗値の計算

秋月電子のHPに計算方法が紹介されていたので計算しました。

OSL40562-LR の商品説明およびデータシートからVF=2.0V、IF10mAとすると
   抵抗 = (5V -2.0V)  / 10mA = 300Ω となります。
手持ちの330Ωを利用することにします。

この時にカーソドードコモン流れる最大電流は1桁当たり8個のLEDが点灯するので
  10mA x 8 = 80mA
となり80mA必要です。

arduino UNOでは1ピン当たり40mAしか流せないのでこのままではLEDが
点灯出来ません。そこでトランジスタを使ってもっと多く流すようにします。

今回はトランジスタアレイTD62003APを使いました。
このICは7つ分のNPNダイリストントランジスタが入っていて抵抗やらも内蔵されているので、
直接ロジックピンに接続して利用できます。

このあたりは、『昼夜逆転』工作室(J.Sugitaさん) のホームページの
「8桁対応 7セグテストボード」の記事が大変参考になりました。

取りあえず、回路もどきを書いてみました。

01
うーん、PowerPointで書いたのでちょっと汚いです。
フリーのツールいろいろと試したのですが、データシートの図を流用できる
ようなのが無いので自分的にはPowerPointが一番楽でした。

赤線がarduinoに接続する配線です。

プログラムソース



LEDへ4桁表示するには、led_print("1234")のように文字列で指定します。
led_print("12.34")、led_print("-12.3")等の小数点やマイナス記号も指定できます。

表示処理はタイマー割り込みで20msecの間隔で行っています。
タイマー割り込みライブラリはMsTimer2を使っています。入手方法及び使い方は、
「Arduino 日本語リファレンス MsTimer2(ミリ秒単位で指定するタイマ)」を参照。

プログラム作成にあたっては、
くらんべりーさんのブログ 「特に縛りなく」「arduinoで4桁7セグメントLEDを使ってみる」
参考にさせて頂きました。大変勉強になりました。

取りあえず試作が出来たので、プログラムはライブラリ化し、電子回路は基板に
はんだ付けしてモジュール化しようと思います。

今回の回路はICを2つ使ったのですが、MAX7219というICを使うともっと回路の簡略化、
プログラムの簡略化が出来るようです。

続き :「arduinoで4桁7セグメントLEDの表示 の続き」

« 膝の上の湯たんぽ | トップページ | 無線LANルータ TP-Link TL-WR703NでWebカメラを利用する »

arduino」カテゴリの記事

AVR」カテゴリの記事

表示器制御関連」カテゴリの記事

コメント

SPI使えれば足し算でスマートにできるかも(ICを調べる気はない)

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/58756739

この記事へのトラックバック一覧です: arduinoで4桁7セグメントLEDの表示:

« 膝の上の湯たんぽ | トップページ | 無線LANルータ TP-Link TL-WR703NでWebカメラを利用する »