[戻る]

AVR ATtiny2313 7セグ4桁ボード〜製作、動作チェック

2008年9月製作/10月記事
前回は複数桁の7セグを駆動する方式「ダイナミックドライブ」を解説しました。
7セグをマイコンで点灯させる回路を考え、その動作を検証しました。

今回はいよいよ7セグ4桁ボードを製作します。回路図と部品一覧表を公開します。
このボードを製作するときのポイント、コツを解説するので参考にしてください。
基板が完成して動作確認が済んだ後、応用としてカウンタを作りました。

以下、ページ内の写真はクリックで拡大します。

製作のポイント




目標確認
まずは完成品を見てください。これからこれを作ります。

単三形乾電池は大きさ比較のためです。このボードは5Vで動かします。一応、乾電池2個(直列3V)でも動作しますが、7セグはとても暗くなります(光が薄い)。

この7セグ4桁ボードは制御ボードと表示ボードに分かれていて、制御ボードの回路図は7セグのタイプに合わせて2つあります。表示ボードの回路図は共通ですが、アノードコモンの7セグで作った表示ボードがカソードコモン用の制御ボードで動くというわけではありません。逆の組み合わせも動きません。あくまで配線上、同じになるというだけです。

アノードコモン用の回路図 カソードコモン用の回路図
 
(どちらも図をクリックで拡大)

部品一覧はこのページの最後にあります。





カソードコモン用ではエミッタのラインはGNDへつなぐ。
写真(中)では基板左下でスイッチのGNDとつながっている。

アノードコモン用ではエミッタのラインはVCCへつなぐ。
写真(下)の青線のように電源ラインを引けばよい。スイッチのGNDへはつながない。

制御ボードの部品配置を検討する
乾電池の大きさから推測できると思いますが、コンパクトな大きさです。ポケットティッシュサイズのユニバーサル基板を2枚に割って使いました。

回路図を見ながら基板上の部品配置を決めていきます。
ここは電子工作のお楽しみポイントの1つだと思います。以前、電子工作の達人に部品配置のコツを尋ねたことがあります。「回路図をじっと見ると、配線パターンが見えてくる」、だそうです。

……。
見えたような気もしますが、私流のやり方で行きます。

まず表示ボードを挿すコネクタの位置を決めます。背後に1列、配線用の隙間を忘れないようにします。

次にAVRの位置を決めます。両側のピンに抵抗を同じように取り付けるので、空き領域の真ん中に配置します。基板が狭いので抵抗は立てることにします。

AVRの位置を決めたら電源とISPのピンヘッダの位置を決めます。コネクタを挿したときにぶつからないよう、互いに離します。ISPのピンヘッダは、ケーブルを挿したときに表示ボードと干渉しない向きで取り付けます。

スイッチは操作しやすいよう基板手前に配置します。AVRと抵抗の配線を避けて左右どちらかに寄せますが、トランジスタの配置にもよると思うので、まだ決めずに置いておきます。

トランジスタの配置で考えが詰まります。回路図を見るとここが一番複雑です。トランジスタが基板上で占めるスペースや配線のしやすさを考慮します。配線材が基板上で占めるスペース(どこを這わせるか)も考慮する必要があります。
試行錯誤した結果、写真のような配置になりました。横一直線です。
トランジスタの正面が目的の部品の方向を向き、ベースとコレクタが配線しやすいです。トランジスタの背面側でエミッタが1本のラインでまとめられます。ベース〜エミッタ間の抵抗も背面側に立ててコンパクトに収められます。

トランジスタが配置できたのでスイッチの位置を決めます。私は右利きなので右側に寄せました。

最後に言うのも何ですが、ハンダ付け初心者はもっと大きな基板に余裕を持って配置してください。抵抗は立てずに倒した方が作りやすいです。


制御ボードの違い
カソードコモン用とアノードコモン用の制御ボードを比べて、違うのはトランジスタとその接続先だけです。NPN型でエミッタがGNDへつながるか、PNP型でエミッタがVCCへつながるか、です。
もしこの基板をプリント基板にするなら、カソードコモン用とアノードコモン用を別々に用意せずとも、1枚でどちらにも使えるようにできます。トランジスタを付ける位置と向きはNPN型でもPNP型でも同じですからそこは影響ありません。1本にまとめたエミッタのラインを、GNDかVCCへジャンパー線でつなげるようにしておけばよいのです。





