エントリー

導通チェッカーの作製

導通を確認するのにテスタを使用しているが「電源ON]「ダイヤル回す」「導通ボタンを押す」を行うのが面倒(だと思っていた)

この際なので導通チェッカを作製することにし参考は沢山あるだろうとネットを検索

多くは電源電圧をそのまま印加するような仕組みで電子回路には怖くて使えそうにないが,まともな導通チェッカーの1つとして見つけた,ELM ChaN氏が2008年に製作された「回路内導通チェッカ」を使わせていただくことにした(air variable 氏の「LMC555使用導通チェッカー」も魅力ではあった)

開発環境もあるし簡単に作製できるだろうと思っていたらいろんな問題(課題でもある)が発生し時間を費やしてしまう

材料

廃却したマザーボードの圧電ブザーと水銀電池ボックス部分を置いてあったので取り外して使う

IMG_20230611_135020.jpg

ATTiny13aは¥50の時に購入したのがある

開発環境

最新の「arduino-2.1.0」,前バージョンの「arduino-1.8.13」でもArdinoISPによるATTiny13aのスケッチ書き込みが不可になっている

書込装置がメニュに出てこないことが問題でこちらを参考に対応してみたがArdinoISPでは不可であった(ATtiny85は対応されているので調査すれば何とかなりそうには思えるが後回し)

更に前のバージョンである「arduino-1.8.10」を使用

デバッグには使えるソフトシリアルポートが無い(pinの空きが無い) ためBlink()で判定

タイマー使用できず

CPUクロック異なるためソフトdelayを使っていたのをタイマーにしようとしたらPWMピンを使用していたので不可

delay()で良いのに気づかずCPU速度でWAIT調整しソフトdelay_msを作製(後に必要ないので移行して削除)

尚,CPUクロックは9.6MHzで開発して最後に消費電力削減のため1.2MHzに落とした

ブザー音

ブザーの仕様が不明だったのでアナログ発信器を作り1kHz前後で発音することを調査

IMG_20230613_090427.jpg

ADC

delayを使った待ち動作では正常に読めないのでフラグ待ちに修正

ADCSRA = _BV(ADEN)|_BV(ADSC)|(0b100);
loop_until_bit_is_set(ADCSRA, ADIF);
uint16_t ad = ADC;
消費電力

CPUクロック9.6MHzで,スリープ時48mA,通常時で20~50mAもありこれでは電源SWなしでは使えない

IMG_20230613_091030.jpg

調査したところブザーピン(PB1)がスリープ時もHIGHになっていて消費していることが判明

PWM使用にてタイミングによってHIGHになってしまうことがあるようで強制的にPB1をLOW(0)に設定してもLOWにはならない

そこでブザーを鳴らす時つまりPWM出力時にPB1を出力ピンにして,ブザーを止める時に出力ピンをOFFにすることで対処してみたらOKとなる

void beep(uint8_t t)
{
if(t) {
DDRB = _BV(PIN_BZR);
OCR0A = t;
OCR0B = t / 2;
TCCR0A = _BV(COM0B1)|_BV(WGM01)|_BV(WGM00); //PWMの動作を指定(PB1出力,8ビット高速PWM動作)
TCCR0B = _BV(WGM02)|0b011; //WGM02|WGM01|WGM00で高速PWM動作
//CS2|CS1|CS0 = 0b011 clkI/O/64 (64分周)
} else {
TCCR0B = _BV(WGM02); //停止
DDRB &= ~_BV(PIN_BZR);
}
}

スリープ前に出力ピンをOFFでも良い(オリジナルはスリープ前に初期化しているようだ)

クロックも下げて再度消費電力を測定しようとしたが手持ちのテスター(60μAレンジのテスターでも)では測定できなくなってしまった(突入電流が僅かなのか起動しない)

PWM

ATTiny13aのPWM関係のレジスタ制御が思うようにいかない

例えばPB1に出力する場合で,

//OCR0A = (値);
OCR0B = (値);

出力されない(発音しない)

OCR0A = (値);
//OCR0B = (値);

出力する(発音)

OCR0A = 255;
OCR0B = 0;

出力する(255の発音)

OCR0A =(値);
OCR0B = 255;

出力されない(発音しない)

他のレジスタとの設定順もないようだ

前にPB0では発音できないこともあり拙者が持っているATTiny13aの不具合なのか(?)

回路図

オリジナルではPIN7(PB2)でスイッチを利用しているがこれをリセットスイッチに変更

(オリジナル)起動後,スリープ状態へ移行し,SW割り込みでウエイクアップし導通チェック開始,SWかタイムアウトでスリープへを繰り返す

(変更)起動後,導通チェック開始,タイムアウトでスリープ,リセットで再起動の繰り返し(更にリセットを電源SWにすればバッテリー持ちが向上する)

他の変更点(PSWはタクトスイッチ使用→タクトスイッチの図が大きいので代わり)

  • LEDの極性
  • 圧電ブザーの抵抗(チップ保護)
  • タイムアウトは1分間

導通チェッカーV2_回路図.png

スケッチ)(UTF-8N,TAB4,LF)

オリジナルのリメイク版(ブレッドボードで試作)

導通チェッカー_回路図.png

オリジナルのリメイク版スケッチ)(UTF-8N,TAB4,LF)

消費電力を含め動作的には完成

IMG_20230614_193859.jpgIMG_20230614_193940.jpg

操作ボタンとLEDは高さを合わせ,一番高さのある圧電ブザーの逆サイドに実装

ケースに重量が欲しいのでコイン電池ではなく1.2V×3本バッテリーを使用予定

ケース

いつものとおり3Dプリンタでケースを作製

IMG_20230616_103046.jpgIMG_20230616_102534.jpg

(←)表,(→)裏,(↓)中身

IMG_20230616_102518.jpg

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed