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

卒 業 研 究 報 告

N/A
N/A
Protected

Academic year: 2022

シェア "卒 業 研 究 報 告"

Copied!
74
0
0

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

全文

(1)

卒 業 研 究 報 告

題   目

PICを用いたシンセサイザーの設計と製作

指 導 教 員 綿森道夫 准教授

報 告 者 学籍番号: 1090210

氏名:伊井 祐輔

平成    21 年    2 月    19 日

高知工科大学 電子・光システム工学科

(2)

目 次

第一章 序論・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3  1-1 はじめに・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3  1-2 研究目的・・・・・・・・・・・・・・・・・・・・・・・・・・・ 3  1-3 研究の新規性・・・・・・・・・・・・・・・・・・・・・・・・・ 3

第二章 PICについて・・・・・・・・・・・・・・・・・・・・・・・・・ 4  2-1 PICとは・・・・・・・・・・・・・・・・・・・・・・・・・・ 4  2-2 PICの特徴・・・・・・・・・・・・・・・・・・・・・・・・・ 5  2-3 PICの種類・・・・・・・・・・・・・・・・・・・・・・・・・ 5  2-4 使用したPICについて・・・・・・・・・・・・・・・・・・・・ 5  2-5 プログラミング言語等・・・・・・・・・・・・・・・・・・・・・ 5

第三章 PICを用いた電子工作・・・・・・・・・・・・・・・・・・・・・ 6  3-1 電子ルーレット・・・・・・・・・・・・・・・・・・・・・・・・ 6  3-2 カウントダウンタイマー・・・・・・・・・・・・・・・・・・・・ 9

第四章 D・Aコンバータ回路の試作・・・・・・・・・・・・・・・・・・・12  4-1 MCP4922の仕様について・・・・・・・・・・・・・・・・・12  4-2 SPI通信について・・・・・・・・・・・・・・・・・・・・・・13  4-3 ブレッドボードへの試作・・・・・・・・・・・・・・・・・・・・17  4-4 ユニバーサル基板を用いたプロトタイプの製作・・・・・・・・・・19  4-5 アクティブフィルター・・・・・・・・・・・・・・・・・・・・・24

第五章 PICを用いたシンセサイザーの設計と製作・・・・・・・・・・・・29

 5-1 意義と特徴・・・・・・・・・・・・・・・・・・・・・・・・・・29

 5-2 外観と仕様・・・・・・・・・・・・・・・・・・・・・・・・・・29

 5-3 回路について・・・・・・・・・・・・・・・・・・・・・・・・・30

 5-4 波形発生装置のプログラムについて・・・・・・・・・・・・・・・31

 5-5 コントローラー側のプログラムについて・・・・・・・・・・・・・35

 5-6 スピーカーの周辺について・・・・・・・・・・・・・・・・・・・40

 5-7 音律等の決定について・・・・・・・・・・・・・・・・・・・・・40

 5-8 実際の使用例について・・・・・・・・・・・・・・・・・・・・・42

 5-9 苦労した点・・・・・・・・・・・・・・・・・・・・・・・・・・45

(3)

目 次

第六章 今後の課題・・・・・・・・・・・・・・・・・・・・・・・・・・・46

第七章 まとめ 感想・・・・・・・・・・・・・・・・・・・・・・・・・・47

第八章 謝辞・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・48

第九章 参考文献・・・・・・・・・・・・・・・・・・・・・・・・・・・・49

付録 プログラムリスト・・・・・・・・・・・・・・・・・・・・・・・・・50

(4)

第 一 章   序 論

1 . 1   は じ め に

PIC プ ロ セ ッ サ を 用 い て ド レ ミ フ ァ ソ ラ シ ド が 鳴 ら し て み た い と 思 っ た こ と が こ の 研 究 を は じ め る 動 機 で あ る。 そ の た め に は、 PIC 1 6 F 8 8 な ど が 内 臓 し て い る 電 圧 リ フ ァ レ ン ス モ ジ ュ ー ル を 利 用 し て 波 形 を 得 る、 PWM の 幅 を 変 え る こ と に よ っ て 矩 形 波 の 周 波 数 を 変 え る 等 が 考 え ら れ る が、 本 研 究 で は マ イ ク ロ チ ッ プ 社 の 製 造 し て い る

D ・ A コ ン バ ー タ 「 MCP 4 9 2 2」 を 使 用 し て デ ジ タ ル デ ー タ を ア ナ ロ グ 変 換 す る こ と で 波 形 を 発 生 さ せ る 方 式 の シ ン セ サ イ ザ ー を 設 計 製 作 し ま し た。

1 . 2   研 究 目 的

本 研 究 で 用 い て い る PIC プ ロ セ ッ サ は、 現 在 多 岐 に 及 ぶ 製 品 に 使 用 さ れ て い ま す。 こ の 汎 用 性 の あ る IC を 実 際 に 目 標 を も っ て 形 に す る と い う 研 究 を す る こ と で、 様 々 な 電 化 製 品 の 構 造 の 理 解 を 深 め る と 共 に、 PIC プ ロ セ ッ サ を 用 い た 電 子 回 路 の 可 能 性 を 考 え る こ と が で き ま す。 さ ら に PIC プ ロ セ ッ サ を 制 御 す る た め の プ ロ グ ラ ミ ン グ 能 力 や 回 路 設 計 す る 上 で の ア ナ ロ グ ・ デ ジ タ ル 回 路 の 理 解、 実 際 の 基 板 を 使 っ て 製 作 す る こ と に よ る 半 田 付 け や 加 工 の 上 達 を 目 的 と し て い ま す。

1 . 3   研 究 の 新 規 性

本 研 究 で の 新 規 性 は、 シ ン セ サ イ ザ ー を 実 現 す る に あ た り、 2 個 の プ ロ セ ッ サ を 使 用 し そ れ ぞ れ 別 々 の 役 割 を 果 た す 構 成 に し た こ と に あ り ま す。 具 体 的 に は、 2 個 の P I C プ ロ セ ッ サ と 2 個 の D ・ A コ ン バ ー タ を 用 い て お り、 1 個 目 は ク ロ ッ ク に 同 期 し て D   ・ A コ ン バ ー タ に デ ジ タ ル 値 を 順 に ア ナ ロ グ 値 に 変 換 し て 音 の 波 形 と し て 出 力 さ せ て い る。 そ の 際 2 個 目 の プ ロ セ ッ サ を 用 い て 1 個 目 の プ ロ セ ッ サ に 繋 が っ て い る D

・ A コ ン バ ー タ の リ フ ァ レ ン ス 電 圧 に か け る 電 圧 を 時 間 的 に 変 化 さ せ る こ と に よ っ て

、 ア ナ ロ グ シ ン セ サ イ ザ ー に お け る エ ン ベ ロ ー プ ジ ェ ネ レ ー タ ー を 模 し た も の に し て い る。 こ の 2 個 目 の プ ロ セ ッ サ で 制 御 さ れ た D ・ A コ ン バ ー タ か ら の 出 力 電 圧 が 1 個 目 の D ・ A コ ン バ ー タ の リ フ ァ レ ン ス 電 圧 に 加 え ら れ る こ と で 単 純 な 波 形 に 変 調 を か け る こ と が、 本 研 究 の 最 大 の 新 規 性 で あ り ま す。

(5)

第 二 章   PIC に つ い て

2 - 1   PIC と は

PIC ( Peripheral Interface Controtter ) と は、 コ ン ピ ュ ー タ の 周 辺 機 器 を 制 御 す る 為 の IC で、 自 動 車 や 民 生 機 器 な ど あ り と あ ら ゆ る 分 野 で 使 用 さ れ て い ま す。 そ の 歴 史 は、

1 9 8 0 年 に ア メ リ カ の ゼ ネ ラ ル ・ イ ン ス ツ ル メ ン ト (General Instruments

Corporation) 社 が 開 発 し た こ と か ら 始 ま り、 そ の 後 同 社 の PIC 分 野 が 独 立 し て 出 来 た の が、 マ イ ク ロ チ ッ プ テ ク ノ ロ ジ 社 で す。 現 在 で は、 使 い や す く、 安 価 で あ り 無 料 の プ ロ グ ラ ム 開 発 ツ ー ル が 用 意 さ て て い る と い う点か ら、趣 味で 電 子 工 作 を す る人の 間 で も 多 く 利 用 さ れ て い ま す。

2 - 2   特 徴

