title0a.gif

Memorandumの小部屋

本ページは金銭授受を伴う行為を含むAuctionや商用Web Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。


周波数変更は全桁表示が一番!!!

(PICマイコンとLCDユニットを使ったDDSコントローラの製作)

 

 秋月電子通商の「DDS キット」は、低周波〜高周波(20MHz程度)までの範囲の周波数を安定度良く得ることのできる発振器ですが、周波数設定が面倒です。 お手軽に周波数を設定する手段として「PIC DDS コントロールキット」がありますが4桁表示しかなく、周波数設定が面倒でした。

 一時は「PIC DDS コントロールキット」の出力信号を利用して8桁表示に改造しようかとも考えましたが、ちょっと面倒(レジスタが必要)なのであきらめていました。

 そのうち、「AKI-PICプログラマーキット」がリリースされPICライタマイコンの開発環境も整い、PICマイコンで周波数設定ができるように考えて、製作を開始しました。 PICマイコンを使用したDDSキット用の周波数コントローラも他の皆様も製作されていらっしゃるようですが、思ったような機能のものが見あたらず、また、PICマイコンの使い方を忘れないようにするためにも自作することにしました。

 

【 ハードウエア 】

 DDSコントローラを製作するに当たり、手持ちの部品をかき集めます。 ここは田舎ですから、あるもので済まさなければなりません。

 主たる部品として、まず、表示器としては、いつか使えるのではないかと思ってストックしていた「 キャラクタタイプLCDユニット M1632-0A 」、PICマイコンの基板として使用予定のなかった「AKI PIC プラチナキット」を流用することにしました。

 使用部品は表1のようになります。

 

表1 DDSコントローラ 部品表

品  名

部品番号

仕  様

PICマイコン

IC1

PIC16F84-10/P  (*1)

セラミック発振子

X1

セラロック 10MHz(コンデンサ内蔵) (*1)

LCDユニット

セイコー電子 M1632-0A (*2)

基板

AKI PIC プラチナキット (*1)

コネクタ

2.54ピッチ 7ピン×2列(基板〜LCDユニット接続用) なければ電線で接続。

抵抗

R1〜R5

15kΩ(10〜47kΩであればok) 1/8W

抵抗

R6

680Ω 1/8W

抵抗

R7

22kΩ 1/8W

半固定VR

VR1

10kΩ

セラミックコンデンサ

C1

0.1μF(0.1〜0.01μF可) 12V以上

電解コンデンサ

C2

47μF(10〜470μF可) 10V以上

電解コンデンサ

C3

10μF(10〜22μF可) 10V以上

スイッチ

SW1〜SW6

モーメンタリ式押しボタンスイッチ
(普通のタクトスイッチでok)

 表1の*1を付けた部品は秋月電子通商で購入できます。 また、*2のLCDユニットは、現在では入手できないかもしれません。 代替えのLCDユニットを秋月電子通商で販売しています。

 図1に回路図、図2に完成時の外観を示します。 消費電流は5V時、約110mAでした。

 おっと、大切なことを忘れていました。 DDSキットのチップセレクト番号は7番(CS0、CS1、CS2のジャンパ部は全てオープン)にして下さい。 もし、他の番号にしたければPICマイコンのEEPROMエリアのデータを書き換えることで対応は可能ですが。。。。。

 

(2009-03-08にSW1・SW2の用途誤記訂正版に差し替え。 東京都のI様、ご連絡有り難うございました。 )

図1 回路図

 

jsk07a4.jpg (57642 バイト)

図2 完成時外観 (LCD unit M1632使用時)

 2枚の基板の上側がDDSキットの基板、下側が「AKI PIC プラチナキット」の上に「 キャラクタタイプLCDユニット M1632-0A 」を搭載しています。 今回DDSコントローラとして使用したのはこのPICマイコンは下側の「AKI PIC プラチナキット」の基板の部分です。

 LCDの表示は、CH1が選択され、1MHzの周波数を設定し、カーソル文字”T”、カーソル位置”5”、アップダウン周波数10kHz単位を示しています。

 操作部は全部で6つのタクトスイッチからなります。 上記画像では青色のボタンの部分はスイッチです。

 LCDユニットの上側にあるのがリセットSWです。 LCDユニットの下側の5個のスイッチは左側から下記のようになっています。

SW5

SW4

SW2

SW1

SW3

Downキー

UPキー

Writeキー

Channelキー

Cursolキー

 

【 各種LCDユニットでの動作 】

 LCDユニットを変えて動作確認を行いましたのでその結果を下記します。

 動作確認に使用したLCDは前記LCDユニットを含めて以下の5種類です。

 

