Arduinoで音を鳴らす

Alarm IC KD9561(CK9561)


KD9561(CK9561)を使ったアラームキットを入手しました。


以下のパーツが使われています。
パーツ 数量
KD9561(CK9561) 1
CD4011 1
CD4066 1
270Ω抵抗 2
62KΩ抵抗 1
620KΩ抵抗 1
150Ω抵抗 5
IN4007ダイオード 1
4148ダイオード 2
SS8050 NPN-TR 1
0.1uFコンデンサー 1
スライドSW 4
圧電スピーカー 1

KD9561がメインのAlarmICです。
組み立ての動画がこちらで 公開されています。
KD9561を基盤にどうやって固定するのかよくわからなかったのですが、動画を見てわかりました。


4つのスライドSWを入力として、CD4011、CD4066、2つのダイオード(OR回路)により、
KD9561のK1、K2、RFの値を変えます。

KD9561の接点は以下の様になっています。
K1とK2のSWで音色を変え、RFの抵抗値でスピードが変わります。
Alarm Moduleとなっていますが、要は安価なパルスジェネレータです。


こちらにキットの全 体の回路図が公開されています。
S1 S2 S3 S4のSWの値に応じた、CD4011とCD4066の各ポートの真理値表を作ってみました。
#
SW

CD4011

CD4066
RF

S1
S2
S3
S4

INPUT
A
B


C
D
E
F


G
H

Control-1
Out-1
Control-2
Out-2
Control-3
Out-3
Control-4
In-4
Out-4


=S3
=S4


=S3
=S3 =S3orS4
=S3orS4


=S2
=S1

=S1

=S2
=CD4011のM
=CD4011のJ
=CD4011のK



OUTPUT


J
K




L(=K2)
M











=K1

0x00
0
0
0
0


0
0
1
1
0
0
0
0
1
1
0
0

0
N./C
0
N/C
1
=IN3
1
1
1
270K
0x01
0
0
0
1


0
1
1
1
0
0
1
1
0
1
0
0

0
N./C
0
N/C
1
=IN3
1
1
1
270K
0x02
0
0
1
0


1
0
1
0
1
1
1
1
0
1
0
0

0
N./C
0
N/C
1
=IN3
1
0
0
270K
0x03
0
0
1
1


1
1
0
0
1
1
1
1
0
1
0
0

0
N./C
0
N/C
1
=IN3
0
0
N/C
270K
0x04
0
1
0
0


0
0
1
1
0
0
0
0
1
1
1
0

0
N./C
1
=IN2
1
=IN3
1
1
1
50K
0x05
0
1
0 1


0
1
1
1
0
0
1
1
0
1
1
0

0
N./C
1
=IN2
1
=IN3
1
1
1
50K
0x06
0
1
1
0


1
0
1
0
1
1
1
1
0
1
1
0

0
N./C
1
=IN2
1
=IN3
1
0
0
50K
0x07
0
1 1 1


1
1
0
0
1
1
1
1
0
1
1
0

0
N./C
1
=IN2 1
=IN3
0
0
N/C
50K
0x08
1
0
0
0


0
0
1
1
0
0
0
0
1
1
0
1

1
=IN1
0
N/C
1
=IN3
1
1
1
135K
0x09
1
0
0 1


0
1
1
1
0
0
1
1
0
1
1
0

1 =IN1
0
N/C 1
=IN3
1
1
1
135K
0x0A
1
0
1
0


1
0
1
0
1
1
1
1
0
1
0
1

1
=IN1
0
N/C
1
=IN3
1
0
0
135K
0x0B
1
0
1 1


1
1
0
0
1
1
1
1
0
1
0
1

1 =IN1
0
N/C 1
=IN3
0
0
N/C 135K
0x0C
1
1
0
0


0
0
1
1
0
0
0
0
1
0
1
1

1
=IN1
0
=IN2
0
N/C
1
1
1
662K
0x0D
1
1
0 1


0
1
1
1
0
0
1
1
0
0
1
1

1 =IN1
0
=IN2 0
N/C
1
1
1 662K
0x0E
1
1
1
0


1
0
1
0
1
1
1
1
0
0
1
1

1
=IN1
0
=IN2
0
N/C
1
0
0
662K
0x0F
1
1
1 1


1
1
0
0
1
1
1
1
0
0
1
1

