ホーム‎ > ‎学び‎ > ‎林原の担当する授業‎ > ‎

ロボット電子回路


2015年度

2015/10/20連絡

講義で利用しますので,以下ダウンロードお願いします.

資料(3つ必要です)

英語

日本語

回路図







テキスト抜粋(古い内容です)

ロボット電子回路は,1年次後期の授業です. 

 ・ロボットを知能化するための実践的な電気回路を学びます.
 ・教科書の他に,50ページ超のオリジナルテキストを使用します.
 ・2コマ分(180分)連続で集中的に回路を学びます.演習・実習も同時に行います.

オリジナルテキストの内容を一部紹介すると,以下のようになります.

第1章 ロボットの電気電子回路
第2章 脳(コンピュータ)
第3章 循環器系(電力,通信)
第4章 光の表現(LED)
第5章 目(光センサ)
第6章 手足(モータ,角度センサ)
第7章 口(発音)
第8章 耳(音の入力)
第9章 触覚(スイッチ,感圧センサ)
第10章 無線通信(光,電波)

少し内容を整理して,こちらのページで少しずつ公開するようにします.
とりあえず図がありませんが,テキストの一部を公開します.
ただし,内容に関しては詳細なチェックを行っていないものもありますので,お気を付けください.


ロボット電子回路

はじめに

 ロボットは技術の複合体です.メカニズム,エレクトロニクス,コンピュータプログラミング,制御,人工知能など多くの分野を取り込んで,構成されています.このテキストでは,ロボットのエレクトロニクスに焦点を当てて,それらを理解して,応用できるように解説していきます.ロボットのエレクトロニクスだからといって,その他の分野に応用できないわけではありません.基本は同じです.ただし,一般的な電子回路のテキストとは異なり,ロボットを設計・製作するためには,という観点からこのテキストをまとめ直しました.その意味では,ロボット工学を目指す皆さんには,興味深いテキストになっていると思います.「百聞は一見に如かず,百見は一行に如かず」ということわざもあります.理論を学んだら,実際に回路を作ってみるのが,電気電子回路を理解する一番の近道です.
今回のテキストは,ロボットに焦点を当てたため,基本的な電気電子回路の解説は十分にあるとはいえません.副教材と合わせながら,電気電子回路の基本を学んでいただければと思います.

第1章    ロボットの電気電子回路

 ロボットに使用される電気電子回路は,様々なものがあります.このテキストでは,部品をまず学ぶというアプローチではなく,ロボットの各部分がどのように構成されているかを学ぶというアプローチで解説していきます.(下から積み上げる方法をボトムアップというのに対して,上から要素に分けていく方法をトップダウンといいます.このテキストは,どちらかというとトップダウン的なアプローチを取ります.)何に使用するのかはっきり分からないまま基礎を学ぶことより,目的をはっきりさせて学んだ方が,楽しく学べるのではないかと考えます.ただし,目的を達成すれば中身は分からなくても構わないというスタンスにはならないようにしてください.仕組みを十分に理解しないと,応用できなくなります.より良いロボットを設計・製作するためには,さらに原理の部分にも興味を持って学ぶことが重要となります.

 電気回路で実現されるロボットの機能にはどのようなものがあるでしょうか.ここでは,人が持つ機能をモデルとして,以下のように分類します.

第2章         脳(コンピュータ)
第3章         循環器系(電力,通信)
第4章         光の表現(LED)
第5章         目(光センサ)
第6章         手足(モータ,角度センサ)
第7章         口(発音)
第8章         耳(音の入力)
第9章          触覚(スイッチ,感圧センサ)
第10章        無線通信(光,電波)

第4章の光の表現と第10章の無線通信はロボット独自の機能です.高機能なロボットの多くには,第2章から第10章までの機能が搭載され,複雑な振る舞いができるようになっています.このテキストでは,これらの内容を各章に分けて学びます.

第2章 脳(コンピュータ)

第1節 コンピュータの概要

