• 検索結果がありません。

Microsoft Word - テキスト.docx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft Word - テキスト.docx"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

1 学籍番号 氏 名

情報電子工学演習Ⅴ(ハードウェア実技編)

PIC マイコンによる光学式テルミンの製作

新潟工科大学 情報電子工学科

■ 課題チェック欄

課 題 ドレミ音の発生 (6/28) 回 路 図 (7/5) フローチャート (7/12) 評 価

■ スケジュール

<内 容> <集合場所> 第1回(6/14) PIC マイコンとタイマモジュールの活用 [S2-9] 第2回(6/21) パルスの発生とオシロスコープによる観察 [実験室] 第3回(6/28) CdS セルを利用した明るさの検出 [S2-9] *第4回(7/5) 明るさ変化に応じた音の発生 [S2-9] 第5回(7/12) 自由製作 1 [実験室] 第6回(7/19) 自由製作 2 [実験室] 第7回(7/26) 発 表 [S2-9] *第4回(7/5)は助言ルーム終了後,11:00 から開始します。

■ 配布部品

PIC12F675, 圧電スピーカ, Cds セル, 抵抗 2.2kΩ, コンデンサ 0.1μF,ブレッドボード, ジャンパー線, 電池, 電池ボックス, ピンセット,収納ケース, 名札

(2)

2

1.PIC マイコン

1-1.PIC12F675 の概要

PIC12F675 は、演習ⅢやⅣで使用した PIC16F648A と同じ 14 ビット長の命令語をもつ RISC 型コン ピュータである。8 ピンサイズでありながらも 4MHz のクロックを内蔵し、時間を計測するためのタ イマや A/D 変換入力機能を備えている。

Fig.1 PIC12F675 の DIP パッケージ <端子名> <機 能> GP0~GP5:汎用ディジタル入出力 AN0~AN3:A/D 変換入力 VDD : 電源+ VSS : 電源-(GND) MCLR : 外部リセット入力 Fig.2 機能の概要 1-2.タイマ 1 と割込み処理 タイマ 1 は、前段に 3 ビットプリスケーラを備えた 16 ビットカウンタである。例えば、4MHz のオ シレータを 4 分周した内部クロックを使用(TMR1CS=0)し、3 ビットプリスケーラを 1:4 に設定 (T1CKPS1=1, T1CKPS0=0)すると、4μsec の精度で時間計測が可能になる。また、このタイマ 1 のカウ ンタ値が 65535(16 進で FFFFH)を超える(オーバーフロー)タイミングで割込みを発生させ、再びカ ウンタ値を設定する操作を繰り返すことにより、インターバルタイマを実現することができる。 Fig.3 タイマ 1 の内部構成

(3)

3 Fig.4 タイマ1コントロール(T1CON)レジスタの内容 Fig.5 タイマ 1 割込みによるインターバルタイマ実現の例 z 割込み処理ルーチンの所在は、割込みベクタ(04H)で記しておく。 z 割込み処理終了後には、RETFIE 命令を実行してメインへ戻る。 z 割込み後にメインに戻り、以前の割り込まれた処理を継続できるようにするため には、演算レジスタ(W レジスタ,STATUS レジスタ, PCHL レジスタ)の内容を割込み に入った時点で保存しておく必要がある。 1-3. ソースプログラム1 「インターバルタイマ」 sample01.asm ;--- コンフィグレーションビットの設定と汎用レジスタ(ユーザメモリ)の割付) -- LIST P=PIC12F675 INCLUDE "P12F675.INC"

__CONFIG H’11FF’&_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _CPD_OFF & _CP_OFF ;内部クロック使用,MCLR 未使用など

#DEFINE W_TMP 20H ;W レジスタ割込み時待機用 #DEFINE ST_TMP 21H ;STATUS レジスタ割込み時待機用

(4)

4

#DEFINE T1L 34H ;タイマ 1 下位 8 ビット設定データ保存用 #DEFINE DOUT 35H ;GPIO 出力データ保存用

;--- リセット& 割込みベクタ --- ORG 0 ;リセットベクタ GOTO START ORG 4 ;割込みベクタ GOTO INTR ;--- START BCF INTCON,7 ;割込み不許可 BSF STATUS,RP0 ;バンク 1 に切り替え CALL 3FFH ;内部オシレータのキャリブレーション MOVWF OSCCAL MOVLW B'00010000' ;GPIO(汎用ディジタル入出力ポート)の入出力設定 MOVWF TRISIO ; 0:出力 1:入力 MOVLW 080H ;OPTION レジスタの設定 MOVWF OPTION_REG BSF PIE1,TMR1IE ;タイマ 0 の割込み許可 NOP BCF STATUS,RP0 ;バンク 0 に切り替え NOP MOVLW B'00000100' ;GPIO の初期出力

MOVWF DOUT ; GP2 に 1 出力(High)

MOVLW 0FCH ;タイマ 1 上位 8 ビット設定データ MOVWF T1H ; 設定データを保存 MOVWF TMR1H ; カウンタにセット MOVLW 00H ;タイマ 1 下位 8 ビット設定データ MOVWF T1L ; 設定データを保存 MOVWF TMR1L ; カウンタにセット MOVLW B'00000101' ;タイマ1コントロールレジスタ設定データ MOVWF T1CON ; (プリスケーラ 1:1)設定 BSF INTCON,PEIE ;周辺モジュールの割込みを許可 BSF INTCON,GIE ;割込み許可 MAIN NOP GOTO MAIN ;--- ; 割込み処理ルーチン ;--- INTR MOVWF W_TMP ;現在の W レジスタの値を退避 SWAPF STATUS,0 ;現在の STATUS レジスタの値を退避 MOVWF ST_TMP BCF PIR1,TMR1IF ;タイマ1割込み検出フラグをクリア MOVF T1H,0 ;上位 8 ビット設定データを読み出し MOVWF TMR1H ; カウンタに設定 MOVF T1L,0 ;下位 8 ビット設定データを読み出し MOVWF TMR1L ; カウンタに設定

MOVF DOUT,0 ;GPIO 出力データを読み出し XORLW B'00000100' ;GP2 の出力値を反転

MOVWF DOUT ;GPIO 出力データを保存 MOVWF GPIO ;GPIO 出力

SWAPF ST_TMP,0 ;割込み前の STATUS レジスタの値を復帰 MOVWF STATUS SWAPF W_TMP,1 ;割込み前の W レジスタの値を復帰 SWAPF W_TMP,0 RETFIE END

(5)

5 1-4.パルスの発生とオシロスコープによる観察 <手 順> 1)ソースプログラム1をアセンブルして HEX 形式の機械語データを作る。 2)PIC ライターを使用して PIC12F675 へ機械語データを書き込む。 3)ブレッドボードに Fig.6 の実験回路を作成し、オシロスコープでパルス波形の周期を測定する。 4)S1-GND 間に圧電スピーカを接続し、音階を確認する。 周期 Fig.6 実験回路 1 Fig.7 パルス波形 5)ソースプログラム1のタイマ1設定データを変更し、再び1)~4)の作業を繰り返す。 表1 パルス波形観察時の記録例 <課題1-ドレミ音の発生> TMR1 を FC00H(10 進で 64512)に設定した場合、下記の計算によりパルス波形の周期を求めることが できる。「ド」「レ」「ミ」の音を発生させるため TMR1 の設定値を予測せよ。 < クロック Fosc=4MHz,タイマ 1 のプリスケーラ 1:n=1:1 , TMR1=64512(10 進)とした場合 > T’= (Fosc/4)×n×(65536-TMR1)×2 = 10-6×1×(65536-64512)×2 = 2048μsec = 2.048msec 表2 音階の周波数 音名 周波数[Hz] 音名 周波数[Hz] ド 523.251 ソ 783.991 レ 587.330 ラ 880.000 ミ 659.255 シ 987.767 ファ 698.456 ド 1046.502 No TMR1 設定値 カウント数 Cnt (65536-TM1) 観測周期 T [sec] 周波数 f [Hz] (f=1/T) 16 進 10 進(TM1) 1 2

(6)

6

2.明るさの検出

2-1. Cds セル

