SN76477N

以前購入してあった SN76477N (Complex Sound Generator: CSG) のテスト回路を実装しました。

秋月電子の 1.778 x 2.54mm ピッチ基板を使用します。タイミング要素の一部はソケットで実装するようにしています。


1.778mm IC ソケットも秋月電子にあります。店頭に無いので店員さんに 2F から出してきてもらいました。

回路図 (PDF)
ほぼアプリケーションノートの回路例です。

出力サンプル

プロペラ音

UFO音

ガンショット

ノイズフィルタ効果の確認

ロジック IC テスタの製作

2018 年最後の更新となりましたが、最近作ったロジック IC テスタを紹介します。

ジャンクで入手したロジック IC を使用するときには IC テスタがあると便利です。
SSI – MSI で組み合わせ回路を作ると、1 個の製作に数十~数百個の IC を使用することになるので、
万が一不良品が混ざると大変な思いをすることになります。
そこで、IC の動作や各ピンの入出力を確認する、簡単なロジック IC テスタを作りました。
ロジック IC のテスタなので当然ロジック IC を使って作っています。

設計にあたり、以下の項目を条件としました。

  • DIP20, DIP16, DIP14 の IC を試験できること
  • 7473, 7493 など特殊な電源ピン配置の IC も試験できること
  • IC の消費電流がわかること
  • H レベル、L レベル、Hi-Z が区別できること
  • 電源は +3V – +6V くらい

回路図

動作

写真にスイッチの行列が見えますが、このスイッチ操作により IC の各入力ピンのレベルをセットします。
LED には出力ピンの電圧レベルが表示されます。

  • SW1: 電源ピンの配置を選択します。(N/A -> 20P -> 16P -> 14P -> SP)
  • SW2: 全ピンの状態を Hi-Z にリセットします。
  • SW3: 電圧レベルを CMOS レベル / TTL レベルから選択します。
  • SW4: 全ピンのプルアップの有効 / 無効を選択します。

組み込みの電流計により、IC の消費電流をチェックできます。

ピンの出力と電圧検出

上図の点線枠内の回路は、2 ピン毎の出力回路と電圧検出回路を示しています。
ピンの出力は、L レベル、H レベルと Hi-Z をプッシュスイッチにより切り替えられるようになっています。
一度切り替えたレベルはラッチ 4043 により保持します。
出力ドライバは TC7SH125 を使用しています。
MR 信号により全ピンを Hi-Z にリセットするためのものです。

各ピンはコンパレータで L, H レベルを検出し、2 色 LED に表示します。
Hi-Z は LED 消灯で区別できるので、出力段の故障も判断できます。

(74HC373 で、G=H とした例)

20 ピンのテスタを作る場合、回路図に示した回路を 10 個実装する必要があります。

電源回路

74 シリーズ / 4000 シリーズで標準的な DIP20, DIP16, DIP14 の電源配置と、古い TTL MSI の特殊なピン配置に対応するよう、電源セレクタを組んでいます。
電源ピン配置は SW1 を押すごとに切り替わります。

DIP20 (LED 赤: VCC, 緑: GND)
DIP16
DIP14
特殊ピン配置 (7473 など)

基本的には IC を右側に揃えて挿入します。

特殊ピン配置のとき、74 シリーズの DIP14 の電源ピンはバリエーションが存在するので、IC によって挿入位置が変わります。


7490 – 7493: 右 1 列を空けて挿入


7441, 7473, 7475-78 (74H78 以外), 7481-7484, 7494, 74L95, 7496, 74H103, 74H106, 74141: 右に揃えて挿入

基板

実装が大変なので、回路図中点線で囲った部分は基板を起こしました。
基板中にユニバーサル領域を設けたので、うまく作ればすべての回路をこの基板上に載せることができます。

(2 枚 1 組で使用)

基板は予備があるので、作ってみたい方には頒布します (基板のみ 2 枚 ¥500、主要部品とセットで¥2,500[24/9/9追記]要相談) 。

