AVRtiny13Aでつくるシリーズ1 電圧計
- 2016/03/29 07:05
- カテゴリー:make:
AVRtiny13Aを使った工作,第一弾は電圧計です。
この工作のテーマですが,複雑に入り組んだ現代社会に鋭いメスを入れ,さまざまな謎や疑問を徹底的に究明するようなものではなく,たった50円で手に入る一番安いマイコン,AVRtiny13Aを使って,いろいろなものを作ってみようという物です。
改めてAVRtiny13Aを眺めてみると,
・最大20MHzで動作,内蔵クロックを使う場合は最大9.6MHz
・1kバイトのプログラムROM
・64バイトのRAM
・64バイトのEEPROM
・10ビットA-Dコンバータ
・8ビットタイマ/カウンタ
・コンパレータ
・最大6本のGPIO
・ちゃんとCで書ける
・安い。秋月価格で1個50円
てな8ピンのマイコンです。なにせ8ピンですからね,配線数が少なくて,作るのがとっても楽ちんなのですよ。ピン数が少ないマイコンってこんなに楽だとは思いませんでした。
ワシの若い頃はな,CPUが40ピンもあってな,GPIOも外付けで40ピン,カウンタ/タイマも28ピン・・・そもそもメモリも32kByteで28ピンじゃからな・・・配線だけで頭がおかしくなりそうじゃった・・・
・・・その時作ったZ80ボードは捨てられずにまだとってあります。
それでも,CPUもTTLで自作していた時代から考えると随分楽になったんだろうとは思いますが,細いリード線を切り,両端を剥いてはんだめっきをして,ハンダ付けをしていくという単純作業をしていると,まるで写経をしているかのように,心が澄み渡り,世の中の煩わしい物がすべて後ろに流れていくような感覚に陥ります。ええ,単純作業大好きですよ。
本題に戻ると,こんな小さなマイコンでどこまで出来るかという話です。GPIOについても,1つはRESET端子と排他ですから,これを使うと安いライタでのプログラミング(ISP)も出来なくなります。
それ以外でも,GPIOは必ずなにか他の機能と兼用になっています。でも,この数本というGPIOの数と1kバイトのプログラムというのは,やってみると案外バランスが良くて,特にCで書いた大雑把なプログラムだと,1kバイトくらいでちょうどGPIOを数本動かす程度で一杯になります。
そうなると64バイトのRAMなんてのはユーザーが意識するRAMというより,スタックや変数といった,いわばコンパイラが使うスクラッチパッド,と言う感じです。これは悪い意味ではなく,むしろCでプログラムを書くことが出来る,ギリギリのマイコンに仕上がっているという話です。堂々とCで書きましょう。
これが,ちょっと上位のtiny2313だったり,あるいはmegaシリーズだったりすると,ペリフェラルも豊富ですから,やりたいことは大体できます。でも,すべての機能を試し,いつでも使えるように鍛えておくには少々骨が折れます。使い切った感じがしないというのは,懐の深さでもありますが,底なし沼の深さでもあるのです。
てことでtiny13Aです。
手始めに10ビットのA-Dコンバータで遊んでみましょう。
13Aの前世代品にはなかったものだそうで,こんなちっこいマイコンにマルチプレクサ付きの10bitA-Dコンバータなんかいるんかいなと思うのですが,なかなかどうして,これがあるといろいろつぶしが利きます。
もちろん,単純に電圧を測ることにも使えますが,ボリュームを使ってデータのエントリーに使うことも出来ますし,抵抗分割でスイッチを8個くらいぶら下げる事もできます。GPIOが不足するtiny13Aでも,結構便利に使えそうです。
まず,LCDはデジットで売っていたポケベル用と思われる200円の8桁14セグメントのもの,A-Dの基準電圧は内蔵の1.1Vで,1chだけ使います。
14セグメントLCD,なかなかいいですよね。