Key words:ATMEL,AVR,Micro Controler,ATmega,ATtiny,AT90S2313,DDS,Frequency Counter

Daddy's AVR Microchip Challenge!

Part Two/ Hardware Fundamentals
お父さんのAVRマイコン入門!(巻・2:ハードウエアの基礎)

(Ver.1.1 : April 22nd 2006+Ver.2.0a : April 27th 2006+Ver.2.1 : May 14th 2006+Ver.2.2 : July 20th 2006+Ver.3.0 : Oct. 21st 2006+Ver.3.1 : Oct. 25th 2006+Ver.3.1a : Nov. 18th 2006+Ver.3.1b : Dec. 31st 2006+Ver.3.1c : Mar. 18th 2007+Ver.3.1d : Mar. 21st 2007+Ver.3.1e: May. 17th 2007)

Counter

written by Takahiro Kato JA9TTT/JH1WBU, Saitama JAPAN

http://ja9ttt.homedns.org/hamf/myexp/Daddys_AVR_P2.html



このページの目的
マイコンと言えば、どうしてもプログラムの話題が先行するようです.しかしパソコンと違い作ったプログラムを動かす対象がなくては畳の上の水泳練習と同じようなものです.まずはハードウエアを作らなくては始まりません.そこで、簡単なテスト用のマイコン回路を作っておくことにします.


関連のページ
BASCOM-AVRを使ったAVRマイコン入門と活用・応用編には、以下のページがあります。


マイコン事始め・何が必要でしょう?
もう既にわかりきっているかも知れませんがもう一度整理しておきます.どれもが重要です.

それぞれ大切ですが、まずは、ハードウエアの知識と準備から始めます.


マイコン・チップも普通のICです
マイコン・・・即ち『これはコンピュータなのだ!』と思うと、グッと構えてしまうかもしれません.ワンチップ・マイコンは名前のとおり、1個のICチップで完結する簡単な回路です.しかし、ごく普通のICであって、扱いとしても一般のC-MOSデジタルICと何も違いません.AVRマイコンは、高速・高機能です.しかしせいぜい20MHzのクロックにすぎませんから、配置や配線も特に難しくはありません.デジタル回路の基本に忠実に電源とGNDピンの間にバイパスコンデンサを挿入し、配線図のとおり無理のない配置と接続をすれば必ずうまく働きます.

イントロ編で触れたとおり、プログラムの書込みもたいへん簡単です.AVRマイコンチップは目的のボードに装着したままで良いのです.書込みに際しても難しい操作は不要です.電源も通常の電圧を与えておけば良いです.パソコンの簡単な操作でプログラムが転送され書込まれます.書込みが済めば、直ちに新しいプログラムの実行が始まります.何回でも簡単に繰り返すことができます.修正し、ただちに書込んで結果がわかるのはプログラムの開発にはたいへん便利です.この機能なしにマイコン回路の開発など考えられなくなってしまいました.マイコン・チップを難しく考えず、ごく普通の電子部品と思えば良いのです.このあとご紹介するように製作する回路も極簡単です.しかし、この『簡単』と言うのが重要で、どの様な応用であっても基本はみな同じです.簡単な基本回路が上手く行けばあとはその応用に過ぎないからです.


ご案内
左側の写真をクリックすると大きな写真を見られます.
大きな写真から戻るにはブラウザのバックボタンで戻って下さい.

AVRマイコン回路の製作

AT90S2313_on_Board.JPG まずは定番の『LEDチカチカ』からやってみます.LEDチカチカと言うのはラジオの世界のゲルマラジオのようなものでしょう.回路もプログラムも簡単だから入門にピッタリです.写真はここで使うご本尊の『AT90S2313-10PC』AVRマイコン・チップです.生産は終了している旧型のチップですが、流通在庫がたくさんあるようです。おなじみの秋月電子通商でも一個150円で販売されています.シンプルながらも基本機能が充実しているのでAVRマイコンの入門には手ごろなチップでしょう.機能的にも新型チップと大きな違いはありません.それに、万一『マイコンはヤッパリ難しい』と感じてやめたとしてもフトコロが痛むこともないでしょう.難しいと感じさせないことも、このサイトの重要なテーマですから、きっとそんなこともないはずだと信じたい。Hi Hi