Cds(Cadmium sulfide cells)セルは、受光面に 光が入射すると、光導電効果がおこり、内部抵抗 が変化する性質をもっている。Fig.8 は、本演習で 使用する Cds セル(MI5527:Macron)について、照度 対抵抗値の関係を調べたものである。 実験室の照明下(机の上)は、およそ 600Lux で Cds セルの抵抗は 1.8kΩ。Cds セルから 10cm の 高さで手をかざして受光面を暗くすると、200Lux 程度の明るさになり、Cds セルの抵抗は 3kΩにな った。 Fig.8 MI5527 の特性 2-2.A/D 変換入力機能

PIC12F675 は、4 チャンネルの(AN0~AN3)入力切替え可能な 10 ビット分解能の A/D 変換器をもつ。A/D 変換の開始や終了の検査、チャンネル指定には ADCON0 レジスタを使用し、クロックやポートの機能選 択には、ANSEL レジスタを使用する。例えば、A/D 変換クロックとして「Fosc/2」を選択し、AN3 をアナ ログ入力として使用するには、まず ANSEL に B’00001000’の値を設定し、変換開始時には ADCON0 に B’00001111’の値(変換データを左詰め、参照電圧を VDD)を設定する必要がある。 Fig.9 A/D 変換モジュールの機能 1 10 100 10 100 1000 抵抗値 [k Ω ] 照度 [lux]

(7)

7 Fig.10 ADCON0 レジスタ Fig.11 ANSEL レジスタ Fig.12 A/D 変換のプログラミング手順

(8)

8 2-3.ソースプログラム2 「A/D 変換処理プログラム」 #DEFINE UA 30H #DEFINE A 36H ;---- (コンフィグレーション,割込みベクタ等省略) ---- START BCF INTCON,7 ;割込み不許可 MOVLW 07H ; MOVWF CMCON ;コンパレータ機能オフ BSF STATUS,RP0 ;バンク 1 に切り替え MOVLW B'00001000' ;A/D 変換クロック,アナログ入力端子の設定 MOVWF ANSEL ;A/D Clock=FOSC/2, Analog pin - AN3(3) Only MOVLW B'00010000' ;GPIO の入出力設定 MOVWF TRISIO ; MOVLW 080H ;OPTION レジスタの設定 MOVWF OPTION_REG BCF STATUS,RP0 ;バンク 0 に切り替え NOP LOOP MOVLW B'00001101' ;A/D 変換データの形式,チャンネル等の設定 MOVWF ADCON0

CALL WAIT1 ;サンプルホールド(>20μsec) BSF ADCON0,1 ;A/D 変換開始

ADCHECK

BTFSC ADCON0,1 ;A/D 変換終了検査 GOTO ADCHECK

MOVF ADRESH,0 ;A/D 変換データの読込(W レジスタに移動)

MOVWF A ; LOOPE GOTO LOOPE ;--- ; A/D サンプルホールド用 ;--- WAIT1 MOVLW D'20' MOVWF UA ;UA=20 WAIT1A

DECFSZ UA,1 ;UA を-1 し、ゼロならば GOTO 命令をスキップ GOTO WAIT1A ;ラベル WAIT1A へジャンプ

(9)

9 2-4. Cds セルを利用した明るさ検出 Cds セルを利用した明るさ検出の方法として、Fig.13 の回路の使用が考えられる。実際に手をかざし て受光面の明るさを変化させた場合、Vout はどのように変化するか観察を行う。 <手 順> 1)ブレッドボードに Fig.13 の回路を作成する。 2)デジタルマルチメータを使い、まず電源電圧 (VDD)を確認する。次に各種条件において出力 電圧 Vout を測定する。 <課題2-回路図>

Vout を PIC12F675 の AN0(GP0)に接続し、Cds セルによる明るさレベルの判定を実現したい。

Fig.13 に PIC12F675 を加えた回路図を作図せよ。 Fig.13 実験回路 2

表3 明るさ検出回路の動作確認例 電源電圧 VDD= [V] No 測定条件 Vout [V] 1 回目 2 回目 3 回目 1 蛍光灯直下で手をかざさない 2 センサ受光面より 10cm の高さに手をかざす 3 センサ受光面より 5cm の高さに手をかざす 4 センサ受光面より 1cm の高さに手をかざす

