10月頃に試行錯誤したことを備忘録として残しておきます。
(実用的な内容ではないですが)
大型の7セグLEDの入手と方針の決定
今後のために大型の7セグLEDを使用するためのノウハウを身につけたかったことと、
これまでGPIOピンからそのまま引っ張るものばかりで、昇圧/降圧するものは工作したことがなかったため、
大型の7セグLED(VF値がGPIO電圧よりも大きいもの)で試行錯誤してみることにしました。
ネット上で電子部品屋さんを中心にいろいろと探してみたのですが、思ったような大型の7セグLEDを見つけることができませんでした。
最近はマイコン用の小型液晶モニターも普及していますし、大型7セグLEDのニーズが少なくなっているのかもしれません。
やっとのことで見つけたのは協立エレショップさん。
「大型7セグ」などのキーワードで絞ると数種類見つかります。
調べた時点では全てアノードコモンでした。
商品紹介のBlogの方には参考回路図も載っています。
参考
文字高127mm!低価格!大型7セグメントLEDが入荷!デジットBlog
※7セグLEDの種類・色によって順方向電圧(VF値)が異なるため50101BS以外の場合はご注意を。
方針を決める
大型の7セグLEDを入手したので、いろいろ試してみることにします。
まずは方針を決めていきましょう。
ドライバIC
7セグLEDを扱う場合ドライバICを使用することが多いようです。
例えばこちら
参考
7セグメントドライバ(7セグメントデコーダ) TC4511BP千石電子通商
こういったドライバICの場合、BCDなど決まった内容を入力したい場合には都合が良いのですが、今回は任意の文字・記号を表示させたいため使用しないことにします。
※BCD(Binary Coded Decimal):10進数の1桁(0-9)を2進数の4桁(0000-1001)で表したもの
シフトレジスタIC
7セグLEDは1つだけでもLEDが7+1個ついているので、そのまま単純に結線すると多くのGPIOピンを使用してしまいます。
そこで74HC595などのシフトレジスタを使用することも多いようです。
「74HC595 7セグ」などで検索するとたくさんヒットします。
例えばこちら。
参考
シフトレジスタと4桁7セグメントLEDArduinoで遊ぶページ
74HC595についてはこちらがわかりやすいです。
今回はひとまず7セグLED1つだけ使用してテストする予定ですので、3to8ラインデコーダ(74HC238)を使用してみることにしました。
Arduino側に接続するのは4本で済むためGPIOの節約になりますし、出力が8ピンあれば7セグLED1つを扱うのにちょうどよいです。
74HC138と74HC238では、同じ入力を与えた場合の出力の論理が逆になります。
今回は任意のピンだけをHighにしたいため74HC238を使用します。
詳細はデータシートをご確認ください。
参考
74HC238データシート(pdf注意)Texas Instruments
※東芝のデータシートとは一部のピンの呼称が異なるようです。使用上の差異はありません。
E1,E2はGNDにつないでしまい、E3,A0,A1,A2の4ピンで出力ピンのHIGH/LOWを制御するアプローチです。
(7セグLEDの場合はダイナミック点灯させるため、ある一時点でHIGHになっているピンは1本でOK)
大型7セグLEDを使うための電源について
GPIOの電圧とは異なる電圧を扱うテストとしては、ここが肝になるはずですが・・・
敷居は低い方が良いということで、手元にあった格安のDC-DCコンバーターを使用してみることにしました。
Arduino UNOの+5V出力をDC-DCコンバーターで昇圧する方法です。
以前amazonで購入した物でした。
参考
HiLetgo 5個セット 2A DC-DC ブーストステップアップ 転換モジュール Micro USB 2V-24V to 5V-28V 9V 12V 24Vamazon.com
まとめ
方針としては以下のようになりました。
- ひとまず大型7セグLED1つだけを操作する
- 3to8ラインデコーダ:74HC238を使用する
- 電源はひとまずDC-DCコンバーターで昇圧してみる
これらを、少しずつ試しながら進めていくことにします。
試行錯誤をはじめる
①74HC238単体の確認
まずは初めて使う74HC238のテストとして単体での稼働確認をしてみることにします。
写真ではちょっとわかりにくいですが、4pinのDIP-SWをパチパチ切り替えていくと点灯するLEDが変わることが確認できました。
②7セグ1つの時の点灯確認(DIP-SW制御)
74HC238が想定通りの動きをしてくれたので、次は大型7セグLEDを使用します。
まずはArduino UNOは+5V/GNDしか使わずに(プログラム書き込みは不要)、4pinのDIP-SWで切り替えてみます。
電源は+5VからDC-DCコンバーターにつなぎ、販売サイト(協立エレショップ)の情報をもとに調整つまみでちょうどいい電圧まで調整します。
また、デジットBlogの参考回路図に倣って7回路入りNPNダーリントントランジスタアレイ:TD62104Pを使用することにしました。
参考
TD62104P Datasheet(PDF)http://pdf.datasheetcatalog.com/
74HC238の出力ピンからTD62104Pが接続されているため、一見、電流の向きが逆のように感じてしまいますが、データシートを見ればわかる通り、7セグLEDを通って出てきた電流はTD62104Pを通ってGNDに落ちていくんですね。
このようなものを「吸い込み型」というそうです。
写真を撮り忘れましたが、こちらも正常に動作しました。
③7セグ1つの時の点灯確認(PGM制御)
TD62104Pと大型7セグLEDの動作確認も済んだので、次のステップへ進みましょう。
4pin DIP-SWを取り外して、そこにつながっていた線をArduinoのGPIOに接続し、Arduinoプログラムで制御してみます。
(とはいっても大したことはしていません)
今回は数字(0-9)以外の文字も出力してみたいので、配列にどのLEDを点けるかという情報を格納し、その内容通りに点灯することを確認します。
こちらは数字の7を表示させた例です。
(配線がごちゃごちゃしていてわかりづらいですが・・・)
※プログラムはやっつけで作った汚いものなので、もう少し綺麗に整理できたら載せようと思います。。
正常に動作したので基本確認としてはここで終了。
この先にいろいろやりたいことがあるのですが、まだそこまで手が付けられていません。
いずれ進捗があったらまとめてみようと思います。
謝辞
回路図を描くにあたり水魚堂様のフリーソフトを使用させていただいたきました。
また、回路図で使用したArduino UNOのパーツは居酒屋ガレージ日記様のデータを使用させていただきました。
参考
現用中のBSch3v部品ライブラリのバックアップ居酒屋ガレージ日記
とても助かりました。ありがとうございます。