LED_Flasher.JPG さっそく、回路図をご覧あれ.何しろ簡単なのです。それで、プログラム開発に使うパソコンとの接続部分を含めて書いてみました.イントロ編でご紹介した書込みケーブルの部分です.どのように接続され、書込まれるのか理解しやすいと思うのですが・・・.マイコン回路は左側の点線で囲まれた部分だけです.電源は安定した5Vを与えます.電流は20mAもながれないくらいです.9V位のACアダプタに5Vの三端子レギュレータ(例:7805など)を付けた簡単な電源で十分です.
    マイコン基板の材料です:
  1. AVRマイコン---AT90S2313-10PC(1個)---150円
  2. 発光ダイオード(LED)----何色でも良い(1本).青など使うとシュールで良いかも.----20円くらい
  3. 抵抗器------4.7KΩ;(1本)、1KΩ:(1本)、いずれも1/4W〜1/8W型のカーボン抵抗.誤差10%のもので十分.--1本10円くらい
  4. コンデンサ----22pF:(2本)、0.1μF:(1本)、セラミック・コンデンサ.できたら22pFはCH特性が良い.--1本10円くらい
  5. 水晶振動子----12.8MHz:(1個).1〜10MHz程度の基本波用水晶なら何でもよい.セラロックも可.--100円くらいから
  6. コネクタ------10ピンISP用:(1個)、電源端子用2ピン:(1個).下記写真参照.----50円くらい
  7. ICソケット----20ピン:(1個).AVRマイコンに使用.普通のソケットで可.----50円くらい
  8. ユニバーサル・ボード---適当なサイズ:(1枚).ここではサンハヤトICB-93Sを使った.---200円くらい
これで全部です.うまく集めれば1,000円で十分お釣りがきます.なお、水晶振動子は他の周波数でも良いです.『LEDチカチカ』の目的には、ありあわせでも十分でしょう.OMさんには昔懐かしいFT-243型の水晶でも良いのですが、ちょっと巨大すぎるかも知れませんね.回路図右側の書込み用ケーブルの部分は、前回のイントロ編を参照してください.

ATtiny2313を使うには:
最近、秋月電子通商で新型のATtiny2313が安価に登場しました.同じように使用できますが、少し注意が必要です。『入門編(4):ATtiny2313への乗換えかた』をご覧下さい。また、現状ではATtiny2313を使う際には、BACOM-AVRのバージョンに注意が必要です.詳細は上記のページをご覧下さい.(暫定追記:May 17th 2007)

AVR_TEST_Board.JPG LEDチカチカ回路の完成状態
完成した『LEDチカチカ』用のテスト回路です.実は、この写真には後に拡張した3端子レギュレータのほか、LCD表示器用のコネクタとそのコントラスト調整用のVR(可変抵抗器)などが写っています.LEDチカチカの目的には必要のないものです.これらについては後の方で説明します.

AVR_TB_CK_Gen.JPG クロック発振部
12.8MHzの水晶振動子を使ったクロック発振部です.回路図にはないトリマコンデンサが見えますが、これは後に周波数カウンタに発展させる都合で発振周波数を微調整するためのものです.回路図のままでは約1.3KHz高い周波数で発振しました.ずれの程度は水晶によっても違います.それを合わせ込むためのトリマコンデンサです.AVRマイコン内蔵の水晶発振回路は、C-MOSインバータを使った回路と同じものです.従って周波数の調整は同じような回路でできます.マイコンの良いところで、ソフト的にズレを補正する手段もあるので、トリマコンデンサによる調整は不要な場合がほとんどでしょう.しかし、周波数カウンタ、精密なタイマ、時計のような周波数(時間)精度を要する用途なら調整を付ける意味は十分あります.なおセラミック振動子(セラロックなど)を使った場合は、本質的に安定度が悪いので調整を付けても殆ど無意味です.