(↑この写真は拡大なし↑)



(*)…5Vの電源に470Ω〜1kΩ程度の抵抗を直列につないで、7セグの足に触れるだけのもの。


表示ボードの7セグを配線する
表示ボードには7セグとコネクタ以外の部品はありません。それなのに配線の手間では制御ボードよりむしろ7セグの方がヤマ場です。
取り付ける7セグは、4桁分であれば1桁が4個でも2桁が2個でも構いません。2桁だからといってダイナミックドライブ用に内部配線されてはおらず、単純に1桁の7セグが2個くっついているだけです。

7セグの足とセグメントの対応が分からないと配線できません。側面に印刷された型番を頼りにネットで検索、データシートを入手して確認します。
データシートが見付からないときは簡単なテスター(*)を作って手探りで調べます。総当たりです。
1桁の7セグで10本の足なら大抵はコモンが2本あります。これは内部でつながっているので実質1本のコモンです。
2桁の7セグで18本の足なら過不足なしです。もし20本の足ならコモンが2本ずつでしょうが(計4本)、これも実質2本です。
どこにもつながっていない足があることは希です。

具体的な配線の仕方を説明します。
4桁分の同じセグメント(A〜G,DP)をそれぞれ配線していくわけですが、例えば4つのセグメントAを配線するには3本の線が必要で、セグメントA〜G,DPだと合計3x8=24本になります。ハンダ付けは48カ所です。
やっかいなのは数の多さではなくハンダ付けする点の状況です。セグメントの足1つに1本の線を付けるなら簡単ですが、ここでは2本の線を付けることになります。コツを知らないとこれが難しい。セグメントの足に線を1本ハンダ付けし、2本目を付けようとハンダごてをあてると、1本目の線が取れてしまうのです。

そこで少しマシになるやり方を考えました(写真3段目)。
写真右の図を見てください。丸印はセグメントの足です。
2本の線を反対側からハンダ付けすれば、他方が取れにくくなります。
写真左の図を見てください。線を付けるとき、セグメントの足だけでなく手前のランドともハンダ付けします。こうすれば反対側に線を付けるとき、セグメントの足が熱せられてもこちら側の線は取れにくくなります。

「Shuttle K45 改造 レベルメータ+デジタル時計」のときはひどい部品状況での7セグ配線でした。正直言ってこのやり方はもう懲りたので、次からは根本的に違うやり方にします。



7セグを簡単に配線するには
なぜ7セグの配線が大変だったかというと、セグメントの足1つに2本の線を付けるからです。それが32カ所もあるからです。
もし、1本の線で皮膜が途中途中で少しだけ剥けてるような配線材があったら、7セグの配線は一気に楽になります。

実はそんな配線材があります。ポリウレタン銅線(UEW)です。
見た目は剥き出しの銅線のようですが、表面は絶縁コーティングされています。ハンダごての熱でコーティングを溶かせることが特長です。

具体的にはこのように配線していきます。
まず、目的のセグメントの足をUEWでつなぎます。例えば4本のセグメントAの足にUEWをクルリと巻き付けながら一つながりにします。次に、その巻き付けたところをハンダ付けします。UEWの皮膜が溶けてセグメントの足と線がハンダ付けされます。

多少コツは要りますが、簡単に7セグが配線できます。配線材のボリュームが減るので、どこがつながっているのか見やすくなり、重さも軽くなります。
私は太さ0.26mmのUEWを使っています。

接続したボードとコネクタの向き
の関係


↓表示ボードのコネクタ


↓制御ボードのコネクタ


コネクタ上の並び順
制御ボードと表示ボードを接続するコネクタは、回路図では1列のコネクタとして描かれています。実際は2列型のコネクタを使うわけですが、信号の並び順は自分が配線しやすいように変えても構いません。私は次のように考えました。