(10)

10 2-5.明るさ変化に応じた音の発生

A/D 変換器の分解能を 8 ビット、参照電圧を VDDに設定すると、AN0 からのセンサ入力電圧 Vin は、下 記のとおりデジタルデータ Din に変換される。

Din= Vin / VDD * 255 *Din は、小数点以下切り捨てとする

手を Cds セルの受光面より 1cm から 10cm の間で上下させ、「ド」「レ」「ミ」の3つの音を鳴らすには、 2つの判定閾値を設ける必要がある。先の実験結果を参考に判定閾値を定め、D1, D2 とすると、明るさ に応じたドレミ音の決定処理は以下の流れで実現できる。 Fig.14 ドレミ音の決定プログラム z TMR1 データ(音階の周波数)を更新する手続きは、先の割り込み処理ルーチンで利用されて いた T1H と T1L を介して容易に行える。

(11)

11

2-6.ソースプログラム3「明るさに応じたドレミ音の決定」 sample03.asm #DEFINE D1 XXH

#DEFINE D2 XXH ;判定閾値( XX は不確定な部分 )

#DEFINE W_TMP 20H ;W REGISTER STORE #DEFINE ST_TMP 21H ;STATUS REGISTER STORE #DEFINE UA 30H

#DEFINE T1H 33H ;タイマ 1 上位 8 ビット設定データ保存用 #DEFINE T1L 34H ;タイマ 1 下位 8 ビット設定データ保存用 #DEFINE DOUT 35H ;GPIO 出力データ保存用

#DEFINE A 36H ;---- (コンフィグレーション,割込みベクタ, A/D 初期設定等省略) ---- LOOP MOVLW B'00000001' ;A/D 変換入力の設定 MOVWF ADCON0 CALL WAIT1 BSF ADCON0,1 ;A/D 変換開始 ADCHECK BTFSC ADCON0,1 ;A/D 変換終了検査 GOTO ADCHECK MOVF ADRESH,0 MOVWF A ;A/D 変換データ(センサ入力電圧)を A に保存 ;--- MOVLW D1 ;閾値 D1 を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0(負)なら次の命令をスキップ GOTO TMR1SET1 ;A ≧ D1 の場合は TMR1SET1 へ

;--- MOVLW D2 ;閾値 D2 を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0 なら次の命令をスキップ GOTO TMR1SET2 ;D1>A≧ D2 の場合は TMR1SET2 へ ;=========================================== TMR1SET3 ;「ミ」の音を発生する TMR1 データを指定 MOVLW XX ; XX は不確定なデータ MOVWF T1H MOVLW XX MOVWF T1L GOTO LOOP TMR1SET2 ;「レ」の音を発生する TMR1 データを指定 MOVLW XX MOVWF T1H MOVLW XX MOVWF T1L GOTO LOOP TMR1SET1 ;「ド」の音を発生する TMR1 データを指定 MOVLW XX MOVWF T1H MOVLW XX MOVWF T1L GOTO LOOP ;--- (WAIT1, 割込み処理ルーチンなどを省略) ---

(12)

12 <課題3-フローチャート> ソースプログラム3による方法は、音が切り替わる位置を捉え難く、また周囲光の影響を受け誤 動作しやすい。そこで、この判定処理に対してシュミットトリガを導入し、入力電圧が上昇すると きと下降するときで判定レベルが変わるようにした。ソースプログラム4は、その1例である。こ のプログラムの流れをフローチャートで表し、D1S,D2S の値としてどのような値を設定すべきかを 検討せよ。 2-7.ソースプログラム 「明るさに応じたドレミ音の決定(シュミットトリガ入力)」 #DEFINE D1 XX #DEFINE D2 XX ;判定閾値( XX は不確定なデータ ) #DEFINE D1S XX #DEFINE D2S XX

#DEFINE W_TMP 20H ;W REGISTER STORE #DEFINE ST_TMP 21H ;STATUS REGISTER STORE #DEFINE UA 30H