1 はじめに

 脳は人の行動を決定する部分で,ロボットではコンピュータがこれに相当します.コンピュータの進化は早く,計算能力の優れたものが,より低消費電力,小型化しています.今では,記憶装置などの周辺の回路も含んで1チップになっているものが多く,様々な機器に組み込まれています.この章では,主に組み込み向けを意識したコンピュータに関して,学んでいきます.

2 コンピュータとは

 コンピュータとは電子計算機のことで,ある入力に対して,予めプログラムされた演算を行い,結果を出力します.入力と出力は主にデジタル信号です.信号ですので,多くの電流を必要とする負荷を駆動できません.モータなどを駆動する場合は,さらに電流を増幅する回路が必要になります.

3 コンピュータは半導体により作られている

 コンピュータは半導体により作られています.シリコンなどの半導体は導体と絶縁体の中間の抵抗率を持っており,不純物の加え方でさまざまな部品を作ることができます.CPUは写真技術の応用で,小さなICの中に何万と部品を入れて複雑な演算を行っています. 

4 論理回路

 論理回路とは,デジタル信号を処理するための回路で,AND,OR,NOTなどから構成されています.それぞれ以下のような記号で表されます.これらの組合せで計算が行われます.これを表現するために使用されるのが2進数で,0と1の2種類の数字だけで表現します.また,2進数だと桁が多くなるため,2進数を4桁分まとめた16進数というのもよく使用されます.以下に対応表を示します.

5 論理回路を用いた計算

 論理回路を用いて様々な計算を行います.例えば,2進数で足し算を考えましょう.計算結果としては,以下のようになりますので,それを実現する論理回路を考えます.すると図のようになります.ちなみに,2桁の足し算を行う論理回路も図に示します.このように,コンピュータは論理回路を利用して,全ての計算を行っています.


6 記憶回路

 論理回路の中には,入力した信号を先のように直接的に処理する回路だけでなく,手順に従って処理する回路もあります.そのために,データを記憶する回路が使用されます.代表的なものには,以下に示すR-Sフリップフロップ回路などがあります.一度SETにパルスが入力されると,RESETの端子にパルスが入るまでその状態を保ち続けます. 

第2節 ワンチップコンピュータの内部

1 ワンチップコンピュータの内部の構成

 ワンチップコンピュータの内部を示します.このコンピュータは,皆さんが演習に使用したH8/3664Fという型番のコンピュータの内部です.このコンピュータには多くの機能ブロックから構成されています.計算を行うCPUだけでなく,多くの周辺部品を中に内蔵しています.このようなコンピュータは少ない外付け部品で動作しますので,組込用途としてよく使用されます.
 

2 CPU  (Central Processing Unit) :中央演算装置

 コンピュータの最も重要な部分です.演算を行うための論理回路が入っており,メモリに保存された手順と入力信号に従い,結果を出力します.演算は基本クロック毎に行われるため,クロックの周波数が高い場合は,より素早い計算ができます.例えば,AKI-3664のクロックは16MHzですので,1クロックで完了する演算は,1秒間に16,000,000回行えます.

3 ROM  (Read Only Memory)

 コンピュータはある手順(プログラム)に従って動作します.その手順が保存されているのがROMです.また,手順だけでなく演算に必要なデータも保存します.ROMは電源を切ってもデータが消えない記憶素子です.前期の演習でプログラムを書き込んだのは,ROMになります.H8/3664Fの記憶容量は32kByteであり,これは,0x00~0xFFまでの数字を32,000個保存できることを指します.この領域に,プログラムやデータを入れて,コンピュータで自在に計算させることが,プログラマの役割となります.
ROMには,様々な種類があります.H8/3664Fは,フラッシュメモリというROMを内蔵しています.フフラッシュメモリは,書き換え回数に制限(H8/3664Fの場合1000回)があり,それを超えると使用できなくなります.それに対し,容量は小さいが書き換えの回数制限があまりないEEPROMと呼ばれるROMもあります.これらは複数回書き込みができるROMですが,1回しか書き込めないPROMと呼ばれるROMもあります. 