制御ボードは1個作れば足りますが、表示ボードは様々な7セグを使うためにいくつか作るかもしれません。よって、信号の並び順は表示ボードのハンダ面から見てわかりやすい並び順にします。そうすると作業しやすく、配線ミスも減らせます。

桁とセグメントを1列目/2列目どちらにするかも決め方にヒントがあります。制御ボードのコネクタ周辺を考えたとき、背面側への配線がやりにくそうに思います。それでIC側に(線の数が多い)セグメントの配線が来るようにします。

表示ボード側のコネクタのハンダ面はこのようになります
(写真・上)。
A B C D E F G DP
桁1 桁2 桁3 桁4

制御ボード側の並び順はこれに合わせます。表示ボードと左右方向を揃えて見たとき、コネクタの内容は1列目/2列目が逆になりますが、左右は逆にならないことに注意してください。勘違いしやすいです。

制御ボード側のコネクタのハンダ面はこのようになります
(写真・下)。
桁1 桁2 桁3 桁4
A B C D E F G DP

ちなみに、制御ボード側のコネクタがピンソケットで表示ボード側がピンヘッダであることには理由があります。
2x10のピンソケットより2列型ピンヘッダの方が割安なのです。表示ボードは2個以上作る可能性があるので、こちらに安い部品を使った方がコストを抑えられます。
※呆れないで。

なぜこのようなピンアサインにしたのか

7セグの各セグメントと4桁の桁指定、スイッチ2個をどのようにATtiny2313のポートに割り当てるか。
以下の検討は、決してこれがベストだということではなく、参考として読んでください。
図は、黒い枠がIC本体、両側の枠がICのピン、ICを表面側(Top View)から見たイメージです。


ATtiny2313 7セグ4桁の割り当て
RESET PA2/RESET VCC VCC
セグメントA PD0 SCK/PB7 SCK
セグメントB PD1 MISO/PB6 MISO
スイッチ2 PA1 MOSI/PB5 MOSI
スイッチ1 PA0 PB4 セグメントDP
セグメントC PD2 PB3 4桁目(一の位)
セグメントD PD3 PB2 3桁目(十の位)
セグメントE PD4 PB1 2桁目(百の位)
セグメントF PD5 PB0 1桁目(千の位)
GND GND PD6 セグメントG

プログラミング(ソフト開発)と配線のしやすさを考えると、なるべく機能毎にまとまった(隣り合った)I/Oピンを割り当てると都合がよいです。……が、なかなかそう上手くは行きません。

まずISP用のI/Oピンを除外します。その上で空いているI/Oピンを見ると次のようになっています。
・AポートはPA0-PA1が隣り合っている。
・BポートはPB0-PB4の5ピンしか使えない。しかし隣り合った位置である。
・DポートはPD0-PD1/PD2-PD5/PD6と、元々ピンの位置が飛んでいる。
 かろうじてPD2-PD5の4ピンが隣り合っている。

この状況で検討した結果、次のようになりました。
・まずスイッチをPA0-PA1に割り当てることがすぐに思い付きます。
・7セグのセグメントA-GをPD0-PD6に割り当てます。
7個のセグメントを1種類のポートに割り当てようと思ったらこれしかありません。配線的にピンの位置がイケてませんが、ソフト的には処理しやすいです。
・桁指定をPB0-PB3に割り当てます。
1種類のポートで4つ隣り合ったピンなので、配線的にもソフト的にも都合がよいです。
・残ったPB4に7セグのDPを割り当てます。
他のセグメントとピンが離れているしポートの種類も違うので、配線的にもソフト的にも微妙です。

※次の「ISPなし」の場合で想定している発振器をこちらでも取り付けるとしたら、スイッチ2個はPB5-PB7のどれかに割り当てます。
スイッチoffならここには何もないのと同じことなのでISPでの書き込みに影響はないし、マイコン動作中はISPのケーブルを抜いておけばよいです。

もしソフトを書き込み済みのAVRを量産化するなら(*)、ISP用のピンは不要なのでI/Oピンがフルに使えます。そのような前提で配線、プログラミング(ソフト開発)します。


