1. 概要
このページでは、本研究室で開発した「PIC16F88評価ボード」について紹介する。
「PIC16F88評価ボード」は、本学海洋工学部海洋電子機械工学科制御システム工学コースの3年次必修科目である「制御システム工学演習」で教材として用いるために、本研究室が開発したものである。
「PIC16F88評価ボード」を使って、マイコンの使い方やプログラミング、電子回路の基礎を学ぶことができる。
2. 機能
PIC16F88評価ボードでは、PICマイコンPIC16F88の各機能をテストすることができる。
テストできる機能は以下の通り。
・デジタル出力(Digital Output)
・デジタル入力(Digital Input)
・PCとのシリアル通信(USART)
・ADコンバータ
・CCPモジュールを利用したPWM出力
・TIMER0割り込みを利用したPWM出力
・PICKit3を使ったプログラム書き込み
PIC16F88評価ボードには、さまざまな電子部品が実装されており、中央のPIC16F88と接続されている。
PIC16F88評価ボードに実装されている電子部品は、基板上の白い線でエリア分けされており、それぞれのエリア名とその役割は以下の通り。
1. Logic Power
9Vの電源をレギュレータで5Vに降圧し、PICマイコンやその周辺部品に5V電源を供給する。
トグルスイッチ(SW1)をONにすると電源が供給され、LED(D1)が点灯する。
2. Motor Power
3Vの電源をモータ駆動用部品に供給する。よってモータはLogic Powerの5Vではなく、Motor Powerからの3V電源で駆動される。
トグルスイッチ(SW2)をONにすると電源が供給され、LED(D2)が点灯する。
3. Reset
タクトスイッチはPIC16F88のMCLRピンと接続されており、押すとPIC16F88がリセットされる(実行中のプログラムが、また最初から実行される)。
4. True ON LED
LEDのアノード(+極側)がPIC16F88のRA0ピンと接続されており、RA0をHIGHにするとLED1(D6)が点灯する。
5. False ON LED
LEDのカソード(-極側)がPIC16F88のRA6ピンと接続されており、RA6をLOWにするとLED2(D7)が点灯する。
6. Pull Down
PIC16F88のRA1ピンは抵抗(R11)でGNDラインにプルダウンされている。SWITCH1(SW4)を5V側に倒すとRA1にHIGHの信号が入る。
7. Pull Up
PIC16F88のRA7ピンは抵抗(R12)で5Vラインにプルアップされている。SWITCH2(SW5)をGND側に倒すとRA7にLOWの信号が入る。
8. Analog Read
可変抵抗(VR1)はPIC16F88のAN4ピンと接続されており、可変抵抗のつまみを回すとAN4の入力電圧が変化する。その電圧値をPIC16F88に内蔵されたADコンバータでデジタル値に変換する。
9. Photosensor
フォトリフレクタ(U3)は光センサであり、インバータ(U5)を経由してPIC16F88のRB4に接続されている。可変抵抗(VR2)で光の感度(しきい値)を調節することができる。フォトリフレクタの発光部(黒い丸の部分)からは常に赤外線が出ている。赤外線が何らかの障害物で反射し、フォトリフレクタの受光部(透明の丸の部分)に入ったとき、確認用LED(D5)は消灯する。またそのとき、RB4にLOWの信号が入る。
10. transistor
トランジスタ2SC1815(Q2)とトランジスタ2SC2120(Q1)はPIC16F88のRB3と接続されており、RB3をHIGHにするとLED(D4)が点灯し、モータ(コネクタM2に接続)が回転する。トランジスタ2SC1815はLEDを制御する。トランジスタ2SC2120はモータを制御する。ダイオード(D3)はモータの逆起電力により半導体が破壊されるのを防止するためのフライホイールダイオードである。
11. H-bridge
H-bridgeモータドライバ(U2)のIN1はPIC16F88のRA3と接続されており、IN2はRA2と接続されている。コネクタ(M1)にモータを接続する。
RA3をLOW, RA2をLOWにするとモータはストップする。
RA3をHIGH,RA2をLOWにするとモータは正転する。
RA3をLOW,RA2をHIGHにするとモータは逆転する。
RA3をHIGH,RA2をHIGHにするとモータにブレーキがかかる。
12. Universal Board
ユニバーサル基板(蛇の目基板)となっている。必要に応じてここに追加の回路を実装することができるようにしてある。最上行は5Vライン、最下行はGNDラインとなっている。
13. PIC16F88
PIC16F88評価ボードの頭脳部分である。
PIC16F88の両サイドのテストピンにテスタやオシロスコープを接続することで、PICの端子の出力状態を測定することができる。
積層セラミックコンデンサ(C8)は電源ラインのノイズを吸収しPICの動作を安定させるためのバイパスコンデンサ(パスコン)である。
外部(PC)との通信機能
・RS232C
PICに内蔵されているシリアル通信モジュール USART(Universal Synchronous Asynchronous Receiver
Transmitter)を使い、PCとシリアル通信を行う。PIC16F88評価ボードとPCを接続するためには、5V系からRS232Cへのレベル変換をする必要がある。また、PCにUSB接続する場合は、RS232Cレベルに変換後、USB-シリアル変換を経由する必要がある。これらの変換モジュールの組み立てについては後述する。
・PICKit3
マイクロチップ社のフラッシュマイコン書き込みツール「PICKit3」をPIC16F88評価ボードを接続し、プログラムの書き込みを行うことができる。
3. 材料
PIC16F88評価ボードを1台製作するために必要な部品リスト(PDFファイル)
PIC16F88_Reference_Board_partlist.pdf
価格は変動することがあるため表には記載していない。
4. 作り方
4-1. PIC16F88評価ボード本体の組み立て
基板上に印字されたRef番号を元に、回路図(PDFファイル)と部品リスト(PDFファイル)を参照して、上記の画像のように各部品をはんだ付けする。
注意事項
取り付け向きが決まっている部品(LED,ダイオード,電解コンデンサ,フォトリフレクタ,ICソケット,トランジスタ,モータドライバ,レギュレータ,NHコネクタ)は、基板上に印字された部品シルエットの通りの向きに取り付けること。
部品シルエットでは取り付け向きが判別できない部品(モータドライバ,レギュレータ,NHコネクタ)は、下記の画像のように取り付けること。
モータドライバ,レギュレータの取り付け方
型番が印字されている面が手前側にくる向きで取り付ける。
NHコネクタ(基板左側)の取り付け方
NHコネクタの爪があるほうが基板の外側にくる向きで取り付ける。
NHコネクタ(基板右側)の取り付け方
NHコネクタの爪があるほうが基板の外側にくる向きで取り付ける。
4-2. 電池ケースの組み立て
9V電池用のバッテリースナップのリード線に、NHコネクタ(2P)を取り付ける。
NHコネクタ1番ピン: +極側
NHコネクタ2番ピン: -極側
単3電池2本用電池ボックスのリード線に、NHコネクタ(3P)を取り付ける。
NHコネクタ1番ピン: +極側
NHコネクタ2番ピン: -極側
NHコネクタ3番ピン: なにもつながない
4-3. モータの組み立て
モータの端子部分に積層セラミックコンデンサ0.1uFとリード線をはんだ付けし、熱収縮チューブで端子部を保護する。
リード線の反対側には、NHコネクタ(2P)を取り付ける。取り付け向きはどちらでも良い。
4-4. 5V系からRS232Cへのレベル変換モジュールの組み立て
3V・3.3V・5V系-RS232レベル変換基板にリード線をはんだ付けする。
1 (GND) : 黒色
2 (TX-IN) : 黄色
3 (RX-IN) : 青色
4 (VCC) : 赤色
5 (内部レギュレータへの電源入力) : なにもつながない
3V・3.3V・5V系-RS232レベル変換基板を、Dサブコネクタ9P・メスに差し込みはんだ付けする。向きに注意。
Dサブコネクタ用シェルの中に、3V・3.3V・5V系-RS232レベル変換基板とDサブコネクタを入れ、組み立てる。
リード線にNHコネクタ(4P)を取り付ける。
NHコネクタ1番ピン: 赤色(VCC)
NHコネクタ2番ピン: 黒色(GND)
NHコネクタ3番ピン: 青色(RX-IN)
NHコネクタ4番ピン: 黄色(TX-IN)
PCとUSB接続する場合は、DサブコネクタにUSB-シリアル変換ケーブルを取り付ける。
以上で組み立ては完了。「制御システム工学演習」で教材として用いる時には、ここまでの行程は既に終わっている。
5. 使い方
5-1. 電池を接続する
基板の「9V」と印字された部分のコネクタに9V電池を、「3V」と印字された部分のコネクタに単3電池2本を接続する。
5-2. 電源を入れる
Logic Powerのスイッチ(SW1)と、Motor Powerのスイッチ(SW2)をON側に倒し、電源確認用LED(D1,D2)がそれぞれ点灯するか確認する。
点灯しない場合、取り付け方が間違っているか、電池が切れているか、回路のどこかがショートしている可能性がある。
5-3. PICKit3を接続する
基板に印字された三角マークと、PICKit3の三角マークが一致する向きに取り付ける。PICKit3はUSBケーブル(Aオス - ミニBオス)でPCに接続する。
5-4. プログラムを書き込む
既に所望のプログラムがPIC16F88評価ボードに書き込まれている場合、この手順は省略してよい。一度書き込んだプログラムは電源を切ってもPIC内部のプログラムメモリに保存されているため、電源を入れるたびに書き込みを行う必要はない。
PICKit3を使ってPICへプログラムを書き込む方法は2つある。
1. PICの統合開発環境MPLAB X IDE(無償)をPCにインストールしてプログラムを書き込む
2. クラウドベースのPIC統合開発環境MPLAB XPress(無償)をインターネットブラウザで開き、ソフトをインストールせずにプログラムを書き込む
2の方法については、MPLAB X IDEをインストールすることなくプログラムの書き込みを行えるためおすすめである。この方法での書き込み手順については、次のページにまとめてある。
研究メモ > MPLAB XPressを使ってPICにプログラムを書き込む方法
1の方法については、次のページにまとめてある。
研究メモ > MPLAB X IDEの使い方
1,2どちらの方法でプログラムを書き込む場合でも、書き込み中はLogic PowerをONにし、PICに電源を供給し続けること。
5-5. PCとシリアル接続する
基板の「RS232C」と印字された部分のコネクタに、4-4で製作したRS232Cへのレベル変換モジュールを取り付ける。モジュールの反対側はPCに接続する。
PIC16F88評価ボードとシリアル通信でデータを受信・送信するには、Windowsの場合、ターミナルエミュレータのTeraTerm(無償)を使う。
TeraTermの使い方については、次のページにまとめてある。
研究メモ > TeraTermを使ってPICとPC間でシリアル通信をする方法
5-6. プログラム実行
PICKit3から正常にプログラムの書き込みが完了すると、自動でプログラムが実行される。
プログラムを最初から実行させるには、Logic Powerの電源を入れなおすか、Resetボタンを押す。
本ページ下部の 7. ダウンロード から入手できるサンプルプログラムの実行時の挙動について、以下にまとめる。
おすすめのサンプルプログラムは、PCからのコマンド入力でPIC16F88評価ボードの全ての機能を試すことができる「16F88_Ref_Special.X」である。
1. 16F88_Ref3_Blink.X
LED1とLED2を500msおきに交互に点灯させるプログラム
2. 16F88_Ref3_RS232C.X
シリアル通信のテスト用プログラム
電源を入れるとPCに対して「Hello World!」と送信。その後はPCから受信した文字を送信(Echo)する。
シリアル通信設定
ボーレート: 9600 bps
データ: 8 bit
パリティ: none
ストップ: 1 bit
フロー制御: none
改行コード 受信: LF, 送信: CR+LF (PC側の設定)
以降のサンプルプログラムも、シリアル通信設定は全て共通
3. 16F88_Ref3_Switch.X
トグルスイッチテスト用プログラム
Pull DownとPull Upのトグルスイッチからの入力がそれぞれHIGHかLOWか、PCに送信する。
4. 16F88_Ref3_ADC.X
ADコンバータの動作確認用プログラム
可変抵抗(VR1)からの電圧値をAD変換した値を250msおきにPCに送信する。
5. 16F88_Ref3_Sensor.X
フォトリフレクタの動作確認用プログラム
赤外線が反射して受光したか、していないか、PCに送信する。
6. 16F88_Ref3_Timer0.X
Timer0割り込みを使ってLEDを点滅させるプログラム
LED1とLED2を1秒おきに交互に点灯させる。
7. 16F88_Ref3_Motor.X
モータ動作確認用プログラム
モータはH-bridge部のコネクタ(M1)に接続する。
トグルスイッチ(SW4)でモータをON OFFする。
トグルスイッチ(SW5)でモータの正転逆転を切り替える。
8. 16F88_Ref3_PWM_CCP.X
CCPを利用したPWMの動作確認プログラム
ADコンバータの読み取り値をPWMのDuty比とする。
モータはtransistor部のコネクタ(M2)に接続する。
9. 16F88_Ref3_PWM_Timer0.X
Timer0割り込みを利用してPWM出力するプログラム
ADコンバータの読み取り値をPWMのDuty比とする。
モータはH-bridge部(M1)とtransistor部(M2)どちらに接続しても良い。
H-bridge部(M1)に接続した場合、トグルスイッチ(SW4)でモータの正転逆転を切り替えることができる。
10. 16F88_Ref3_Buzzer.X
Timer0割り込みを利用したPWMを応用して,ブザーからメロディーを流すプログラム
PIC16F88評価ボードのH-bridge出力端子(コネクタ番号M1)にブザーを接続する.
メロディーは3曲書き込まれており,どの曲を流すかはSWITCH1とSWITCH2を切り替えることで選択することができる.
何の曲が流れるかは,流してからのお楽しみである.お試しあれ.
11. 16F88_Ref3_Special.X
PIC16F88評価ボードの全ての機能を試すプログラム
PCからのコマンド入力で動作を切り替えることができる。
コマンドについては下記の一覧表を参照のこと。
コマンド | 動作説明 |
---|---|
l,0 | LED1,LED2の出力ピンを両方LOW |
l,1 | LED1,LED2の出力ピンを両方HIGH |
r,0 | トランジスタ出力OFF |
r,1 | トランジスタ出力ON |
s | スイッチ1,2とフォトリフレクターの状態を表示 Enterキーで終了 |
a | ADコンバータ値を表示 Enterキーで終了 |
p,**** | CCPモジュールを利用したPWM出力 ****(duty比)には0から1023までの数値を入れる トランジスタからのみ出力される |
p,9999 | CCPモジュールを利用したPWM出力 基板上のボリュームでduty比を調節する Enterキーで終了 |
t,**** | TIMER0を利用したPWM出力 ****(duty比)には-1023から1023までの数値を入れる 負の数値だとHブリッジ出力逆転 |
t,9999 | TIMER0を利用したPWM出力 基板上のボリュームでduty比を調節する Enterキーで終了 |
e または q | LED,トランジスタ,Hブリッジ出力 OFF |
c | クレジット表示 |
h | ヘルプ表示 |
コマンドは上記の通り、 半角小文字1文字 または 半角小文字1文字 + カンマ + 半角数値 を入力すること。
カンマの前後に半角スペースが入っていても問題ない。
シリアル通信設定
ボーレート: 9600 bps
データ: 8 bit
パリティ: none
ストップ: 1 bit
フロー制御: none
改行コード 受信: LF, 送信: CR+LF (PC側の設定)
他のサンプルプログラムも、シリアル通信設定は全て共通
6. 参考文献
1. PIC16F87/88 Data Sheet - Microchip Technology Inc.
http://ww1.microchip.com/downloads/en/DeviceDoc/30487c.pdf
2. blog 渓鉄: 16F88 XC8開発例 - LED点滅回路
https://keitetsu.blogspot.jp/2015/02/16f88-xc8-led.html
3. 渓鉄 - 電子回路
http://keitetsu.ninja-web.net/circuit.html
4. blog 渓鉄: 16F88 XC8開発例 - ロータリスイッチの状態をA/D変換で取得する
https://keitetsu.blogspot.jp/2014/12/16f88-xc8-ad.html
5. 電子工作室 - printf文の使い方
http://www.picfun.com/HI-Tech/HI-TECH08.html
6. 電子工作室 - A/D変換モジュールの使い方
http://www.picfun.com/pic18/mod1805.html
7. 電子工作室 - CCPのPWMモードでの使い方
http://www.picfun.com/pic18.html
8. 電子工作室 - タイマの使い方
http://www.picfun.com/f1/f03.html
7. ダウンロード
PIC16F88評価ボードの回路図、部品リスト、ガーバーデータ、サンプルプログラムは以下のリンクよりダウンロードいただけます。
回路図 (PIC16F88_Reference_Board_r3.1.pdf)
部品リスト (PIC16F88_Reference_Board_partlist.pdf)
ガーバーデータ (PIC16F88_Ref_r3.1_PCBway.zip)
サンプルプログラム
1. 16F88_Ref3_Blink.X
2. 16F88_Ref3_RS232C.X
3. 16F88_Ref3_Switch.X
4. 16F88_Ref3_ADC.X
5. 16F88_Ref3_Sensor.X
6. 16F88_Ref3_Timer0.X
7. 16F88_Ref3_Motor.X
8. 16F88_Ref3_PWM_CCP.X
9. 16F88_Ref3_PWM_Timer0.X
10.16F88_Ref3_Buzzer.X
11. 16F88_Ref3_Special.X