Tips-1:AVRマイコンのHAM的(?)周波数調整法
AT90S2313の水晶発振端子に周波数カウンタを直接接続すると発振周波数が変化してしまいます.周波数カウンタを接続するにはバッファアンプが必要です. もし、ジェネカバ受信機のアンテナ線をチップの近傍に接近させれば信号を捉えることができます.バッファアンプなしで正確に調整できるのです.ジェネカバ受信機は予め5MHz、10MHz、15MHzなどの標準電波で校正しておくべきなのは言うまでもありません.あるいは周波数精度の良い発振器があれば、AMモードで両方を受信し、ゼロビート法で合わせることができます.私はこの方法を使ってみました.水晶によっても違いますが、AVRマイコン内蔵の水晶発振回路の周波数安定度は案外良好です.概略0.1ppm/℃以下でした.従って、AVRマイコン内蔵の発振回路を使っても、十分良い精度の周波数カウンタが作れます.それ以上の安定度を望むならTCXO(温度補償型水晶発振器)の外付けでしょう.

Tips-2:オーバークロック
使ったチップの正式型番は、『AT90S2313-10PC』です。末尾の-10は最大クロックが10MHzであることを示しています.メーカーの量産設計では保証範囲で使うに限ります.しかし、実際にはマージンがかなりあって、実験によれば20MHz以上でも動作したそうです.それから見て12.8MHは28%のオーバーに過ぎず、まず問題はないでしょう.保証はありませんがアマチュア的な用法としては支障ありません.クロックを上げたい理由は周波数カウンタの計測上限がそれに追従するからです.AVRマイコン内蔵のカウンタ・タイマー回路はクロック周波数でサンプリングされるタイプ(同期型)なので、おおよそクロック周波数の1/2が上限になります.12.8MHzのクロックで約6MHzがカウント上限となるわけです.マイコン部分で6MHzまで動作すれば、カウンタ入力端子の前に1/10のプリスケーラを付ければ約60MHzまでの周波数カウンタにできます.上限周波数が重要な応用のために少々オーバークロックの水晶を使いました.逆に消費電流を気にするときは、なるべく低い周波数にすべきです.一般のC-MOS ICと同じように消費電流はクロック周波数に比例するからです.AVRマイコン内部はスタティック動作なので、おそらく数10Hzのクロックでも動作するでしょう.勿論非常に緩慢な処理しかできないでしょうが。Hi Hi


AVR_TB_LED.JPG 発光ダイオード(LED)部
これがチカチカさせるLED.ポートDの6番に付けてあります.高輝度LEDを使ったので電流制限抵抗は1KΩにしました.もし暗いようならR101を330Ω程度にします.ポートの概念についても知っておくべきですが、それは別編にでも書くつもりですので・・.

AVR_TB_ISP_Con.JPG プログラム書込みコネクタ部
チップにプログラムを転送するIn-System Programming(ISP)用のコネクタです.市販品のプログラミング・ケーブルと合わせたピン配置にしてあります.自作ケーブル以外の市販品も使えるはず.但し必要なのはアースを含めて6本です.ピン配置を自身で決め、接続を統一しておけば好みのコネクタで良いです.



液晶表示(LCD)モジュール追加拡張

AVR_TEST_Board_01.JPG LEDチカチカだけなら上記の部分を作れば十分です.プログラムは続編で説明しますが、ともかくマイコン回路としてはプログラムを含めて簡単過ぎるのです.それで、すぐに液晶(LCD)表示器を付けたくなるに違いないはず.デバッグ(=プログラムが正しく動くようにする作業)にも役立つので表示器を付けられるようにしておきます.追加回路はごく簡単です.LCD表示器(LCD表示モジュール)には16文字2行のものを使います.この種のLCDモジュールは一種の規格品で、液晶コントローラには日立製作所のHD44780もしくは同等品が標準的に使われています.従って制御コマンドには互換性があるのが普通です.またピン接続も多くのモジュールで概略統一されています.なお、回路図は、LCDモジュールにSC1602BSLBまたはSC1602BS*Bを使う場合のものです。但し、SC1602BSLBまたはSC1602BS*Bの電源ピン(Pin_1)と、GNDピン(Pin_2)が他の多くのモジュールとは逆です。電源とGNDピンの扱いについては使用するLCDモジュールの説明書をよく見て間違いないようにします。その他のピンは16文字2行のほか、20文字4行などいずれも接続は同じです.どのモジュールも、BASCOM-AVRに専用のコマンドが用意されているので文字表示はたいへん簡単です.上記回路図は汎用のテスト基板にもなるように、スイッチなどが付いていますが必須ではありません.お好みで付けておくとプログラムの実験の時に役立つかも.

