制作の動機
自作回路にせよおもちゃにせよ電子回路が所定の動作をしない不具合は回路のどこかに問題があるわけですが、そもそも設計通りに電気が流れていないと話になりません。回路の電圧はテスタで簡単に測れますが、電圧がかからないところのチェックは意外と面倒です。例えばあるパーツとGNDとの接続では電圧はゼロですが、回路が途中で切れていてもゼロを示します。理由は様々ですが、基板パターンの断線、パーツの浮きハンダ、パーツの焼損、などによって回路に電圧はかかっていても電流が流れないことがあります。
そこで単純に導通をテストする治具を制作することにしました。
参考にしたサイトはこちら
当初はこの設計を真似て制作する予定でしたが、回路図を眺めるとダイオードがたくさん使われていて自分でもよく理解できないところがありました。説明が豊富なため理屈はわかりましたが、複雑な回路は保守性を悪くするので、もう少しシンプルなものはないかと探して見つけたのが、次のサイトです。

部品点数12(SP、SW、LED、BAT、C(2)、R(4)、IC、CN)+基板、という構成です。ICはArduinoのソースをUNOで焼き付ける必要がありますが、これもサイトに載っていたものをそのまま使います。
回路テスト
ArduinoのスケッチをATtiny13に焼き付ける。

上記サイトからスケッチを入手し、Arduino IDEからArduino UNOを経由してATtiny13Aに焼き付けます。ATtiny13Aのデータシートはこちら。
UNOとAVR(ATtiny13)とをジャンパで接続する
両者のピン番号を以下のようにジャンパ接続します。なおUNOの上でD10とGNDとの間に1〜10uF程度の電解コンデンサを挟むと処理が安定するようです。
| UNOのピン | ATtiny13のピン | UNO側 | |
| 5V | 8 | Vcc | |
| GND | 4 | GND | 10uF(-) |
| D10 | 1 | PB5 | 10uF(+) |
| D11 | 5 | PB0 | |
| D12 | 6 | PB1 | |
| D13 | 7 | PB2 |
PC上のArduino IDEからUSB接続したArduino UNO経由でジャンパ接続したAVRにスケッチを書き込む
この際、要領を得ずにいろいろなサイトを調べました。
まずわからなかったのが、ISPという機能です。
In-System Programmingの意味らしいですが、Arduino UNOを使ってAVRにスケッチを焼き付ける際に使うスケッチがArduino ISPでArduino IDEに入っています。これをArduino UNOにまず焼き付けてISPとして使えるようにしておく必要があります。つまりArduino ISPはUNOを単なるデバイスからスケッチのライターにするためのプログラムです。
次に、AVRにインストールしたいスケッチをArduino IDEの画面で開き、AVRに焼き付ける際に、Arduino UNOをライターとして使うときに、Arduino as ISPというIDEのメニュを使います。
ブートローダを焼き付けるかどうかでサイトによりマチマチな見解でした
なぜブートローダを書き込む必要があるのかがよくわからなかったので、ChatGPTに質問を投げてみました。結論を整理すると、
- ブートローダは、PCのIDEからUSB経由でAVRに直接スケッチを書き込める(PCとArduinoをUSBでつなぐだけ)
- ブートローダの有無は実装されるスケッチの動作には全く関係がない
- ブートローダをインストールすると、ATtiny13の1kBしかないフラッシュ領域が狭まりプログラムの容量に制約を受けてしまう
- ブートローダの焼付も、スケッチの焼付も、同じようにArduino UNOとATtiny13をブレッドボード上でジャンパ接続して、Arduino IDEで焼付処理をすることになるので、ブートローダがあってもなくても手間は変わらず、スケッチの焼付が楽になるわけではない。
ということなので、スケッチの焼付のみにしました。これでブートローダの焼付がうまく進まないことによるストレスから解放されました。
AVR焼付用のシールドがあると便利
さらに、Arduino UNOとATtinyなどのチップの接続は都度都度ブレッドボードでやっていると面倒なので、簡単に治具(書き込みシールド)を作って置くと良いようです。ちょっと遠回りして取り組みました。その状況はこちらに。