セイコー電子

 

SUNLIKE

SHARP


 

jsk07c3.jpg (33866 バイト)

 

 

jsk07g2.jpg (50920 バイト)

 

LCD unit : L1672/M1672
Soft : DDS102A.HEX

図3 完成時外観

LCD unit : M1641
Soft : DDS110A.HEX

図4 完成時外観

 

jsk07d3.jpg (27551 バイト)

 

 

jsk07e2.jpg (30296 バイト)

 

LCD unit : SC1602BSLB
Soft : DDS102A.HEX
(LED点灯 抵抗47Ω)

図5 完成時外観

LCD unit : SC2004C
Soft : DDS102A.HEX
(LED点灯 抵抗33Ω)

図6 完成時外観


     

kit135a2.jpg (16195 バイト)

LCD unit : LM16155
Soft : DDS110A.HEX

図7 完成時外観

 

表2 コネクタ信号配列比較表

メーカ

セイコー電子

セイコー電子

セイコー電子

 SUNLIKE 

 SUNLIKE 

 SHARP 

型式

M1641

M1632-0A

L1672/M1672-0A

SC1602BSLB

SC2004C

LM16155

項目

端子

信号

PIN

信号

PIN

信号

PIN

信号

PIN

信号

信号

A

14

DB7

1

DB7

1

DB7

14

DB7

14

DB7


(A側)

DB7

B

13

DB6

2

DB6

2

DB6

13

DB6

13

DB6

DB6

C

12

DB5

3

DB5

3

DB5

12

DB5

12

DB5

DB5

D

11

DB4

4

DB4

4

DB4

11

DB4

11

DB4

DB4

E

10

DB3

5

DB3

5

DB3

10

DB3

10

DB3

DB3

F

9

DB2

6

DB2

6

DB2

9

DB2

9

DB2

DB2

G

8

DB1

7

DB1

7

DB1

8

DB1

8

DB1

DB1

H

7

DB0

8

DB0

8

DB0

7

DB0

7

DB0

DB0

I

6

E

9

E

9

E

6

E

6

E

E

J

5

R/W

10

R/W

10

R/W

5

R/W

5

R/W

R/W

K

4

RS

11

RS

11

RS

4

RS

4

RS

RS

L

3

VLC

12

VLC

12

VLC

3

VLC

3

VLC

VLC

M

1 (注)

VSS
(0V)

13

VSS
(0V)

13

VSS
(0V)

2

VSS
(0V)

1 (注)

VSS
(0V)

黄(M)
(注)

VSS
(0V)

N

2 (注)

VDD
(5V)

14

VDD
(5V)

14

VDD
(5V)

1

VDD
(5V)

2 (注)

VDD
(5V)

橙(N)
(注)

VDD
(5V)

 (注)と記載された端子は他と配列が逆になっているため電源の接続に際しては注意して下さい。

 

jsk07f.gif (2484 バイト)LCDをAKI PIC プラチナキットに接続するために、各LCDユニットとのコネクタ取り合いを統一しています。

 LCDユニットのコネクタPINの位置を右図のA〜Nのように決めたときの各ユニットのPIN番号との関係が上記表2です。 右記配列はセイコー電子のM1632/M1672と、SUNKILEのSC1602Bに合うようになっています。

 SUNLIKEのSC2004CはPIN位置M,Nが他と逆になっていますのでLCDユニット側の基板のパターンを修正して同じになるようにしています。 この修正方法はパターンカット3カ所、ジャンパ線3本で改造できます。 具体的な修正方法は部品・ユニットの小部屋の「SUNLIEKE製液晶モジュールSC1602BSLB/SC2004C(バックライト付き)」に記載しています。

 セイコー電子のM1641シャープ製LM16155 は16桁1行のLCDです。 そのためカーソル位置表示方法の変更や文字表示論理位置変更が必要であり、PIC16F84のプログラム変更も必要となります。(下記でこのHEXファイルを公開しています。) また、コネクタ取り合いではないため、他ユニットと同じなるようにコネクタ部を追加しています。

 これらの処理をすることで合計5種類のLCDユニットでの動作確認を行っています。

 

【 ソフトウエア 】

 LCDユニット M1632−0AL1672/M1672−0ASC1602BSLBSC2004C 用のソフトの仕様を下記します。

キー入力

 リセットスイッチを除き、操作部のキー入力は全部で5個あります。 この5個のキーはソフト的にチャタリング防止を行っています。

 また、Writeキーを除き、残り4個のキーはオートリピート機能を持たせています。

 

出力設定範囲

  •  DDS出力設定周波数 0〜33554431Hz(25ビット)。

  •  これは設定範囲であり、実際の出力はDDSキットの性能に左右されます。 製作例では最大23.4MHz程度まで制御出力可能でした。

  •  周波数の設定としてUPキー(SW4 UP)・DOWNキー(SW5 DOWN)とカーソル位置変更キー(SW3 Cursol)を設けました。

  •  カーソル位置の桁で、UPキー・DOWNキーを押すことで設定周波数を変更します。 たとえば1000Hzの位置にカーソルキーであればUPキー・DOWNキーを押すことで設定周波数を1000Hz単位で変更できます。

 

出力チャンネル記憶

  •  揮発性メモリ 4チャンネル 、 不揮発性メモリ 4チャンネル。

  •  チャンネル切り換えとしてChennelキー(SW1 Channel)、不揮発性メモリへの書き込みとしてWriteキー(SW2 Write)を設けます。

  •  PICマイコンのメモリ上に4チャンネル分のデータを揮発性記憶及び不揮発性記憶を行います。

  •  揮発性記憶は通電中に設定された周波数及びカーソル位置を記憶します。 電源が切れるとこの設定値は消えてしまいます。

  •  不揮発性記憶は電源投入時の周波数及びカーソル位置の初期値を設定しま。 電源投入時の値を任意に設定できます。

 

注意

 DDS用IC自体も4チャンネルの設定エリアを有していますが、この機能を有効活用しているわけではありません。

 PICマイコン上に4チャンネル分のデータエリアを確保しており、チャンネルを切り換える毎にDDSコントローラからDDSキットに周波数データを伝送しています。

 

周波数表示

  •  DDSに設定する周波数の値をそのまま表示したり、EEPROMエリアで設定されたオフセット周波数を加減算して表示することが可能です。

 (1) 表示周波数 = DDS設定周波数 + オフセット周波数

 (2) 表示周波数 = DDS設定周波数 − オフセット周波数

 (3) 表示周波数 = オフセット周波数 − DDS設定周波数

  •  現在公開しているHEXファイルでは、オフセット周波数を0Hzで(1)を選択することでDDS設定周波数を表示しています。

 詳しくは下記の「EEPROMによる設定」を参照して下さい。

 

EEPROMによる設定

 現在公開しているVersion 1.02aのEEPROMエリアの詳細を下記します。

 なお、メモリマップはアドレスが小さい方が上位バイト側(MSB側)にしています。(なにせ、アセンブラはHITAC10Uと68系で育ったもので。)

 また16進数は秋月電子製のアセンブラに合わせて文字末尾に”h”を記載しています。

 

EEPROM データの内容

アドレス

内      容

000h

内容 : DDS チップセレクト番号

設定 : 0〜7

初期 : 7

001h

内容 : 初期選択チャンネル(電源投入直後のチャンネル設定)

設定 : 1〜4

初期 : 1

002h

内容 : LCD 1行当たりの論理桁数

設定 : 1〜255

初期 : 40

 LCDユニットM1632に合わせています。 このユニットは物理的には1行当たり16文字ですが、論理的には1行当たり40文字あります。 したがって2行目の先頭は論理的には41文字目になります。

003h

内容 : カーソル位置の文字(アスキーコード)

設定 : 00h〜0ffh

初期 : 054h (”T”)

004h

内容 : 表示モード設定

設定 : 0〜3

初期 : 0

  • 設定値0

 表示周波数=DDS設定周波数+オフセット周波数

  • 設定値1

 表示周波数=DDS設定周波数−オフセット周波数

  • 設定値2(設定0と同じ)

 表示周波数=オフセット周波数+DDS設定周波数

  • 設定値3

 表示周波数=オフセット周波数−DDS設定周波数

 オフセット周波数は04h〜07hで設定される周波数、DDS周波数はDDSキットに設定する周波数、表示周波数はLCD上に表示する周波数です。

 計算結果が−になったり、最大を超えた場合の処理は特に何もしていません。

 設定値0、オフセット周波数0場合、DDS周波数を直接表示します。 この場合、最小0Hz〜最大33554431Hzの表示が可能です。 但し、実際にDDSキットから出力される周波数はDDSキットの最大発信周波数に制限されます。 仕様上では17.5MHzですが、22MHz程度まで発振できるようです。

005h〜008h

内容 : オフセット周波数

設定 : 000h,000h,000h,000h 〜 0ffh,0ffh,0ffh,0ffh

周波数はアドレス 003h,004h,005h,006hの順番で、数値的にはMSB〜LSBの順番に格納。