4 RAM  (Random Access Memory)

 データを一時的に保存したい場合には,ROMではなくRAMを使用します.書き換え回数に制限がなく高速に読み書きができる半面,容量が小さく電源を切るとデータが消えるという特徴があります.C言語などで,int a; などの変数定義をすると,この領域が割り当てられます.また,一時的にCPU 内のデータを保存するスタックエリアにもここが使用されます.そのため,RAMを2kBしか持たないH8/3664FなどのCPUを使用する場合には,容量を意識したプログラミングを行うことが重要です.

5 SCI  (Serial Communication Interface)

 コンピュータはプログラムが無ければ目的の動きができません.そのため,外部で作成したプログラムやデータをコンピュータに送ることが必要です.それを行うのがSCIで,シリアル通信でデータの送受信を行う機能を持っています.データを送受信する方法には,シリアル方式とパラレル方式があります.シリアルは少ない本数の線で,データをやり取りできます.H8/3664Fでは,シリアル通信のために.SCIがあり,TXD(Transmit Data)とRXD(Receive Data)という端子が送受信を担当します.この端子を利用して,RS232Cという規格に基づく通信がよく行われます.RS232Cでは,通信方式がいくつかあり,速度やエラー検出ビットを使用するかなどを設定する必要があります.※1なお,最近では,USB(Universal Serial Bus)も使用されることがあります.

RS323Cで設定する項目
1)ボーレート      1秒間に送受信できるビット数
2)データビット    データのビット数(通信の最小単位)
3)ストップビット   終了を表すビット数
4)パリティ         通信が正常に行えたかをチェックするビット.(奇数,偶数,無し)

6 I/O Port  (Input / Output Port) :I/Oポート

 コンピュータは計算結果をデジタル信号として出力します.また,データやスイッチなどのデジタル信号を入力して,それに基づく処理を行います.これを行うのがI/Oポートです.0と1の組合せで信号を送受信します.端子が0Vのときが0で,Vccのときが1に対応します.ここで,Vccとはコンピュータの電源電圧で,CPUにより異なる値となります.大抵は5Vですが,低消費電力型のCPUなどは,3.3Vが多くなっています.H8/3664Fは37chのI/Oポートがあります.ただし,これらのI/Oポートが全て同じ機能を持っているわけではなく,電流を多く流せるポートや入力専用のポートなど,ポートごとに特徴があります.また,端子を他の機能と共有しているものも多く,どちらかを選択することが必要になります.コンピュータの周辺回路を設計する場合には,これらのことを考慮に入れて,パズルを解くように設計していくことになります.

7 A/D変換器  (Analog / Digital Converter)

 先のI/Oポートは0と1の信号を入出力できますが,もっとアナログ的な信号を入力したい場合には,A/D変換器を使用します.A/D変換器は,例えば0~5Vの電圧を0~1023のデジタルデータに変換します.ちなみに,この変換は量子化と呼ばれ,10ビットのA/D変換器の場合,0~1023(210-1)の値のどれかになります.距離に応じて徐々に電圧が変化するPSDセンサなどを使用するときには,この機能を利用します.なお,これとは逆にデジタル値に従いアナログ電圧を出力するD/A変換器もあります.

8 タイマ

 タイマは,時間やパルスをカウントします.その結果に応じて,周期的な信号を出力したり,割り込みを発生させたりします.入力は内部クロックと外部クロックを選択でき,機能はインプットキャプチャかアウトプットコンペアかが選択できるようになっています.インプットキャプチャは,パルスの幅や周期の測定ができます.アウトプットコンペアは,周期的な信号を発生することができます.

 
図 H8/3664 ハードウェアマニュアルより (P.167)


主な用途を以下に示します.
a)時間の計測と割り込みの発生(システムクロックに基づく)
b)パルスのカウントと割り込みの発生(10回パルスが来たら割り込み発生など)
c)周期的な信号の発生
ロボットでは特に以下の用途で使用されます.
c)PWM(Pulse Width Modulation)信号の生成
d)ロータリエンコーダ(高精度な角度センサ)のカウンタ