1 =IN1
0
=IN2 0
N/C 0
0
N/C 662K

CD4011のJ、K、LはS3とS4で決まり、CD4066のControl-4とIn-4はCD4011のJとKで決まります。
つまりS3とS4に応じて、KD9561のK1 K2の値が決まります。

S1とS2でCD4066のControl-1 Control-2 Control-3の値が決まります。
その結果、Out-1 Out-2 Out-3のSWがON/OFFします。
S1とS2がLOWの時はOut-3がONになり抵抗値はR1(=270K)だけですが、S1がHIGHになるとR4(62K)が並列に加わりま す。
これらの3つのSWのON/OFFで抵抗の組み合わせが変わり、RFの抵抗値が変わります。

実際の音はこちらこちらで 聞 くことができます。

Arduinoなどのマイコンから制御する場合、A B C Dの端子に3.3Vを加えるとスライドSW=ONと同じ動作となります。
A=B=C=D=OFFでも鳴りっぱなしになるので、MOS-FETなどで電源のOF/OFFを行う必要が有ります。



この様なKD9561の単体モジュールを入手しました。
5個で$0.68と格安です。
KD9561の右側には7個のランドが有りますが、見てわかるように下から3番目と5番目のランドは何処にも繋がっていません。


アングル付きのピンヘッダーを付けてブレッドボードで使えるようにしてみました。
左から4番目のランドだけ細いので、隣のランドとショートしないようにするのがコツです。


以下の回路でArduinoから制御してみました。
GPIO-1でMOS-FETを制御し、KD9561のON/OFFを行い、GPIO-2とGPIO-3で音色を変更します。
スピーカは8Ω、0.5Wの物を使いましたが、十分な音量で鳴ります。
RFを可変抵抗で試しましたが、あまり変化が無いので470オームの固定値です。


KD9561のK1端子(6番)をN/C(ハイインピーダンス)にできないので音色は3色になりますが、アラームとして十分に使えます。
左から3番目のランドは何処にも繋がっていません。
そこで、このランドを利用して基板上に2SC1815を付けてしまいました。
3番目のランド(ピンヘッダーの左から5番目)が、2SC1815のCollectorとなります。


ブレッドボードにはKD9561、2SK4017、抵抗しかありません。




KD9561のK1端子をN/C(ハイインピーダンス)にするためには、ロジックIC(CD4066や74XX126)が必要になります。
ロジックICを使わないでハイインピーダンスにする方法もあるのかもしれませんが、良く分かりません。
CD4066

KD9561
Control-4
In-4
Out-4




=K1

=K2
GPIO-1
GPIO-2


GPIO-3
1
1
1

1
1
1
1

0
1
0
0

0
0
0
N/C

0

ダイオード2つでOR回路は作れるので、あと2つGPIOを使えばCD4066だけでキットと等価の回路が組めます。
CD4066

KD9561
Control-1
Out-1
Control-2
Out-2
Control-3
Out-3
Control-4
In-4
Out-4










=K1

=K2
GPIO-1

GPIO-2

GPIO-1
or
GPIO-2

GPIO-3
GPIO-4


GPIO-5
0
N/C
0
N/C
0
N/C
1
1
1

1
0
N/C
0
N/C
0
N/C
1
1
1

0
0
N/C
0
N/C
0
N/C
1
0
0

0
0
N/C
0
N/C
0
N/C
0
0
N/C

0
0
N/C
1
=IN2
1
=IN3
1
1
1

1
0
N/C
1
=IN2
1
=IN3
1
1
1

0
0
N/C
1
=IN2
1
=IN3
1
0
0

0
0
N/C
1
=IN2
1
=IN3
0
0
N/C

0
1
=IN1
0
N/C
1
=IN3
1
1
1

1
1
=IN1
0
N/C
1
=IN3
1
1
1

0
1
=IN1
0
N/C
1
=IN3
1
0
0

0
1
=IN1
0
N/C
1
=IN3
0
0
N/C

0
1
=IN1
1
=IN2
1
=IN3
1
1
1

1
1
=IN1
1
=IN2
1
=IN3
1
1
1

0
1
=IN1
1
=IN2
1
=IN3
1
0
0

0
1
=IN1
1
=IN2
1
=IN3
0
0
N/C

0

もちろんControl-3をGPIOで制御すれば、全く同じ回路となります。

続く
...