PIC の特 徴は、一 般の マ イ ク ロ コ ン ピ ュ ー タ と違いハー バ ー ド ア ーキテ ク チャと呼 ば れ る 内部構 造 を し て お り、 デ ー タ メ モ リ と演 算 処理部、 プ ロ グ ラ ム メ モ リ と演 算 処理 部と の 間 が そ れ ぞ れ 別 々 の デ ー タ バ ス で接 続さ れ て い て、 さ ら に 周 辺 回 路、 デ ー タ メ モ リ、 プ ロ グ ラ ム メ モ リ、命 令実行 部、演 算 処理部がワン チ ッ プ に集 約れ て い ま す。

以 下、主な特 徴を 後閑 哲 也さんのホー ムペー ジ か ら の引用 し ま す と

・小 型 ・ ・ ・ ・   1 8 ピ ン D I P、 2 8 ピ ン D I P、 4 0 ピ ン D I P

・高 速 ・ ・ ・ ・   最 大 1命 令2 0 0n s、RISC ア ーキテ ク チャ

・広 範 囲な 動 作 電 圧 ・ ・ ・ ・ 最小2Vか ら 6Vで 動 作  消 費電 力 最小 30μA

・ メ モ リ ・ ・ ・ ・ 51 2~4K Bの フ ラ ッ シ ュ メ モ リ

・入出 力 ピ ン ・ ・ ・ L ED直 接 駆動 可 能 な容 量、入力/出 力 プ ロ グ ラ マブル

・ 開 発環 境 ・ ・ ・ ・ ア セ ンブラ、 シ ミ ュ レ ー タ がB B Sで提 供さ れ て い る

・R O Mラ イ タ ・ ・ ・ PICSTRAT と し て販 売さ れ て い る。簡単 な 自 作 も 可 能

・低価格 ・ ・ ・ ・ 秋 葉 原で 1 個50 0円 ~で入 手可 能

・ そ の他 ・ ・ ・ ・ パ ワーオン リ セ ッ ト、ウ ォッ チ ド ッ グ タ イ マ 内蔵

      A/D コ ン バ ー タ、 シ リ ア ルポー ト、 PW M出 力 付 き あ り な ど で す。

(6)

2 - 3   PIC の 種 類

PIC に は、 大 き く 分 け て三 つの種 類に 分 か れ て い て、 そ れ ぞ れ ベ ー ス ラ イ ン シ リ ーズ

、 ミ ッ ド レ ン ジ シ リ ーズ、ハイ エ ン ド シ リ ーズと な っ て い ま す。 PIC が ど の シ リ ーズ に な っ て い る の か は型 番に よ っ て すぐにわか る よ う に な っ て お り、 1 0系、 1 2系は ベ ー ス ラ イ ン シ リ ーズ、 1 6系は ミ ッ ド レ ン ジ シ リ ーズ、 1 8系はハイ エ ン ド シ リ ー ズに属し て い ま す。表 記す る と き は、 1 6系を例に取っ て み る と 1 6 F○○A 、 1 6

F○○ の よ う に表 記さ れ て い ま す。 シ リ ーズ間 で の主な違い は、命 令の長さ や、 機 能 の豊 富さ に あ り ま す。

2 - 4   使 用 し た PIC に つ い て

本 研 究 で は、 ミ ッ ド レ ン ジ シ リ ーズの 1 6 F 6 4 8 A 、 1 6 F 8 8、 1 6 F 87 7、

1 6 F 876 を 使 用 し ま し た。 1 6 F 6 4 8 A は カウン トダ ウン タ イ マ ー、 LED を 用 い た 電 子 ル ー レ ッ ト に、 1 6 F 8 8 は プ ロ ト タ イ プ の 波 形 発 生装 置に、 1 6 F 87 7 をキーボー ド入力部と エ ン ベ ロ ー プ 波 形 発 生 に、 1 6 F 876 を メ イ ン の 波 形 発 生 に 使 用 し ま し た。

        ・ 1 6 F 8 7 7

1 6 F 87 7は、 4 0 ピ ン の チ ッ プ で 大 き い の で す が足の 多 さ か らキーボー ド入力 用 に は こ の チ ッ プ以 外は 無 理だと判 断し た の で 使 用 し ま し た。

        ・ 1 6 F 8 7 6

1 6 F 876 は、 2 8 ピ ン の チ ッ プ で 2 0 MH zの ク ロ ッ ク を 用 い る こ と で 1命 令2 0 0n sec で 動 作 さ せ る こ と が 出 来 る よ う に な り、 よ り 分 解 能 の あ る 波 形 を 発 生 で き る と い う点と、BC D ス イ ッ チ を 多 数 付 け た い と い う こ と で 使 用 し ま し た。

        ・ 1 6 F 8 8

1 6 F 8 8 は、 1 8 ピ ン の チ ッ プ で 1 6 F 876 と 同 様 に 2 0 MHz の ク ロ ッ ク を 用 い る こ と で 1命 令2 0 0n sec で 動 作 す る、 電 圧 リ フ ァ レ ン ス が 内 臓 さ れ て い る と い う 点で、 プ ロ ト タ イ プ の 波 形 発 生装 置に 使 用 し ま し た。

       ・ 1 6 F 6 4 8 A

1 6 F 6 4 8 A は、 1 8 ピ ン の チ ッ プ で 後述す る PIC を 用 い た 電 子 工 作 に 用 い た も の で す。

2 - 5   プ ロ グ ラ ミ ン グ 言 語 等

プ ロ グ ラ ミ ン グ言 語は、 電 子 ル ー レ ッ ト は ア セ ンブラ で そ の他の プ ロ グ ラ ム は C 言 語 で記 述し コ ンパイ ラ は WIZ - C と い う ソ フ ト を 利 用 し ま し た。

(7)

第 三 章   PIC を 用 い た 電 子 工 作

3 - 1   電 子 ル ー レ ッ ト

電 子 ル ー レ ッ ト と は、 PIC に 発光 ダイオー ド と ス イ ッ チ を取り 付 け た簡単 な 回 路 構 成 で で き て お り、 動 作 と し て は ル ー レ ッ ト が ス タ ー ト し て い な い と き に緩や か に 発光 ダ イオー ド を右回転に 順 に点 灯さ せ、ボタ ン が押さ れ る と 発光 ダイオー ド を高 速に点 灯 さ せ る と 同 時 に 音 を 鳴 ら せ て次 第に 発光 ダイオー ド の点 灯 速 度と 音 の 間隔が緩や か に な り止ま る と い う も の で、文 字ど う り ル ー レ ッ ト に な っ て い ま す。 (第 一作 目 の 作 品 と し て三年 生 の 後 期 に 作 り、 内部の プ ロ グ ラ ム を 4 年 の 8月 頃か ら改 良し ま し た。 )

写 真1   電 子 ル ー レ ッ ト

図1   電 子 ル ー レ ッ ト の 回 路図

GND VDD PGD

PGC MCLR

+ Vcc 3V S1

J1

+ -

BZ1

START STOP

D12 LED1

D11 LED1 D10 LED1 D9 LED1 D8 LED1 D7 LED1 D6

LED1 D5 LED1 D4 LED1

D3 LED1

D2 LED1

D1 LED1

16F628 RA2 RA3RA4 RA5Vss RB0RB1 RB2RB3 RB4RB5RB6RB7VddRA6RA7RA0RA1

U1

R168 10kR3

10kR2

(8)

回 路図は、図1 の よ う な 構 成 に な っ て い ま す。次に ル ー チ ン につい て で す が、 順 に説 明す る と

① 初期 化

② 右のボタ ン が押さ れ て い る か チ ェ ッ ク  押さ れ て い れば ⑥ へ

③ 左のボタ ン が押さ れ て い る か チ ェ ッ ク  押さ れ て い れば ⑩ へ

④発光 ダイオー ド を反時 計 回 り に低 速 点 灯

⑤ ② へ 戻る

⑥ 左、右のボタ ン が押さ れ て い る か チ ェ ッ ク  左が押さ れ て い れば ⑦ へ、右が押さ れ て い れば ⑧ へ、何も押さ れ て い な い と き⑥を繰り返す

⑦時 計 回 り の ル ー レ ッ ト を行っ た 後、⑨ へ

⑧ 反時 計 回 り の ル ー レ ッ ト を行っ た 後、⑨ へ

⑨ 右のボタ ン が押さ れ て い れば ② へ

⑩発光 ダイオー ド を 時 計 回 り に点 灯

⑪ 右のボタ ン が押さ れ て い る か チ ェ ッ ク  押さ れ て い れば ⑥ へ

⑫ 左のボタ ン が押さ れ て い る か チ ェ ッ ク  押さ れ て い れば ② へ

⑬ ⑩ へ 戻る。

と い う流れ で す。

フ ロ ー チャー ト を次のペー ジ に記し ま す。