9 その他

■ウォッチドックタイマ
システムの暴走などを監視するタイマです.一定時間書き換えられないと処理を停止します.
■IIC(Inter-Integrated Circuit)もしくは,I2C(アイスクエアシー)
フィリップス社が提唱した方式でのコンピュータ間や周辺機器との通信を行います.
■IRQ(Interrupt Request)
外部からの割り込み要求信号です.

第3節 機能を制御する方法


1 レジスタ

I/Oポートなどの機能を使用するためには,レジスタと呼ばれる特定の番地のデータを読み書きします.例えば,ポート80の端子に5Vを発生したい場合には,ポートコントロールレジスタ8 (PCR8) H'FFEBのビット0を1にした後,ポートデータレジスタ8(PDR8) H'FFDBのビット0を1にします.これをC言語で記述すると,以下のようになります.

プログラム1 ポート8に5Vを出力するプログラム
#include <3664.h>
void main(void){
  IO.PCR8 = 0x01;
  IO.PDR8.BIT.B0 = 1;
}
ここで,ポートモードレジスタ(IO.PCR8)は,ポートの入出力を選択します.0x01(16進数)を2進数で表すと,0000 0001となり,この0と1でそれぞれの端子の入出力を指定します.つまり,この場合,P80だけが出力で,他のP81,P82などは入力となります.

表 IO.PCR8の各ビットによる入出力の設定
    P87    P86    P85    P84    P83    P82    P81    P80    
IO.PCR8    0    0    0    0    0    0    0    1    = 0x01
入出力    入力    入力    入力    入力    入力    入力    入力    出力    


問題12 ポートP80,P82,P84,P85,P87を出力,他を入力に設定するプログラムを示せ. 

2.レジスタの定義ファイル

IO.PCR8は,レジスタPCR8に値を代入するための変数です.この変数は3664.hというヘッダファイルに定義があります.一部抜き出すと,

struct st_io {                                          /* struct IO    */
             ... (...は省略を示す)
             union {                                    /* PDR1         */
                   unsigned char BYTE;                  /*  Byte Access */
                   struct {                             /*  Bit  Access */
                          unsigned char B7:1;           /*    Bit 7     */
                          ...
                          unsigned char B0:1;           /*    Bit 0     */
                          }      BIT;                   /*              */
                   }            PDR1;                   /*              */ 
                    ...
#define IO      (*(volatile struct st_io    *)0xFFD0)   /* IO    Address*/

となります.これらのファイルには,構造体やポインタが頻繁に使用されていることに気をつけてください.プログラム1と同じ働きをするプログラムを,ヘッダファイル無しで記述すると以下のようになります.

プログラム2 ヘッダファイル無しでポート1に5Vを出力するプログラム
void main(void)
{
  *(unsigned char *)(0xFFEB) = 0x01;
  *(unsigned char *)(0xFFDB) |= 0x01;
}
なお,IO.PCR8のアドレスは,マニュアルなどに記載されています.「レジスタ一覧」には,以下の記述があります.

問題13 H8/Tiny I/Oボード説明書,AKI-3694説明書を参考にしながら,以下の問いに答えよ.
a)H8/Tiny I/Oボードの赤のLED(LED1)はどのI/Oポートに接続されているか.
b)この赤いLEDを点灯させるプログラムを作成せよ.
c)スイッチSW1はI/Oポートのどこに接続されているか.
d)このスイッチをON/OFFすると,先のLEDが同期してON/OFFするプログラムを作成せよ.

問題14 配布された資料に基づきAN1に加わる電圧を量子化する以下の関数を解釈せよ.(右側に説明文を入れる)
int adconv(void){
  AD.ADCSR.BIT.CH = 1;
  AD.ADCSR.BIT.ADST = 1;
  while(AD.ADCSR.BIT.ADF == 0);
  AD.ADCSR.BIT.ADF = 0;
  return(AD.ADDRB >> 6);
}

