PICによるデータロガーの製作 - 愛知県高等学校工業教育研究会

工研電気部会発表資料
平成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温度計 の表示部
赤外線リモコンによる
フォークリフトの 運転