(9)

       

2   電 子 ル ー レ ッ ト の フ ロ ー チャー ト

初期化

ボタンから離れたか

一定時間待つ LEDを点灯ルーチンを

呼ぶ poartaの値を

右シフト

左のボタンが 押されたか

右のボタンが 押されたか

左のボタンが 押されたか

一定時間待つ LEDを点灯するルーチン

を呼ぶ porataの値を

左シフト

左のボタンが 離れたか

時計周りのルーレット 反時計回りのルーレット スタートが

押されたか

スタートが 押されたか

左のボタン が押されたか 左のボタンが

離れているか

yes

yes

yes

yes yes

yes no

yes no

no

yes yes

no

no yes

no no

no

(10)

3 - 2   カ ウ ン ト ダ ウ ン タ イ マ ー

カウン トダ ウン タ イ マ ー と は、 PIC と セ グ メ ン トダイオー ド を 用 い て 構 成 さ れ た 回 路 で、 セ グ メ ン トダイオー ド が一 秒 ごと に カウン トダ ウン す る よ う に セ グ メ ン トダイオ ー ド の表 示を 変 え る と い う も の で す。 さ ら に追加 機 能 と し て、 1 6進、 1 0進の カウ ン ト ア ッ プ ・ダ ウン や ス ロ ッ ト モ ー ド をボタ ン を押す こ と で切り替え ら れ る よ う に し て い ま す。 (第2 作 目 の 作 品 と し て 4 年 の 9月 頃に 作 り は じ め ま し た。一作 目 の 電 子 ル ー レ ッ ト の経 験を踏ま え て よ り き れ い に な配 線を 目指し ま し た。 )      

写 真2   カウン トダ ウン タ イ マ ー      図 3  回 路図

Ii Yusuke Count Down Timer J1

+ -

BZ1

S3 sw main

S2 stop startS1

+ PNP 3V

2SA1015 PNP

2SA1015

PNP 2SA1015

PNP 2SA1015

D

D D D

D

D D D

2SC1815NPN 2SC1815NPN

A-552SR E1 D1 C1 H1 E2D2 G2 C2 H2B2A2F2V-2V-1B1A1G1F1

U1

A-552SR E1 D1 C1 H1 E2 D2 G2 C2 H2B2A2F2V-2V-1B1A1G1F1 U2

16F628 1RA22RA3 3RA44RA5 5Vss6RB0 7RB18RB2 9RB3 RB410

RB511 RB612 RB713 Vdd14 RA615 RA716 RA017 RA118 U3

BCD-SW

CQ 84

21

BCD-SW

CQ 84

21

RD 130 130RG

130RB 130RA

240k RE 130

130RC 10k 10k

130RH

4.3k 4.3k

4.3k 4.3k

240k RF 130

(11)

次に、 カウン トダ ウン タ イ マ ー の ル ー チ ン の説 明を し ま す。

① BC D ス イ ッ チ を読 む

② BC D で読 ん だ値 に応じ て セ グ メ ン トダイオー ド を点 灯(BC D は二 つあ り一 つは 1 0 分 の桁、 も う一 つは 1 分 の桁に対 応し て い ま す。 1 0秒、 1秒の桁は ゼ ロ の ま ま で す。 )

③ 左の ス イ ッ チ が押さ れ て い る か を チ ェ ッ ク  押さ れ て い る と モ ー ド が 2 に かわる ボタ ン を押し て い く モ ー ド3、 4、5と切り替 わっ て い く。5の と き に押す と 1 に戻 る仕 組み に な っ て い ま す。 (初期 モ ー ド は 1 で す。 )

モ ー ド は 1:1 0進カウン トダ ウン   2:1 6進カウン トダ ウン  3 :1 0進カウン ト ア ッ プ   4:1 6進カウン ト ア ッ プ  5 :ス ロ ッ ト

④ 右の ス イ ッ チ が押さ れ て い る か チ ェ ッ ク  押さ れ て い る場 合モ ー ド に応じ た 割 り込 み処理 を す る た め の フ ラ グ を 立 て、 同 時 に①、②、③の処理 に進 入で き な い よ う に ス タ ー ト し た と き の フ ラ グ を 立 て る。⑥ へ

⑤ 押さ れ て い な い と き  ① へ

⑥ 処理 フ ラ グ が 0 の場 合  モ ー ド に応じ た処理 を す る。

⑦ 再ス タ ー ト フ ラ グ が 0 の場 合 右の ス イ ッ チ が押さ れ て い な い か を チ ェ ッ ク  押さ れ て い る場 合 ⑨ へ 押さ れ て い な い場 合ス ト ッ プ フ ラ グ を 1 に す る。

⑦ス ト ッ プ フ ラ グ が 1 の場 合 右の ス イ ッ チ が押さ れ て い る か を チ ェ ッ ク  押さ れ て い る場 合 処理 フ ラ グ を 1 に し、再ス タ ー ト フ ラ グ を 1、 ス ト ッ プ フ ラ グ を 0 に す る

⑧ 再ス タ ー ト フ ラ グ が 1 の場 合 右の ス イ ッ チ が押さ れ て い な い か を チ ェ ッ ク 押さ れ て い る場 合 ⑥ へ 押さ れ て い な い と き  再ス タ ー ト 2 フ ラ グ を 1 に す る。

⑨ 再ス タ ー ト フ ラ グ 2 が 1 に場 合 右の ス イ ッ チ が押さ れ て い な い か を チ ェ ッ ク 押さ れ て い る場 合 再ス タ ー ト 2 フ ラ グ を 0、処理 フ ラ グ を 0、再ス タ ー ト フ ラ グ を 0 に す る。

⑨ 左の ス イ ッ チ が押さ れ て い る か チ ェ ッ ク  押さ れ て い る場 合すべて の フ ラ グ を初期 値 に戻し① へ 押さ れ て い な い場 合 ⑥ へ

と い う流れ で す。

な お こ の カウン トダ ウン タ イ マ ー は メ イ ン ル ー プ が一周 す るごと に PO R TA の 値 を 変 え る こ と で セ グ メ ン トダイオー ド を 順番に一 桁 ず つ 点 灯さ せ て い ま す。 なぜか と い う と こ う す る こ と で消 費電 力 を抑え ら れ る と い う点と、人間 の 目 に は早すぎて 同 時 に 点 灯し て い る よ う に見え る か ら で す。

次のペー ジ に処理 の一 例と し て 1 0進カウン ト ア ッ プ の フ ロ ー チャー ト を示し ま す。

(詳し い処理 につい て は、 プ ロ グ ラ ム リ ス ト に譲る こ と に し ま す。 )

(12)

       図4   1 0進カウン ト ア ッ プ の フ ロ ー チャー ト

 

割り込み開始

bCCP1IF && kirikae==2

sec1==10

min1==10 count==5

bCCP1IF=0;

count++;

sec10++;

sec1=0;

buzzerflag=50;

count=0;

sec1++;

min1++;

sec10=0;

sec10==6

min10++;

min1=0;

min1=0;

sec1=0;

sec10=0;

min10=0;

min10==10

メインループへ

yes

no

no

yes

no

yes

no

yes

no

yes

no yes

10進カウントアップ

(13)

第 四 章 D ・ A コ ン バ ー タ 回 路 の 試 作

4 - 1 MCP4922 の 仕 様

MC P 4 9 2 2 は、 マ イ ク ロ チ ッ プ テ ク ノ ロ ジ ー 社 の D ・ A コ ン バ ー タ で、 1 4 ピ ン の チ ッ プ で す。 そ の 構 成 は、 2つのVREF とVOUTを搭 載し て お り、送 信 側か ら送る命 令 を 変 え る こ と で VOUTA と VOUTB の 出 力 を選 択す る こ と が で き ま す。通 信方 式 はSP I 通 信で、 最 大 1 2ビッ ト の デ ー タ を ア ナ ロ グ 変 換 で き ま す。 そ の 際 の 出 力 電 圧 は、

VREF の 電 圧× 受 信デ ー タ÷1 2ビッ ト ( 4 0 9 6 ) と い う こ と に な り ま す。つま り 最 大 4 0 9 6 の 分 解 能 を 実 現 で き る と い う こ と で す。 さ ら に 後述す るSP I通 信で は、

一回 の送 信で、 1 2ビッ ト の デ ー タ を送 信で き な い の で、 8ビッ トず つにわけ て 2 回 送 信し て い ま す。 そ の 際 に余っ て い る 4ビッ ト 分 の デ ー タ で 出 力 を A か B を切り替え た りVREF を 2×VREF×D÷4 0 9 6 かVREF×D÷4 0 9 6 を選 択で き る よ う に な っ て い ま す。 ( こ こ でゲイ ン 調整し て い ま す )

