第 2 回 ライタの製作、テスト

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

2-1. プログラマ(ライタ)の製作

プログラマの入手方法

PIC START Plus 相当品 PIC にプログラムを書き込むにはプログラマと呼ばれるパソコンからの書き込 み装置が必要です。 市販品もいくつか出回っています。 市販品のメリットは新しく PIC の種類が増えてもすぐに対応できること、 MPLAB IDE から書き込みができること、回路動作が安定していることなどが挙 げられます。 Microchip 社のホームページで Development から Development Tools を選ん で下さい。 そして表示されるページにある Hardware の項目にあるのが純正のプログラマ などです。 MPLAB® ICD 2 In-Circuit Debugger はプログラマになる他、回路に組み 込むことで回路ごとデバッグが可能になると言うものです。 本格的な開発を効率良くやるには必要となるものかも知れません。 但し、価格は数万円します。 また、秋月電子には PIC START Plus 相当品が 2 万円弱で売っています。

秋月電子キット PIC へのプログラムの書き込みは電源以外はクロックとデータと言う二本の線 で行います(データシート p. 112 14 章 11 節)。仕組みは非常に簡単ですの で、プログラマのキットも各種販売されています。秋月電子では 16F628A の プログラマはキット、バージョンアップキット、USB ケーブルなどで 1 万円 で買うことができます。キット自体の安定性は良い方です。

この他、自作するための回路もさまざま公開されています。 もっとも安価だと思われるのが JDM プログラマ と呼ばれるもので、部品代は 1000 円程度でできます。 但し、これは RS-232C ポートから出る高い電圧をそのまま書き込み電圧とし て利用しています。 残念ながら USB のアダプタからはその電圧は出ないため、ノートパソコンで 使うのはほぼ無理です。

オレンジ電子 今回、この講義で取り上げるのは オレン ジ電子製作の509 ライターです。 特徴は RS-232C の電圧を利用しないので、 USB の RS-232C 変換器を使用で きます。 今回は特にノートパソコンを壊さないように、 USB から電源を取らず、自前 で電池を使う設計になっています。

ライタの製作

Writer5c 版はこちら

必要な部品

部品 パッケージ
C10.1µFセラミックコンデンサ
C210µF電解コンデンサ
C310µF電解コンデンサ(耐圧50V)
C40.22µFセラミックコンデンサ
C50.22µFセラミックコンデンサ
C60.1µFセラミックコンデンサ
C710µF電解コンデンサ
C80.33µFセラミックコンデンサ
C90.1µFセラミックコンデンサ
D11N4148ダイオード
D21N4148ダイオード
D38.2Vツェナーダイオード
IC2PIC12F629PIC マイコン 12F675, 12C509 でも可
IC3MAX662昇圧IC MAX 662 DIP モジュール
IC478L05三端子レギュレータ
IC5DIL4040 ピン IC ソケット
LED1Yellow黄色の LED
LED2Red赤色の LED3
LED3Red赤色の LED3
LED4Red赤色の LED3
Q12SA1015PNPトランジスタ
Q22SA1015PNPトランジスタ
R11.5k抵抗
R210k抵抗
R310k抵抗
R44.7k抵抗
R510k抵抗
R64.7k抵抗
R710k抵抗
R810k抵抗
R910k抵抗
R10510k抵抗
U$1Q22SW3p スイッチ
U$2Q22-6PSW6p スイッチ
U$3Q22-6PSW6p スイッチ
U$4BH-9VPC9V乾電池の基板用ホルダ
X1F09VRS-232C 9pin コネクタ(メス)
8pinIC ソケット
8pinIC ソケット
ユニバーサル基板
3φ7mmネジ 2 本
2φ5mmネジ 3 本
9V乾電池
基板用足など

回路図と実体配線図

回路はオレンジ電子に掲載されている回路図を元に、入手しやすい部品と無理 の無い回路設計をしました。 以下はこの回路設計の考え方です。

  1. 配線間隔をなるべく IC ピッチ(0.1 inch)として、配線を容易にする
  2. 回路構成がシンプルな RS-232C 方式を使う
  3. 電源に関しては、パソコンを保護するため、パソコンから電源を取らない。 また携帯性などを考慮して電池を使う
  4. 秋葉原で入手しやすい部品を使う

回路図は次の通りです(クリックすると PDF 版をダウンロードできます)。

回路図

実体配線図は以下の通りです(クリックすると PDF 版をダウンロードできます)。

実体配線図

回路のチェック

IC 入れる前に以下を確認する
  1. テスタで電池を接続する端子間の抵抗値を測定し、ショートしているか調 べる。 黒端子を + に、赤端子を - に接続する。
  2. 各グランドに接続している端子間が 0Ω に近いか測定し、接続性を 調べる。
  3. 5Vに接続している端子間が 0Ω に近いか測定し、接続性を 調べる。
  4. 同様に、 12V に接続している端子を調べ、さらに主要な端子間の接続を 確認する。
  5. 電池を入れ、スイッチを入れる。電池が発熱していないことを確認する。 発熱していたら、即座に電池を外す。
  6. LED の点灯を確認する。 スイッチの切り替えで LED の点灯パターンが変わることを確認する。
  7. 電圧計で三端子レギュレータの出力が 5V になっていることを確認する。
  8. 電圧計で電圧供給のピンに正しく 5V が供給されていることを確認する。