電流計

適当な電圧計を接続できます (100mA/V) が、秋月で販売している「超小型2線式LEDデジタル電圧計」を改造して使うのが便利です。

改造箇所

以前のテスタ

回路図に v2 とありますが、もっと以前に作った v1 も存在します。

フィルムコンデンサの種類と使い分け

一般的に、アナログ回路などでコンデンサの特性が回路上重要になる場合、100pF – 100nF 程度の容量値ではセラミックコンデンサではなくフィルムコンデンサを使用します。回路図上ではコメントで表記したり、値に「*」記号を付加して区別したりします。たとえば私の書いた回路図では、下図のようになっています。

例1:半導体カーブトレーサ(未公開)

例2:ミリオーム計

赤枠で囲ったコンデンサはその特性が重要になるのでフィルムコンデンサ指定です。とくに例1の積分コンデンサにはポリプロピレンコンデンサを指定しています。ミリオーム計ではこの点について質問をいただきましたので、説明が必要でしたね。

なおフィルムコンデンサを種類指定で購入する場合、そこらの小売店だと型番、種類が曖昧で販売していることがあるので、信頼できる店で購入することが望ましいです。たとえばポリプロピレンフィルムコンデンサ指定で探す場合などは RS コンポーネンツで購入するといいと思います。

で、フィルムコンデンサといってもいろいろありますので、当記事では各コンデンサの特徴と損失係数 D をみていきます。

損失係数 D とは

(適当なイメージ図)

損失係数はひとことで言うと、コンデンサのコンデンサ成分とよけいな成分の割合です。理想的なコンデンサは損失 0 ですが、実際は ESR (等価直列抵抗) に代表されるような損失があります。これは、コンデンサに AC 電圧を付加したときの電流の位相(理想は90°)としてみることができます。上図のように、両成分の割合=90°からの位相差 δ の正接 (tanδ) をとったものが D です。したがって理想的なコンデンサであれば D=tanδ=0 となり、これが高いほど波形ひずみや。フィルムコンデンサのカタログでは D の % 表示、電解コンデンサのカタログでは tanδ で表記することが多いです。なお D は LC メータで計測できます。

誘電体吸収とは


コンデンサに電荷の溜まった状態で両端子を短絡させると、当然端子間の電位差は 0V となります。ところがこの状態から端子間を開放して少し経つと両端子間に電位差が現れます。このような現象を誘電体吸収といいます。誘電体吸収は損失係数とは無関係で、誘電体の材質により現象の起こりやすさが変わります。
実際に誘電体吸収を観測しようとすると少し大変(シールドをしっかりして、J-FET 入力 OPAMP を使えば可能だと思います)なので、別の機会にゆずります。

いろんなフィルムコンデンサ

手元にあったコンデンサをみていきます。どうもパ行が多くややこしいので、文中では PET コンデンサ、PP コンデンサ、PS コンデンサなどと略すことにします。

PET: ポリエチレンフィルムコンデンサ(ポリエステルフィルムコンデンサ)

金属箔とPET (ポリエチレンテレフタレート) フィルムを巻いたもので、フィルムコンデンサの中でも一番安価で、一般的に使われます。おおむね耐圧 50-200V 程度で、100pF – 1uF 程度の容量値の製品が手に入ります。マイラコンデンサと呼ばれることがありますが同じものです。温度係数>0。

メーカによって黄色や白の透明外装だったり、茶色かったり、ガムのような形状だったりしますが、最近のものであれば性能はどれも変わりありません。

 
 

写真のように、いずれも D = 0.003 程度を示します。セラミックコンデンサ (D=0.008 – 0.05) や電解コンデンサと比較するととても低い値であり、大抵のアナログ回路にはこれで十分です。フィルムを巻いている関係で高周波回路に向かない点と、誘電体吸収が若干ある点に注意が必要です。良い特性を要求される積分コンデンサにはあまり向きません。(INL 0.1% 程度悪化します)