そ の 際 の仕様 が以 下の通り す。

Bit 15  1= Bチャン ネ ル に か く       0=A チャン ネ ル に か く Bit 1 4   1=バ ッ フ ァ ー あ り 0=バ ッ フ ァ ー な し Bit 13  1= ゲイ ン 1倍       0= ゲイ ン 2倍

Bit 1 2   1=出 力有 効       0=出 力 無効、ハイ イ ン ピ ーダン ス Bit 1 1 か ら Bit 0=デ ー タ

デ ー タ を送 信す る手順 は、 最初の 制 御 用 4ビッ ト に続け てビッ ト 1 1 か らビッ ト 8 ま で の デ ー タ を送 信し、 そ の 後ビッ ト7か らビッ ト 0 の デ ー タ を送 信す る よ う に な っ て い ま す。図 5が MCP 4 9 2 2 の ピ ン配 置で す。

       

図 5  ピ ン配 置

(14)

ピ ン 1: VD D   2~6Vを 加 え る こ と で 動 作 し ま す。

ピ ン 2: NC     ノ ー コ ネ ク ション (何も 繋 が っ て い な い ) 6、7も 同 様

ピ ン3 :CS  チ ッ プ セ レ ク ト   こ こ をHIG Hか らL O Wに す る と デ ー タ を受け取 り ま す。

ピ ン 4: SCK  シ リ ア ル ク ロ ッ ク イ ン プ ッ ト   マ ス タ ー側か ら の ク ロ ッ ク が入り ま す。

ピ ン5 : SD I   シ リ ア ル デ ー タ イ ン プ ッ ト   マ ス タ ー側か ら の デ ー タ が を受け取り ま す。

ピ ン 8: LD A C   ラ ッ チ   D A C   イ ン プ ッ ト   デ ー タ を受け取っ た 後HIG Hか らL O Wに す る とV O U TA又はV O U T Bか ら そ れ に応じ た 電 圧 が 出 力 さ れ ま す。

ピ ン 9: S HDN  シャッ トダ ウン ピ ン 1 0: V O U T B B出 力

ピ ン 1 1: V R E F B Bの リ フ ァ レ ン ス 電 圧 ピ ン 1 2: V S S 

ピ ン 13 : V R E FA   A の リ フ ァ レ ン ス 電 圧 ピ ン 1 4: V O U TA   A 出 力

4 - 2   S P I 通 信 に つ い て

SPI (Serial Peripheral Interface )通 信と は P C 同士や P I C と他の 周 辺 I C 等 と シ リ ア ル通 信を行う た め の も の で、一方 を マ ス タ ー モ ー ド も う一方 を ス レ ーブモ ー ド と し て通 信を行い ま す。 本 研 究 で は、 P I C ( マ ス タ ー ) とMC P 4 9 2 2 ( ス レ ーブ

) と の 間 の通 信を す る の に 利 用 し て い ま す。

4 - 2 - 1 PIC の 設 定

P I C でSP I通 信を行う た め に、S SP CO Nレ ジ ス タ とS SPS TATレ ジ ス タ に 値 を 設定を し ま す。 本 研 究 で は、 1 6進数 でS SP CO Nに 2 0 ( 0 0 1 0 0 0 0 0 )、S SPS TATに 4 0 ( 0 1 0 0 0 0 0 0 ) と い う 値 を セ ッ ト し ま し た。次に S SP CO Nレ ジ ス タ とS SPS TATレ ジ ス タ の 構 成 を示し ま す。

(15)

       S SP CO Nレ ジ ス タ

  WCOL : Write の衝 突 検出         1: SSPBUF に前の デ ー タ あ り   0 : 正 常

SSPPOV : 受 信 オー バ ー フ ロ ー検出 ( ス レ ーブ) 1: オー バ ー フ ロ ー 発 生       0 : 正 常   SSPEN :  SSP の 使 用指 定

    1: SCK 、 SDO 、 SDI 、SSピ ン と し て 使 用 す る   0 : 汎 用 I/O ポー ト と し て 使 用   CKP : SCK ク ロ ッ ク極性切り替え

    1: HIGHで IDEL  0 : LOW で IDEL SSPM0 か らSSPM3の 設定

0000 = SPImaster mode Clock = Fosc/04

0001 = SPImaster mode Clock = Fosc/16         0010 = SPImaster mode Clock = Fosc/64

0011 = SPImaster mode Clock = TMR2 Out/2

0100 = SPImaster mode Clock = SCK pin/SS pin enable     0101 = SPImaster mode Clock = SCK pin/SS pin disable              S SPS TATレ ジ ス タ

SMP: 受 信サ ン プ リ ン グ の タ イ ミ ン グ指 定 

マ ス タ ー モ ー ド の と き 1:出 力 デ ー タ の 後縁  0:出 力 デ ー タ の中 央  ス レ ーブの 時 は 0 に す る

CKE:  SPI   ク ロ ッ ク の エ ッ ジ指 定

CKP=0 の と き   1:立ち上 が り エ ッ ジ 0 :立下り エ ッ ジ   CKP=1 の と き   1:立下り エ ッ ジ   0 : 立ち上 が り エ ッ ジ BF:  バ ッ フ ァ ス テ イ タ ス   1: 受 信完 了  0: 受 信中

(16)

こ こ でS SP CO Nレ ジ ス タ を 2 0 ( 0 0 1 0 0 0 0 0 ) と決定し た の は、S SPE NでS SP を 使 用 す る に し て、 CKP を ロ ー ア イ ド ル に す る こ と で、SCKピ ン は ク ロ ッ ク 出 力 の 際 にHIG Hに な る 方法を採用 し た か ら で す。 こ れ はMC P 4 9 2 2 の デ ー タ シ ー ト の通 信タ イ ム チャー ト に そ の よ う に書か れ て い た の で そ れ に合 わせ ま し た。又、下位4ビッ ト を 0 0 0 0 に す る こ と で通 信 速 度と し て 最高の5 M H zを選 択 し ま し た。MC P 4 9 2 2 の デ ー タ シ ー ト に よ る と 最高ク ロ ッ ク速 度が 2 0M H zと な っ て い る の で、 こ の速 度の通 信は十分 で あ る と判 断ま し た。又 S SP CO Nレ ジ ス タ を 4 0 ( 0 1 0 0 0 0 0 0 ) と決定し た の は、受 信時 の デ ー タ サ ン プ リ ン グ を ク ロ ッ ク の中 心に し、送 信時 にSDOか ら デ ー タ を送 信後 ク ロ ッ ク がH GIHに な り、 ク ロ ッ ク がL O Wに な る と 同 時 に次の デ ー タ を送る タ イ ミ ン グ が、MC P 4 9 2 2 の通 信 特性 に一 番適合し て い る と 考 え た か ら で す。

4-2-2 PIC と MCP4922 の 接 続

MC P 4 9 2 2 と P I C を接 続し てSP I通 信を す る た め に、 まずP I C側のSD I とSCLをMC P 4 9 2 2 のSDOとSCKに 繋げま す。次にMC P 4 9 2 2 の CS ピ ン とLD A C ピ ン を P I C側の任意 の ピ ン に 繋ぎま す。図6 が 本 研 究 で 繋 いだ 一 例 で す。 な お P I C側は デ ー タ を受け取る必 要が な い の で P I C のSD I ピ ン は グ ラ ン ド に落と し、MC P 4 9 2 2 は 動 作 を禁止す る必 要な い の で、S HDNピ ン をVD D に 繋 い で お き ま す。

図6 PIC と MCP4922 の接 続

(17)

4-2-3 MCP4922 の イ ン プ ッ ト タ イ ミ ン グ

次に、MC P 4 9 2 2 の イ ン プ ッ ト タ イ ミ ン グ につい て で す が、以 下の よ う な図がM C P 4 9 2 2 の デ ー タ シ ー ト デ ー タ シ ー ト に載っ て い ま す。    

図 7イ ン プ ッ ト タ イ ミ ン グ こ の図の流れ を簡単 に説 明す る と、 まずデ ー タ を送る前に CSをL O Wに し てMC P 4 9 2 2 が デ ー タ を受け取れ る状 態に し ま す。次に デ ー タ を送 信し、MC P 4 9 2 2 が マ ス タ ー側が指 定し た 方法に従っ て デ ー タ を受け取り ま す。 そ し て CSをHIG H に戻し デ ー タ を受け取ら な い よ う に し、 そ の 後LD A C をL O Wに し て デ ー タ を更新 し、 デ ー タ に沿っ た 電 圧 を 出 力 さ せ、LD A C をHIG Hに戻す と い う も の で す。 プ ロ グ ラ ム コ ー ド は次の よ う に な り ま す。