回路図には5Vの3端子レギュレータを追加しACアダプタなどが使えるようにしました.いちいち実験用電源を繋がなくても良いので便利です.写真では100mAの78L05を使っています.LEDチカチカとLCD表示なら100mAで十分ですが、回路を拡張するには不足です.回路図どおりの1Aタイプ(μA7805Aなど)にすべきです.max100mAでは液晶バックライトの点灯にも不足気味でした.
AVR_TB_LCD_Con.JPG LCD接続コネクタ部
写真はLCD表示器用の14ピンコネクタ.秋月電子通商のLCDに付いてきます.コネクタだけでも入手できます.液晶表示器側にオス、マイコン基板側にメスのコネクタを付けるのが一般的(?)なようです.
AVR_TB_Welcom.JPG LCD表示の様子
いずれLCD表示器は配線を延長し、パネル面に移動させるつもりです.コネクタ配置の関係で基板からはみ出していますが、テストには問題ないでしょう.もし、基板上に固定するのなら、コネクタの配置や向きを良く検討しておきます.

AVR_Counter_01.JPG 参考:周波数カウンタの例
LEDチカチカやLCD表示テストが終わった基板は、周波数カウンタに変身しました.写真はそのテストの様子です.せっかく作った回路が簡単なテストで終わってしまうのでは勿体ないです.実用的なものに発展できたほうが意味があります.テスト回路を基板端部に詰込んだのは、応用も考えたからでした.テスト回路を作る時には次のステップも考えておきたいものです.

Tips-3:AVRマイコンの選択指針
AT90S2313のメモリは2Kバイト(実際には16ピットのMPUなので1Kワード)です.周波数カウンタのプログラムは2Kバイトに入りました.しかし、処理の複雑なDDSコントロールには少々不足するようです.もちろん、プログラムの書き方によっても違います.比較的簡単な応用にはAT90S2313でも十分ですが、あまり余裕はない感じです.BACOM-AVRのようなコンパイラを使ったプログラム開発にはもう少しメモリ容量の大きなチップが良いようです.価格・性能から見て、mega168(だいたい500円前後)をこれからの定番にしたい感じです.ただしBASCOM-AVRのデモ版では4Kバイトまでなので、ATmega48でも良いでしょう.それでもAT90S2313でもかなりのことができますし、安価ですから積極的に活用すべきです.AVRマイコンの使い方の基本はどれも共通なので、必要に応じてチップを乗換える選択の自由があるのはとても良いです.(チップによりピンの配置は異なるので配線変更を要す)


エピローグ
汎用マイコンチップを使ったボード・マイコンを昔々作ったことがあります.それらにはZ-80やMC6809などMPUのほか、ROM、RAM、周辺回路のチップなど多数を搭載し相互の配線は厄介なものでした.正直なところ、手配線で作るようなものではないでしょう.マイコン回路と言うと、当時のイメージがダブってしまいます.しかも、プログラムはEP-ROMに専用の書込器で書き込まなくてはならない.バグがあれば、紫外線消去器でEP-ROMを消去し再書込みしなくてはならない.非常に面倒でした.それではたまらずRAMを使った疑似ROMを作った人も多かったようです.プログラミングの問題もあったのですが、マイコン搭載型の機器を作るのは手間と道具が厄介で、敷居はそれなりに高かったと思います.結局マイコン基板を動かすことが目的のようになってしまい、応用するまでには至らなかったのです.

本格的(?)なマイコン開発が必要なわけで、昔はLEDチカチカでさえ厄介なモノでした.ワンチップ・マイコンは非常に進歩しています.そうした昔の苦労からは夢のようです.これはLEDチカチカのみではなく、難しいプログラムになるほど効果を発揮します.開発途中のプログラムにバグは付き物です.バグをなくし完全なものにするのがプログラムの開発とも言えます.従って、簡単に修正と書込みを繰り返えせる開発環境は非常に効率の良いものです.

テスト基板が完成したら、続いてプログラミングに進みます.続きはこちらで.


Back to Experiments Index

Back to Site Top


End / おわり

(c)2006 Takahiro KATO All rights are reserved.
Not for republication in any form without written permission.