M-PET: メタライズドポリエチレンフィルムコンデンサ

ポリエチレンコンデンサの高耐圧版で、1kV 程度までの製品があります。また、自己回復作用(いったん短絡しても、電源を入れなおすと回復する)を持ちます。それ以外の性能はポリエチレンコンデンサとほとんど同じです。上記コンデンサを積層型にしたものもあり、同容量・同耐圧ならば小型になります。いろんな形状があります。


      

D=0.3% – 0.5% と、実測上、通常の PET コンデンサよりも高い損失係数を示す傾向にあります。一番右側は DF コンデンサで、-55/+125℃範囲品です。

PP: ポリプロピレンフィルムコンデンサ

PET のかわりに PP (ポリプロピレン) を使用したもので、高耐圧コンデンサとしてポピュラですが、それ以上にコンデンサとしての性能が優れています。そのかわりにやや高価です。おおむね、ポリエチレンコンデンサと同様の容量範囲の製品が入手可能です。温度係数<0。

左側の製品のように、見た目からは PET コンデンサと区別することは難しいです。

写真のように D=0.000 と非常に低い値を示すので、ここで PET との違いを判断できます。PP コンデンサは誘電体吸収もほとんど示しません。これらの特性から計測器の(とくに 積分型 ADC の)積分コンデンサに最適です。D=0 ということから AC を流してもほとんど発熱しませんので、高電圧 AC のカップリング、分圧コンデンサとしても適しています。
一番左のは巨大なコンデンサですが、強電になると損失による発熱が無視できないわけで、損失の少ない PP コンデンサが使われます。

PS: ポリスチレンフィルムコンデンサ

日本ではスチロールコンデンサ、スチコンと呼ばれることがほとんどですが、要するにポリスチレンを巻いたコンデンサです。コンデンサとしての性能は優れていますが、耐圧がポリプロピレンコンデンサほど高くないことと、誘電体吸収は PET コンデンサよりも少し大きいようです。高い容量の製品はなく、100p – 10nF くらいが一般的な容量レンジです。また、熱に弱いため半田付けの際は注意が必要です。またこの性質のため SMD 化は不可能であり、古くからあるコンデンサですが、いまや絶滅危惧種です。温度係数<0。


D=0.000 と測定限界以下です。すばらしい。右側のは NEC の50年前のコンデンサです。

PET-PP: ポリエチレン・ポリプロピレンコンデンサ

フィルムコンデンサを使用して時定数回路を作ると温度による変化が問題となります。ポリエチレンコンデンサは温度係数>0、ポリプロピレンコンデンサは温度係数<0 です。そこで、ポリエチレン、ポリプロピレンの両方を使用して、温度係数を常温で 0 に近づけたものがこのコンデンサです。これを使えば、抵抗側で温度係数の補償をすることなく、広い温度範囲で比較的安定な発振器やタイマ回路を作ることができます。しかしながら、今は PEN (ポリエチレンナフタレート) コンデンサに置き換わってしまい、絶滅危惧種です。


上写真は日精 AWS シリーズ(現行品ではない?)ですが、D =0.2% なのでちょうどポリエチレン、ポリプロピレンの中間になっています。

まとめると

  • 損失係数でみると、ポリプロピレン (PP) コンデンサ>ポリスチレン (PS) コンデンサ>ポリエチレン (PET) コンデンサ>メタライズドポリエチレンコンデンサの順で良好。
  • 積分コンデンサなど性能が重要なコンデンサには、PP コンデンサを使用すべし。
  • PP コンデンサと PET コンデンサは損失係数の測定で判別可能。
    • 見た目で区別できないので、測定機器がない場合には信頼できる店で購入。
  • PET コンデンサの見た目で性能に違いはなさそう。

 

シンセリコーダーの製作 その3

シンセリコーダーのケースを作りました。
リコーダーっぽさが出てきた感じがします。