bRC2 = 0; // CS を LOW に す る

SSPBUF= data6 | 0x70; //SSPBUF に 上位の デ ー タ を送 信 while (bBF==0); // 送 信が終わる ま で待つ

SSPBUF=data5; // 下位ビッ ト の デ ー タ を送 信 while (bBF==0); // 送 信が終わる ま で待つ bRC2=1;       // CS をHIGHに戻す

bRC6=0; //LDAC を LOW に す る bRC6=1;      //LDACをHIGHに す る

(18)

本 研 究 に お い て、 タ イ ム チャー ト のLD A C の 意味がわか らず、 デ ー タ シ ー ト が英語 だっ た こ と も あ り、LD A C をL O Wに し てHIG Hに す る の は 単 に 出 力 時 も タ イ ミ ン グ を そろえ る 意味し か な い と誤解 し て い ま し た。 最初、 い く ら デ ー タ を送っ て も ア ナ ロ グ 値 が 出 力 さ れず、通 信タ イ ミ ン グ を 変 え て も や は り駄目 で し た。LD A C をL O Wに し な け れば 取り込 ん だデ ー タ を 出 力 し な い こ と に気 づく の に 多 く の 時 間 を要し ま し た。

4 - 3 ブ レ ッ ト ボ ー ド へ の 試 作

SP I が 上手く い っ て い る の か ど う か を確か め る た め に まず、ブレ ッ トボー ド に P I C 1 6 F 8 8 とMC P 4 9 2 2 を 使 っ た 回 路 を組 んで み ま し た。以 下が そ のブレ ッ ト ボー ド の写 真で す。

       写 真 3 ブレ ッ ドボー ドへの試作

こ の と き の 回 路図を図8 に示し ま す。

       

(19)

 図8  ブレ ッ ドボー ド 回 路図

次にオシ ロ ス コ ー プ で、 デ ー タ が送ら れ て い る か を確か め ま す そ の 様 子 が の写 真4 で

す。 写 真4

mclr vdd gnd pgd pgc

C20.033uF

J1 47uFC1

S1 L1 220uH

+ V12.4V

RA2RA3 RA4RA5 VssRB0 RB1RB2 RB3 RB4RB5RB6RB7VddRA6RA7RA0RA1

P16F88

MCP4921 VDDNC CSSCK SDINC NC VoutBVrefBVrefAVoutALDACSHDNAVss TL496C

FB2C 1CT GNDGNDOUTSW

CRYSTAL 20Mhz

IN OUT

GND xc6202

10k 10k

(20)

こ れ は 1 6F8 8 の プ ロ グ ラ ム に お い て定期 的 に ノ コギリ 波 の デ ー タ を送っ た 時 の デ ー タ の 波 形 を示し て い ま す。 上 の 波 形 が デ ー タ、下の 波 形 が シ リ ア ル ク ロ ッ ク で す。

( 後 にオシ ロ ス コ ー プ で シ リ ア ル ク ロ ッ ク が丁度 5 M H zで あ る こ と も確 認し ま し た。 ) こ の写 真は、 上位8ビッ ト 分 の デ ー タ を送る 際 の 様 子 で す。 シ リ ア ル ク ロ ッ ク がHIG Hの と き に送っ て お り、送っ て い る デ ー タ は ( 0 1 1 1 0 0 0 1 ) で す。 そ の 波 形 の写 真、 プ ロ グ ラ ム 等 は、次の プ ロ ト タ イ プ の項で説 明し ま す。

4 - 4   ユ ニ バ ー サ ル 基 板 を 用 い た プ ロ ト タ イ プ の 製 作

ブレ ッ トボー ド で SPI 通 信が 上手く い っ て い る の を確 認し た の で、ユ ニバ ー サ ル 基 板 上 に プ ロ ト タ イ プ の 波 形 発 生装 置を 製 作 す る こ と に し ま し た。ブレ ッ トボー ド で組 ん だも の と の 変更点は BCD ス イ ッ チ を取り 付 け 波 形 を 変 え ら れ る よ う に し た こ と で す。

写 真 5が そ の外観で す。

出 力 波 形 は、 サ イ ン 波、 ノ コギリ 波、三角波、 矩 形 波 か ら選 べま す。

   写 真 5  波 形 発 生 回 路

(21)

こ の プ ロ ト タ イ プ に よ っ て いろいろな 発振波 形 を 作 る こ と の み な らず、 プ ロ グ ラ ム で 周 波 数 を 変 え た と き の 実 際 の 様 子 な ど いろいろな こ と 調べる こ と が 出 来 ま し た。 サ イ ン 波、 矩 形 波、 ノ コギリ 波 の 出 力 波 形 の写 真を以 下に示し ま す。

写 真6   サ イ ン 波

写 真 7  矩 形 波      写 真8   ノ コギリ 波

(22)

4 - 4 - 1   回 路 図

次に 回 路 構 成 で す が、 電源に 単3の エ ネ ル ー プ を 2 個 使 い、VD D に はT L4 9 6 で 昇圧 し 電 圧 を3端子 レギュ レ ー タ で降圧 し た5 V電 圧 を か け て い ま す。MC P 4 9 2 2 のV R E Fに はVd dの5 VをT L431 A CZと い う シャン ト レギュ レ ー タ を 使 う こ と に よ り約2.5 Vの 安定し た 電 圧 が か か る よ う に し て い ま す。

図9   回 路図

4 - 4 - 2   波 形 の プ ロ グ ラ ム に つ い て

サ イ ン 波:サ イ ン の 値 を プ ロ グ ラ ミ ン グ す る の は難し く、尚 且つ 速 度的 に も 無 理 が あ る と判 断し た た め star suite (ワー ド、 エ ク セ ル の よ う な ソ フ ト ) の表計算を 使 っ て ど のぐら い の 値 に な る の か を算出 し、算出 し た 値 を プ ロ グ ラ ム 上 の配列に デ ー タ を格 納し て 順番に取り 出 す と い う 方法を と り ま し た。

mclr vdd gnd pgd pgc

C20.033uF

J1 47uFC1

S1 L1 220uH

+ V12.4V

tl431acz A

R C

tl431acz A

R C

RA2RA3 RA4RA5 VssRB0 RB1RB2 RB3 RB4RB5RB6RB7VddRA6RA7RA0RA1

P16F88

MCP4921

VDDNC CSSCK SDINC NC VoutBVrefBVrefAVoutALDACSHDNAVss BCD-SW

CQ 8421

U5 TL496C

FB2C 1CT GNDGNDOUTSW

CRYSTAL 20Mhz IN OUT

GND xc6202

10k 10k 5.1kR6

5.1kR5

10kR4 10kR3 10kR2

10kR1

(23)

ノ コギリ 波 等:サ イ ン 波 と 同 じ 方法と取り ま し た。 矩 形 波 に関し て は デ ー タ が 2 値 し か な い の で メ モ リ の 無駄 遣い な の で す が他の 波 形 と 同 じ こ と を す れば周 波 数 が 大 体 同 じ に な る の で 同 様 に し ま し た。以 下が プ ロ グ ラ ム の一 例で す。

dataz=v1[z];

data6=dataz & 0x0f;

data5=dataz & 0xf0;

z++;if(z==100)z=0;

説 明を 加 え る と、 dataz はBYTE 型の 変 数 で dataz にzに応じ たV1 の配列の 値 を入れ て い ま す。 dataz の 値 をBYTE 型の data6 に dataz と0x0f をビッ ト ア ン ド し た 値、BYTE 型 の data5 に dataz と0xf0をビッ ト ア ン ド し た 値 を入れ て い ま す。即 ち dataz の 上位4 ビッ ト を data5 に、下位4ビッ ト を data6 に 使 っ て い る の で す。 こ の プ ロ グ ラ ム で は 1 0 0 個 の 値 を い れ て い ま す。 なぜこんな面 倒な こ と を し て い る の か と い う こ と を 順 を追っ て説 明し ま す。

最初は、以 下の よ う に送り た い の で 値 の配列を 上位と下位にわけ て デ ー タ を送っ て い ま し た。 (ブレ ッ ドボー ド で は こ の 方法を と っ て い た。 )

data3=sinv1[y];

data4=sinv2[y];

こ の 方法で デ ー タ を送っ た 波 形 をオシ ロ ス コ ー プ で 計 る と、30 0H z ぐら い の 周 波 数 ま で し か 出 せ な い こ と がわか り ま し た。 こ れ は配列を プ ロ グ ラ ム メ モ リ ー に搭 載す る と、 マ シ ン語に コ ンパイ ル し た 際 に呼び出 し に 時 間 が か か る 為だと推定し ま し た。

