情報電子工学演習Ⅴ(ハードウェア実技演習) PICマイコンによる光学式テルミンの製作 第4回 明るさ変化に応じた音の発生 ■ スケジュール <内 容> <集合場所> 第4回(7/3) 明るさ変化に応じた音の発生 [S2-9] ・課題のチェック(回路図) ・説明 第5回(7/10) 自由製作 ① [実験室] ・課題のチェック(フローチャート) ・プログラム作成&回路製作
2.明るさの検出 暗 明 CdSセル CdSセル(MI5527)の特性
CdSを利用した明るさ検出 デジタルマルチメータ を使いVDDの測定 V 実験回路2
CdSを利用した明るさ検出 デジタルマルチメータ を使い、出力Vout の測定 V 実験回路2
明るさ検出回路の動作確認結果 平均 課題2の解答例 電源電圧 VDD= 3.0 [V] No 測定条件 Vout [V] 1回目 2回目 明るさ検出回路の動作確認結果 電源電圧 VDD= 3.0 [V] No 測定条件 Vout [V] 平均 1回目 2回目 3回目 1 蛍光灯直下で手をかざさない 2 センサ受光面より10cmの高さ 3 センサ受光面より5cmの高さ 4 センサ受光面より1cmの高さ Vout 課題2の解答例
第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説)
PICマイコンのA/D変換データ Din = Vin / VDD×255 電源電圧 VDD= 3.0 [V] (A/D変換器の分解能:8bit) 電源電圧 VDD= 3.0 [V] No 測定条件 Vin [V] (Vout) Din 1 蛍光灯直下で手をかざさない 1.445 122(7A) 2 センサ受光面より10cmの高さ 2.076 176(B0) 3 センサ受光面より5cmの高さ 2.271 193(C1) 4 センサ受光面より1cmの高さ 2.742 233(E9) 小数点以下を切り捨て, ()は16進数に変換
第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説)
A/D 変換値 閾値D1 閾値D2 00 FF ド レ ミ ドレミ音を決定する処理
第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説)
A/D変換で使用する特殊レジスタ ■ ADCON0レジスタ (Fig.10) ■ ADSELレジスタ (Fig.11)
A/D変換機能のプログラミング(2) ◇ 初期設定 (sample03.asm , p.11の省略部分) START BCF INTCON,7 MOVLW 07H MOVWF CMCON BSF STATUS,RP0 MOVWF B‘00000001’ ;変換クロック:Fosc/2, AN0を指定 MOVWF ANSEL MOVLW B‘00000001’ ;GPO(ANO) データ方向を入力指定 MOVWF TRISIO MOVLW 080H MOVWF OPTION_REG BCF STATUS,RP0 NOP ※P.8のソースプログラム2との 違いはこの4行
A/D変換機能のプログラミング(2) ◇ A/D変換処理 (sample03.asm, A/D変換データを得るまで) LOOP MOVLW B'00000001' MOVWF ADCON0 CALL WAIT1 BSF ADCON0,1 ADCHECK BTFSC ADCON0,1 GOTO ADCHECK MOVF ADRESH,0 MOVWF A AN0 → Aレジスタ
A/D変換機能のプログラミング(2) ◇ ドレミ音の決定 (sample03.asm) MOVLW D1 SUBWF A,0 BTFSC STATUS,0 GOTO TMR1SET1 ;------------------------------ MOVLW D2 GOTO TMR1SET2 ;================== ※1, 2行目における閾値D1, D2の定義 #DEFINE D1 XXH #DEFINE D2 XXH
■ BTFSC STATUS,0 ? → STATUSレジスタの0ビットをテストし(調べ)、 クリア(ゼロ)の場合は次の命令をスキップする。 クリア(ゼロ)の場合は次の命令をスキップする。 1-ゼロ 0-ゼロではない IRP RP1 RP0 TO RD Z DC C bit8 bit1 1-桁上り,桁下りあり 0-なし StATUSレジスタの機能 ※STATUSレジスタのCフラグやZフラグは、ADDLW(加算)命令や SUBWF(減算)命令などによって変化する。
■ SUBWF(減算)命令と桁上がり(桁あふれ) 例題 「04H - 06H」, 「04H - 03H」 04H B’00000100’ ( 06H B’00000110’ を反転して+1 ) -06H B’11111010’ 04H-06H B’11111110’ -------------------------------------------------------------- 04H B’00000100’ ( 03H B’00000011’ を反転して+1 ) -03H B’11111101’ 04H-03H B’100000001’ STATUSレジスタのCフラグに格納される
A/D変換機能のプログラミング(2) ◇ タイマデータの指定 (sample03.asm) TMR1SET3 MOVLW XX MOVWF T1H MOVWF T1L GOTO LOOP TMR1SET2 GOTO LOOP TMR1SET1 (省略)
A/D変換機能のプログラミング(3) ◇ シュミットトリガの実現 ← 手ぶれ対策 テキストp.12 のフローチャート → 課題3 FF ド ◇ シュミットトリガの実現 ← 手ぶれ対策 D1 D2 00 FF ド レ ミ TMR1の変更なし D1S TMR1の変更なし D2S テキストp.12 のフローチャート → 課題3
◆ 来週の自由製作(課題チェック後) 1)sample3.asm をメモ帳で開き、 D1, D2, ドレミ各音のTMR1 データを書き替える。 2)アセンブル、PICマイコンへの 書込み 3)動作確認 実験室にて (発表時のアイディア点+10までの評価) 4)課題3の実現、オリジナル作品 の製作 プログラム作成 は計算機実習室 (+20までの評価)