プロトタイプ版なので、中身の基板の都合で径や穴位置は本物とだいぶ異なります。

これはコントロール基板で、Finger, Breath 情報表示や、ピッチを変えられるようにしています。

NanoPi リモコンサーバの製作

最近どうにも暑く、帰宅時の部屋の熱気がたまりません。外出先からエアコンをつけたい…ということで、Linux ボードの NanoPi NEO 2 を使ってさくっとリモコンサーバを作ってみました。


右側の基板で IR 送信、受信を行っています。下側の基板が NanoPi NEO 2 です。ケースはそのうち。


こんな感じのページからエアコンなどの操作ができます。

とりあえず詳細は Web サイトのほうにアップロードしましたので、よろしくおねがいします。

シンセリコーダーの製作 その2

GW を利用してシンセリコーダーの改良をしていました。

上がプロトタイプ1号機、下がプロトタイプ2号機です。
1号機では指検出にメカニカルスイッチを使用していましたが、2号機ではタッチセンサに変更しています。
あわせて、基板配置の変更、センサキャリブレーションの自動化と、マウスピースの設計変更を行いました。
マウスピース部分は 3D プリンタで出力しています。

このプロジェクトではおもちゃではなく楽器を作りたいので、息の検出は当然肝となる部分で、いろいろ試した結果気圧センサを使用しています。
マウスピースと気圧センサは試行錯誤の結果、上記写真のように取り付けています。
気圧センサの出力は、横にある LM324 で増幅してマイコン (ATmega8) に入力されます。
基板は以前製作した便利な細長ユニバーサル基板を使用しています。

指使いを検出するタッチセンサには上記写真に見えるように、ピンヘッダを使っています。
タッチセンサ(メカニカルな接点を使用しないスイッチ)は大きく分けて非接触型と接触型に区別されます。
静電容量を利用する非接触型はそれなりに広くパターンを設ける必要があり、リコーダーのサミング(穴を半分だけ空けること)検出が難しそうなので採用しませんでした。
接触型にもいろいろあり、商用周波数からのノイズを拾うものや、接触抵抗を検出するものがありますが、今回はセンサ端子の浮遊容量に電荷を貯め、端子の電荷が指を通して放電されることを検出する方式を採用しています。

上から。

基板に誤って触れるとセンサが誤検出するので、サイドカバーをつくってつけました。
どうも直径に対して長さが足りない気がしますが、「リコーダー 寸法」とかで検索しても値が出てこないのであまり気にしないことにします。

下側の穴(左手親指)はサミング検出のため、上記写真のように 2 組のセンサ接点を配置しています。

ちょっと演奏しづらかったので、片方の接点のみ位置を微妙に調整しました。
これで大分、リアルリコーダーの感覚に近づきました。

太陽電池駆動式・導通チェッカの製作


太陽電池で駆動する導通チェッカを作りました。
電池不要でメンテナンスフリーかつ常時電源 ON なので、テスタで導通チェックするときのように、いちいちスイッチやレンジを切り替える必要がありません。
作業机の上に 1 つ置いておけば、使いたいときすぐ使えて便利です。

Schematics (PDF)

Source Code (AVR Assembly for ATtiny11L / ATtiny13A)

上図に回路図を示します。測定電流 1mA (パルス測定) で、約 100 Ω以下のときブザーが鳴るようになっています。消費電流の関係で BOD やリセット IC を使用していないので、うまく起動しないときはテスタリードで RESET ピンをタッチしてください。

MCU は ATtiny13Aを使用しています。当初は ATtiny11L を使用予定だったのですが、このチップは WDT 用クロックを内蔵 RC 発振器として共用しており、電源電圧により発振周波数が 10 倍以上変化するという致命的な問題があるため、途中で tiny13A に変更しました。プログラムはアセンブラですが、GCC でアセンブルできるようになっています。