IC を挿す

電源を入れて、 IC が発熱していないか調べる。

接続1

  1. PC に USB-RS232C 変換器のドライバをマニュアルにしたがってインストー ルする
  2. 変換器を接続する
  3. (マイ)コンピュータのプロパティでデバイスマネージャを開き、正常に動 作しているか確認する。

接続2

  1. オレン ジ電子の製作記事の最後にある W509.zip をダウンロードしておきます。
  2. W509 をインストールする。
  3. デバイスマネージャで USB の変換器の接続番号 COM? を調べる。
  4. PIC Writer を接続し、電源を入れる。
  5. W509 を起動する。
  6. W509 の Option タブを選ぶ。COM 番号を調べておいた値に設定し、Open ボタンを押す。
  7. Version ボタンを押し、 W509 と PicWriter の両方のバージョンが表示 されることを確認する。
  8. Device プルダウンメニューで 16F628A を選択する。

使用方法

  1. パソコンと RS-232C USB 変換器と製作したライタを接続します。
  2. ライタのスイッチを入れ、W509 を起動します。
  3. Windows でマイコンピュータのプロパティからデバイスマネージャを開き、 USB 変換器が RS-232C のどのポート(COM1 〜 COM4 など)になっているか確認 します。
  4. option タブでシリアルポートの設定をします。デバイスマネージャで確認した ポートを指定します。そして Open ボタンを押します。
  5. 次に version ボタンを押し、ソフトとライタの両方のバージョンが表示さ れればとりあえず正常です。
  6. ライタのスイッチを 18 pin 用にし、 LED でガイドされる位置に空の 16F628A をセットします。
  7. あとは、READ ボタンで PIC からの読み込み、ERASE ボタンで PIC の消去、 LOAD ボタンで HEX ファイルの読み込み、 PROGRAM で PIC への書き込み、 VERIFY で書き込んだ内容の確認ができます。

ここまでで一応準備は終了です。 但し、まだ PIC に正常にプログラムが書けるかのテストは終ってません。 PIC を正常に動作させるためのテスト用の回路を作成し、テスト用のプログラ ムを用意します。 そして、改めて、書き込みテスト、動作テストを行います。

なお、これでも解決しない場合は、 専用のテストプログラムを使用して回路をチェック します。

2-2. テスト用ハードウェア

ブレッドボード テスト用の回路はブレッドボードで作ります (写真参照 クリックすると拡大します)。 これは多数の穴のあいたボードで、 IC などをそのままさすことができます。 また専用の導線を使うことで半田付け無しで回路を構成することができます。 ここでは PIC の全 I/O ポートを使います。 入力専用の端子にはスイッチを繋ぎ、他は全て LED を接続します。

16F628A の I/O ポートはいくつかの種類があります。 データシートの 17.0 節にありますが、各ポートから取り出せる電流の最大値は 25mA で全ポートの合計電流が 200mA です。

  1. 標準的なポートに関しては LED を点灯させるには十分です。
  2. 他に RA5 は入力専用で、 RA4 はオープンドレインになっています。
  3. RA4 のブロックダイアグラムはデータシートの Figure 5-4 にありますが、他 のポートのように電力を供給するわけではなく、単純に FET が ON/OFF する だけです。

したがって、テスト用の回路を一般の I/O ポート、RA4、RA5、その他に分け て説明します。

一般I/Oポート

一般I/Oポート

RA0〜3, RA6,RA7と RB0〜7 は通常の I/O ポートとして使用できます。 ここでは秋月電子で販売している C-552SR ( データシート) カソードコモン2文字タイプを接続します。 これには 16 個の LED が内蔵されています。 PIC から取り出せる電流は 200mA なので、一つあたり 14mA 程度が限度です。 一方、 C-552SR の一個の LED の電圧降下は 1.6V です。 乾電池 3 本で動かす場合、電圧の変動を考えて最大 5V とすると落さなけれ ばならない電圧は 5 - 1.8 = 3.2V です。これを抵抗で落すことを考えます。 この時、14mV 流れるとすると接続すべき抵抗値は 3.2/0.014 ≒ 228 Ωです。 E12 系列だと 330Ω となります。 但し、 12mV 流す必要もないのであれば、これより大きい抵抗値でも構いませ ん。 例えば、 1kΩ でも問題無く点灯します。

RA4

RA4

RA4 はオープンドレインなので、外部から電源供給した回路を ON/OFF できま す。 ここでは、電源から 330Ω と単体の LED を繋いだものを RA4 に繋ぎます。

RA5

RA5

RA5 は入力専用なのでスイッチを繋ぎます。 RA5 から出た線を二つに分岐し、一方は 10kΩ の抵抗を経由してグランドに、 もう一方はスイッチを経由して電源へ繋ぎます。

その他

PIC 16F628A は内部にクロックがあるため、外部から供給する必要があるのは 電源だけです。VDD を電源に繋ぎ、 Vss をグランドに繋ぎます。