初期 : 000h,000h,000h,000h (0Hz)

009h〜00bh

未使用

00ch〜010h

内容 : チェンネル1 電源投入時周波数・カーソル位置

設定 : 000h,000h,000h,000h,001h 〜 0ffh,0ffh,0ffh,0ffh,008h

 周波数データはアドレス 00ch,00dh,00eh,00fhの順番で、数値的にはMSB〜LSBの順番。

 カーソル位置データはアドレス 010h。

初期 : 周波数 000h,00fh,042h,040h (1MHz)

      カーソル位置 004h (1000Hz単位)

        カーソル位置はHz桁位置を1,10MHzの桁位置を8とする。

【注意】
 このチャンネルに不揮発性メモリへの記憶を実施(Writeキー(SW2 Write)を押す)すると書き換えられます。

011h〜015h

内容 : チェンネル2 電源投入時周波数・カーソル位置

設定 : 000h,000h,000h,000h,001h 〜 0ffh,0ffh,0ffh,0ffh,008h

 周波数データはアドレス 00ch,00dh,00eh,00fhの順番で、数値的にはMSB〜LSBの順番。

 カーソル位置データはアドレス 015h。

初期 : 周波数 000h,01eh,084h,080h (2MHz)

      カーソル位置 004h (1000Hz単位)

        カーソル位置はHz桁位置を1,10MHzの桁位置を8とする。

【注意】
 このチャンネルに不揮発性メモリへの記憶を実施(Writeキー(SW2 Write)を押す)すると書き換えられます。

016h〜01ah

内容 : チェンネル3 電源投入時周波数・カーソル位置

設定 : 000h,000h,000h,000h,001h 〜 0ffh,0ffh,0ffh,0ffh,008h

 周波数データはアドレス 00ch,00dh,00eh,00fhの順番で、数値的にはMSB〜LSBの順番。

 カーソル位置データはアドレス 01ah。

初期 : 周波数 000h,02dh,0c6h,0c0h (3MHz)

      カーソル位置 004h (1000Hz単位)

        カーソル位置はHz桁位置を1,10MHzの桁位置を8とする。

【注意】
 このチャンネルに不揮発性メモリへの記憶を実施(Writeキー(SW2 Write)を押す)すると書き換えられます。

01bh〜01fh

内容 : チェンネル4 電源投入時周波数・カーソル位置

設定 : 000h,000h,000h,000h,001h 〜 0ffh,0ffh,0ffh,0ffh,008h

 周波数データはアドレス 00ch,00dh,00eh,00fhの順番で、数値的にはMSB〜LSBの順番。

 カーソル位置データはアドレス 01fh。

初期 : 周波数 000h,03dh,009h,000h (4MHz)

      カーソル位置 004h (1000Hz単位)

        カーソル位置はHz桁位置を1,10MHzの桁位置を8とする。

【注意】
 このチャンネルに不揮発性メモリへの記憶を実施(Writeキー(SW2 Write)を押す)すると書き換えられます。

020h〜03fh

内容 : 電源投入時のメッセージ

設定 : 16文字×2 (17文字目が2行目の先頭に表示されます。)

初期 : 「DDS Controller V1.02a (C)JH4CBA」

 

ダウンロード

 DDSコントローラ用HEXファイル DDS102A.LZH をダウンロードする。

  •  ダウンロード後、解凍してDDS102A.HEXを取り出し、「AKI-PICプログラマーキット」のPICWで書き込みを行って下さい。(AKI-PICプログラマーキットが必要です。)

  •  HEXファイルのエディタがあれば、そのエディタでEEPROMのデータを変更してカスタマイズにトライしてみて下さい。

     現在販売されている「AKI PICプログラマーキット専用CD-R」のWindows用ソフトはHEXファイルの読み込み時にサムチェック判定をおこなっていませんのでHEXファイルをエディタで修正して本ソフトで読み込み、読み込んだファイルを「データ保存」することで正しいサムチェックを計算したHEXファイルを作成することができます。

     その他に、URL/LINKの小部屋に記載の「有限会社 システムロード」にはPC9800シリーズ用のHEXファイル編集ソフトがあります。 その他にちょっと面倒ですが (a) HEX→BIN変換、(b) BINファイルで編集を行い、(c) BIN→HEX変換、という方法もあります。

  •  このような設定のHEXファイルを公開して欲しい等のご要望があればメールでご連絡下さい。

  •  ソフトは作成して間もないため、十分バグFIXできていないと思います。 バグや改善点などがあればメールにでご連絡下さい。

 

