3. EJAN赤道儀制御システムの設計
EJAN赤道儀制御システムは、主にアマチュアが望遠鏡を自作したり、死蔵化している望遠鏡の再生を行う場合に使用されることを前提に設計されました。
また、比較的小型の赤道儀の自作をサポートし、モータ及びギアなど諸問題を解決してポータブル赤道機の開発を行って、ユーザに頒布又は販売の形態をとれるようなシステムとしたいと考えます。
このため、あくまでもエンドユーサーはアマチュア天文家ということを主眼にして、システム設計にあたり次の3項目の内容について特に考慮しました。
1.可能な限り商用又はフリーのハードを使用しコストを下げる
2.システムはできる限り低価格で、パフォーマンス維持する
3.システムコントロールアプリはフリーソフトを採用する
以下にこれら1~3の各項目について考察した内容について詳述していこうと思います。
3.1 商用又はフリーのハードを使用し開発コストを下げる
これは、システムの導入コストを抑えることが主な理由です。システムコストは我が国では人的な費用とハード作成費用が非常に高いために、初期的な設計と製造にかかる費用や時間がシステム全体のコストを押し上げる結果となっているためです。
また将来的なメンテナンスを考えた場合に、特定なハードウエアを製作してしまうと、マイクロコントローラ (MC)等の商品サイクルの問題により、部品調達ができなくなりハード寿命が短くなり、メンテナンスも容易ではなくなる可能性が高いからです。
既存のハードの中でできる限り汎用的でアマチュアが使いやすいモジュール化されたボートを採用することの意味は大きいと考えます。
もちろん、将来的なメンテナンスの意味からは市販ボードと同様にあまりメリットはないかもしれないのですが、アマチュア利用者の多いハードはそれ以上に開発上のメリットも多いものです。
その様なわけで、メインボードについてはマイクロコントローラ(MC)が高速で、システム開発がフリーの環境で行えることと、現時点で多くのユーザをもつものを採用し、少なくともハード回路としては純正または互換ボードを使用することとしました。そのため、以下のようなボードを採用候補としてピックアップしてみました。
メインボード : Arduino UNO仕様のボード MC ATmega328
Arduino mega仕様のボード MC ATmega64, Atmega128
LPCcappuccino ボード NXP ARM Cortex-M0
モータコントローラ : 市販のコントローラ、ドライバボード
ステッピングモータ : バイポーラ型 200,400基本ステップ
今回メインコントローラに選択したArduinoは”アルドゥイノ又はアルドゥイーノ”と呼ばれているフリーな仕様のボードです。メインボード選択は、主にサポートする機能とI/O制御ピンの数で概ね決まりますが、モータのコントローラボードに関しては様々な選択肢があります。大まかにいえば、単体にするか複数コントローラの載ったボードを採用するかになる訳です。
より細かにいえば、ドライブ能力や結線の容易さということも重要な要素ではあります。
いずれにせよ、システム構築の基本はメインボードのプログラム作成ということに集約されてしまうし、完成以後のサポートに関しても全く同様ですからメインボードの選択は非常に重要です。
<システム開発用ボードの選択条件>
◆全世界でボードが使われ、ハードがこなれており、かつプロジェクトが生きている
ハードがこなれているということは、バグのないボードいうことで安定したボードということになりますが、その開発そのものが止まってしまているものはシステム寿命が短くなってしまいます。つまり、メンテナンスも容易でないことになります。
◆ハード回路図が公開され、回路そのものもフリーで最悪の場合自らがボードをおこせる
ソフトウエアだけでなくハード回路が公開されているものは、開発時に大きなメリットがあります。
◆マイクロプロセッサの処理性能が高いだけでなく、価格も比較的安い
マイクロプロコントローラMCUの優位点は、使用された数だけでなく、応用される機器の多様さに起因するものです。つまり、MCUの機能は様々なI/O機器の処理を内蔵することで更に性能向上と価格低下を行ってきました。
マイクロプロセッサの性能は、すなわちボード性能を表します。これは、諸機能が集約された昨今のマイクロプロセッサでは顕著な傾向になっています。インテルのCPUを見るまでも無く、プロセッサの価格はシステムボードには大きなウエイトがかかっています。
◆上位機種がそろい、更に小型ボードがあり、同じファームで様々なシステムができる
マイクロプロコントローラの機能向上は同時にボードの小型化を促しました。パソコン用のCPUは処理速度そのものを向上するように意図されて開発がすすめられましたが、周辺機器の制御は余り考慮されていません。
逆にマイクロプロコントローラMCUはI/O処理を有効にこなせるような設計になっています。当然のことながら、I/O処理を除いた論理・計算処理はマイクロプロセッサCPUの方が圧倒的に高速なこと認めますが、I/O処理を含めた総合性能においては何とも言えません。マイクロプロセッサ性能におけるボトルネックは常にこのI/O処理だからです。
◆携帯端末との通信を考え、Androidなどとの通信が行いやすい
携帯端末の心臓部は全てマイクロプロコントローラMCUが使われています。それは、非常に小型の携帯端末等においては様々なI/O処理が行なえるだけでなく、電源投入と同時に稼働することができるようなシステムでなくてはならないからです。この特長は機器に組み込まれたプログラム(ファームウエアと呼ばれる)に特有なものですが、マイクロプロセッサにはこのような処理が不可能なのです。
小型なこととシステムの独立性はマイクロプロコントローラには当然のように求められているとがらです。
将来には携帯端末は非常に重要な上位制御機器と位置付けられます。というのも、携帯端末はシステム的にはネット通信と電話に特化したパソコンと同じものだからです。それは、処理の中核を成すOSを見ても分かることです。
携帯端末のシステムソフトOSは、Android呼ばれるものやiOSと呼ばれるもので占められています。これらのOSは元をただせば組み込み可能なパソコン用OSをベースに作成されたものなのです。共にUNIX系のOSで応用機器に組み込まれるように特化したものです。つまり、機器の形態は全く異なりますが、システム内部的にはパソコンと全く変わりがないわけです。
従って、将来的にはパソコンで動作している全てのシステムが携帯でも動作する日が来るといっても過言ではありません。天体望遠鏡の制御ソフトに関していえば、星図ソフトを携帯端末に入れて使用すれば、携帯そのものがハンドコントローラとして機能することになりますから、本当に便利ですね。
3.2 システムはできる限り低価格で、パフォーマンス維持
3.2.1 メイン制御ボートについて
<Arduino UNO仕様 : Atmega328仕様の概要>
図 Arduino UNO仕様 : Atmega328
■8ビット マイクロコントローラ ATmega328
■作動電圧 5V
■入力電圧(推薦される) 7-12V
■入力電圧(制限) 6-20V
■デジタルI/Oピン14(6がPWM出力を提供する)
■アナログ入力ピン 16
■最大 動作周波数 :20MHz(実動作は16MHzで行う)
■プログラム FLASH:32KB
■内蔵SRAM :2KB
■EEPROM :1KB
■ 8ビット タイマーカウンタ×2, 16ビット タイマーカウンタ×1
■USBポート
■外部電源回路
このボードはArduinoの純正ともいえるボードです。このボードの特徴は電源投入と 同時にArduinoの開発ができることです。ただし、ソケットを含む全ての部品がハンダ付けされた完成品として提供されますから、I/O 等の信号処理は基板上のソケットを介して行なうことになります。
昨今では、プログラム書き込み可能で比較的安価なチップが数多く存在しています。現状では8ビットのマイクロコントローラが機能的にも十分なものがあるのでそれを採用します。将来的には16ビットやそれ以上のものになるにしても上位互換であって、開発したシステムを移行しやすいということがメイン制御ボードの採用条件です。
8ビットのマイクロコントローラの機能を最大限発揮するようなファームウエアを設計し、マイクロコントローラ内にあるROMに書きむことでメイン制御ボートを作成すれば、将来にわたって処理性能で苦労することはないでしょう。
今回メイン制御ボートとして採用するものは、Arduino UNOとMega仕様の各種ボードです。これらのボードは、ハードの回路図はもちろん開発用のシステム環境もフリーです。
現時点では日本のアマチュアにはPICが馴染み深いのですが、Arduinoボードを選択した理由は、全世界的に多くのユーザに使われているこなれた市販のシステムボードを使うことが第一条件となっているからです。
今回のシステムは市販のボードを使うことが第一条件ですから、Android UNOをメインボードに採用しますが、拡張を考えると機能要求的にはMega又はLPCcappuccinoボード等が選択肢に入るかもしれません。しかし、このLPCcappuccinoボードは上記の選択条件を概ね満たしているのですが、Androidとは全く互換がありませんし、各種ライブラリ等にも互換がありませんのでこのプロジェクトに採用することはできません。
それでも、LPCcappuccinokの開発環境は十分に整備されていており、メモリサイズ(128Kb)や制御ピンの数、システムクロックのスピード(48MHzで駆動)やタイマカウンタ数などのハード的な全ての性能面でArduinoボードに優っていますから、上位システムを構築する上での選択肢とはなりえると思います。
また、価格は2倍位になるのですがArduino Mega仕様のボードを使用すれば基板サイズそのものは若干大きくなとはいえ、ROM容量やI/O制御ピンの数も増加してより大きなシステムの構築が可能になります。
このMEGAボードは当然のことながら、Arduino unoのファームウエアと同じものが稼働し、ハード形態が異なることを除けばシステムとしては全く同じものになることが保証されており、加えてプログラム領域が拡大していることが大きな特徴です。また、周辺I/Oポートの数についてもArduino UNOよりも増えており、割り込みの数も同様に増えているので開発における制約はかなり改善されました。ただ、両ボード間のソース移植で1つ注意しておきたいことは、同じファームが稼働するといっても、プログラムのロジック部分を除いたI/O処理に関する記述に関してはプログラム修正が若干なりとも必要なことは言うまでもありません。
さらに開発環境もフリーで、各種ライブラリやサンプルプログラムも多いので、市販のボードを使用したシステム開発で問題になるI/O割り込み処理やタイマー処理などのプログラム開発も比較的容易にできます。
更に、使用されているマイクロコントローラは、Atmel社のATmega328及びその上位チップです。このATmega328チップは16MHzで動作するのですが、個々の命令のほとんどは1クロックサイクルで処理されるので処理性能は概ね16Mips(ミップス)であることになり、8ビットとしては非常に高速な処理が可能です。
アマチュアの間でよく使われたマイクロコントローラは、8ビットではPICと思われますが、このチップは1命令処理に要するクロック数がAtmelチップの2~6倍になっています。このため、Atmelチップは16ビットPICの同クロックのものよりも処理能力があることになるでしょう。
< 電源 >
Arduino UnoはUSB端子からの電源か、外部からの電源で駆動されます。電源ソースは接続されたデバイスの状況に応じて自動選択されます。
USBからでない外部電源については、AC/DCアダプタやバッテリのいずれでも良いことになっています。ただし、アダプタはセンター径が2.1mmで、中心極がプラスになっているプラグによって接続します。バッテリからの電源は、GNDとVinピンで接続します。
Unoボードは6~20Vの外部電源で稼働することができます。しかしながら、7V未満の電源が供給された場合は、5Vを出力するはずのピンが5V未満を供給して動作が不安定になることがあるかもしれません。また、12V以上の電源を使用するとレギュレータが過熱し、場合によっては基板を損使用することがあるかも知れません。
<ピンマッピング>
Unoにある14本のデジタルピンは、pinMode(),digitalWrite()及びdigitalRead()等の関数を使用することで入出力を行うことができます。各ピンは20mAが推奨値としてに入出力を行うだけでなく、入力時には20-50Ωの内部プルアップ抵抗を機能させることもできます。(初期値はオフ状態です)
入出力に40mAを超えてしまうと、マイクロコントローラに致命的な損傷を与えることがありますのでこの値を超えないように制御しなくてはなりません。
<特別に割り当てられたピンの機能> <Arduino Unoで対象となるピン>
USB-TTL シリアル 0 pin0(RX),pin1(TX):USB端子に接続
外部割り込み 割り込み 0 pin2
割り込み 1 pin3
SPI SPI通信 pin12(MISO:Maste In Slave Out ),
pin11(MOSI:Maste out Slave In),
pin13(SCK:SPI Clock)
pin10(SS:Slave Select)
SPIライブラリで使用しているピンです。
TWI TWI通信 pin20(SDA),pin21(SCL)
TWI通信ライブラリにより使用されます。
Duemilanove,Diecimilaとはピン位置が異なります。
PWM PWM出力 pin3,5,6,9,10,11
analogWrite()関数による8ビットPWM出力
analog アナログピン 合計6のアナログに入力ピンがあり、それぞれ
10ビット(1024分割の解像度)があります。
GNDから5Vまでの電圧を計測できますが、
AREFピンで上限範囲を指定して
analogReference()関数を使うことができます。
LED LED点灯 Pin13,信号がhighの時LEDが点灯
AREF AREF端子 アナログの参照電圧の入力ピン
RESET RESET端子 リセット端子、LOWシグナルでシステムリセット
<コミュニケーション>
Arduino Unoボードには、他のボードやコントローラなどと通信するためのいくつかの手段があります。Unoは、TTL(5V)シリアル通信のための1つのハードウエアUARTが提供されています。正統なArduinoではその内のひとつのUARTにATmega16U2が(ATmega8U2)載っています。互換ボードではそのほかのUSB-TTLシリアル変換チップが載っています。このチップはUSb信号をTTLシリアル信号に変換し、シリアル0のピン端子に入っています。USB-TTLシリアル通信が行なわれているときは、基板上のRXとTXを表すLEDが点滅します。
<物理的特性とシールドの互換性>
Arduino Unoボードの最大長は68.6mmで幅は53.4mmです。このボードの前面にあるUSBコネクタと電源ジャックは更に前方に突き出ています。Arduinoはデジタルピン7と8の間が他のピンの間隔(100milの間隔で均一)と同じでなく、160mil(0.16”)になっていることに注意が必要です。
<自動リセット機能>
Mega2560は、プログラムをアップロードするためにリセットボタンを押すことを要求するよりも実行されているソフトウエアがコンピュータに接続されることでリセットがかかるような方法に設計されています。ATmega8U2(又はUSB-TTLシリアル変換チップ)のハードウエア・フロー制御ライン(DTR)は100nFのコンデンサを介してリセット端子に接続されています。
この線がLowに落とされると、このコンデンサのおかげでリセット線がチップをリセットするのに十分な時間だけLowを保ちます。Arduinoの開発環境(IDE)はアップロードボタンが押されたときにこの関係を利用してボードにリセットをかけ、ブートローダが起動するようにします。
このとき、ブートローダはファームウエアのアップロードの有無を検査し、アップロードがあればそのコードをロードしますが、アップロードがなければファームウエアの先頭から実行を開始します。
ブートローダはこのような処理を行ないますので多少の時間がかかります。このとき、上位アブケーションソフトが、ファームウエアに何らかのデータ返送を望んでいた場合には少し困った状況に陥ります。というのも、上位アプリケーションソフトはこのファームウエアからの正しい返送の有無で逆に通信の有効性を判断している場合が多いからなのです。正しい返答が即座に返らない場合には、通信が正常にオープンしていないとみなすのです。この問題の解決法は、次の二つの方法があり、
1つは上位のアプリケーションソフトに1~2秒位の待ち時間を入れる方法、2つ目はリセット信号をHighに維持し続けることです。このことについては別途詳細に記述をしますのでそちらを参照してください。
3.2.2 Arduino Pro mini :TTmega328仕様の概要
オリジナルArduino Pro miniはATmega168ベースのようですが上位マイクロコントローラのATmega328を使用したボードもあるので、比較的小型の赤道儀においてはこちらのボードを採用することができます。I/Oピンの考え方もほぼUNOとほぼ同じなので、小型であると同時に互換性とスピードとを重視すれば必然的にこのボードを選択することになります。
当然のことながら、Arduino unoのファームウエアと同じものが稼働するので、ハード形態が異なることを除けば、システムとしては全く同じものになることが特徴です。
ただし、Arduino uno仕様では標準装備となっているUSBコントローラが載っておらず別ボードとして提供されます。
唯一の難点といえば、ボード端子に対する接続の問題でしょう。このボードは主にブレッドボードにさして試作を行うことができるような状況を念頭に設計されているようなので、通常はピンヘッダを自らハンダ付けして使用します。つまり、UNOのようにソケットが前提ではないことで利用法には自由度がありますが、その分結線の面倒さは増えてします。
また、基板にUSBが載っていませんが、代わりにUSB接続のための端子が配置されています。
図 Arduino Pro mini : ATmega328
■8ビット マイクロコントローラ ATmega328
■最大 動作周波数 :20MHz 16 MHz (5V model)(実動作は16MHz)
■プログラム FLASH:32KB
■内蔵SRAM :2KB
■EEPROM :512B
■ 8ビット タイマーカウンタ×2, 16ビット タイマーカウンタ×1
■USBポートは外部で出力ピンのみ
USBポートの端子は出力されていますので、別途USBボードを接続すればシステム拡張は比較的容易です。もしも、USBが必須というのであれば、次に説明するArduino nanoボードを採用する方がよいでしょう。
また、電源関連も回路が形成されていませんので、USBボード等から外部電源を5V又は3.3Vを供給してやらなければなりません。
3.2.3 Arduino nano : ATmega328仕様の概要
Arduino nanoは上記Proの機能にusbシリアル機能が追加された仕様となっています。USBミニBコネクタが実装されており、Pro mini同様ブレッドボードにピン接続が可能なように設計されいてます。
Arduino nanoは、Atmega328とAtmega168を搭載されたボードがあり、電源レギュレータとUSB-RS232C変換チップが搭載されている高機能なボードなのです。機能的にはUNOとほぼ同一と考えてもよいボードです。
このボードも互換ボードが多く、中国製のものはUSBシリアル変換チップにCH340G等が使われていることが多いようです。純正ArduinoにはFTDIの変換チップが載っています。
■8ビット マイクロコントローラ ATmega328/ATmega168
■最大 動作周波数 :20MHz (実動作は16MHz)
■プログラム FLASH:32KB / 16KB 2KBはブートローダが使用
■内蔵SRAM :2KB
■EEPROM :1KB / 512B
■ 8ビット タイマーカウンタ×2,16ビット タイマーカウンタ×1
■16 MHz (5V model)
■USBミニポートはRS232チップを介してシリアル接続
■入力電圧 : 7-12V (最大 6-20V)
3.2.4 Arduino Mega仕様 : ATmega 2560仕様の概要
このボードは、Arduino UNOとはボード形態も異なり、その上位ボード位置するもので、MCUの仕様そのものが異なっています。MCUのアーキテクチャ的にはUNOのものの上位互換に相当し、ソフトウエアも同じものが当然稼働します。つまり、MCUがATmega2560変わったことでプログラムをストアするフラッシュメモリが256KBに、I/Oピンが54(内15ピンはPWM出力に使用可能)に、SRAM(8KB)、EEPROM(4KB)がそれぞれ増加しています。
更に、16ビットタイマーカウンタの数が4つまで使用できるようになったことはシステム開発的には重要なことです。Arduino UNOの場合は、16ビットカウンタが1つだけでしたから、赤道儀におけるステッピングモータの赤経・赤緯回転のステップ信号を作り出すことに若干苦労します。赤道儀では、本来赤経・赤緯モータの制御を別々に行なう方が良いのです。
また、ステッピングモータの回転はステップ信号を特定な時間間隔毎に出力することで行なわれ、その信号間隔を生成するのがタイマカウンタのタイマ時間ということになっているわけです。
つまり、Arduino UNOではこの時間生成の仕組みが一つしかないなので様々な設計制約が生まれるわけです。実際には、1つのタイマカウンタを利用して赤経・赤緯の2軸の回転を異なる速度で行なうような仕組みを作ることは可能で、現にEJANシステムではそのようなプログラム設計になっていますが、本来的にはプログラム処理的には別々のタイマー操作の方がずっとスマートです。実際の小型システムではUNOで作成されますから、そのような1つのタイマカウンタで複数のステッピングモータの回転処理がサポートされています。その具体的な設計と処理方法については後に”章 EJAN赤道儀制御システムの速度制御法” で詳しく述べることにします。
■8ビット マイクロコントローラ ATmega2560
■作動電圧 5V
■入力電圧(推薦される) 7~12V -入力電圧(制限) 6~20V
■デジタルI/Oピン 54(15ピンがPWM出力を提供する)
■アナログ入力ピン 16
■最大動作周波数 :16MHz
■プログラム FLASH:256KB(ブートローダに8KB使用されます)
■SRAM :8KB
■EEPROM :4KB
■ 8ビット タイマーカウンタ×2,
16ビット タイマーカウンタ×4 (チップによりタイマーの少ないものもある)
■ボードサイズ :長さ 101.52 mm×幅 53.3 mm 重さ およそ37g
このボードはUNOの上位ボードに相当し、FLASHメモリやI/Oピン数が増えています。
基本的に、Unoのソケット配置とMegaのそれらとは互換性があり、Megaで有効になる
I/Oソケットが追加された分ボードが拡張されています。
Mega2560は、コンピュータのUSBポートが短絡や過電流から保護するための再設定可能なポリヒューズがあります。 大部分のコンピュータは彼ら自身の内部の保護を提供していますが、このポリヒューズはシステム保護と作動の制御を提供します。500mA以上の電流ががUSBポートに印加されたならば、ショートまたはオーバーロードが取り除かれるまで、ヒューズは自動的に接続を断ちます。
< 電源 >
Mega2560はUSB端子からか、外部電源で駆動されます。電源は接続されたデバイスの状況に応じて自動選択されます。
USBでない外部電源には、AC/DCアダプタやバッテリのいずれでも良いことになっています。
ただし、アダプタは2.1mmのセンターで、極がプラスになっているプラグによって接続します。バッテリからの電源は、GNDとVinピンで接続します。
Mega2560ボードは6~20Vの外部電源で稼働することができます。しかしながら、7V未満の電源が供給された場合は、5Vを出力するはずのピンが5V未満を供給して動作が不安定になることがあるかもしれません。また、12V維持用の電源を使用するとレギュレータが過熱し、場合によっては基板を損使用することがあるかも知れません。
3.3Vはボード上のレギュレータによって生成され、最大50mAまで供給することができます。
<ピンマッピング>
Mega2560にある54本のデジタルピンは、pinMode(),digitalWrite()及びdigitalRead()等の関数を使用することで入出力を行うことができます。各ピンは20mAが推奨値として入出力を行えるだけでなく、入力時には20-50Ωの内部プルアップ抵抗を機能させることもできます(初期値はオフ状態です)。40mAを超えるとマイクロコントローラに致命的な損傷を与えてしまうので入出力にこの値を超えてはなりません。
表 ATMega256の主要な機能とピンマッピング
<特別に割り当てられたピンの機能> <Mega2560で対象となるピン>
USB-TTL シリアル 0 pin0(RX),pin1(TX):
USB-シリアルチップに接続
シリアル 1 pin19(RX),pin18(TX)
シリアル 2 pin17(RX),pin16(TX)
シリアル 3 pin5(RX),pin14(TX)
外部割り込み 割り込み 0 pin2
割り込み 1 pin3
割り込み 2 pin21
割り込み 3 pin20
割り込み 4 pin19
割り込み 5 pin18
SPI SPI通信 pin50(MISO:Maste In Slave Out ),
pin51(MOSI:Maste out Slave In),
pin52(SCK:SPI Clock)
pin53(SS:Slave Select)
SPIライブラリで使用しているピンです。
Unoとは異なっていることに注意が必要です。
TWI TWI通信 pin20(SDA),pin21(SCL),
TWI通信ライブラリにより使用されます。
Duemilanove,Diecimilaとはピン位置が異なります。
PWM PWM出力 pin2~13,pin44~46,
analogWrite()関数による8ビットPWM出力
analog アナログピン
合計16のアナログに入力ピンがあり、それぞれ10ビット(1024分割の解像度)があります。GNDから5Vまでの電圧を計測することができますが、AREFピンで上限範囲を指定してanalogReference()関数を使うことができます。
LED LED点灯 Pin13,信号がhighの時LEDが点灯します。
AREF AREF端子 アナログの参照電圧の入力ピン
RESET RESET端子 リセット端子、LOWシグナルでシステムリセット
<シリアル通信ポート>
DUEのシリアルポートは4つの独立したポートがあり、それぞれ以表 で示すGPIOポートに信号線が出ています。シリアル0はATmega16U2のUSB-シリアルチップに接続しています。シリアル1~3はTTLレベルのシリアルデータが転送されます。
デジタルピンに対してはソフトウエア的なTTL シリアル通信を行うためのソフトウエアシリアルライブラりが用意されています。これは、他のArduinoボードと共通で、上記のハード的に設定された任意の指定デジタル信号ピンを使ってシリアル通信を行おうとするものです。
表 ATMega256のシリアル通信の関連ピン番号
<シリアル> <機能> <ピン番号> <機能>
シリアル0 RX0 0 シリアル0 データ受信
TX0 1 シリアル0 データ送信
シリアル1 RX1 19 シリアル1 データ受信
TX1 18 シリアル1 データ送信
シリアル2 RX2 17 シリアル2 データ受信
TX2 16 シリアル2 データ送信
シリアル3 RX3 15 シリアル3 データ受信
TX4 14 シリアル3 データ送信
<デジタルI/Oピン>
デジタルI/Oピンの数はUNOの20ピンに対して54ピンに増えています。各ピンは3.3Vで操作され、各ピンは3mA~15mAの電力を供給でき、6mA~9mAの電力の入力でピンが動作します。入力用の内部プルアップレジスタは100KΩで機能は専用の関数pinMode()のモード(INPUT_PULLUP)で稼働させることができます。ピンの動作には以下の設定用の関数が用意されています。
表 ATMega256のピンモードの設定とニーI/O 処理関数
<I/Oピン操作関数> pinMode(pin,mode)
<関数の処理> 指定ピン(pin)番号の動作モード(mode)を指定します
<パラメータ> pin 動作設定をするピンの番号
mode 動作モード(mode)を指定します
INPUT : ピンを入力モードに設定します
OUTPUT : ピンを出力モードに設定します
INPUT_PULLUP : ピンをプルアップ抵抗付きの入力モードに設定します
戻り値 無し
<I/Oピン操作関数> digitalWrite(pin, value)
<関数の処理> ピンの信号状態をHIGH/LOWに設定します
<パラメータ> pin 書き込みをするピンの番号
value
HIGH: デジタルHIGH(電源により5V/3.3V)
LOW : デジタルLOW(ゼロ 0:グランド電圧)
<I/Oピン操作関数> digitalRead( pin )
<関数の処理> 指定するピン(pin)番号の値を読み取ります
<パラメータ> pin 読み出しをするピンの番号
戻り値 HIGH(!=0)/LOW(0)の論理値が返る
<SPI:Serial Peripheral Interface>
SPI通信は、SPIライブラリを使うことにより行なわれます。SPI信号の各ピンは基板中央部に、Uno,LeonardoそしてMega2560などで物理的に共通する6ピンヘッダに出力されています。
表 Arduino DUEのTWI通信の関連ピン番号
<信号名> <Dueピン番号> <信号の内容>
MISO 50 Master Input Slave Output :
マスター入力、スレーブ出力
MOSI 51 Master Output Slave Input :
マスター出力、スレーブ入力
SCK 52 SPI CLock:同期クロック信号
SS 53 Slave Select:スレーブ(従属)機器の
選択信号:複数のスレーブ機器を操作するときは別の
ピンを使用してもよい
<TWI:Two-wire Serial Interface, I2C>
TWI通信はWireライブラリを使用して提供されます。SDA1とSCL1はWireライブラリのWire1クラスを使用して制御されています。SDAとSCLは内部プルアップ抵抗を持っていますが、DSA1とSCL1はそれがありません。Wire1を使用するためにはDSA1とSCL1線上に2つのプルアップ抵抗が要求されます。
表 ATMega256のTWIの種別とポート
<TWI種別> <信号名> <Dueピン番号>
<TWI> SDA 20
SCL 21
<TWI1> SDA1 70
SCL1 71
<PWM>
指定したピン(pin)から指定値(value)に対応するアナログ電圧(PWM波)を出力します。PWMに使いたいデジタルピンの番号を整数で指定します。
Arduinoボードに搭載されたMCUの種別により有効なピン値は異なっています。
PWM出力が行なわれるピンの最大電圧は、AREFで指定された参照電圧により異なってきます。
表 ATMega256のPWMモードと処理関数
<I/Oピン操作関数> analogwrite(pin,value)
<関数の処理> 指定ピン(pin)番号にアナログ値(value)を指定します
<パラメータ> pin : PWM出力を行うために書き込みをするピンの番号(2~13)
value: ゼロ(0)から255までのサイクルデューティの値を設定します
戻り値 無し
<I/Oピン操作関数> analogWriteReslution(bits)
<関数の処理> analogwrite(pin,value)関数で使用される分割値を設定します
<パラメータ> bits ADコンバータの解像度をビットで指定します(8,10,12)
戻り値 無し
<アナログ入力>
Arduino Dueは12のアナログ入力があり、各入力は12ビット(4096の異なる値)解像度が提供されています。初期的には、読み込みの解像度は他のArduinoボートの互換を維持するために10ビットに設定されています。
anologReadResolution()を使用することでADCの解像度を変更することが可能です。Dueのアナログ入力ピンはグランドと最大3.3Vの範囲で計測します。Dueのアナログ入力ピンに3.3V以上を供給することは、SAM3Xチップを破損することになるかもしれません。anologReference()関数はDueでは無視されます。
表 ATMega256のアナログ入出力処理関数
<I/Oピン操作関数> analogRead(pin)
<関数の処理> 指定ピン(pin)番号にアナログ値(value)を読み出します。
アナログ入力は概ね100μS毎に行なわろるので、
最大1秒当たり10000回の読み込みレートです。
<パラメータ> pin 書き込みをするピンの番号(0~15)
<戻り値 > int ゼロ(0)から1023までの値が返ります
<I/Oピン操作関数> analogReadReslution(bits)
<関数の処理> analogRead(bits)による戻り値の解像度を定義します
DueのADコンバータの解像度は10ビットなので、最大10ビット
(0~1023)のでの値でアナログ値が返されます。
10ビット以上の解像度が指定されたとしても、
ハード的な解像度の最大値を超えた解像度とはなりません
<パラメータ> bits analogRead(bits)による戻り値の解像度ビット数
を定義します。 1から32までの指定します。
ただし、10以上の指定は全て10にみなされます。
<戻り値> 無し
ADCの解像度を10ビットより大きく設定しても、10ビットまでの情報はDACの値が入りますがそれ以上はゼロ(0)で埋められてしまいます。(この点はDueとは異なります)
この関係はボードの最大解像度により決定されてしまいます。
3.4 ARM Coreのチップを採用したArduinoボード
3.4.1 Arduino DUEボード
このボードは32ビットのAtmelのSAM3X8E ARM Coretex-M3 MCUを採用したArduino DUEと呼ばれるボードです。ボード形態的にはATMega256ボードとほぼ同じものですが、MCUが異なっています。しかし、下図 の写真のようにUSBコネクタを除きI/Oピンなども外形的には同じ形態です。
ATMega256の内部アーキテクチャがARMと良く似ており、このボードとの親和性が高いのでしょう。以下は、このポートの特長と本システムでの位置づけについて述べてみたいと思います。
図 Arduino DUEボードの仕様と形態
■MCUbコアは32ビットの ARM Coretex-M3で、
4バイトの演算が1クロックでできる
■54本のデジタルI/Oピン(内12ピンはPWM出力が可)を装備する
■12チャンネルのアナログ入力ができる
■4つの独立したUART(ハードウェアシリアルポート)をサポート
■最大クロック周波数 84MHz で稼働する
■USB On-the-Go(OTG)接続対応
■2つのDAC(デジタル・アナログ・コンバータ)を内部回路に装備している
■2つのTWI(I2C)
■電源ジャックの装備
■SPIヘッダー
■JTAGヘッダー
■リセットボタンとイレースボタンを備えている
■DMAコントローラが搭載されている
■ボードサイズ :長さ 101.52 mm×幅 53.3 mm 重量 36g
表 Arduino DUEボードの特徴
<CPU仕様> <デバイス> <仕様>
MCUチップ仕様 SAM3X8E AT91SAM3X8E ARM
Coretex-M3コア
フラッシュ 512Kバイト 256×2のファームウエア保持用の領域
SRAM 96Kバイト 64Kbと32Kbのプログラム実行用のバンクメモリ
電源出力 3.3V (LVTTL)800mAまで出力可能
5V 800mAまで出力可能
周辺装置 DAC 内部ハードて2回路対応で、12ビットの解像度
USART 4つのハードウエアシリアルポートのサポート
SPI SPI通信用ヘッダ有り
I2C I2C通信用
発信子 84MHz 84MHzで動作
電源 外部電源 外部電源(6~16V)で動作可能で、
推奨電圧は7~12Vになっている
オンボード入力 リセットSW ボードチップのリセット用
イレースSW DFUとユーザプログラムの切り替え動作用
オンボード出力 LED(赤) 電源用LED
LED(赤) SDカード・アクセス表示用LED
ボードサイズ 101.52×53.3mm UNOよりも長い
<デジタルI/Oピン>
デジタルI/Oピンの数はUNOの20ピンに対して54ピンに増えています。各ピンは3.3Vで操作され、各ピンは3mA~15mAの電力を供給でき、6mA~9mAの電力の入力でピンが動作します。入力用の内部プルアップレジスタは100KΩで機能は専用の関数pinMode()のモード(INPUT_PULLUP)で稼働させることができます。ピンの動作には設定用の関数が用意されています。
詳細に関しては、Arduino256の記述を参照してください。
表 Arduino DUEの特徴
<I/Oピン操作関数> pinMode(pin,mode)
<関数の処理> 指定ピン(pin)番号の動作モード(mode)を指定します
<パラメータ> pin 動作設定をするピンの番号
mode 動作モード(mode)を指定します
INPUT : ピンを入力モードに設定します
OUTPUT : ピンを出力モードに設定します
INPUT_PULLUP : ピンをプルアップ抵抗付きの入力モードに設定します
戻り値 無し
<I/Oピン操作関数> digitalWrite()
<関数の処理> ピンの信号状態をHIGH/LOWに設定します
<パラメータ> pin 書き込みをするピンの番号
value
HIGH: デジタルHIGH(電源により5V/3.3V)
LOW : デジタルLOW(ゼロ 0:グランド電圧)
<I/Oピン操作関数> digitalRead( pin )
<関数の処理> 指定するピン(pin)番号の値を読み取ります
<パラメータ> pin 読み出しをするピンの番号
戻り値 HIGH(!=0)/LOW(0)の論理値が返る
< 電源 >
USBからか、DC電源アダプタによる外部電源からのいずれかの電源で稼働します。接続された電源の種別を自動的に判断して電源が供給されます。電源アダプタの接続プラグはセンター+です。外部電源は、VINとGNDピンに接続することができます。
また、外部電源は6~20Vの範囲でも動作することができます。推奨電圧の範囲は7~12Vですが、7V未満の電源では5V出力ピンの電圧は5V未満になることがあり、12V以上の電源の場合はレギュレータが過熱して基板に損傷を与える場合があります。
表 Arduino DUEの電源関連のピン
< 電源 > <機能 >
VIN Arduinoボードが稼働するための外部電源入力。
GNDピンと対になって電源を供給します。
5V ボード上のレギュレータによって制御された5Vの電源が出力されます。
ボードはDC電源ジャック(7-12V)、USBコネクタ(5V)或いは
VINピン(7-12V)のいずれからでもこの5V電源の出力を行います。
レギュレータを回避した5Vや3.3Vで電源を供給することはボードに損傷を
与えるかもしれません。
3.3V ボード上のレギュレータによって制御された3.3Vの電源が出力されます。
その電源は最大電流が800mAで、マイクロコントローラにも供給されます。
GND 回路のグランドピンです。
IOREF このピンは、Arduinoボードが稼働する5V又は3.3V電源の
いずれかで動作するかを参照するための電源ピンです。
<シリアル通信ポート>
DUEのシリアルポートは4つの独立したポートがあり、それぞれ以表 で示すGPIOポートに信号線が出ています。シリアル0はATmega16U2のUSB-シリアルチップに接続しています。シリアル1~3はTTLレベルのシリアルデータが転送されます。
表 Arduino DUEのシリアル通信の関連ピン番号
<シリアル> <機能> <ピン番号> <信号内容>
シリアル0 RX0 0 シリアル0 データ受信
TX0 1 シリアル0 データ送信
シリアル1 RX1 19 シリアル1 データ受信
TX1 18 シリアル1 データ送信
シリアル2 RX2 17 シリアル2 データ受信
TX2 16 シリアル2 データ送信
シリアル3 RX3 15 シリアル3 データ受信
TX4 14 シリアル3 データ送信
デジタルピンに対してはソフトウエア的なTTL シリアル通信を行うためのソフトウエアシリアルライブラりが用意されています。これは、他のArduinoボードと共通で、上記のハード的に設定された任意の指定デジタル信号ピンを使ってシリアル通信を行おうとするものです。
<SPI>
SPI通信は、SPIライブラリを使うことにより行なわれます。SPI信号の各ピンは基板中央部に、Uno,LeonardoそしてMega2560などで物理的に共通する6ピンヘッダに出力されています。
表 Arduino DUEのTWI通信の関連ピン番号
<TWI種別> <信号名> <Dueピン番号>
TWI SDA 20
SCL 21
TWI1 SDA1 70
SCL1 71
<TWI>
TWI通信はWireライブラリを使用して提供されます。SDA1とSCL1はWireライブラリのWire1クラスを使用して制御されています。SDAとSCLは内部プルアップ抵抗を持っていますが、DSA1とSCL1はそれがありません。Wire1を使用するためにはDSA1とSCL1線上に2つのプルアップ抵抗が要求されます。
表 Arduino DUEのTWI通信の関連ピン番号
<信号名> <Dueピン番号> <信号の内容>
MISO 50 Master Input Slave Output :
マスター入力、スレーブ出力
MOSI 51 Master Output Slave Input :
マスター出力、スレーブ入力
SCK 52 SPI CLock:同期クロック信号
SS 53 Slave Select:スレーフ(従属)機器の選択信号
複数のスレーブ機器を操作するときは別のピンを使用可能
<PWM>
指定したピン(pin)から指定値(value)に対応するアナログ電圧(PWM波)を出力します。PWMに使いたいデジタルピンの番号を整数で指定します。
Arduinoボードに搭載されたMPUにより有効なピン値は異なっています。
表 Arduino DUEのPWM処理の関連の関数
<I/Oピン操作関数> analogwrite(pin,value)
<関数の処理> 指定ピン(pin)番号にアナログ値(value)を指定します
<パラメータ> pin 書き込みをするピンの番号(2~13)
value ゼロ(0)から255までのサイクルデューティーの値を
設定します
戻り値 無し
<I/Oピン操作関数> analogWriteReslution(bits)
<関数の処理> analogwrite(pin,value)関数で使用される分割値を設定します
<パラメータ> bits ADコンバータの解像度をビットで指定します(8,10,12)
戻り値 無し
<アナログ入力>
Arduino Dueは12のアナログ入力があり、各入力は12ビット(4096の異なる値)解像度が提供されています。初期的には、読み込みの解像度は他のArduinoボートの互換を維持するために10ビットに設定されています。
anologReadResolution()を使用することでADCの解像度を変更することが可能です。Dueのアナログ入力ピンはグランドと最大3.3Vの範囲で計測します。Dueのアナログ入力ピンに3.3V以上を供給することは、SAM3Xチップを破損することになるかもしれません。anologReference()関数はDueでは無視されます。
表 Arduino DUEのアナログ処理関連の関数
<I/Oピン操作関数> analogRead(pin)
<関数の処理> 指定ピン(pin)番号にアナログ値(value)を読み出します。
アナログ入力は概ね100μS毎に行なわろるので、最大1秒当たり
10000回の 読み込みレートです。
<パラメータ> pin 書き込みをするピンの番号(0~15)
戻り値 int ゼロ(0)から4095までの値が返ります
<I/Oピン操作関数> analogReadReslution(bits)
<関数の処理> analogRead(bits)による戻り値の解像度を定義します
DueのADコンバータの解像度は12ビットなので、最大12ビット
(0~4095)のでの値でアナログ値が返されます。
12ビット以上の解像度が指定されたとしてもハード的な解像度の最大値を
超えた解像度とはなりません
<パラメータ> bits analogRead(bits)による戻り値の解像度ビット数を
定義します。
1から32までの指定します。
ただし、12以上の指定は全て12にみなされます
戻り値 無し
ADCの解像度を12ビットより大きく設定しても、12ビットまでの情報はDACの値が入りますがそれ以上はゼロ(0)で埋められてしまいます。
この関係はボードの最大解像度により決定されてしまいます。
<DAC1とDAC2>
このピンはanalogWrite()関数による12ビット(4096の異なる値)解像度のアナログ出力が提供されています。これらのピンは、Audioライブラリを使用してオーディオ出力を生成するために利用することができます。
<CAN>
CAN通信プロトコルが提供されますが、Arduino APIによってサポートされるていません。
<AREF>
アナログ入力の参照電圧です。参照電圧タイプは以下のようになります。
DEFAULT : 5Vか3.3Vのアナログ参照電圧
INTERNAL : チップ内部参照電圧
ATmega168かATmega328では1.1V、
ATmega8では2.56Vになっている
INTERNAL1V1 : チップ内部参照電圧 Arduino Megaのみで1.1V
INTERNAL2V56: チップ内部参照電圧 Arduino Megaのみで2.56V
EXTERNAL : AREFピン(0~5Vのみ)で提供される電圧が参照される
表 Arduino DUEのアナログリファレンス処理関連の関数
<I/Oピン操作関数> analogReference(type)
<関数の処理> analogRead(bits)による戻り値の解像度を定義します
<パラメータ> type 参照電圧のタイプ
DEFAULT : 初期状態に設定します
INTERNAL: 内部1.1V参照に設定します
INTERNAL1V1: 内部1.1V参照に設定します(Megaのみ)
EXTERNAL: AREF ピンによる外部電源参照
戻り値 無し
<RESET>
このピンをLOWにするとマイクロプロセッサがリセットします。ボードに乗せるシールド上にリセットボータンを付加しておくことが通例になっている。
3.4.2 LPCcappuccino ボード
このボードはストロベーリー・リナックス社が販売しているボードキットで、USBシリアル通信をサポートし、このUSBポートを介してフラッシュメモリの書き換えが行えるようになっています。このボードキットは最小限の回路構成ですが十分に機能的なボードです。USBシリアル通信を行う時は、チップ内でサポートされたUSB機能を使用しています。
なぜこのボードの説明を入れる必要があるのがということに疑問を持つことでしょう。その答えは以下の記述を読んで行けば分かることなのですが、一番重要なことは今般作成しようとしているボードのハード機能構成を十分満足するだけでなく、将来的にArduinoで開発されたシステムを移植することが可能なボードと思われるからです。
もちろん、Arduino UNOの上位にはMegaボードがあります。しかし、このボードは特定なシステム開発には余り向いていません。というのも、Arduinoは”シールド”と呼ばれる積み上げ式の機能ボードを基本にして機能拡張を強要するために自由度がないことが問題なのです。システム機能の拡張はあくまでもArduino仕様に則ったシールドを基本にしなければなりませんが、これはシステム開発にとって非常に大きな足枷となります。
図 LPCcappuccinoボードの形態
表 LPCcappuccino ボードの特徴
<CPU仕様> <LPC11U37仕様> <NXP セミコンダクターズARM Cortex-M0コア>
フラッシュ 128Kバイト ファームウエア保持用の領域
SRAM 12Kバイト プログラム実行用のメモリ領域
EEPROM 4Kバイト 不揮発性メモリ、データ保持用
I/O 3.3V(LVTTL) 5Vトレラント対応
周辺装置 ADC 10ビットA/Dコンバータ内蔵
USART,SPI,I2C
発信子 12MHz 内部は4倍の48MHzで動作
電源 USB又は外部電源 USBバス電源5V、または
外部電源(4~12V)で動作可能
オンボード入力 リセットSW ボードチップのリセット用
ユーザSW DFUとユーザプログラムの切り替え動作用
オンボード出力 LED(赤) 電源用LED
LED(赤) SDカード・アクセス表示用LED
3.4.2.1 LPCcappuccino ボード キットの特徴
Arduinoに似た小型ボードで互換ではありませんが、参考までに紹介しておきます。CPUにはNXP セミコンダクターズ社のMCUチップLPC11U37が採用されており、このチップはARM Cortex-M0をコアとした32ビットのデバイスなのです。
◆フラッシュメモリ容量は128Kバイトで、48MHzで動作する
◆市販のユニバーサル基板と同じ47x72mmサイズ
◆USBメモリとして認識し、直接プログラムの転送ができる
◆マイクロSDカードコネクタが基板上に装備されている
◆I2C液晶を取り付け可能 なコネクタを装備している
◆合計40ピンの拡張端子を装備している
◆L6470モータードライバなどを接続できるCoolConnect端子 を装備している
◆ほぼすべてのピンは5Vトレラント
◆上下に基板拡張できる設計 (Arduinoとは互換ではありません)
このボードの最も特徴的な事柄は、ボードに搭載されたMCUがNXP LPC11U37マイコンということです。このMCUはNXPセミコンダクターズが提供しているもので、コアとなっているものが近年携帯・スマホで多数使用されているARM Cortex-M0になっています。
これと同様のコアを採用したAVRの上位MCUは非常に高性能ですが、ATmega328もデータシート上でそのようなことは記述されていませんが、やはりこのコアの流れをくむもののようです。
このARMコントローラはもともとモトローラが開発したCPU MC6800の流れをくむ、モステクノロジのMOS6502を手本にこれを上回る性能のものを目指して設計されました。MOS6502は、アップルのコンピュータAppleⅡに搭載された高性能なCPUでした。
しかし、パーソナルコンピュータの流れがwindowsとインテルに移ることでこの分野でのMPUの需要がなくなり、組み込みシステム用のマイクロコントローラ(MCU)に活路を見出して現在に至っています。このため、AVRとARMのMCUはひじ用に相性が良いのです。
図 LPCcappuccinoボードのポート構成
近年、ARMが評判となり携帯のCPUコアとして注目されたのには、それが製品としてでなくアーキテクチャーとしてのARMコアが提供されたからですが、やはり一番の理由は処理性能の高さだったのでしょう。このCPUのコストパフォーマンスの高さは抜群で、日本のアマチュアが好んで使用するPICなどと比較してもその点ではとにかく抜きんでています。
ArduinoはAVRのMCUを使用したものがオリジナルなのですが、このMCUもARMの流れをくんだものなのはメモリの取り扱いをみるとよく分かります。PICはインテル系のアーキテクチャといえるものでメモリのバンクやレジスタなどはやはりそのような特徴があります。8ビット同士のMCUを比較してみると、その性能差がはっきりします。8ビットで同じ駆動周波数ならば、AVRのチップの性能はやはり抜きんでています。
図 LPCcappuccino ボードキットの内容
この基板の特徴は既に説明したとおりですが、実際にこの基板に注目する理由は基板回路構成がしっかりしており、外部回路との接続を意識したものとなっていることです。MCUのI/Oピンの信号は全て基板上にピン接続できるようになっています。又、これらのポートは10ピン毎のブロックとして個別に使用することができるようになっています。さらに、これらのピンブロックは拡張端子A~Dとして基板上に配置され、拡張ボードが上下方向にこれらの端子を介して制御できるような設計になっています。拡張端子には、電源とGNDピンが配置されていることが完全に別系統の制御ポートとして利用することができるようになっています。
LCDはI2Cによって制御され基板上に乗せられるようになっています。ただし、LCD基板の固定にやや問題があり、やや不安定です。
また、cool connectと呼んでいる拡張ポートがあり、SPI端子が出ているのでSPI駆動の周辺デバイスが簡単に接続出ます。とくに、L6470チップで駆動するステッピングモータドライバについては、この拡張ポートピンにダイレクト接続できるようになっています。
ただし、SPI機器の接続は1デバイスのみで、赤道儀のような2軸を駆動する場合にはチップセレクトピンとステップピンを別々に制御するが、あるいはディジーチェイン接続を行って制御するなどの工夫が必要です。
3.5 Arduinoマイコンボードの電源供給法のまとめ
Arduinoボートとその互換ボードとのハード的な相違は、電源供給法の違いにあると思われます。
Arduinoボートにおける通常の電源供給源は外部電源(VCC)とUSBバスからの電源(USBVCC)とをジャンパによって切り替えられるようになっています。さらに、平準化された外部電源及びリセット信号と3.3V出力及びGND信号を集めた電源ソケットが存在します。
Arduinoにおける電源ソケット信号の仕様は下表の示すようになっています。
表 Arduino 電源ソケット信号の仕様
<ソケットNo> <電源ソケットの信号内容>
1 RST システムリセット信号
2 3V メインボードのFT232RLにVCC30ピンに結線。
FT232RLで作られた3.3V Max50mAが出力される
3 5V メイン電源の5V電源が出力しています。
または、ダイレクトに外部からの電源を供給します。
4 GND グランド信号
5 GND グランド信号
6 VIN 外部からの電源をレギュレータに入れ、システム電源5Vを生成
外部電源(VCC)とUSBバスからの電源(USBVCC)のいずれかから電源が入る場合には電源ソケットの5V端子からは5V電源が出力されます。逆に通常の電源供給源からの電源がないようにジャンパ結線をなしにすると、電源ソケットの5V端子からシステム電源を供給できます。
このとき端子にいれる電圧は、リップルのないものにする必要があり、かつ印加する電圧にも注意しなくてはなりません。それは、この端子からの電源はメインボードへのダイレクトなものとして供給されるからです。誤って過大な電圧や電流が流れた場合は、マイクロコントローラなどのチップが破損することも考えられるので特に注意が必要です。この電源ソケットの仕様はこの後に詳しく説明することにしますが、この注意点だけは特に留意しておく必要があります。
さて、電源供給源の切り替えジャンパは純正のArduinoボートにも互換ボードにも存在していますが、厳密な仕様から言うと互換ボードのものは純正のものに比べて、やや冗長性があるように思えます。それは、これらのボードが純粋にArduinoボードとしてでなく、様々に製作基板として利用できるように考えられているからに他なりません。したがって、これら電源周りの使用法については前記の電源ソケットとの兼ね合わせで考えていかなくてはなりません。
以下に電源供給源についての仕様を一覧表として示します。
表 Arduino 電源ソケット信号の仕様
<Arduino マイコンボード - 電源切り替えジャンパ>
<ジャンパ名> 外部/USB,電源切り替え,外部VCC-USBVCC,
<結線の方法> <結線後の動作>
USBVCC AE-UM232RボードのUSBバスからの5Vをシステム電源に使用
外部VCC 外部電源またはVIN電源をレギュレーション回路によって生成した5Vを
システム電源に使用します。
結線なし メインボードの5V電源ポートからの電源がシステムに供給されます。
この場合は、リップルのない平準化された電源でなくてはなりません。
表 秋月電子 Atmega328マイコンボード-電源切り替えジャンパ
<秋月電子 Atmega328マイコンボード-電源切り替えジャンパ>
<ジャンパ名> 外部/USB,電源切り替え,USBPOW-EXTernal
<結線の方法> <結線後の動作>
USBPOW AE-UM232RボードのUSBバスから5Vをシステム電源に使用
EXTerna 外部電源またはVIN電源をレギュレーション回路によって生成した5Vを
システム電源に使用 l
結線なし メインボードの5V電源ポートからの電源がシステムに供給されます。
この場合は、リップルのない平準化された電源でなくてはなりません。
3.6 Arduino電源ソケットのポート利用法
電源ソケットのポートの内、RST(リセット)信号は外部からのマイクロコントローラに対するハード的なリセット入力信号用のポートで、この信号がHighになるとArduinoのブートローダに処理が移ることになるわけですが今回は使用しないので特記はしません。
また、GND信号も特殊ではないので特に記述しないのですが、以下の3V,5V,Vinの各電源ポートの実際の機能動作について一覧表としてまとめてみました。
表 ポート種別と電源ポートの利用法
< ボート種別と電源ポートの利用法 >
0コメント