MAKER UNO + で始めるSTEM (3) パーツ

 Arduinoは、当初AVRマイコンを利用しました。その後armマイコンのCortex-M3およびCortex-M0が対応になりました。利用できるディジタル入出力、アナログ入力のビット数など、小さな差はありますが、delay(1000);と記述すれば、いずれのマイコン・ボードも1000msの間、時間待ちをします。

 現在利用できるマイコン、ボード類は、こちらからわかります。

CPUまわり

 マイコンは、それ単体では動きません。MAKER UNO + は、Arduino UNOと同じ8ビット・マイコンATMega328(A)です。外形は異なります。Arduino UNOはDIP(Dual Inline Package)ですが、MAKER UNO +はQFN/MLF28(MicroLeadFrame)パッケージです。一般的な名称SMD(Surface Mount Device)と呼ばれることもあります。

 ATMega328の電源電圧は1.8~5.5Vです。Arduinoでは5Vで動かしています。この電圧で動作できるクロックは20MHzですが、何かの都合で16MHz(B)が使われています。

 (A) マイコンはATMega328です。ほとんどのピンは、左右に並んだピンヘッダにつながっています。

 (B) クロックです。マイコンはクロックに従って動きます。PCで使われているマイコンは1~4GHzで動作します。クロックの周波数が高いほど、消費電流は大きくなります。消費電力を下げるために、時計用32.768kHzの水晶振動子を搭載したマイコンもあります。発振周波数の確度は低いですが、セラミック振動子も利用できます。こちらは二つのコンデンサが不要なので、価格を下げられます。
 最近ではMEMS(Micro Electro Mechanical Systems)の発振器も急速に増えています。

 (C) 3.3Vの電源を作っている部分です。USBケーブルでPCから5Vが配給されます。その5Vから3.3Vを作るのがレギュレータICです。レギュレータICには、リニアとスイッチングがあります。ここではリニアICが使われています。変換効率はスイッチングICに比べてよくないので、電流が流れると発熱します。Arduino UNOではDCジャック入力から5Vを作る、リード線が3本の3端子レギュレータICが使われています。
 電解コンデンサと積層セラミック・コンデンサは、レギュレータICの安定な動作のために入っています。

USB-シリアル変換器

 コンピュータが外部とデータのやり取りするインターフェースのほとんどはシリアル通信です。初期のころはパラレル通信が多かったのですが、通信速度が上がるにつれて、姿を消しました。
 8ビット・マイコンは、非同期の調歩同期通信のシリアル・インターフェースが必ずといってよいほど搭載されています。現在ではUARTと呼ぶのが一般的ですが、古くは、RS-232C(俗称)のTTLレベルとも呼ばれていました。UARTも実はほんとうではなくUSART(Universal Synchronous and Asynchronous Receiver and Transmitter)です。Asynchronous=同期通信は、IBMのコンピュータとの通信に使われていたものと思われますが、現在は使われていないようです。

 調歩同期式シリアル通信は、PCでCOMポートとして扱われます。現在のPCには調歩同期式シリアル通信用コネクタD-SUB9ピンは存在しません。通常USBポートが代用されます。

 Arduino UNOは現在Rev.3です。USB-シリアル変換はATMega16U2というマイコンを使っています。Rev.2まではATMega8U2でした。USBプロトコルの規格の一つであるCDC(Communication Device Class)ドライバが書き込まれています。UNOのひとつ前のモデルArduino Duemilanoveは、FTDI社のFT232RLを利用していました。

 FT232RLはマイコンより高価なICでした。現在では、同様な機能をもつICにCP210xやCH34xがあるので、UNOの互換品はそれらを使っています。Arduino UNOはFTDIのICより低価格なUSB機能付きマイコンを選びました。現在、FTDIは安価なFT231xなどを出荷しています。

 FT231xの信号は、Rx/Txの信号だけでなくハードウェア・フロー制御用DTR端子が0.1uFを通してATMega328のReset端子につながっています。これは、Duemilanoveと同じく、Arduino IDEでコンパイルが終わって、機械語をArduinoに書き込む前に、DTR信号をLOWにします。マイコンはリセットがかかるとブートローダが起動し、機械語が送られてくるのを待ちます。

追加されたパーツ

 ButtonはディジタルI/Oの2番につながっています(直列に1kΩの抵抗が入っている)。

 BuzzerはディジタルI/Oの8番につながっています。ON/OFFできるスイッチがあります。

 ディジタルI/Oの2~13は3.3MΩでプルダウンされ、MOSFETでLEDをドライブします。

(※)参考文献;山根 彰 AVRマイコン・リファレンス・ブック

(※)16MHzの理由;想像ですが、調歩同期通信はクロックを基準に、必要なボーレートに対応します。クロックは、1/2とか1/16に分周します。16MHzのクロックの下で、たとえば9600ボーに対応するためには、UBRRnレジスタに103を設定すれば誤差0.2%と精度良い通信ができます。

前へ

vs Arduino UNO WiFi (1) セットアップ

次へ

vs Arduino UNO WiFi (2) 内蔵センサIMU