#DEFINE T1H 33H ;タイマ 1 上位 8 ビット設定データ保存用 #DEFINE T1L 34H ;タイマ 1 下位 8 ビット設定データ保存用 #DEFINE DOUT 35H ;GPIO 出力データ保存用

#DEFINE A 36H ;---- (コンフィグレーション,割込みベクタ, A/D 初期設定等省略) ---- LOOP MOVLW B'00000001' ;A/D 変換入力の設定 MOVWF ADCON0 CALL WAIT1 BSF ADCON0,1 ;A/D 変換開始 ADCHECK BTFSC ADCON0,1 ;A/D 変換終了検査 GOTO ADCHECK MOVF ADRESH,0 MOVWF A ;A/D 変換データ(センサ入力電圧)を A に保存 ;--- MOVLW D1 ;閾値 D1 を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0(負)なら次の命令をスキップ GOTO TMR1SET1 ;A ≧ D1 の場合は TMR1SET1 へ

;---

MOVLW D1S ;閾値 D1S を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0(負)なら次の命令をスキップ GOTO LOOP ;D1> A ≧ D1S の場合は LOOP へ

;--- MOVLW D2 ;閾値 D2 を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0 なら次の命令をスキップ GOTO TMR1SET2 ;D1S> A ≧ D2 の場合は TMR1SET2 へ ;===========================================

MOVLW D2S ;閾値 D1S を W レジスタに移動 SUBWF A,0 ;A - Wreg

BTFSC STATUS,0 ;C フラグが 0(負)なら次の命令をスキップ GOTO LOOP ;D2 > A ≧ D2S の場合は LOOP へ

;---

(13)

13 表4.アセンブラ命令 *1 オペランド部のfは任意のレジスタ,d は格納先の選択(0:W レジスタ,1:fの指定レジスタ), b はビット位置(0~7),k はリテラル(定数データ)を表す。 *2 影響フラグに C, DC, Z などの記載があるものは、その命令の実行によって、STATUS(ステータス)レ ジスタ内の対応するビットが影響を受けることを意味する。 C=1 は演算の結果、最上位にキャリーの発生があったことを表す。 (加算ではその演算結果が 256 以上、減算では 0 以上でキャリーが発生) Z=1は演算の結果がゼロであったことを表す。

(14)

14 <参 考・ホームページ> 1.後閑哲也,PIC マイコンではじめる作って遊べるロボット工作,技術評論社,2004. 2.http://www.picfun.com/ , 電子工作の実験室,後閑. (PIC マイコンの機能やプログラミングについて解かりやすく解説) 3.http://www.microchip.co.jp/ , マイクロチップテクノロジージャパン. (MPLAB や PIC12F675 などのデータシートをダウンロード可能) 4.http://esato.net/ex/micom3/ , PIC マイコンによる光学式テルミンの製作,佐藤.

参照

関連したドキュメント

The database accumulates health insurance claims every month and specific health checkup data every year, resulting in one of the most exhaustive healthcare database of a national

1 ) ADOC 療法 : adriamycin (ADR) , cisplatin (CDDP) , vincristine (VCR) , cyclophosphamide (CPA) 2) PAC 療法: cisplatin (CDDP), doxorubicin (DOX) (=adriamycin,

線遷移をおこすだけでなく、中性子を一つ放出する場合がある。この中性子が遅発中性子で ある。励起状態の Kr-87

EU の指令 Restriction of the use of certain Hazardous Substances in Electrical and Electronic Equipment の略称。詳しくは以下の URL

膵管内乳頭粘液性腺癌、非浸潤性 Intraductal papillary mucinous carcinoma(IPMC), noninvasive 8453/2 膵管内乳頭粘液性腺癌、浸潤性 Intraductal papillary mucinous

2813 論文の潜在意味解析とトピック分析により、 8 つの異なったトピックスが得られ

当社は、お客様が本サイトを通じて取得された個人情報(個人情報とは、個人に関する情報

類内膜腺癌 Endometrioid adenocarcinoma 8380/3 明細胞腺癌 Clear cell adenocarcinoma 8310/3 粘液型腺癌 Mucinous adenocarcinoma 8480/3 中腎性腺癌 Mesonephric