ブレッドボードで回路を動作テストする
いきなりはんだ付けに入る前にブレッドボードで回路を組んで動作テストをします。これをすることで部品の有無のチェックや部品配置のコツなどを掴めます。実際のところ、一部のパーツ(しかも抵抗器)が足りないことが判明し、一旦制作はお預けとなりました。
・・・が抵抗は合成すればなんとかなります。例えば、E12系列の5.6kΩがほしければ、E6系列の、2.2と3.3を直列接続すれば5.5が得られ、E12系列の27kΩに対しては、なぜか持っていたE12系列の82kΩを3本パラレルに接続すれば、27.3kΩが得られます。いずれも誤差率10%を勘案すればほぼ問題ありません。端的には、E3系列の1.2、2.2、4.7を持っていればその組み合わせて必要な値はなんとか出せます。あえて困ることと言えば部品点数が増えることと部品の組み合わせで誤差が大きくなることくらいでしょうか。またキットなどで基板上の部品配置が決まっているとこの方法は難しくなります。

いざ試してみると
ブレッドボードに指す部品の列を間違えたりICからのGNDへの接続を見落としていたり、いつものようにいろいろと不注意を見つけながら試していると、ようやくピ〜音が出ました。しかし・・・
- 想像してたより音が歪んでいる・・ICから出る音はもう少し澄んだきれいな音を期待していましたが少し風邪を引いたような嗄れた音になっています
- 動作持続時間が短い・・電源を入れてプローブを開放状態にしておいたら5分程度で自動的に切れるはずですが実際は5秒しか持ちません
- 電源投入時の音が聴こえない・・仕様では電源投入時にバッテリチェックが働いてピッとなるはずです
- 抵抗値の変化が音に反映しにくい・・プローブを閉じた状態で鳴る音と10Ωで鳴る音が聞き分けにくいです。さらに100Ωでは無音状態^^;
調べてみると、圧電スピーカの容量が高いためICの足との間に1kΩ程度の抵抗を挟んでやると音がきれいに鳴ることがあるようです。
その後、さらに応用改善したプログラムなどを見つけました。
vabenecosiさんのソースは新バージョンのコンパイラに対応する点や消費電力が更に落とされていることなどの改善が見られます。
あいうえわをんさんも「改造」と称して色々工夫されていますが、自分にはまだ良く理解できていません。ChatGPTにソースコードを渡して不明点について質問しながら回路とソースの理解に努めました。
電卓用の3Vソーラーパネルを使っている方もいらっしゃいます。これでバッテリの心配が不要というのは驚きです。パネルの発電をコンデンサに貯めるだけのようです。それだけ消費電力が少なくできているのでしょうね。
検討の結果(というより直感で)あいうえわをんさんの回路をベースに作ってみることにしました。
回路選択後のブレットボードでの実験
テスターブローブをはんだ付けする
取り急ぎ必要なテスタープローブは先に用意しました。当初、ケーブル長を40センチ位とったのですが、うち10センチはテスタプローブの長さに取られてしまう(中通し)なので作業範囲が30センチになってしまい使いにくいことがわかりました。再度50センチで作り直しました。
ピン先へのはんだ付けは、ヒートクリップでピンの穴を上向きに立てて加熱してハンダを流し込み、予備ハンダしたワイヤを差し込むという手順です。ここはまっすぐになるようにしておかないとピン先をテスタプローブの棒に差し込む際に引っかかります。
ブレッドボードで組む