30 0H z ぐら い の 周 波 数 で は 出 力 し た い 周 波 数 に届か な い の で、次に配列を プ ロ グ ラ ム メ モ リ に格納す る の で は な くRAMメ モ リ ー に格納し、RAMメ モ リ ー容 量の 制 限に よ り、50 回 の繰り返し で表さ れ る の 分 解 能 に し ま し た。 そ れ で も 思 っ た よ り 周 波 数 は 上 が らず、一回 で デ ー タ を送る度に呼び出 す配列を一 つに し た 方 が早く な る の で は な い か と 考 え、 WORD型の配列を 上位8ビッ ト を 0x0f0 0 とビッ ト ア ン ド し て 上位に送る デ ー タ 変 数 に格納、下位8ビッ ト を 0x0 0f fとビッ ト ア ン ド し て下位 に送る デ ー タ 変 数 に格納す る手法を と り ま し た。結果 は か え っ て遅く な っ て し ま い ま し た。 そ こ で WORD型で は な く、BYTE 型の配列を 用 い て 出 来 な い か と 考 え、 上位4ビッ ト を下位の デ ー タ、下位4ビッ ト を 上位の デ ー タ に な る よ う な配列に し て送る よ う に し ま し た。 し か し デ ー タ 自 体 は下位デ ー タ の 4ビッ ト 分 を捨て る こ と に な る の で 25 6段 階の 値 の 電 圧 し か取れ な く な り ま し た が 目 的 の 周 波 数 を 出 す こ と に 成功し、 8 8 0H z ぐら い ま で 出 せ る よ う に な り ま し た。 最初の コ ー ド で dataz と 0x0f、 0x f0 と のビッ ト ア ン ド を と っ て い る の は そ の た め で す。 こ れ を端的 に表す と配列に入 っ て い る 値 は図1 0 の よ う に な り ま す。

       

(24)

 図1 0 配列に入っ て い る デ ー タ

そ れ で は、 サ イ ン 波 の根 拠と な る 計算 表の結果 につい て説 明し ま す。

       表1   計算 表

(25)

表1 は、 サ イ ン 波 の 計算に 用 い た表で す。左か ら 順 に、

① :2π÷分 解 能 の 値 を足し て い っ た 値 ( D列)

② : ①をSIN(x) の関数 に代入し た 値 (E列)

③ : ②×2.5し た 値 (F列)

④ : ③+2.5し た 値 (G列)

⑤ :(④÷5)×4 0 95し た 値 (H列) と な っ て い ま す。

①、②で サ イ ン の一周 期 が 2πだか ら そ れ を 分 解 能 で 割 り、 そ の 値 を ス タ ー ス イ ー ト のSIN(x)関数 に入れ る こ と で±1 の 値 に直し て い ま す。③、④は そ の 値 を 2. 5 倍し、 2.5 足す こ と で 0~ 5の 値 に し て い ま す。 ( D ・ A コ ン バ ー タ の 出 力 は 0 Vか ら5 V だか ら )⑤は そ れ を5で 割 り 4 0 95掛け る こ と で 4 0 95の 値 で ど れ を 入れ るべき か を算出 し て い ま す。 最 後 に⑤の 値 を四 捨 五入し 1 6進数 に直し て プ ロ グ ラ ム の配列に入れ る 値 を決定す る と い う流れ で す。

4 - 5 ア ク テ ィ ブ フ ィ ル タ ー

シ ン セ サ イ ザ ー に は 電 圧 に よ っ て カ ッ トオフ 周 波 数 を 時 間 的 に 変 化 で き る よ う な VCF と い う 回 路 が備わっ て い ま す。 VCF につい て書か れ て い る書 籍を捜し て い る と、 ト ラ ン ジ ス タ技 術の 2 0 0 0 年 4月号にダイオー ド ラダー型 VCF 、 そ の他イ ン タ ー ネ ッ ト で ム ー グ シ ン セ サ イ ザ ー に搭 載さ れ て い る ト ラ ン ジ ス タ ラダー 回 路 な ど が載っ て い る サ イ ト が見 つか り ま し た が、 現 時点で の知 識で は と て も 設 計 製 作 す る の は 無 理だと判 断し、 そ の代わり に 2次の ア ク ティブ・ ロ ーパス フィル タ ー を 回 路 を搭 載す る こ と に し ま し た。写 真9、図1 1 が そ の外観と 回 路図で す。

写 真9   フィル タ ー 回 路

(26)

       

1 1 フル タ ー の 回 路図

4 - 5 - 1 回 路 の 説 明

D ・ A コ ン バ ー タ か ら 出 力 さ れ る 電 圧 は 0 か ら5 Vに な る の で、 こ の フィル タ ー で は 2  .5 Vを中 心と し た信号が入っ て き て も潰れ な い よ う にオ ペア ン プ の+ 端子 と ー 端子 が 2.5 Vを中 心に 変 化 す る よ う に す る た め、5 Vを抵 抗分 割 し て 2.5 Vを 作 っ て+ 端子 に 繋 い で い ま す。オ ペア ン プ は レ ー ル ・ ツ ー ・ レ ー ル特性 の LMC 6 6 2 CM を 使   っ て5 V付近ま で 波 形 が潰れ な い よ う に し て い ま す。R7をボリ ュ ー ム抵 抗に し て い る の は カ ッ トオフ 周 波 数 を 変 え た か っ た か ら で す。 カ ッ トオフ 周 波 数 を

Cirtuit Maker で シ ミ ュ レ ー ション し た結果 は 4 0 0H z ~1.5kH z ぐら い の カ ッ トオフ 周 波 数 に な り ま し た。 設 計法は表2、表 3に従い ま し た。 そ の 際 のQ 値 は 0. 707、 利 得 を 1 と し ま し た。又、今回採用 し た の は 2次の ア ク ティブ多重 帰 還型ロ ーパス フィル タ   ー で す。 最初は正帰 還型ロ ーパス フィル タ ー で 回 路 を組 んで み た の で す が、 単 電源化 す る た め に- 入力端子 を 2.5 Vに浮か せ て も、 0~ 5 Vの入力信 号に対 応す る こ と が で き ま せんで し た。 いろいろ 試行錯 誤し た結果、 こ の 多重 帰 還型 フィル タ ー で 上手く 動 作 さ せ る こ と が で き ま し た。

10k 1%R7 10uFC4

+V 5VV3

+

U1 LMC660B/NS

10uFC1 22nF

88nF 220 Hz

0/5VV1

1megR2 10kR6

10kR5

5.1kR1

5.1k

(27)

       表2

       表 3

部品選 定は こ の 設 計法で、 大 体 の 値 を決め 実 際 に あ る部品 と照ら し合 わせ て 製 作 し ま し た。

次に 実 際 に シ ミ ュ レ ー ション し た 波 形 を と カ ッ トオフ 周 波 数 を示し ま す。 カ ッ トオフ よ り低い 周 波 数 で十分 0~ 5 Vの信号が潰れずに 出 力 さ れ て い る こ と がわか り ま す。

(28)

図1 2   カ ッ トオフ 周 波 数 (約670H z)

     

  出 力 波 形 ( 周 波 数 は 2 2 0H z)

(29)

4 - 5 - 2   波 形 の 変 化

プ ロ ト タ イ プ の 波 形 発 生装 置か ら フィル タ ー を通し た 後 の 波 形 ( カ ッ トオフ は 可 変抵 抗で適 当に 制 御 す る た め不明) を示し ま す。 出 力 す る サ イ ン 波 形 は D ・ A コ ン バ ー タ の 性質か ら階 段的 に 変 化 す る の で す が、 フィル タ ー を通す こ と で滑ら か に な っ て い る の がわか り ま す。

写 真1 0   矩 形 波   フィル タ ー 後

 写 真1 1   サ イ ン 波   フィル タ ー 後        写 真1 2 ノ コギリ 波   フィル タ ー 後

(30)

第 五 章   PIC を 用 い た シ ン セ サ イ ザ ー の 設 計 と 製 作

5 - 1   意 義 と 特 徴