ATtiny2313 7セグ4桁の割り当て(ISPなし)
RESET PA2/RESET VCC VCC
1桁目(千の位) PD0 SCK/PB7 セグメントDP
2桁目(百の位) PD1 MISO/PB6 セグメントG
XTAL2 PA1/XTAL2 MOSI/PB5 セグメントF
XTAL1 PA0/XTAL1 PB4 セグメントE
3桁目(十の位) PD2 PB3 セグメントD
4桁目(一の位) PD3 PB2 セグメントC
スイッチ1 PD4 PB1 セグメントB
スイッチ2 PD5 PB0 セグメントA
GND GND PD6 空き

I/Oピンの割り当ては次のようなパターンを考えました。
・PB0-PB7を7セグのセグメントA-G,DPに割り当てます。
1種類のポートで隣り合ったピンで一気に取れるのが配線的にもソフト的にも都合がよいです。
・桁指定はPD2-PD5……とはせずにPD0-PD3に割り当てます。
ピンの配置は飛んでしまいますが、もし桁を増やすことになってもピンの番号と桁の対応で混乱しません。ソフト的にもLSBから4ビット取る形の方が見通しがよいです。
・このボードの応用例として「時計」が考えられるので、PA0-PA1は外付け発振器に割り当てます。
・PD4-PD5にスイッチを割り当てます。
PD6は余りますが、ここに3個目のスイッチを追加したり、何かのセンサーを付けたりしても収まりはよいです。または、7セグを1桁増やすとなったらスイッチ2がずれ込んできます。


(*)…例えば友人に書き込み済みのAVRを配って、基板は自分で工作してもらう、ということは考えられます。そうなったら、ゼロプレッシャーソケットを付けてISPの6ピンだけを配線した書き込み専用のボードを作り、ひたすら書き込みます。

I/Oピンが足りなくなったら
他のマイコンを使うことを検討してください。それが一番よい方法だと思います。
外付け部品を増やしてよいなら、シフトレジスタを使います(8bit、シリアル→パラレル)。セグメントA-G,DPを1個のI/Oピンで制御できます。タイミングを制御するI/Oピンは必要です

動作確認

(動画)
ATtiny2313 7セグ4桁ボードの表示確認A
表示テスト(アノードコモン)


(動画)
ATtiny2313 7セグ4桁ボードの表示確認K
表示テスト(カソードコモン)


どちらの動画も内容は同じです。
カメラの関係で残像がきつい
ですが、実際は1セグメントずつ
テキパキ光ります。
制御ボード/表示ボードともハンダ付けが終わったらとりあえず完成です。
回路図と突き合わせて配線ミスがないか、ハンダ付け自体にミスがないか、よく確認します。テスターで導通/絶縁チェックをすると尚よいです。最低限、電源ラインがショートしていないことを確認してください。

表示テスト
ここまでOKなら制御ボードと表示ボードを接続し、電源とISPのケーブルをつなぎ、ソフトを書き込んで動作テストをします。
7セグの配線ミスがないか確認します。
 アノードコモン用のテストプログラムはここをクリック
 カソードコモン用のテストプログラムはここをクリック
拡張子.txtを.cに変更して使ってください。

次のように表示されれば正しく配線できています。表示内容が説明と違うときは配線を確認し、修正してください。
動作1:
セグメントA〜G,DPが入れ替わりで順次点灯する。
それが左から右へ4桁順番に表示される。
動作2:
「8.」が左から右へ1桁ずつ入れ替わりで表示される。
以降、動作1から繰り返す。


入力テスト
スイッチが動作するかテストします。
単純にスイッチON/OFFでセグメントが点灯/消灯するだけのソフトを作ればよいのですが、それでは面白くありません。せっかく複数桁のボードを作ったので、ダイナミックドライブ/スタティックドライブの実験をしてみます。
 アノードコモン用のテストプログラムはここをクリック
 カソードコモン用のテストプログラムはここをクリック
拡張子.txtを.cに変更して使ってください。

動作開始すると「8888」と表示されます。これはダイナミックドライブ中です。
スイッチA0を押すと1秒間だけ表示が停止します。どれか1桁しか点灯していないことから、ダイナミックドライブであったことが分かります。
スイッチA1を押すと1秒間だけスタティックドライブで全桁点灯します。ダイナミックドライブの状態と注意して見比べると、明るさがわずかに違います。また、この一瞬の間はスイッチA0を押しても何も起こらないので、スイッチA1が正常に動作していることが確認できます。