その他

 周波数データは1digitが1Hzに相当します。 設定周波数を16進数で記載しなければいけませんが、MHzオーダになると16進数への変換も大変です。 専用の電卓がなければEXCELの”DEC2HEX”関数を利用することをお勧めします。 以下にポイントとあんる周波数を16進数に変換した結果を記載します。

 

周波数

データ (アドレスの小さい順番に記載)

1Hz

 000h,000h,000h,001h

10Hz

 000h,000h,000h,00Ah

100Hz

 000h,000h,000h,064h

1kHz

 000h,000h,003h,0E8h

10kHz

 000h,000h,027h,011h

100kHz

 000h,001h,086h,0A0h

455kHz

 000h,006h,0F1h,058h

1MHz

 000h,00Fh,042h,040h

2MHz

 000h,01Eh,084h,080h

3MHz

 000h,02Dh,0C6h,0C0h

4MHz

 000h,03Dh,009h,000h

8.9985MHz

 000h,089h,04Eh,064h

9MHz

 000h,089h,054h,040h

9.0015MHz

 000h,089h,05Ah,01Ch

10MHz

 000h,098h,096h,080h

10.7MHz

 000h,0A3h,044h,0E0h

11.2720MHz

 000h,0ABh,0FFh,040h

11.2735MHz

 000h,0ACh,005h,01Ch

11.2750MHz

 000h,0ACh,00Ah,0F8h

 

 

【 LCDユニットM1641シャープ製LM16155用ソフト 】

 LCDユニットM1641・シャープ製LM16155用の表示器の仕様は前記のものと異なり、1行16桁(文字)で、論理的には1〜8文字目と41〜48文字目が合わさって16文字を表示します。 (前記LCDユニットは同じ16文字でも1〜16文字目が一度に表示できました。)

 また、カーソル位置を表示する方法として従来はカーソル文字を使用していましたが、本ユニット用にはLCDユニットの持っているカーソル表示及びブリンク機能を利用するようにしました。

 また、EEPROMの設定も003番地以外は原則的には同一です。

 

EEPROM データの内容

アドレス

内      容

003h

内容 : カーソル位置表示機能の設定

設定 : 000h〜003h

      bit 0 : 1でブリンクする。 0でブリンクしない。
      bit 1 : 1でカーソルを表示する。 0で表示しない。

初期 : 002h (カーソル表示オン)

 

ダウンロード

 DDSコントローラ用HEXファイル DDS110A.LZH をダウンロードする。

 ダウンロード後、解凍してDDS110A.HEXを取り出し、「AKI-PICプログラマーキット」のPICWで書き込みを行って下さい。(AKI-PICプログラマーキットが必要です。)


【 完成例 】

 電波時計キットのバーアンテナの共振周波数を測定するために発振器としてケースに入れて仕上げた製作例を下記画像に掲載します。

 アルミケースの手持ちで丁度よい大きさのケースがなかったのでプラスチックケースを利用しました。  下記画像でははっきりしていませんが、操作スイッチの赤いボタンはケースのふたから出ております。

 トルグスイッチは、出力をD/A出力をそのまま出力させるか、LPFを通した信号を出力させるかを選択できるようにしたスイッチです。 電源スイッチではありません。 

 

【 製作例 】

 

 上記製作例の回路図を下記に掲載します。

 電源はACアダプタを利用します。 また、ブリッジダイオードと3端子レギュレータを使用しており、DCジャックは無極性、非安定化ACアダプタ対応としています。 ダイオードブリッジには千石電商で購入していた1袋100本入り400円のショットキ・バリア・ダイオードRK−16、3端子レギュレータには低飽和電圧型のLM2940CT−5.0を使用しています。 このため、DCジャックでの電圧が5.9Vで正常に動作できます。

 ただし、3端子レギュレータ(画像では不鮮明ですがWRITE SWとCHスイッチのラベルの上側近傍)には放熱板を設けていません。 現状は6.5VのACアダプタを使用していますので発熱の問題はありませんが、当初は9V程度のACアダプタを使用していましたので3端子レギュレータがかなり熱くなっていました。(消費電流は約0.15Aでした。) 

 

PIC16F84-10/Pの代わりにPIC16F84A-20でも動作します。

(2009-03-08にSW1・SW2の用途誤記訂正、LCD R/W pin誤記訂正版に差し替え。
 東京都のI様、ご連絡有り難うございました。 )

【 回路図 】


【プログラム書き込みサービス】

 本ページで紹介しましたPICマイコンの書き込みサービスを行っています。 詳細はプログラム書き込みサービスのページを参照願います。


 Memorandumの小部屋 へ戻る      ホームページへ戻る


End of This Page.