以下の問題をH8/3664ハードウェアマニュアルなどを参照して答えよ.

問題15 H8/3664FのタイマWでは,いくつのPWM信号を生成できるか述べよ.

問題16
問題13b)d)のプログラムをヘッダファイルを使用せずに作成せよ.

問題17 ヘッダファイルがどこにあるかを示せ.

問題18 H8/3664FのI/Oボード上のLEDを1秒間ごとに交互に点滅させるプログラムを作成せよ.できればタイマを使用して「正確」に点滅させるようにせよ.

問題19 さらに徐々に明るさが変化しながら点滅するプログラムに挑戦せよ.

第4節 コンピュータ周辺の部品


1 コンピュータ周辺の電子回路の種類

 コンピュータを動作させるには,周囲に電子部品を配置します.ここで,AKI-3664を例にして,電子部品を確認しましょう.主な電子部品としては,以下のものが挙げられます.

1)    抵抗
2)    コンデンサ
3)    ダイオード
4)    三端子レギュレータ
5)    クリスタル(水晶)
6)    RS232CトランシーバIC

2 コンデンサ

コンデンサとは


 コンデンサは電圧を加えると電荷を蓄える素子です.蓄えられる電気量Q(C:クーロン)は,以下の式で表されます.

Q = CV (C)

ここで,Cは静電容量と呼ばれ,同じ電圧でも値が大きいほど多くの電荷を蓄えることができます.単位は,F(ファラッド)が使用されます.ただし,一般的に非常に小さい値であるため,μFがよく使用されます.コンデンサの静電容量の表記法は,テキストに書いてありますので,参照してください.

コンデンサの種類

 コンデンサには,主に以下の種類があります.

1)セラミックコンデンサ,積層セラミックコンデンサ
最も一般的なコンデンサ.周波数特性に優れるが,静電容量が大きいものでも数μF程度と小さい.積層セラミックコンデンサの方が特性が良い.

2)アルミ電解コンデンサ(ケミカルコンデンサ)
静電容量が大きいコンデンサの代表格.ただし,周波数特性が悪く,耐圧に制限がある.極性もあり,逆に取り付けると破裂することもある.

3)タンタルコンデンサ
静電容量が大きく,周波数特性も比較的優れている.ただし,故障がショートモードのため,使用には細心の注意を払う必要がある.極性がある.

4)有機半導体アルミ電解コンデンサ(OS-CON)
静電容量が大きく周波数特性にも優れる理想的なコンデンサ.モータなどにより生じるノイズを低減するのに向く.ただし,ラインナップが少ないため,耐圧の高いものが手に入らない場合がある.

5)電気2重層コンデンサ
他のコンデンサに比べて圧倒的に静電容量の大きなコンデンサ.電池としての利用が多い.瞬時に電荷をチャージすることができる.メモリのバックアップなどにも使用されている.

コンデンサの役割

 コンピュータ周辺のコンデンサは,主に以下の働きをします.

1)    ノイズの除去
2)    時間遅れを作る(信号をなまらせる)
3)    チャージポンプ用

1)ノイズの除去
 コンデンサの用途として,一番多いのがこのノイズの除去です.デジタルICの電源には,+と-をバイパスするように,必ずセラミックコンデンサを取り付けます.バイパスコンデンサもしくはパスコンと呼ばれます.デジタルICは頻繁に電流をスイッチングするため,ノイズの発生源となります.それを防ぐ役割を果たします.できるだけICの近くに取り付けます.

2)時間遅れを作る
 コンデンサと抵抗を組み合わせることで,時間遅れを作り出すことができます.コンデンサに加わる電圧と電流の関係は,以下の式で表されます.

 電流の積分が電圧になりますので,電流が流れ込めばそれだけコンデンサで降下する電圧が高くなります.それにより,電流が流れにくくなります.電流を調整する抵抗Rを直列につなぐことで,電圧が上昇する時間を調整することができます.実際の入力波形と出力波形の関係は,右図のようになります.この時,抵抗値Rと静電容量Cを積算した値は,時定数と呼ばれます. 