この製作のキーパーツはアモルファス太陽電池で、松下のアモルトンの 3V 出力品 (開放時 4V) を使用しています。アモルファス太陽電池は通常の単結晶シリコン太陽電池と感度特性が異なり、可視光域の感度が高いため、室内の蛍光灯下の動作に適しています。いわゆるソーラー電卓に使われている太陽電池ですが、電卓用の 1.5V 品ではなく、3V 品を採用しています。

蛍光灯下の動作に適していますといっても、太陽電池の出力はたかだか数 10 uA しかありません。圧電ブザーの駆動には数 mA の電流が必要なので、電気二重層コンデンサに一度充電してまかなうことにしています。

プログラムのだいたいのダイアグラムを上図に示します。テスタリード開放のとき Power Down Sleep モードに入り、INT0 割り込みを待ちます。このときの消費電流は 1uA 以下です。抵抗値のチェックはコンパレータを使用して、0.1V 基準電圧と比較します。


ケースの中身はこんな感じで、見てのとおり適当な基板の切れ端に実装しています。
テスタリードとケースは 3D プリンタで作成しました。テスタリードの先っぽは MAC8 CD-2 です。

 

 

シンセリコーダーを作りたい 1

現在平行して作成中のものがいくつかあります。
シンセリコーダーもそのひとつ。
最終的にはウィンドシンセ (Wind Synthesizer) のように、PC に MIDI IN としてつなげるリコーダーをイメージしています。
おうちでリコーダーを吹こうと思っても、都内の住宅事情では騒音になるためなかなか難しいですね。
シンセリコーダーさえあれば、時間を選ばずリコーダーが吹けるわけです。深夜にリコーダーを吹く是非は置いておきましょう。
残念ながら?「電子リコーダー」は製品として存在していたようですが、自作電子楽器の題材としてはおもしろいかな、と思います。

しばらく試行錯誤していたのですが、ある程度演奏できるプロトタイプ1号機ができてきました。
見た目のリコーダー度はまだまだ 20% くらいです。


上半分が USB 基板、下半分がリコーダー基板。
このプロトタイプで確認したかったことはウィンドシンセの心臓部であるブレスセンサと通信線の電源重畳の動作です。
スイッチ(リコーダーでいう穴)はディテクタスイッチを使っていますが、いずれタッチセンサに置き換え予定です。リコーダーの場合、半開判定が必要な穴が3つもあるので、静電式タッチセンサの採用は難しいです。必然的に接触式になるのですが、これはこれで調整が面倒なことはわかっているのであとまわし。


マウスピース?部分は 3D プリンタで作っています。
リコーダー基板には音程確認用の圧電ブザーを載せています。
ここにヘッドホンをつければスタンドアローンで動くので、某笛マンガに出てくる珍笛のようなものができあがります。
なおコントローラは ATmega8 です。


ブレスセンサはふつうの気圧センサを試してみましたが、応答性は問題なさそうです。
耐湿性が一番の問題ではありそうですが、実際の製品ではどうしているのでしょうか。

USB 基板(右側)と LED 基板(左側)。LED 基板はスイッチ状態とブレス値などを表示します。
USB コントローラには PIC18F14K50 を使用しています。
最近良く使うので汎用の PIC18F14K50 ユニバーサル基板を起こしてしまいました。
茶色の配線はリコーダー基板への配線で、+7V 電源供給と半二重通信を 2 本の線で行っています。

ある程度予想はしていましたがやはりディテクタスイッチでは演奏しづらいので、プロトタイプ2号機ではタッチセンサを試す予定です。
もうひとつ、私のリコーダー演奏が下手なことが最大の問題です。

AVR HVS (High Voltage Serial) ライタの作成

最近になって AVR HVS ライタを製作したので、ここで紹介します。

完成写真

いきさつ

最近 ATtiny11 という古めのチップを(大量に)入手したのですが、
この書き込みは ISP 非対応ということに、入手後になって気づきました。

2018 年現在、AVR マイコンのプログラミングインタフェースをリストにすると、おおむね以下の通りです。