UP/DOWNカウンタ
カウント「147」「-35」が表示されて
いる。
応用例 UP/DOWNカウンタ
7セグ4桁ボードを使った最初のアプリとして簡単なカウンタを作りました。
スイッチA0で9999までカウントアップ、スイッチA1で-999までカウントダウンします。
 アノードコモン用のプログラムはここをクリック
 カソードコモン用のプログラムはここをクリック

これまで数字は「8」だけでした。しかも数字として意識しているのではなく全部のセグメントを点灯した結果としてです。
このカウンタで初めて0〜9の数字が出てきます。7セグで数字の形を表現する方法や、4桁の数字を表示する方法を、ソースを見て研究してみてください。数字の形を変えることもできますし(「7」の左上に縦棒を付ける/付けないなど)、数字とは関係ない図形を表すこともできます(「-」など)。
もちろんこのUP/DOWNカウンタでやっている方法は一例に過ぎません。人によってやり方は違うでしょう。
※ソースの詳細解説は敢えて省略。

ソフトウェアについて


正論理と負論理
7セグの仕組みの回で説明したように、またテストプログラムのソースを見ても分かりますが、カソードコモンの方は正論理、アノードコモンの方は負論理で点灯します。

カソードコモンのボードでは、I/Oピンの出力が、
H(1)のときLEDが点灯(1)。
L(0)のときLEDが消灯(0)。
I/OピンとLEDの状態がそのまま対応しています。これが正論理。

アノードコモンのボードでは、I/Oピンの出力が、
H(1)のときLEDが消灯(0)。
L(0)のときLEDが点灯(1)。
I/OピンとLEDの対応が反転しています。これが負論理。

日常生活では正論理の方が馴染みがあります。負論理のプログラムはちょっと組みにくいです。
マクロや関数を上手く作って、どちらの論理でも気にせずソースが記述できるテクニックを研究してみるのも面白いでしょう。


緑のたぬき:
カソードコモンの7セグを使用。
カレンダー表示中(10月8日)。

赤いきつね:
アノードコモンの7セグを使用。
時刻表示中(23時04分)。

公開するソフトウェアについて
この7セグ4桁ボードは、アノードコモン型かカソードコモン型かで全てのソフトが基本的に別々になります。
ボードはどちらかのタイプが1個あればよいものですが、私はこのサイトで紹介するために両方作りました。しかし何かアプリを作る度に2つずつ作って公開するのは面倒なのでやりたくないです。
そのようなわけで、これ以降、公開するアプリはカソードコモン用のみの場合があります。

アノードコモン型のボードを作った人は、カソードコモン用のプログラムを自力でアノードコモン用に移植してください。
ちなみに写真の「カレンダー付き時計アプリ」は、アノードコモン用とカソードコモン用でソースの記述は3行しか違いません。

※アノードコモン用とカソードコモン用を一体化したソースを公開していくと思う。

部品について

 7セグ4桁ボードの部品。


1:基板
制御ボード用と表示ボード用で2枚必要。写真はある大きさのユニバーサル基板を切ったもので、1枚26x16穴。電子工作初心者はもっと大きい基板を使ってください。
材質は最も安いもので構いません。ガラス基板は丈夫ですがやや高価。スルーホール基板や両面基板はこの工作では特に必要ないです。
小さい基板で作る場合、ハンダ面に電源ラインのパターンがあると邪魔です。ただ整然とランドが並んでるだけの基板を使います。

2:抵抗
カーボン皮膜抵抗、1/4Wです。特に注意することはないです。

3:トランジスタ
7セグがカソードコモンならトランジスタはNPN型にします。
7セグがアノードコモンならトランジスタはPNP型にします。
どちらでも4個使います(7セグが4桁なので)。何個かまとめ買いで安く売っていれば、それを買うのがお得です。

4:コンデンサ
0.1uF積層セラミックコンデンサです。特に注意することはないです。

