Teaching Materials for Learning Fundamental Control with PIC
石 黒 擁* 藤 田 孝 夫
Yo ISHIGURO Takao FUJITA
1. 緒言 現代では社会の情報化が進み、コンピュータや携帯電話など、高度な機能を持つ電化製品が身の回 りにあふれている。子どもたちは当たり前のようにそれらを扱い、無意識のうちに技術の進展による 恩恵を受けている。携帯電話を例に挙げると、子どもたちの携帯電話の操作技能は大人をはるかに上 回るものとなっているが、携帯電話がどのように動作しているのか、どのような構造をしているのか といった部分では知識に乏しい。現在の中学校技術科で情報教育の授業があるものの、コンピュータ を用いたワープロソフト・表計算ソフトの操作技能の習得が主になっており、コンピュータの仕組み やプログラム制御の学習といった「技術の科学的認識」を養う授業内容とは言えない。 この情報化が進む社会の中で、プログラム制御がされていないものはないと言っても過言ではない。 したがって、技術を学んでいく上で制御の概念は必須の知識であり、2008年に改訂された新学習指導 要領では制御の学習は必修の内容となった。しかし、今までの中学校技術科ではプログラム制御の内 容は選択必修であったことや指導が難しいといった理由から遠ざけられ、中学校技術科で指導するた めに適した教材が少なく、教育現場では扱いやすい教材が求められている。この現状を踏まえ、中学 校技術科での制御学習に適した教材を製作する必要があると考えた。 本研究では、PICを用いた電子回路での基本的な制御学習用教材の製作を目的として、中学校技術 科での制御学習に適した教材を製作し、その教材がどのように活用、応用できるかを検討した。 2. 中学校技術科の現状 これまで中学校技術科では、情報分野の指導内容としてコンピュータを用いた学習を行ってきた。 しかし、その学習はコンピュータの操作技能の習得に止まり、大半はワードやエクセルなどの操作を 学習するものであった。学習指導要領には情報分野の「プログラム制御」の指導について記載はある ものの選択必修の内容であること、制御を指導するための専門知識を持った教師が少ないこと、そし て教材が高価なことから、中学校技術科では制御の指導は避けられていた。近年、情報教育が注目され、 徐々にコンピュータの操作技能がメインである学習内容は改善されつつあるも、制御に関する知識不 足の教師が多く、指導には苦労しているようである。 そんな中、2008年改訂された新しい学習指導要領では「プログラム制御」の学習が必修の内容となっ た。これまでの中学校技術科ではプログラム制御の内容を扱わなくても問題はなかったが、これから は必ず扱わなければいけない内容となり、これまで制御の内容を扱っていなかった教師にとっては大 きな負担になると思われる。よって、中学校技術科で用いるのに適した制御学習教材の開発に力を入 れなければならないと考える。限られた時間で指導でき、生徒が理解しやすく、他の学習分野との関 連を持ち応用が可能な制御学習教材の開発を行う必要がある。 *教育学研究科修士課程3. PICについて
PICとは「Peripheral Interface Controller」の頭文字からなる名称であり、周辺インタフェースコント ローラを意味する。PICは、アメリカのマイクロチップ・テクノロジー社により開発されたワンチッ プマイコンである。 特徴として、PICはワンチップマイコンであり演算機能部、メモリ、入出力回路などが一つのICに 収まっていることである。これにより、機能や性能は制限される部分はあるものの、簡単な構成の回 路で済むということが大きな特徴である。また、種類によってはメモリに フラッシュメモリが使われているものがあり、プログラムの書き換えがで きるようになっている。そして、PICは消費電力が非常に少ないので乾電池 で動作可能である点も大きな特徴である。(2) PICに書き込むプログラムを作成するソフト(MPLAB)はPICの開発元マ イクロチップ・テクノロジー社より無料配布されており、フリーソフトで ある。出来上がったプログラムをPICに書き込むためにはライタが必要とな るが、ライタキットは市販されており、ライタを自作することも可能である。 (1)PICの種類 PICには様々な種類があり、価格や性能・機能が違う。PICは命令長の大きさで大きく分けて、ベー スラインシリーズ、ミドルレンジシリーズ、ハイエンドシリーズの3種類に分けられる。ベースライ ンシリーズは12ビット幅の命令セットとなっており、最も安価なシリーズである。2.0Vから動作す る種類もあり、乾電池での動作には最適なシリーズである。ミドルレンジシリーズは14ビット幅の命 令セットとなっている。簡単なものから高機能なものまで色々な機能が組み込まれた種類があり、最 も使いやすいシリーズである。特にアナログ信号をディジタル信号に変換するA/D変換機能や、モー タなどの可変速制御に使うパルス幅制御の機能など含まれている種類もある。そして、ハイエンドシ リーズは16ビット幅の命令セットとなっており、最も高速な動作と高度な機能が組み込まれているシ リーズである。(4) これらの分類はPICの中身の実行命令のビット長で行われているが、さらに、プログラムを格納す るメモリの大きさ、色々な機能の有無、入出力ピンの数などによって多くの種類がシリーズ化されて いる。図1が代表的なもので、国内で比較的容易に入手できるものである。マイクロチップ・テクノ ロジー社では、次から次へ開発が進められており、日々新種が発表されている。 図1 PICマイクロコントローラのシリーズ一覧(3)
(2)PIC16F648Aの特徴 PIC関連の書籍を見ると数多くあるPICの種類の中でも、初心者向けのPICとして「16F84A」が紹介 されていることが多い。16F84Aはミドルレンジシリーズに属し、18ピンのPICで、1個300円で購入す ることができる。しかし最近では16F84Aと同じ機能は持ちながらも、さらに安価で高機能な「16F648A」 というPICが存在し、こちらの方が一般的になりつつある。16F648Aも同じ18ピンのPICであるが 16F84Aよりもメモリ容量が多く、1個200円で入手できる。これを踏まえ本研究では、PICに16F648A を使用した。PIC16F648Aの主な特徴(5)は以下のようになっている。 ・ フラッシュプログラムメモリ(4Kワード)搭載で、何度でもプログラムを即時消去し、簡単 に書き換えることが出来る。
・ PICは、RISC(Reduced Instruction Set Computer:縮小セット命令コンピュータ)という考え方 で設計されているため、命令の単純化により1命令を1マシン・サイクルで高速に処理する。 ・ 命令数は35個と少なく、すべての命令は1ワードである。また、2サイクルのプログラム分岐 命令やジャンプ命令を除いて、すべて1サイクル命令である。 ・ 14ビット幅の命令、8ビット幅のデータである。 ・ I/Oピン数は16で、ピンごとに入出力設定が可能である。最大でポートAが0~7(RA0~RA7) の8ビット、ポートBが0~7(RB0~RB7)の8ビットである。 ・ 動作電圧範囲は、3.0V~5.5Vであり、最大動作周波数は20MHzである。 動作周波数が10MHzのとき、1サイクル命令の時間は0.4μsになる。 ・ 1ピンごとの最大シンク電流は25mA、最大ソース電流は20mAである(16F84A)。直接LEDを点 灯できる程度の電流を流すことが可能である。 ・ 4MHzの内臓クロックを搭載している。 ・ アナログ信号の電圧をディジタルの数値に変換するA/Dコンバータや、2つのアナログ入力電 圧を比較するアナログコンパレータを搭載している。 (3)PIC用プログラムの開発に必要なもの 図2 PICのプログラム開発環境(3)
PICを使う(プログラムの開発)ために必要なものは、パソコン、PICライタ、そしてソフトウェア のPICライタソフト、MPLAB(プログラムを開発するための統合開発環境ツール)である。ライタソ フトとMPLABに関してはフリーソフトで無料配布されている。パソコンについてはプログラム作成 とデバッグ、プログラムのPICへの書き込みに使う。MS-DOS、Windowsの環境が動作するパソコンで あれば問題はないが、Windows(Windows98SE以降)の環境の方が便利である。 本研究での開発環境は、Windows98のノートパソコン※1を用い、秋月電子通商で販売されてい るPICライタ(AKI-PICプログラマーキットver4.0)をUSB−シリアル変換器を用いて接続した。使 用したソフトウェアは、MPLABver8.10、ライタソフトにはPICライタに付属のライタソフト「PIC Programmer」を用い、C言語でプログラムを作成するためにCCS社のCコンパイラ(PCM)を使用した。 C言語の方がプログラムを理解しやすいこと、記述するプログラムが少なくて済むこと、そしてこの CコンパイラはMPLABと統合して使用できるものであることから、このCコンパイラを用いた。 4. 基本的な制御の学習用教材の製作 本研究ではPICを用いた制御に着目して制御の学習用教材を製作した。教材を製作するにあたり適 した条件を挙げると、「中学生にも製作できるもの(部品数が少なく、回路が複雑ではないもの)」、「授 業で製作した後、家に持ち帰って活用できるもの」、「生徒予算は1500円以内」、「興味を持った生徒はこ の教材を応用して、さらに高度な実用的な制御を行えるもの」という点が挙げられる。 これらの条件を踏まえ、本研究では「フルカラー LEDの制御回路」と、その回路を生かした発展形 として「Cds(光センサ)を用いたフルカラー LEDの制御回路」を製作した。 (1)フルカラー LEDの制御回路 PICを用いた基本的な制御回路として、フルカラー LEDを制御する回路を製作した。ここで使用し ているフルカラー LEDは、赤・青・緑のLEDが1つになったもので、この3色の組合せで7色を点灯 できる仕組みとなっている。このLEDにはピンが4本あり、1本はGND線で、残りの3本は赤・青・ 緑のLEDへつながっている。この回路の部品数は約20個程度と少なく、回路の構造も難しいものでは ない。回路中に押しボタンスイッチを付けることで、プログラムで「分岐命令」を学習することが出 来るようになっている。電源にはACアダプタを用い、家庭に持ち帰った後も活用できるようにした。 ただしACアダプタは費用が多めに必要になるので、教材費を抑えるということであれば電池を用い てのコストダウンは可能である。製作した回路の外観を図3に、回路図を図4に示す。また、この回 図3 フルカラー LED制御回路の外観
路に用いた部品とその価格を表1にまとめた。制御プログラムは附録に示す。 この回路はLEDの7色をどのように光らせるか、色をどのような間隔で変化させるかなどを考えな がらプログラムを作成し、LEDの制御を体験することが出来る。この回路を応用すると、たくさんの LEDを使ってイルミネーションを作ったり、少し高度なものであればリレーを用いて電化製品の電源 を制御することが可能である。 表1 フルカラー LED制御回路の部品価格表 個数 単価 価格 PIC16F648A 1 ¥200 ¥200 ICソケット(18ピン) 1 ¥40 ¥40 セラロック(10MHz) 1 ¥30 ¥30 トグルスイッチ 1 ¥80 ¥80 押しボタンスイッチ 1 ¥70 ¥70 スイッチ用抵抗(4.7kΩ) 1 ¥1 ¥1 フルカラーLED 1 ¥200 ¥200 LED用抵抗(300Ω) 1 ¥1 ¥1 LED用抵抗(75Ω) 1 ¥1 ¥1 LED用抵抗(100Ω) 4 LEDに付属 − 電解コンデンサ(22μF) 1 ¥12 ¥12 セラミックコンデンサ(0.1μF) 1 ¥10 ¥10 ユニバーサル基盤 1 ¥210 ¥210 2.1mmDCジャック 1 ¥30 ¥30 5VACアダプタ 1 ¥550 ¥550 合 計 18 ¥1435 電子部品の通販サイト、秋月電子通商とマルツパーツ館の価格を参考にした。 (2)Cds(光センサ)を用いたフルカラー LEDの制御回路 (1)はプログラムを記述されている順に実行していく「順次制御」であるが、これを発展させ計 図4 フルカラー LED制御回路の回路図
測により周囲の状況を判断し制御を行う教材を考察した。「フルカラー LEDの制御回路」の発展形とし て、制御回路の中にCdsを組み込んだ回路を製作した。この回路は、周囲の明るさによってフルカラー LEDの点灯・消灯の制御を行えるものとなっている。周囲が暗い時にはフルカラー LEDを点灯させ、 明るい時にはフルカラー LEDは消灯し、待機中ということを知らせる別のLEDを点灯させる仕組みで ある。半固定抵抗を調整することで光センサの感度を変えることが可能である。この回路はPICの機 能の1つである、1点のアナログ値を境にして出力をオンかオフに切り替える機能の「コンパレータ 機能」を用いている。「フルカラー LEDの制御回路」と比べ数個程度部品は増え、コストも少々上がる ものの、特別難しい回路ではない為、中学校の教材として十分扱えるものではないかと考える。図5 に制作した回路の外観を、図6に回路図を示す。 この回路では「フルカラー LEDの制御回路」と同じように、プログラムを変えてフルカラー LED の光り方を好きなように変更することができる点に加え、センサを用いているので、センサを使った 分岐命令を学習することができる。このセンサの役割は、あらゆる身近な電化製品の仕組みを知る上 では必要不可欠な知識になるため、この回路はセンサによる計測と、プログラム制御を学習するには 図5 Cdsを用いたフルカラー LEDの制御回路の外観 図6 Cdsを用いたフルカラー LEDの制御回路
適したものと考える。この回路を応用すると、大型のフルカラー LEDや電球を使うことで、家の玄関 などで使う常夜灯などを製作することができる。他にも、温度センサを使用し栽培分野の学習と絡め ることで、ビニールハウスの温度管理を行う装置を作るなど、この回路は応用の方法次第でさまざま な学習に活用できる。 この「Cdsを用いたフルカラー LEDの制御回路」では、PICのコンパレータ機能と内部基準電圧の 設定を活用して、光センサで制御がうまく行えるようにしている。これらの機能を以下に説明する。 ⅰ)コンパレータ機能について PIC16F648Aはコンパレータ機能を持っている。コンパレータ機能 は、CIN+に対応するピンとCIN-に対応するピンに印加された2つ のアナログ入力電圧を比較して、CIN+側が大きければコンパレータ の出力COUTがHigh(ほぼ電源電圧)となり、CIN-側が大きければ COUTがLow(ほぼ0V)になるという動作をするものである。ただし、 CIN+とCIN-がほぼ等しいときは、COUTの出力はどちらになるかは不 定で、素子のばらつきや周囲温度などにより変わる。これらを図に示 すと、図7のように表すことができる。 CIN+とCIN-がほぼ等しいときはCOUTの出力が不安定な状態になるため、次に説明する「内部基準 電圧」の設定を変えることにより不安定な状態を対処した。 ⅱ)内部基準電圧について PICの内部基準電圧は、プログラムで16段階に基準電圧を可変することが可能である。基準電圧を 変更させるには、VRCONという名前のデータメモリの値を書き換えればよい。このときの基準電圧 値は下記のいずれかの式のようになり、この式を踏まえVRCONの値を設定する。 この、内部基準電圧が可変できることを利用して、コンパレータの入力値がほぼ等しいときの不安 定状態を避ける工夫をした。例えば、周りが徐々に暗くなると、センサからの入力電圧が上がり、内 部基準電圧より高い電圧となる。このときコンパレータ機能により切り替わる状態になるが、コンパ レータの2つの入力値がほぼ等しくなっている状態のため、出力はオンとオフを頻繁に繰り返す状態 で不安定な状態になる。 そこで、徐々に暗くなり、コンパレータ機能により一旦COUT出力がLowになるとき、内部基準電 圧を低めに設定変更する。その後は確実にセンサ側が高い電圧になるので、安定したLowの状態を維 持することができる。逆に、徐々に明るくなり、COUTがHighに切り替わったときは基準電圧を高め に変更する。これでHighの状態を安定に継続することができる。(5) 5. 結言 本研究では、PICを用いて基本的な制御を学習するための教材を製作した。製作した回路は、中学 生にも製作することができる程度のものであり、教材として適したものであると考える。また、これ らの回路を応用して、さらに高度な扱い方を提案した。応用次第でさまざまな利用方法が可能である。 <低電圧設定のとき> (基準電圧)=(電源電圧)×(VRCONの値)÷24 (ただしVRCONの値は0から15) <高電圧設定のとき> (基準電圧)=(電源電圧)×(1/4+(VRCONの値)÷32) ※例えば、電源電圧を5Vとすれば、低電圧設定のときには0V∼3.1V(0.20Vステップ)の電圧になる。 図7 コンパレータの機能
本研究では、製作した教材を用いた授業実践はまだ行っていない。したがって、実践し、学習成果 を検討することはこれからの研究課題となる。また、中学生が理解に苦しむと思われる「プログラム」 について改善の余地があり、プログラム作成支援ソフトの作成や、プログラムの日本語化を行うこと で、中学生が簡単にプログラミングを行えるように開発環境を整えていく必要がある。この他にも本 研究の回路を活用し、PICと温度センサや光センサ等を利用して、プログラム制御を栽培に生かす教 材を検討中である。小規模のビニールハウスを作り、PICと光センサを用いてハウス内の照明や日照 時間を制御し、温度センサを用いて風通しを制御し最適な気温に調節することで植物を育成するため に適した環境を作り、栽培を行うというものである。これらの課題の解決や、提案の実現に向けてこ れからも研究を続けていく必要がある。 参考文献 (1)「趣味の電子回路工作」(http://www.hobby-elec.org/) (2)鈴木 美朗志「たのしくできるC&PIC制御実験」、東京電機大学出版局、2003年 (3)「電子工作の実験室」(http://www.picfun.com/) (4)後閑 哲也、「たのしくできるPIC電子工作」、東京電機大学出版局、1999年 (5)後閑 哲也、「8ピンPICマイコンではじめる 作る、できる電子工作入門」、技術評論社、2005年 全体的に参考にした文献 河野義顕・大谷良光・田中喜美、「技術科の授業を創る─学力への挑戦─」、学文社、1999年 文部科学省、「中学校学習指導要領解説 技術・家庭編」、1998年 文部科学省、「中学校学習指導要領解説 技術・家庭編」、2008年 本文註
※1 NEC社製 LaVieNX LW30H/6(CPU−Celeron300MHz、メモリ−128MB)
附録 (1)「フルカラー LED制御回路」のプログラム例 ※ 押しボタンスイッチを押すとフルカラー LEDが表現出来る7色を0.5秒間隔で変化させ、それを3回繰り返す プログラムである #include<16f648a.h> #fuses HS,NOWDT,NOPROTECT #use delay(clock=10000000) #byte port_b=6 main() { int i,j,k; set_tris_a(0x08); set_tris_b(0); port_b=0; while(1) { if(input(PIN_A3)==0){ for(i=0;i<=2;i++){ for(j=0;j<=6;j++){ k=0x01+j; port_b=k; delay_ms(500); } } } port_b=0; } }