回路図を見ながら慎重にパーツを並べジャンパで配線しました。抵抗の桁間違え(470と470k)でダイオードが光らなかったのは毎度のご愛嬌です。スイッチは動作しましたがプローブを接触させると「ピー」が鳴るはずですが動作しません。またプローブ開放時には低周波音が聞こえます。
テスタプローブのマイナス側をGNDに繋げていませんでした。あるあるですね。
最終的には低周波音対策をしなければなりません。おそらくプログラムのパラメタを触って抵抗値の検知上限を下げてやればなんとかなるのではないかと想定しましたが、原因はまったく違っていました。これもChatGPTでやり取りしながら分かったのですが、PB0(5番ピン)にスピーカのGND側を落としているために回路のノイズがスピーカに出ていることが原因でした。ChatGPTではPB2(7番ピン)のインピーダンスを高くするようにソースコードの変更を助言してきましたが、ここは難しく考えずにバッテリのGNDに直接落とす方法を採りました。
消費電流
いろいろ実験できるのはブレッドボードのいいところですね。特にLEDの明るさと抵抗との関係は、設計上の消費電流だけではなく感覚的なところもあるので、あれこれやってみました。最終的に落ち着いた回路では、
- 短絡(ビープ+点灯)時: 2.3mA
- 開放(待受)時: 1.7mA
- スリープ時: 0.2uA
となりましたので満足行く結果です。
はんだ付け
ユニバーサル基板に実際のパーツのレイアウトしながら、マス目の入った用紙に鉛筆で配置を書き込んでいきます。これは基板の裏側の配線を意識したものです。(写真がボケていました^^;
fritzingというソフトウェアを使うと、回路図、ブレッドボード配置図、基板図が描けるようなのですが、まだ慣れないので手描きしています。手描きは線の繋がりを一つ一つ意識するので、結果的に回路が頭の中に入ってくるようになりますので、手間はかかりますが学習効果は高いはずです。

実際のはんだ面(あまりきれいではありません)

基板をはんだ付けするには、角の穴の両側にスタンドオフを装着しておくと安定します。樹脂製を使っていますがハンダごてが当たると溶けてしまうので注意が必要ですが、安いので可とします。
回路の導通テスト
本来はこの導通テストを簡単にするためにこの導通チェッカを作っているのですが、まだ出来ていないのでテスタを使います。部品配置図を見ながら、Vcc側、GND側、ICのピンとの接続、ピン同士のブリッジなどに注意します。
今回は(もいつものように)、何箇所かハンダ漏れが見つかりました。PCBに頼り切っていてユニバーサル基板に慣れていないので、「つなぐ」ということはあまり意識がなかったことがわかりました。
バッテリを入れてスモークテスト
テストプローブはまだ使わず、圧電スピーカはテスタピンで基板に繋いで、CR2032を装着してみました。
あれ?動かないぞ・・・IC入れてない (^^ゞ
ATtiny13Aをブレッドボードから移し、再度バッテリを装着して電源スイッチを押すと、ブレッドボードの実験通りの音が出てきて、プローブ部分を導通させると音が出ます。嗚呼感動の瞬間!
しかしLEDが2つとも点灯しませんでした。基板のハンダ面をよく見るとLEDのカソード側と5番PINが接続していないことが分かったので、再びはんだ付けして挑戦し、ようやく正常動作が確認できました。
LEDの赤がやや暗いのが気になりましたが7番ピンの472の抵抗値がやや高すぎたかもしれません。とりあえず光るのは分かるので節電モードとして許容します。
設計変更
ここで基板に余裕がある(少し詰めすぎたかも)ので圧電スピーカも基板に直付するタイプのものを使うことにしました。音が少し小さくなってしまいましたが許容範囲です。
またテストプローブはもしかすると取り外すことがあるかもしれないので、ターミナルブロックで接続することにしました。
最終形はこちらです。

ケーシング
未了
使用感
まだ本格的には使っていませんが、すでになかなか気に入っています。
- もともと消費電力も少なくスイッチの切り忘れなどを気にしなくていいので、バッテリを気にせず気軽に運用できます。
- Vfの低いLEDのチェックや圧電スピーカのテストにも使えることがわかりました。
- テスタより感度がよく微妙な「待ち」がありません。




コメント