5:タクトスイッチ
押してON、放してOFFとなるスイッチなら何でもよいです。大きさも(基板に載る範囲で)好きなものを使ってください。
タクトスイッチの足は4本ありますが、内部で2本ずつつながっているので実質2本足です。どれがつながっているのか、そしてONにしたらどの足がつながるのか、テスターで確認してからハンダ付けしてください。

6:2列型ピンヘッダ
ISP用に使う2x3と、電源ピン用の2x1のピンヘッダです。 ピンヘッダは2列型で長いものを買ってきて3ピン幅と1ピン幅で切って使います。電源ピン用にはこれを受ける2x1のピンソケットも必要です。
もし電源にACアダプタを使うなら2x1ピンは不要で、代わりにACアダプタのコネクタ形状に合った差し込み口を基板に取り付けてください。

7:7セグ
基板に載る範囲で色や大きさは自由に決めてください。7セグ1個あたりの桁数は1桁でも2桁でも構いません。
この工作では赤、緑、オレンジ、黄色といったVf(順方向電圧)=2.0V付近のものを想定しています。青い7セグはVf=3.6V付近なので電流制限抵抗を計算し直す必要があります。回路図の抵抗のままでも青い7セグは使えると思いますが、明るさは弱くなるでしょう。
7セグにはカソードコモンとアノードコモンがあります。どちらでも工作に使えますが、色や大きさで選んだ末に両タイプともあったら、カソードコモンの方をお勧めします。そのときはトランジスタをNPN型にすることを忘れずに。
通常、赤い7セグが一番安価で、青い7セグが一番高価です。値段が全然違います。

8:ATtiny2313とICソケット
これがないと始まりません。マイコンはATtiny2313を使います。低電圧版のATtiny2313Vでも構いません。20ピンのICソケットも購入してください。強くお勧めします。

9:コネクタ
制御ボードと表示ボードをつなぐコネクタです。
写真・右、メスの方は2x10のピンソケット。
写真・左、オスの方は2列型ピンヘッダ。2つのボードを直角につなぐためL型のピンヘッダです。長いものが割安で、それを10ピン幅で切って使います。

配線材:
写真には写っていませんが、7セグの配線で説明したようにポリウレタン銅線(UEW)があると配線作業が楽になります。袋に入っていて10mのものが200円くらいで買えると思います。太いと配線しにくいので、太さ0.3mm前後を目安に選んでください。

特徴的な価格(特に安価、セット価格)は部品一覧表の備考欄に店名を書きました。その他の電子部品の価格は全国どこのパーツショップでも大差ないと思います。部品を購入するときは通販も含めあちこちのショップを探してみてください。


ATtiny2313 7セグ4桁ボード 部品一覧
(回路図はこちら→アノードコモンタイプカソードコモンタイプ
部品名 部品番号 個数 参考価格/備考
AVR(マイコン) ATTINY2313 ATtiny2313 1 100円(秋月電子
抵抗 R1〜R8 220Ω [赤赤茶金] 8 1個5円/100個100円
抵抗 R9〜R12 4.7kΩ [黄紫赤金] 4 1個5円/100個100円
抵抗 R13〜R16 10kΩ [茶黒橙金] 4 1個5円/100個100円
積層セラミックコンデンサ C 0.1uF [104] 1 10個100円
タクトスイッチ SW1,SW2 2 10個180円
千石電商 店頭価格)
2列型ピンソケット CN(制御ボード) 2x10 1 50円
2列型ピンヘッダ(L型) CN(表示ボード) 2x10に切る 1 2x40が100円
2列型ピンヘッダ ISP、電源用 2x3と2x1に切る 1 2x25が50円
2列型ピンソケット 電源用 2x1 1 20円
ICソケット 20ピン 1 10個100円(秋月電子)
7セグ D1〜D4 赤、緑など 4桁分 1個100円など様々
7セグがカソードコモンの場合
トランジスタ(NPN型) Tr1〜Tr4 2SC1815 4 20個100円(秋月電子)
7セグがアノードコモンの場合
トランジスタ(PNP型) Tr1〜Tr4 2SA1015 4 20個100円(秋月電子)



[戻る]
inserted by FC2 system