P I C を 用 い て 個人的 な 思 い を 形 に す る こ と に よ り、他に P I C で な に が で き そ う な の か ど う す ればよ り 思 い通り に P I C を 動 か せ る の か を検証で き る と い う点と、誰か が似た よ う な こ と を し よ う と し た と き に参考 に な る か も し れ な い と い う こ と に 本 研 究 の 意義が あ り ま す。特 徴と し て は、 2つの プ ロ セ ッ サ と D ・ A コ ン バ ー タ を 使 い、 プ ロ セ ッ サ 同士を接 続し て片方 を信号発 生 用 に、 も う片方 を コ ン ト ロ ー ラ と エ ン ベ ロ ー プ 波 形 を 出 す よ う に 役 割 を 分担さ せ た こ と で す。

5 - 2   外 観 と 仕 様

仕様 は こ れ ま で説 明し て き た ア ク ティブフィル タ ー を 用 い、 波 形 発 生装 置の P I C を 1 6 F 876 に 変 え、 コ ン ト ロ ー ラ ー 用 に P I C 1 6 F 87 7、 音 を ス ピ ー カ ー か ら 出 す た め に38 6 ア ン プキッ ト、 最 後 に 8Ωの ス ピ ー カ ー を 加 え た も の に な っ て い ま す。

写 真13 外観( 上 か ら )

(31)

写 真1 4  外観(裏 面)

5 - 3   回 路 に つ い て

図1 4 が 本 体 の 回 路図で す。 基 本 的 に は、 こ の 回 路 の 後 に フィル タ ー 回 路、 ア ン プ、

ス ピ ー カ ーへと 繋 が っ て い き ま す が、 波 形 発 生 回 路 か ら直 接ス ピ ー カ ーへも 繋げる よ う に切り替え ス イ ッ チ をつけ て あ り ま す。 さ ら に 波 形 発 生 用 の D ・ A コ ン バ ー タ のV R E FA に 加 え る 電 圧 を 2.5 Vか エ ン ベ ロ ー プ 波 形 に切り替え る ス イ ッ チ も 動 作 チ ェ ッ ク の し や す さ も兼 ねて 付 け て い ま す。写 真13上部にBC D ス イ ッ チ が 6 個 と小 さ い ス イ ッ チ が 2 個 あ り ま す が、左のBC D ス イ ッ チ3個 と小さ いボタ ン は コ ン ト ロ ー ラ ー側の P I C 1 6 F 87 7に 繋 が っ て い て エ ン ベ ロ ー プ 波 形 を 変 え る た め の も の で  、右のBC D ス イ ッ チ3個 は 波 形 発 生 用 の P I C 1 6 F 876 に 繋 が っ て い て、

オク タ ーブ 切り替え、ビ ブラ ー ト の 周 期切り替え、 出 力 波 形切り替え の た め につい て い ま す。 ま た両P I C と も 大量の ス イ ッ チ が 付 い て い る た め、 PO R T Bを すべて 内 部プ ル ア ッ プ し て い ま す。 P I C ど う し で は P I C 1 6 F 87 7のRD 0 か らRD3 と P I C 1 6 F 876 のRA 0 か らRA3を 繋 い で、押さ れ た ス イ ッ チ に応じ て信号 の や り取り を す る よ う に し て い ま す。

(32)

図1 4   本 体 回 路図

5 - 4   波 形 発 生 装 置 の プ ロ グ ラ ム に つ い て

波 形 発 生側の プ ロ グ ラ ム は、 プ ロ ト タ イ プ で 作 っ た プ ロ グ ラ ム を元に し て そ れ に 付 け 加 え る 形 で書い て い き ま し た。 大 き な違い はBC D ス イ ッ チ に よ っ て 周 波 数 とビ ブラ ー ト を 加 え る か 加 え な い か を 変 え ら れ る こ と と、 コ ン ト ロ ー ラ ー側の信号が こ な け れ ば 信号を 出 さ な い こ と で す。次に ど の よ う に そ れ ら を 変 え て い っ た の か を 周 波 数、ビ ブラ ー ト、 コ ン ト ロ ー ラ ー側の信号に対す る処理 の 順 で説 明し ま す。

out mclr vdd gnd pgd pgc

2009/1/22 synthsizer Ii yusuke out amp

mclr vdd gnd pgd pgc

10uF

5.1k 10k 10k

10k 10k

10k10k 10k10k

10k10k 10k 10k 10k

47uF 220uH

V1 2.4V+

MCP4921 VDDNC CSSCK SDINC NC VoutBVrefBVrefAVoutALDACSHDNAVss TL496C

FB2C 1CT GNDGNDOUTSW

IN OUT GND xc6202

pic16f873a mclrRA0 RA1RA2 RA3RA4 RA5Vss OSC1OSC2 RC0RC1 RC2RC3 RC4RC5RC6RC7VssVddRB0RB1RB2RB3RB4RB5RB6RB7 pic16f877

mclrRA0 RA1RA2 RA3RA4 RA5RE0 RE1RE2 VDDVSS OSC1OSC2 RC0RC1 RC2RC3 RD0RD1 RD2RD3RC4RC5RC6RC7RD4RD5RD6RD7VSSVDDRB0RB1RB2RB3RB4RB5RB6RB7

bcdsw

CQ

8421

U2

bcdsw

CQ

8 4 2 1

MCP4921 VDDNC CSSCK SDINC NC VoutBVrefBVrefAVoutALDACSHDNAVss bcdsw

CQ

8 4 2 1

CRYSTAL

CRYSTAL 10k

5.1k 10k 10k 10k 10k

bcdsw

CQ

8421bcdsw

CQ

8421

bcdsw

CQ

8 4 2 1

tl431acz

R C

A

tl431acz

R C

A

(33)

5 - 4 - 1 周 波 数 を 変 え る

周 波 数 を か え る 為 に 本 研 究 で は、 デ ー タ を送っ た 後 の待 ち時 間 を 変 え る こ と で 目 的 の 周 波 数 を 得 る こ と に し ま し た。 P I C に は、 タ イ マ ー が 内 臓 さ れ て い ま す。 タ イ マ ー に は三 種 類の タ イ マ ー が あ り、 まず 初め にT M R2 を 使 っ て み る こ と に し ま し た。T M R2 は 8ビッ ト の カウン タ で 基 本 的 に 256 ま で カウン ト す る とオー バ ー フ ロ ー し

、 カウン ト が ゼ ロ に戻る と い う 動 作 を し ま す が、ポス ト スケー ラ ー が 4ビッ ト あ る の で 最 大 1 6ビッ ト ま で カウン ト で き ま す。 さ ら に 8ビッ ト の コ ンパレ ー タ で、 PR2 レ ジ ス タ に セ ッ ト し た 値 に応じ てT M R2 IFを 1 に す る よ う に で き る の で、 こ の P R2 レ ジ ス タ に入れ る 値 を 変 え る こ と で 周 波 数 を 変 え る よ う に し ま し た。 と ころが、

こ の PR2 レ ジ ス タ に セ ッ ト で き る 値 は 0 か ら 25 5で、 こ の 値 で細か く 周 波 数 を 変 え る の は か な り シビア で な か な か 思 う よ う に は 調節で き ま せんで し た。T M R2 で は 調節が困 難と 分 か っ た の で、次にT M R1 を 使 う こ と に し ま し た。T M R1 は 1 6ビ ッ ト カウン タ ー で、 C C P モ ジ ュ ー ル の コ ンペア ー モ ー ド ・ スペシャル イ ベ ン ト ト リ ガー を 用 い る こ と で、T M R2 と 同 じ よ う な こ と が で き ま す。 C C PR1Hレ ジ ス タ と C C PR1Lレ ジ ス タ の 値 とT M R1 が 同 じ に な る と C C P 1 IFが 1 に な る の で そ れ を 利 用 し ま す。下 記が そ の流れ で す。

CCPR1H=set2; CCPR1L=set;// 時 間 を セ ッ ト す る bCCP1IF=0;    //BCCP1IFを ゼ ロ に す る

TMR1H=0; TMR1L=0; タ イ マ ー 1 の カウン ト を ゼ ロ に す る デ ー タ送 信 処理;

while(bCCP1IF==0);//セ ッ ト し た 値 に応じ た 時 間 に な りBCC1IFが 1 に な る ま で な に も し な い。

こ う す る こ と で、正確に 時 間 を 変 え る こ と が で き ま す。

今回 は、 こ のT M R1 の スペシャル イ ベ ン ト ト リガー を 用 い て 音 の 周 波 数 を 変 え ま し た。  

(34)

5 - 4 - 2   ビ ブ ラ ー ト

ビ ブラ ー ト は、 周 波 数 を 周 期 的 に 変 化 さ せ る こ と で す。ビ ブラ ー ト を 実 現 す る た め に 本 研 究 で は、CCPR1Lの 値 を タ イ マ ー 0 の 割 り込み処理 で 変更す る事に し ま し た。

 図15 ビ ブラ ー ト

