工研電気部会発表資料 平成21年度愛知県高等学校工業教育研究会電気部会研究大会 PICに よ る データロガーの製作 期 日 平成 21年11月17日(火) 会 場 愛知県立東山工業高等学校・小講堂 愛知県立東山工業高等学校 電子工学科 恰 康 博 1 工研電気部会発表資料 1 はじめに 永年進路指導主事 として業 務に携 わり、日々 の仕 事に忙殺 され 、生 徒に新 しい実 習テーマを 提示できなくもどかしさを感じていたところ、3年前に「PI C制 御(アセンブラ)」を担当することにな り、その面白 さと懐 かしさ(?)からはまりました。以 来、今 日まで課題研究を中心にハード、ソフト 両面で生徒と一緒に勉強 してきました 。 3年くらい前まではPI Cの参 考 書もほとんどが16F84対象で、しかもアセンブラ言語で制御 す るものが中 心で、PI Cを生徒に教えるにも敷居 が高くならざるを得 ませんでした 。なんとか 時間を 費やしてプログラム を教 えても、実 習は8個の LEDを点灯したり、スイッチ入力を読み込んだりす ることで精一杯でした。 しかし、開発環境のMPLABとそれに付 属していたC言語 が時と共に進化 して使い易くなり、参 考書 も数 多く出版 されるようになってきて、それらを参考 にして生 徒 実 習も発展させることができ るようになりました。 参考書 に、鈴木哲弥著 「PI CとC言語の 電子工作 」を見つけて読んでみたところ、C言語制御 で PI C制御事例を数多くとりあげ、ソフト、ハードの説明 を懇切丁寧に書いてあったので、早速 この 本をよりどころにひとつずつ実験 を進めることにしました。今回の 発表 はこの 本の 最後 の方 に書 かれたテーマを実験したものです。 PI Cのプログラム は自身 のフラッシュメモリーに格納され、ライタ− で繰り返し書き換え可能で、 言語 は生徒実習 や検定 でおなじみのANSI −C言語で作 成できます。MPLABとCコンパイラは インターネットから無料でダウンロードでき簡単にソフト開発環境ができます 。 今回使用 したPI C−16F877Aはマイクロチップ 社の40ピンのI Cで、汎用ポート4個、ADコン バータを4チャンネル備えたPI Cの最高峰 (?)のものです。 数年前にPI Cを知ったときは 、月日の経過 によるマイコンの進化に心底驚きました。 Z80の頃と異なり、最小限 ならワンチップでハード、ソフトとも完結 してしまうことに感動 し、これ が永年追い求めていた「マイコン制御実習」の形態だと確信 しました。 PIC マシン語 インターネット CPU コントローラ フラッシュメモリー etc ANSI-C言語 Cコンパイラ 2 工研電気部会発表資料 2 システムの 構成 1 全体の構成 本システムは、太陽電池 + 電流センサ + データロガー基板 + パソコンからなり、日中の 太陽電池の発電量を測定しようというものです。 まずは小 型 太 陽 電 池の 特性 を知 るために、12Vの 小型 バ ッテリーを充電 することを考えまし た。 電 圧は 、PI Cに内蔵 されているADコンバータ4チャンネルの うちの1チャンネル を使用 して測 定し、電流は、電流センサ HPS−5−AS(±5Aの電流 を0∼5Vの電圧に変換)出 力を別のAD コンバータ1チャンネルに加えて測定することにしました 。 センサデータをデータロガー基板で一定時刻毎 に読 み取り、CSV形式 にしてRS232Cにより パソコンへ入 力し、メモ帳 などでテキストデータとして保 存します。あとはそれをExcel で読みこん でデータ処 理します。 太陽電池の 発生電力[W]はあとからパソコンのExcel 上で計算して求めることにしました。 2 ハードウェア について PI C16F877A(40ピン)20MHz + リアルタイムクロック RTC−8564NB + レベルコンバータ ADM3202 + 液晶表示器SC1602B(2行 キャラクタ表示) 太陽電池 電圧 電流センサ 電流 RTC-8564NB バッテリー A DM 32 02 3 工研電気部会発表資料 2 ソフトウェアについて 開発環境 は、MPLAB I DE V8.36 + HI − TECH PI CC(PRO-9.60)で、PI Cライタ ー(書き込み器)は、秋月電子 のAKI − PI CプログラマーVer.4を使用 しています。 また、40ピンものPI Cをライターからターゲット基板へ書き込 みの都度抜 き刺しするのは大変 で、ピンの ダメージを被 るのを防 ぐため 、サンハヤトの ピック書 き込 み アダプター を使用 しまし た。 (1) MPLAB I DE Microchip社の 無料開発環境で、プロジェクト単位 でプログラムを開発し、この中のエディタ によりソースを作成 し、アセンブルや 、HI − TECH Cによるコンパイル、リンクなどができます 。 ここで最 終 的にできるHEXファイルは、AKI −PI CプログラマーによりPI C内蔵のフラッシュメ モリーにそのまま書き込み、PI Cを動作させることができます。 ソースプログラム は、メモ帳を使用してもかまいません。 (2) HI −TECH C このC言 語はANSI に準拠したものでCCS− Cのように PI C制 御のための特 別な関数 は少 なく、癖の 無いもので、C言 語 実 習などと相性 がよいので生徒 にも教え易 く、私は 気に入ってい ます。 ただ、無料版 なので、プログラム が長くなるとメモリや最 適 化コンパイルの点 で制限 があり、気 をつけないといけない 点があると思います 。 (3) データロガーのプログラム 次のような プログラムからできている。 ① 液晶表示のためのヘッダープログラム (sc1602b.h) ② RS232Cシリアル転送用のための ヘッダープログラム ③ リアルタイムクロックRTC8564のためのヘッダープログラム ④ i 2c制御のためのプログラム ⑤ メインプログラム (sci .h) ( r t c8564.h) (i 2c.c) (main()) しかし、開 発が 遅 れたため 、現 時 点では センサー電圧 を一定時刻 ごとに 読み 込 んでAD変換 し、CSV形式に変換してパソコンに読み込むところまでが成功 しています。 さらにこの データをExcel で読み込むことにも成功しています。 //インクルードファイルの例 #include<pic.h> #include<stdio.h> #include"sc1602b.h" #include<i2c.h> #include<rtc8564.h> #include"sci.h" __CONFIG(PWRTEN & BORDIS & UNPROTECT & WDTDIS & LVPDIS & HS); ....... 4 工研電気部会発表資料 3 システムの 動作 現在 は、最終目標 まで到 達していないため、電流、電圧を読み取り、Excel で積計算から太陽 電池出力を求めるところまでです。 最近、苦戦 したところは、実数形 で配列宣言し、電流と電 圧を読み込 んで積までソフトで実行し ようとしてできなかったことです。原因の追及 で手こずっているところです。 整数形ではできるのですが・・・。 メモリ制 約のことがからんでいるのかもしれません。 解決方は、 ① Excel で実数処理する。 ② HI TECH− Cの PROの使用期間限定版を利用してコンパイルの最 適 化により使用 メモリ を減らす。 のどちらかと考えています。 両方ともやってみようと思っています。 4 システム製 作と授業への反映 1 蓄積技術 研 究からは 、あとで生徒実習や授業などに技術や 成果が反映されなければならないと私は 常々考えていますが、今回の システムの製 作からは 次の 技術が習得できました。 (1) ハードウェア について ① PI C16F877Aのコントロールワードの設定 ② 液晶パネルSC1602Bのソフトウェアによる表示方法 (4ビット2回データ伝送) ③ 電流センサの利 用 法(電流→電 圧 変 換) ④ 太陽電池の出力 ⑤ リアルタイムクロックの利用法 ⑥ RS232Cによるパソコン−PI C間のデータ通信 ⑦ I 2C通信方法 ⑧ フラッシュメモリ内 にあるEEPROMのデータ書き込み法 (2) ソフトウェアについて ① MPLAB IDE (Integrated Development Environment) ソフトウェア統合開発環境 の 使い方(プロジェクトの作成、コンパイル) ② アセンブラプログラムとアセンブル ③ C言語の プログラム (HITECH−C) 5 工研電気部会発表資料 制御系 に多いwhile (1)や、switch case文、 do while文 、 割り込み処理、 AD変 換の記述法 ④ ヘッダーファイルプログラム の作成とリンク(pic.h) 2 授業等へ の還元 PI Cの制御技術は、マイコン制御実習を通して、課題研究 、C言語実習、計測制御(座学) 情報技術検定1、2級、さらには総合競技大会(電子回路組立)などにもつながる一大テーマだ と思います。 私も毎年、情報技術検定1級 受 検 者の補習 を行っていますが、このような制 御 用の長いプロ グラムに慣れている生 徒は理解力が 早く、受検用の 難しいプログラムに遭 遇しても短いため、 あきらめずに理 解する姿 勢ができていると思 います。 マイコン制御 実習 C言語実習 課題研究 5 計測制御 学習 情報技術検定 1,2級プログラム おわりに 1 これまでに製作したもの PI Cによる制御をテーマとしてこれまでに製作したものを掲げておきます 。 ① PI Cシミュレータ (16F84、 16F88)用 でLED、トグルSWを8個ずつとりつけたも ので、ポートの入出力の確 認と割り込み入力 も実験できるようにしてあ る。 ② PI C制御の 温度計 小数以下第1位 まで表示 温度センサLM35DZとオペアンプNJU7032を使用 。 ③ PI C制御の 超音波センサによる距離計 40のHzの 送受信センサを利用。 近距離しか計れず、難しさを痛感 ④ PI C制御の 赤外線センサによる模型フォークリフトリモコン操作 送信機と受 信 機 双 方にPI Cを利用 、赤外線パルスでリフトの上 下、前進、後進、左方向、右方向移動の 6動作ができる。 5m以 上の 距離 でも赤 外 線パルスを関知 し、動 作した。パ ル ス プログラム の 作成は 頭を悩 ましたが、受信用センサの性 能の良さ 6 工研電気部会発表資料 に助けられ 、誤動作なく動 いた。 ⑤ PI C割り込み処理実習用モータ・フォトインタラプタ実習 セット ギアモータがゆっくり回 転 し、シャフトについた 板が 回 転する。 1回 転するごとに 反射型 フォトインタラプタをさえぎり、割 り込み処 理により回転数をカウントする。 2 まとめ PI Cを使ってものを動かすことは 、生徒 も興 味をもち、我々もハード、ソフトの勉強 ができま す。また、これらの 技術 を取 得すれば 授業 、実 習、検 定にも自 信をもって指導 に臨 めると思 い ます。 今 回はテーマの 「太陽電池 のデータロガー」の完成まであと一歩 というところまでしか 到達 で きませんでしたが 、世 界 的に省エネ、エコが叫ばれている折、太 陽 電 池についても利用技術を 習得しなければならないと考え、そのためにまずデータをとるため今回の システムを製作しまし た。 今後は生 徒の課題研究とも手 を携え、1月までに完成、完動させたいと考えています。 PI C温度計 の表示部 赤外線リモコンによる フォークリフトの 運転
© Copyright 2024 Paperzz