e-kiyo lab. | AVR Toy Develop

s_home.gif (1194 バイト)AVR おもちゃを作ろう!

AVRを利用した基本回路

ブレッドボードは表面に無数の穴が空いています。この穴に部品や配線を突っ込むと中のクリップで挟まれるようになっています。内部は複数の穴が繋がっている(左写真の赤い部分)ので工夫すれば半田付けはいりません。特に左右のラインは電源の+/GNDで利用します。配線を自作する場合は0.5mmから0.8mmの単芯の銅線を利用します。身近な物ですとインターフォンの配線が0.8mmでホームセンターで入手できます。線を剥く長さは5mmから7mmが適当です。

通電部分  

押しボタン(Push SW)を押した回数を数えてLEDに表示してみましよう。
この回路には入力と出力両方の基本的動作を理解するのにはちょうどよいでしょう。

中央の回路図を元に作成します。単独動作するように電源回路も組み込んでいます。

右の写真はLEDや押しボタン、AVR等を配置した例です。

電源とセラロック周辺接続状態

006P(9V電池)用の端子部分は熱縮チューブで密着

押しボタン周辺接続状態

カウント結果の表示用LED

・部品説明

足の長い方がアノードで+側に接続

Push Swは足が4本あるが1回路で二本毎につながっています。
例えば中央の写真で手前の端子二本はとつながっています。端子の微妙な位置に注意。
Swの開閉として使うには右の写真の左右の端子間で利用します。

・スイッチの構成

この回路はSWを押したときにVCCに接続され1となるのでactive hightになっています。
この逆でGNDに接続するとactive Lowとなり0となります。

ボタンを単に接続しただけでは正しくカウントされません。原因はチャッタリングです。
<-- ボタンの入力信号の図解です。

・AVRプログラムライターとの接続例

 接続方法はAVR Program Writerを参考にしてください。
 基本はデータ用の三本の線(白と水色の交差に注意)とリセット端子への接続
 開発しているボードからの電源供給です。

 

課題1.
ボタンを押したらLEDが光るプログラムを作成しましょう。(回答例)

別のLEDを点灯させてみるなどビットとポートの関係を理解しましょう。

課題2.
ボタンを押した回数を数えてLEDで表現するプログラムを作成しましょう。(回答例)

4個のLEDを使って押した回数を2進数で表します。
0000=0, 0001=1, 0010=2, 0011=3, 0100=4, 0101=5, 0110=6, 0111=7
1000=8, 1001=9, 1010=A, 1011=B, 1100=C, 1101=D, 1110=E, 1111=F
(A-Fは16進数での表現です)

ここまでは基本中の基本です。

応用課題
今回の回路はチャッタリング防止を組み込んでフソト的には楽な処理でした。
しかし、ハードの費用を節減するためにチャッタリング防止の回路を省略することもあります。
その場合はソフトでチャッタリングを無視する方法てす。
チャッタリング発生間隔はスイッチを入れてから長くても10ms程度のものです。
つまり、スイッチを押されたと認識してもそこから10ms後に再度スイッチをチェックして
押されていれば本当だとカウントすればいいのです。

 

半田付けで後で楽をしよう。基盤に基本回路を組み立てておく。

AVRを動作させるのに必要なものは、電源とセラロックです。ブレットボードは便利ですが毎回この回路を組み込んでいたのでは手間です。あらかじめこの基本回路を組んだ状態のものが便利なはず。

そこで作成したのがミニミニAVRです(そのまんま)。
 

左の二本の角は電源端子、青いセラロックの右にあるLEDは電源ランプ、右淵の半円形は3端子レギュレタ−で5V電源を作っています。右の写真のようにAVRの端子はそのままブレッドボードに刺せるようになっています。

初号機なので色々改善点が目に付きますがなかなか使いやすいですよ。


sl_st.gif (318 バイト) 質問待ってます。

こんな回路が欲しいという人はメールをください。
簡単に出来るものならここに載せましょう。
返事は原則しません。よろしく。

esoc@sfc.keio.ac.jp