問題20 三端子レギュレータ78M05の周囲にあるコンデンサはどのような役割を果たしているか.
また,取り付け位置で注意することはあるか.

問題21
a)AKI-3664のRESにつながるRC回路の時定数を求めよ.
b)H8/3664をリセットするときに,RES端子をどの程度の時間LOWに保持しなければならないか.

3)チャージポンプ用
 SP232はRS232C通信を行うためのトランシーバです.RS232Cは,最高±15Vの電圧で信号を送受信します.これを行うためには,SP232では5Vからチャージポンプという方法で±10Vを作り出しています.C1,C2が+10Vを,C3,C4が-10Vを生成するために使用されます.
          
(a) +5Vから+10Vを作るチャージポンプ        (b) +10Vから-10Vを作るチャージポンプ

3.ダイオード

 ダイオードは,半導体から作られており,一方向にしか電流を流さない特徴があります.交流を直流にするための整流回路や,コイルにより発生する高電圧をアースに逃がす回路など,用途は様々にあります.端子はアノードとカソードに別れ,アノード側からカソード側へしか電流が流れません.LED(Light Emitting Diode)もダイオードの一種です.ダイオードはコンピュータ周辺だけでなく,モータを駆動する回路に使用されます.なお,一般的なシリコンダイオードは順方向でも0.6~0.7V程度加えないと電流が流れ始めません.

問題22
H8/3664のRES端子につながるダイオードはどのような役割を果たしているか.

4.三端子レギュレータ

 三端子レギュレータは、電子回路では頻繁に使用されるICです.電源を減圧して,所定の電圧を出力します.例えば,9Vの電池を使用して,コンピュータに5Vを給電するときなどに使用します.シリーズレギュレータとも呼ばれ,昇圧することはできません.昇圧をする場合には,DC-DCコンバータなどが使用されます.三端子レギュレータで最も良く使用されているのは,7800シリーズと呼ばれるICで,以下のような種類があります.

7805        5Vを出力(許容電流1A) 同様に7810(10Vを出力),7812,7815などがある.
78M05, 78L05    それぞれ許容電流0.5A, 0.1A

5Vを出力するためには,+2Vした7V程度の入力電圧が必要です.また,減圧した分は全て熱として放出されるため,高い電圧の場合は許容電流が少なくなります.利用するときには,図のようにコンデンサを入出力に取り付けます.このとき,コンデンサをできるだけ三端子レギュレータの近くに取り付けることに注意してください.電流が大きい場合は,放熱板などを取り付けます.

問題23
a)12Vの電源から7805を利用して5V,0.3Aを出力するとき,三端子レギュレータで消費される電力はいくらか.
b)このとき,三端子レギュレータが非常に熱くなった.どのように対処すればよいか述べよ.

5.クリスタル(水晶振動子)

 一般的なコンピュータは,基本クロックごとに処理を進めていくようになっています.この基本クロックを作り出すのがクリスタルです.クリスタルに電圧を加えると,正確な周期で振動します.クォーツ時計は,この信号を使って時間を表示します.高い周波数のクリスタルを使用すると,コンピュータを高速化できますが,誤動作や過熱の原因となります.AKI-3664のクロックの周波数は,16MHzです.                            クリスタル

問題24
16MHzのクリスタルを使用した場合,処理を進める周期はいくらか.


6.RS232CトランシーバIC

 RS232CトランシーバICは,ワンチップコンピュータ内で生成されたシリアル信号を,RS232C通信の信号レベルに変換し,データを送受信するICです.先のチャージポンプ回路により,信号を±10Vに変換して送受信します.

これらのテクノロジーがベースとなり,コンピュータは構成されています.コンピュータをより活用するためには,これらの知識を十分に学ぶ必要があります.

Comments