また、電源の確認用に10kΩと繋いだ LED を用意します。

ブレッドボードの構成

回路を作る前の準備として、PIC の足を保護するため、丸ピンの IC ソケット を指しておきます。 また、さらに頻繁な抜き差しでダメージを与えないように、ゼロプレッシャー IC ソケットを使います。

ブレッドボードの構成は 3 段構成にします。 上段に PIC、中段に抵抗、下段に 7 セグメント LED を配置するのが基本です。

電源

電源を配線します。 ブレッドボード上で専用のライン同士に電気が流れるように電池ボックスやジャ ンパ線を繋ぎます。 また電源から一本線を出し、抵抗、単体 LED、 グランドの順に繋ぎ、電源ラ ンプにします。

PIC

PIC の IC ソケットを上段に配置します。一番ピンが下に来るようにします。 14 番ピンを電源に、5 番ピンをグランドに接続します。

抵抗

PIC の 1,2,3, 6,7,8,9 番ピンは IC ソケットのラインから直接抵抗を繋ぎます。 反対側はブレッドボードの中段に繋ぎます。 10,11, 12, 13 番ピンは 右から回り込むように配線し、抵抗を使って中段に 繋ぎます。 15, 16, 17, 18 番ピンも同様に左から回り込むように配線します。

LED

下段に 7 セグメント LED C-552SR を配置します。カソードは 13, 14 番ピン なのでグランドに接続します。 PIC のピン番号 1,2,6,7,8,9,10,11,12,13,15,16,17,18 から引いた抵抗をそ の他の各ピンに接続します。

3 番ピンは RA4 なので接続方法が異なります。 単体の LED を用意し、抵抗にカソードが向くように接続します。 そして、アノードを電源に繋ぎます。

スイッチ

PIC の 4 番ピンは RA5 なので、線を他のラインへ引きます。 そのラインから、10kΩでグランドに繋ぎ、一方はスイッチに繋ぎます。 スイッチの反対側は電源に繋ぎます。

テスト回路用の部品表

部品数量
PIC マイコン 16F628A 1個
ブレッドボード 60 列が 3〜4 段のもの 1 つ。専用の配線材も含む
18pin 丸ピンの IC ソケット1個以上。用意した 16F628A の個 数あった方がいい。
18pin 以上のゼロプレッシャー IC ソケット1個
カソードコモン 7 セグメント 2 桁の LED (C-552SR) 1個
単体の LED 赤、緑それぞれ 1個
タクトスイッチ IC ピッチの基板用 1 個
330Ω 抵抗 15 本
10kΩ 抵抗 2 本
電池ボックス スイッチ付。単3、または単4三本直列用
電池 電池ボックスに適合した物 3 本

2-3. テスト用ソフトウェア

以下にサンプルプログラムを 2 例示します。 このプログラムをアセンブルし、ライタで 16F628A に書き込み、上記のテス ト回路で動作し、開発環境が完成したことを確かめて下さい。

スイッチ点灯

このプログラムはスイッチの状態により LED の点灯、消灯を切替えます。


;*************
;* switch.asm *
;*************
        list p=16f628a
	#include p16f628a.inc
	variable env
env = _BOREN_OFF
env &= _CP_OFF
env &= DATA_CP_OFF
env &= _PWRTE_OFF
env &= _WDT_OFF
env &= _LVP_OFF
env &= _MCLRE_OFF
env &= _INTOSC_OSC_NOCLKOUT
	__config env

	org	0x0000
	goto	start
	org	0x0008
start
	movlw	0x07
	movwf	CMCON
	banksel TRISA
	movlw	b'00100000' ; RA5 for input
	movwf	TRISA
	clrf    TRISB
	banksel PORTB
main
	clrw
	btfsc	PORTA,5
	movlw   0xff
	movwf	PORTA
	movwf   PORTB
	goto    main
	end

フラッシャ

このプログラムは、全ての LED に対して点灯、消灯を定期的に繰り返します。


;*************
;* flash.asm *
;*************

        list p=16f628a
	#include p16f628a.inc
	variable env
env = _BOREN_OFF
env &= _CP_OFF
env &= DATA_CP_OFF
env &= _PWRTE_OFF
env &= _WDT_OFF
env &= _LVP_OFF
env &= _MCLRE_OFF
env &= _INTOSC_OSC_NOCLKOUT
	__config env
	#define	time D'3'
	cblock 0x20
	wa0,wa1,wa2
	endc

	org	0x0000
	goto	start
	org	0x0008
start
	movlw	0x07
	movwf	CMCON
	banksel TRISA
	clrf	TRISA
	clrf    TRISB
	banksel PORTB
main
	movlw   0xff
	movwf	PORTA
	movwf   PORTB
	call    wait
	clrf	PORTA
	clrf    PORTB
        call    wait
        goto    main

wait	
	movlw	time
	movwf	wa0
wait0
	clrf    wa1
wait1
	clrf	wa2
wait2
		nop
	decfsz	wa2,1
	goto	wait2
	decfsz  wa1,1
	goto    wait1
	decfsz  wa0,1
	goto    wait0
	return
	end

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科