そ の手順 で す が、 コ ン ト ロ ー ラ ー側か ら く る信号に応じ てCCPR1LとCCPR1Hに 値 を セ ッ ト し ま す。以 下が そ の コ ー ド で す。

BYTE hz[16]={95,80,250,220,200,150,125,100,22,5,242,221,196,100,100,100};

//CCPR1L に入れ る 値 BYTE hz2[16]={2,2,1,1,1,1,1,1,1,1,0,0,0,0,0,0};//CCPR1H に入れ る 値 temp2=PORTA;// ポー ト A の信号を temp2 に入れ る

temp2 &= 0x0f;// 信号は下位4ビッ ト な の で 上位4ビッ ト を マ ス ク す る。

s=temp2;   //temp2 の 値 をsに入れ る

if((setflag==0)&&(temp4==0)){set=hz[s];set2=hz2[s];}

// CCPR1HとCCPR1Lに 値 を セ ッ ト

こ こ で setflag を い う の は、ビ ブラ ー ト し な い と き は 0、 す る と き は 1 に セ ッ ト し て ビ ブラ ー ト さ せ る と き に ま た セ ッ ト さ れ る の を防ぐも の で す。 setflag と関 係な く 値 を セ ッ ト す る よ う に す る と 周 波 数 の セ ッ ト さ れ る 値 が バ ラ バ ラ に な り結構面 白い 音 に な り ま す。 Temp4 に 音階の 値 が入っ て い る の で そ れ に応じ た配列を入れ る よ う に す る た め の も の で す。

(35)

次にビ ブラ ー ト 用 の 割 り込み処理 につい て で す が、 まず ビ ブラ ー ト さ せ る た め に前 述 の setflag を 1 に し ま す。 さ ら にBC D ス イ ッ チ の 値 を読 んでオプ ション レ ジ ス タ の プ リ スケー ラ ー を そ れ に応じ た 値 に セ ッ ト し ま す。 そ の 後 C C PR1Lに入れ る 値 を イ ン ク リ メ ン ト と デ ク リ メ ン ト を す る操作 を繰り替え し ま す。図に表す と以 下の よ う に な り ま す。  

図1 6  ビ ブラ ー ト の処理

set++;とset--;を繰り返すだけ な の で図1 6 の よ う に 周 波 数 が 変 化 し ま す。

5 - 4 - 3   コ ン ト ロ ー ラ ー 側 か ら の 信 号 に 対 す る 処 理

コ ン ト ロ ー ラ ー側と は、 PO R TA の 0 か ら3 ビッ ト が 繋 が っ て い ま す。信号は ド、

レ、 ミ、 フ ァ、 ソ、 ラ、 シ、 ド の ど れ か と何も 出 さ な い コ ー ド の 1 4通り で す。表に す る と以 下の よ う に な り ま す ( 半 音 の信号は省い て い ま す )。

       図17  コ ー ド表

(36)

動 作 を説 明す る と、 コ ン ト ロ ー ラ ー側か ら何もボタ ン を押し て い な い 時 に は 1 1 1 1 の コ ー ド が タ イ マ ー 0 の 割 り込み 間隔(52.4m sec ) に あわせ て絶えず 送ら れ て い ま す。 で す の で こちら側の P I C は、 電源が入る と メ イ ン ル ー プ に入る前に エ ラ ー コ ー ド の 1 1 1 1 が PO R TA の下位4ビッ ト に く る ま で待 ちま す。 そ し て メ イ ン ル ー プ に入り信号に応じ た 音 を 出 す よ う に し て い ま す。 メ イ ン ル ー プ に入る前に待つ理 由は、 か っ て に暴 走し て 音 を 出 し続け た り す る こ と が あ る か ら で す。

5 - 5   コ ン ト ロ ー ラ ー 側 の プ ロ グ ラ ム に つ い て

コ ン ト ロ ー ラ ー側の プ ロ グ ラ ム は、 エ ン ベ ロ ー プ の 値 を D ・ A コ ン バ ー タ ー に渡す処 理 とボタ ン の押さ れ た信号に応じ て 波 形 発 生側の P I C に信号を送 信す る処理 の 2つ に 分 け ら れ ま す。

  5 - 5 - 1 信 号 送 信 に つ い て

信号を送 信す る に は、ボタ ン の組み合 わせ で送る信号を決定し な け ればな り ま せん。

波 形 を 発 生 す る P I C は 1つし か な い の で和音 は 出 せ ま せん。 で す か らボタ ン が複数 押さ れ た と き ど う す る の か を 考 え ま す。 本 研 究 で は、ボタ ン と 繋 が っ て い る PO R T に優 先順位をつけ て い く こ と に し ま し た。ボタ ン と 繋 が っ て い る PO R Tは PO R T B全部と PO R TD のビッ ト 4 か らビッ ト7、 PO R TC のビッ ト7で す の で、優 先 順位を PO R T B>PO R TD>PO R TC と し ま し た。優 先順位が決ま っ た の で次 に プ ロ グ ラ ム を ど う す る の か で す が、 タ イ マ ー 0 割 り込み を 使 っ て 割 り込み処理 の中 で、① ボタ ン が 繋 が っ て い る PO R Tを読 む。②PO R T Bのボタ ン が押さ え れ て い る場 合は PO R T B用 の処理へ 行く③PO R T Bのボタ ン が押さ れ て い な い で且つP O R TD のボタ ン が が押さ れ て い る場 合は PO R TD 用 の処理へ 行く④PO R TC の ビッ ト7の み が押さ れ て い る場 合そ れ に応じ た信号に切り替え メ イ ン ル ー プへ 戻る。

⑤ 何も押さ れ て い な い と き は、 1 1 1 1 を送 信す る。 と い う ル ー チ ン に し ま し た。

こ こ で②と③の処理 を詳し く説 明す る と、 PO R T Bか PO R TD のボタ ン が 1つ だ け押さ れ て い る場 合は そ れ に応じ た信号に切り替え メ イ ン ル ー プへ 行き、複数押さ れ て い る場 合は 1 1 1 1 を送 信し メ イ ン ル ー プへ 戻る と い う流れ に な っ て い ま す。 プ ロ グ ラ ム コ ー ド は次の よ う に な っ て い ま す。

表 1 は、 サ イ ン 波 の 計 算 に 用 い た 表 で す。 左 か ら 順 に、 ① : 2 π÷ 分 解 能 の 値 を 足 し て い っ た 値 ( D 列 ) ② : ① を S I N ( x ) の 関 数 に 代 入 し た 値 ( E 列 ) ③ : ② × 2 . 5 し た 値 ( F 列 ) ④ : ③ + 2 . 5 し た 値 ( G 列 ) ⑤ : ( ④ ÷ 5 ) × 4 0 9 5 し た 値 ( H 列 ) と な っ て い ま す。 ①、 ② で サ イ
図 1 2   カ ッ ト オ フ 周 波 数 ( 約 6 7 0 H z )
図 1 4   本 体 回 路 図 5 - 4   波 形 発 生 装 置 の プ ロ グ ラ ム に つ い て 波 形 発 生 側 の プ ロ グ ラ ム は、 プ ロ ト タ イ プ で 作 っ た プ ロ グ ラ ム を 元 に し て そ れ に 付 け 加 え る 形 で 書 い て い き ま し た。 大 き な 違 い は B C D ス イ ッ チ に よ っ て 周 波 数 と ビ ブ ラ ー ト を 加 え る か 加 え な い か を 変 え ら れ る こ と と、 コ ン ト
図 2 0   D を 変 え た 場 合

参照

関連したドキュメント

また、 この PLL がロックするのは、図 6.25 のようにエッジ比較器の出力 ED_out が“ High”の状態の間の、ちょうど中心で PLL

H24 年度、 自己炎症疾患とその類縁疾 患に対する新規診療基盤の確立 班にお いて自己炎症性疾患の公知、啓蒙活動を

第一引数には、入力するファイル名を指定する。第二引数にはオープンモードを指

プログラムリスト・GLCD

今回使用した並列 JPEG エンコーダは C 言語で作成されており、コンパイルツールにはマイクロソフ ト社の Visual

Heide, “ Truly efficient parallel algorithms: 1-optimal multisearch for an extension of the BSP model, ” Technical Report TR-RSFB-96-008, University

14 の信号にする。 これが今回の製作で採用した方法である。 図 3.6 に状態遷移図を示した。制御部1は入力が start、stop、reset の3つ、出 力が

ユージーン・オニール ー幕劇 「カーデイフさして東へ 《 Bound East for Cardi∬ 》 」高山吉張 ・須賀昭代 ・栢木.. イギ リス