EJAN赤道儀制御システムの設計

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の各電源ポートの実際の機能動作について一覧表としてまとめてみました。

     表   ポート種別と電源ポートの利用法  

<  ボート種別と電源ポートの利用法   >

<ボード名>   Arduino(Diecimila)  UNO

<電源ポート>   <接続後の機能動作>

3Vポート       FT232RLにVCC30ピンに結線。

                        FT232RLで作られた3.3V Max50mAが出力する

5Vポート      5V電源はそのままシステム電源として入る。

                        電圧とリップルに注意が必要である

Vinポート       Vinに電源を入れるとその電源は、レギュレータに入り、

                       5Vが供給される設計なので5Vは不可である


<ボード名>  秋月電子マイコン   Atmega328

<電源ポート> <接続後の機能動作>

3Vポート     AE-UM232Rボードが生成する3.3V Max50mAが出力する

5Vポート     5V電源はそのままシステム電源として入る

                       電圧とリップルに注意が必要である

VINポート      Vinに電源を入れるとその電源は、三端子レギュレータ7805の

                      INに入るので5Vは使用不可である

<ボード名>  Chibiduino 2

<電源ポート> <接続後の機能動作>

3Vポート     電源電圧切り替え3Vジャンパに入るため、電圧切り替えジャンパを5Vに

                      しておかないとシステム電源ラインに電力は供給されない

5Vポート    電源電圧切り替え5Vジャンパに入るため、電圧切り替えジャンパを5V側に

                     しておかないとシステム電源ラインに電力は供給されない

Vinポート  Chibiduino 2にはレギュレータ回路がないのでVinの電源は、

                      そのままシステム電源ラインに入っていますが、USBとは別電源なので

                      利用できありません。

                       電圧切り替えジャンパは5 V側に設定します。

                       供給電源の電圧とリップルに注意が必要です。


<ボード名>  Chibiduino Pro

<電源ポート>  <接続後の機能動作>

3Vポート     3V,5Vピンは内部結線され、システム電源ラインに入っています。

5Vポート     このため、メイン側の電源ポートから5Vを供給する場合はUSBボード側の

                       3Vラインにこの電源が入らないように断線する必要がある

                      3V,5Vピンは内部結線され、システム電源ラインに入っています。

                       このため、メイン側の電源ポートから5Vを供給する場合はUSBボード側の

                       3Vラインにこの電源が入らないように断線する必要がある

Vinポート   ADC7ポートに接続しているため電源線ではない


<ボード名>  Chibiduino USB

<電源ポート> <接続後の機能動作>

5Vポート    USBポートからの5V電源が供給される

3Vポート    PL2303で生成された3.3Vが出力されている

                     メイン側の電源ポートは3Vと5Vは共通線であるから

                    5V信号を入れないように断線しなくてはならない

unicofejan's Ownd

Arduino搭載小型ボードを用いた器機の制作しています。手作りできるようなキットと製品を提供します。 天体の導入・追尾を簡単にする望遠鏡制御gotoシステム ”EJAN”の開発してます。 また、フリーの星図システムを提供し、”EJAN”と連携して使いやすく、安価なGOTOシステムを目指します。 Arduino,ARM,AVRなどの組み込みシステムの設計法と作成方法を記述します。

0コメント

  • 1000 / 1000