以前からの品種でサポート
SPI ISP: ほとんどの品種でサポート
HVS (High Voltage Serial): 8ピン tiny13A 等, 12V 必須
HVP (High Voltage Parallel): 16ピン以上, 12V 必須

新しい品種でサポート
TPI (Tiny Programming Interface): tiny10 等
PDI (Program and Debug Interface): XMEGA系

AT90S / tiny / mega を中心に使用する限り、AVRISP のような SPI ISP 書き込みに対応した
ライタさえ持っていれば、「少数の例外を除いては」ほとんどの品種に対応できます。

ところが tiny11 は「少数の例外」にあたり、プログラミングインタフェースは HVS のみに対応しています。
HVS 対応のライタは持っていなかったので新しく作る必要に迫られました。

設計

製作にあたって下記の条件を定めました。
(1) USB で動作すること (IF, 電源共)
(2) MCU は ATmega8 を使用すること (手持ちの関係)
(3) 既存のソフトウェアを使用できること
(4) 安価であること

(1)(2) を満たすライタがネット上に公開されていればそのまま使いたかったのですが
条件に合うものが見つからなかったので、回路と FW は新たに作ることにしました。

ホスト側ソフトウェアは私が作ると中途半端な実装になりそうなので、
既存の HVS 用ソフトウェアに対応することが望ましいです。
ちょうど、neko JAVA さんが USB 対応のパラレルライタを公開されていたので、
ホスト側ソフトウェアはこれをそのまま使用できるようにします。
FW の実装は v-usb ベースですが、HVS / HVP 実装部分でソースコードを参考にさせてもらいました。

回路図:

FW ソースコード: 180219_YLE_HVS_Writer_Source
ホスト側ソフトウェア: 本文参照

動作

HVS + tiny11 で FLASH 書き込み、読み込みできることを確認済み。
HID なのでドライバは不要です。
HVP (High Voltage Parallel; 高電圧パラレル) も一応実装していますが、動作は未確認です。

動作速度は正直言って遅い(tiny11 Program + Verify で 1 分以上)です。
FW は v-usb ベースにしており USB1.1 LS なので、interrupt 通信の
ポーリング間隔の制約からオリジナルの 10 倍程度遅いと思います。
tiny11 のようなページを持たないマイコンの FLASH を書く場合、
このライタのプログラムが 1バイトあたり 3-4 個の interrupt 通信するので
ほとんどの時間を通信待ちに費やすことになります。
このへんはプログラムの変更で 3 倍ほど改善可能ですが、
「(2) 既存のソフトウェアを使用できること」なのでそのままにしています。

PIC18F2450 など USB2.0 FS 対応マイコンに移植すればもっと高速になるでしょう…。

SOP の AVR の書き込みは、写真のようなアダプタ (aliexpress で ¥600) により行っています。

MPLAB X IDE のメモリ使用量を削減する

PIC の開発では MPLAB X IDE を使用していますが、MPLAB は起動するだけで大量のメモリを消費することが難点です。


たとえば私の環境では 32bit PC で起動時 430MB、スクリーンショットがありませんが 64bit PC で 800M-1GB、これでは他のソフトを立ち上げているとすぐにメモリ使用量がいっぱいになってしまいます。

これは起動時に JRE がヒープ領域を確保するためであり、MPLAB の読み込む設定ファイル mplab_ide.conf を書き換えるとヒープサイズを調整できます。

ファイルのコメントによると「-J-mx」以下でヒープサイズの上限を指定するようです。
デフォルト値はインストール時の環境に依存し、32bit OS だと 「-J-Xms256m -J-Xmx512m」
サイズを小さくしすぎると動作が極端に遅くなります。
PIC18F を使用するだけなら 「-J-Xms96m -J-Xmx128m」で十分動きます。

ファイル書き換え後再起動すると、起動時のメモリ使用量は 210MB と半分近くになりました。