ATtiny202-SSNRで“Lチカ”

ATtiny202-SSNRのLチカプログラム (アセンブリ言語)

前回の続きで、ATtiny202-SSNRで“Lチカ”した時のプログラムのソースコードを以下に示す。アセンブリ言語で組んだ。

;*******************************************************
;タイマAを使用したLチカプログラム (ATTiny202-SSNRを使用)
;*******************************************************

.include "tn202def.inc"

;---- 汎用レジスタ ----

.def R_TEMP1	=	R16	;汎用的な変数
.def R_TEMP2	=	R17	;汎用的な変数
.def STACK	=	R18	;ステータス・レジスタ退避用
.def U_FLAG	=	R19	;ユーザーフラグ

;ユーザーフラグのビット
.EQU B_TCA_OVF	=	0	;タイマAオーバーフロー

.CSEG				;コードセグメント
	RJMP MAIN		;リセット
.ORG	TCA0_OVF_vect
	RJMP TCA_OVF		;タイマAオーバーフロー

;*********************************
;タイマAオーバーフロー割り込み処理
;*********************************
TCA_OVF:
;---- 全割り込み禁止 ----
	CLI

;---- ステータスレジスタの内容を退避 ----
	IN STACK,	CPU_SREG

;---- タイマAオーバーフロー割り込み要求フラグをクリア ----
	CLR R_TEMP1
	SBR R_TEMP1,	(1<<TCA_SINGLE_OVF_bp)
	STS TCA0_SINGLE_INTFLAGS,	R_TEMP1

;---- タイマAオーバーフローユーザ・フラグをセット ----
	SBR U_FLAG,	(1<<B_TCA_OVF)

;---- ステータスレジスタの内容を復帰 ----
	OUT CPU_SREG,	STACK

;---- 全割り込み許可 ----
	SEI

	RETI

;***************
;LED切り替え処理
;***************
LED_CHANGE:
;---- タイマAオーバーフローユーザ・フラグをクリア ----
	CBR U_FLAG,		(1<<B_TCA_OVF)

;---- PORTAのビット6を反転 ----
	LDI R_TEMP1,		0B01000000
	STS PORTA_OUTTGL,	R_TEMP1

	RJMP MAIN01

;**************
;メインルーチン
;**************
MAIN:
;---- 全割り込み禁止 ----
	CLI

;---- PORT設定 ----
	LDI R_TEMP1,	0B11001111	;PA4とPA5は存在しないので0
	STS PORTA_DIR,	R_TEMP1
	LDI R_TEMP1,	0B00000000
	STS PORTA_OUT,	R_TEMP1

;---- タイマA設定 ----
	LDS R_TEMP1,			TCA0_SINGLE_INTCTRL
	SBR R_TEMP1,			(1<<TCA_SINGLE_OVF_bp)
	STS TCA0_SINGLE_INTCTRL,	R_TEMP1		;タイマAオーバーフロー割り込み許可
	LDI R_TEMP1,			0B00000111
	STS TCA0_SINGLE_CTRLA,		R_TEMP1		;プリスケーラ8

;---- ユーザーフラグをクリア ----
	CLR U_FLAG

;---- 全割り込み許可 ----
	SEI

;***********
;タイマA待機
;***********
MAIN01:
;---- タイマAオーバーフローユーザ・フラグを監視 ----
	SBRC U_FLAG,	B_TCA_OVF	;ビットがセットされていなければ1行スキップ
	RJMP LED_CHANGE			;ビットがセットされていたらLED切り替え処理にジャンプ

	RJMP MAIN01

今回使用した機能とレジスタについて解説する。

プログラム解説

PORTA_DIR
データ方向。0で入力。1で出力。使用しないポートは出力に設定し値を0にしておいた方が良いらしい。VPORTA_DIRも同じ機能で、IN、OUT命令でアクセスできる。
PORTA_OUT
出力値。0でLow(GND電位)、1でHigh(VDD電位)。VPORTA_OUTも同じ機能で、IN、OUT命令でアクセスできる。
PORTA_OUTTGL
出力値切り替え。出力値を切り替えたいビットに1を書き込むと、出力値が反転する。このプログラムの場合はビット6に1を書き込んでいるので、この動作を実行する度にPA6に接続したLEDが点灯したり消灯したりする。
TCA0_SINGLE_INTCTRL
タイマA標準動作割り込み制御。ビット0がオーバーフロー割り込み許可ビット”TCA_SINGLE_OVF_bp”で、1を書き込む事でタイマAオーバーフロー割り込み要求フラグがセットされた時に割り込みが起こる。
TCA0_SINGLE_INTFLAGS
タイマA標準動作割り込み要求フラグ。ビット0がオーバーフロー割り込み要求フラグ”TCA_SINGLE_OVF_bp”で、タイマAのカウンタが桁溢れするとセットされる。割り込みが起こっても自動で解除されず、解除するにはプログラムで1を書き込む必要がある。
TCA0_SINGLE_CTRLA
タイマA制御A(標準/分割動作共通)。詳細を下表に示す。
7 6 5 4 3 2 1 0
CLKSEL2 CLKSEL1 CLKSEL0 ENABLE
R R R R R/W R/W R/W R/W
0 0 0 0 0 0 0 0

ビット3~1のCLKSEL2~0でプリスケーラを設定する。

000 1
001 2
010 4
011 8
100 16
101 64
110 256
111 1024

データシートによれば、ATtiny202はデフォルトで20MHzを6分周しているので、設定を触らなければ3.333333MHzで動作している事になる。

マイコンの動作クロック周波数をMCLK(MHz)、プリスケーラをPSCLとすると、16ビットタイマで作り出せる最大の時間は(65536*PSCL)/(MCLK*10^6)となる。

今回はプリスケーラを8とすると、最大時間が約157msとなり、肉眼でわりと早くLEDが点滅しているのが分かるということでこれを採用した。

また、タイマAのCTRLAレジスタのビット0に1を書き込むとカウントを始めるということで、ビット3~1のプリスケーラ8は011で、ビット0は1なので未使用のビット7~4と合わせて0B00000111となる。

この値をCTRLAレジスタに書き込む事で、タイマAはプリスケーラ8でカウントを始める。

マイコンが起動すると、157msごとにタイマAがオーバーフローし割り込みが発生する。そしてPORTA_OUTTGLのビット6に1を書き込む命令が実行され、結果として157msごとにLEDの点灯、消灯が切り替わる。LEDが点滅し、Lチカプログラムが完成した。

タイマAの割り込みルーチンでは前回の記事で説明した通り、自動で全割り込み禁止にはならず、割り込み要求フラグは自動で解除されないので、プログラムでこれを実行している。

次回はSPI通信でDDS(Direct Digital Synthesizer)を制御するプログラムについて説明する。

カテゴリー: 未分類 | 1件のコメント

ATtiny202-SSNRとATmega328P、ATtiny13Aの違い

アドレス空間の違いとレジスタの名前の違い

前回の記事で、ATtiny202はATmega328PやATtiny13Aとはレジスタの名前や機能の設定値からして違うという話をした。

私はAVRの開発は基本的にアセンブリ言語でしているので、どういう風にプログラムの記述が変わるのかアセンブリ言語で説明する。

以下、ATmega328PやATtiny13Aの事を「以前のマイコン」と表記する事がある。

まず、ATtiny202と以前のマイコンでは、レジスタのアドレスの振り方が違う。

データシートから抜粋した両者のメモリ配置図を見て欲しい。

ATtiny202のアドレス空間
ATtiny202のメモリ配置 (データシートより引用)
ATmega328Pのアドレス空間
ATmega328Pのメモリ配置 (データシートより引用)

以前のマイコンではメモリアドレス0x0000~0x001Fに汎用作業レジスタのR0~R31が割り当てられ、I/Oレジスタのアドレスはその続きの0x0020からになっている。

対して、ATtiny202では汎用作業レジスタは別のメモリ空間に割り当てられており、I/Oレジスタはアドレス0x0000から始まっている。

そのおかげで、ATtiny202にはI/Oアドレスという少しややこしい概念がない。

そして、以前のマイコンでは各機能設定用のレジスタの一部がI/Oレジスタ領域にあるが、ATtiny202では各機能設定レジスタは基本的に拡張I/Oレジスタ領域にしかない。I/Oレジスタ領域にあるのは仮想のポート設定レジスタとCPU用レジスタ(ステータスレジスタ等)くらいだ。

レジスタの名前

ATtiny202のデータシートを読むと、各機能の制御用にCTRLAやCTRLBといったレジスタがある。

しかし、様々な機能で同じようにCTRLAやCTRLBという名前になっており、ソースコードにそのまま記述しても設定したい機能のレジスタを特定できない。

そこで、ATtiny202の様々なレジスタ等の定義値を記している”tn202def.inc”というファイルを開くと、例えばSPIのCTRLAレジスタは”SPI0_CTRLA”と定義されている。

この定義値はデータシートに書いてないので、データシートと合わせて”tn202def.inc”の中身を見ながらプログラムを記述する必要がある。

対して、以前のマイコンでは基本的に各機能のレジスタ名はデータシートに書いてある名前がそのまま使える。ATmega328Pのデータシートでは、SPIの設定をするレジスタは”SPCR”となっていて、ソースコードに”SPCR”と書けばプログラムはそのままアセンブルできる。

ATtiny202のタイマ

ATtiny202のタイマも、データシートを読むとかなり多機能なようだ。タイマAには標準動作モードと分割動作モードがあり、標準動作モードでは普通の16bitタイマなのだが、分割動作モードでは8bitタイマ2つとして使う事が出来るようだ。分割動作モードは今回は使用しておらず、データシートもちゃんと読んでいないのでこの記事では割愛する。

以前のマイコンでは、タイマの動作開始は制御レジスタにプリスケーラ設定値を書き込んだ時点だったが、ATtiny202ではCTRLAレジスタにENABLEというビットがあり、このビットに1を書き込む事でタイマは動作を開始する。

確かに、慣れれば「プリスケーラを設定した時点で動作開始」より「ENABLEビットに1を書き込んだ時点で動作開始」の方が直感的で分かりやすいかもしれない。

ATtiny202ではタイマに限らず、殆どの機能のCTRLAレジスタにENABLEビットがあり、このビットを1にすることでその機能が有効になる。

タイマオーバーフロー割り込みと割り込みベクタ

以前のマイコンでは、割り込みがかかると自動的にステータスレジスタのIフラグが0になり全割り込み禁止になる。また、割り込み要求フラグも自動的に解除される。

しかし、ATtiny202では、割り込みがかかった後の全割り込み禁止処理と割り込み要求フラグの解除が必要な場合は、プログラムに記述しなければならない。特別な理由がない限り、通常は記述しておいた方が良いと思われる。

割り込みがかかってもステータスレジスタの退避が自動で行われないのは以前のマイコンと同じなので、通常はこちらもプログラムに記述しておく必要がある。

また、ATtiny202のタイマAオーバーフロー割り込みベクタは0x0008なのだが、これも”tn202def.inc”に定義値が記載されており、”TCA0_OVF_vect”となっている。

この記事を書くために改めて確認したら、実は以前のマイコンのincファイルにも記載されていたが、知らずに今までは即値をそのまま使っていた。

ポート設定

以前のマイコンでは、ポート関連のレジスタは基本的にI/Oレジスタ領域0x0020~0x005F(I/Oアドレスでは0x0000~0x003F)の範囲内にあるが、ATtiny202では冒頭でも述べたように拡張I/Oレジスタ領域にある。例えば、ポートAの入出力方向を設定する”PORTA_DIR”レジスタは0x0400にある。

しかし、ポート設定へは頻繁にアクセスするし、ピンの値によって処理を分岐させる際等に使用するSBICやSBIS命令が使えないのはあまりにも不便という配慮なのか、仮想ポートというレジスタが用意されている。

例えば、”PORTA_DIR”に対応する仮想ポートレジスタは”VPORTA_DIR”で、アドレス0x0000だ。アドレス0x0000~0x001Fの間に入っているので、SBICやSBIS命令も使える。仮想ポートは入出力方向、出力値、入力値、割り込み要求フラグの4レジスタが用意されており、ポートAの場合それぞれ”VPORTA_DIR”, “VPORTA_OUT”, “VPORTA_IN”, “VPORTA_INTFLAGS”で、アドレスは0x0000~0x0003となっている。

これらへのアクセスは、本来のレジスタである”PORTA_DIR”, “PORTA_OUT”, “PORTA_IN”, “PORTA_INTFLAGS”(アドレスはそれぞれ0x0400、0x0404、0x0408、0x0409)へのアクセスと同じ結果になる。通常は仮想ポートの方へのアクセスで良さそうである。

当然、この4レジスタ以外のポート設定を変更したい場合は本来のアドレス0x0400以降のレジスタにアクセスするしかないのだが。

また、以前のマイコンより便利なレジスタがいろいろと増えていて、例えば今回のプログラムでも使用している”PORTA_OUTTGL”などがある。

このレジスタはその名の通り、PORTAの出力値を反転させるというものだ。トグルスイッチのようにON-OFFを切り替えるイメージがしやすい。

使い方は簡単で、ポートAの切り替えたいビットに1を書き込むだけだ。例えばポートAのビット7の出力値を切り替えたかったら”PORTA_OUTTGL”に0B1000000(0x80)を書き込めば良い。そうするとポートA7ピンの出力値が0なら1、1なら0になる。いちいち現在の出力値を確認する手間が省けて楽だ。

実は、同じ事はポートAの入力値を返す”PORTA_IN”レジスタの該当するビットに1を書き込むことでも出来、それは以前のマイコンでも実装されていた(“PINx”レジスタの該当するビットに1を書き込む)のだが、OUTTGLという名前の専用レジスタが用意されたのは、より直感的にプログラム出来て良いと思う。

ポート設定だけでもここには書き切れない程の多数の機能があるので、詳しくはデータシートを参照されたい。

次回は、ATtiny202で“Lチカ”してみた時のプログラムを説明する。

ATtiny202-SSNRで“Lチカ”

カテゴリー: 未分類 | 2件のコメント

8ピンのAVRマイコンATtiny202-SSNRが熱い (ATtiny13Aとの比較)

最近(2022年11月現在)、AVRでATtiny202-SSNRが熱い。円安やインフレの影響で値上がりしてしまったが、それでも1個60円でこんな高性能のマイコンが手に入るのはお買い得だ。2019年頃は1個40円だったのを確認している。尚、秋月電子通商では2022年11月現在売り切れている(前に買ったときは5個まとめて買ったのだが、どうせなら10個くらい買っておけばよかった…)。

そりゃそうだろう。同じ8ピンのATtiny13Aと比べて、完全上位互換だ。

ATtiny202 ATtiny13A
プログラムメモリ 2kB 1kB
EEPROM 64B 64B
RAM 128B 64B
GPIO 6pin 6pin
ADC 6ch 4ch
USART 1ch
I2C 1ch
SPI 1ch
タイマ 16bit×2 8bit×1
価格※ 60円 130円

※2022年11月現在

小さいながら、通信機能が充実しているのが嬉しい。外部機器(例えばDDSとかLCDとか)を制御出来るし、プログラムメモリもSRAMも同じ8ピンのATtiny13Aと比べると倍の容量だ。そして価格は半分以下。AVRで8ピンのマイコンが欲しいとなったら趣味レベルでは殆どATtiny202でいいと思う。

私はAVRの開発をする時はいつもCQ出版社 AVRマイコン・プログラミング入門 廣田修一・著を片手にしている。この本は2010年1月1日発行で、題材としてATmega88を使用している。ATmega328PやATtiny13Aをプログラムする時は、レジスタのアドレスや割り込みベクタの違いなど細かい相違点に気を付ければそう戸惑うことはなかった。

しかし、このATtiny202-SSNRはレジスタの名前からして全く違う。ポート設定やタイマなど、御馴染みの機能を使うにしても今まで触ったことがあるATmega328PやATtiny13Aとは違う設定用レジスタやビットがある。マイコン界での“Hello World”に当たる“Lチカ”プログラムを組むのも少し苦労したので、また別記事で取り上げようと思う。

ATtiny202-SSNRとATmega328P、ATtiny13Aの違い

ATtiny202-SSNRで“Lチカ”

カテゴリー: 未分類 | 3件のコメント

CBR1100XXのラジエターファンモータ交換

7月19日に、突然水温計がHまで振り切るという事象が発生した。ラジエターを見てみるとファンが回っていない。

ここで、故障は以下の三点が考えられる。

  • ファンモータ自体の故障
  • サーモスイッチの故障
  • ファンモータ系統の配線の断線

サーモスイッチはエンジンをかけて水温を上げて接点が導通するかどうかテスターで調べた。結果は異常なし。水温が上がれば接点は繋がるし、水温が下がれば接点は切れる。

配線の断線は、ちゃんと調べようと思ったらテスターで導通を調べないといけないが、とりあえずヒューズを見た。ヒューズは溶断していた。しかし、これで配線がどこかでショートしていると考えるのは早計だ。モータ自体の故障でも過電流が流れる可能性はある。

試しにファンをドライバーでつついて回そうとしてみたが、回らなかった。どうやらモータが固着しているようだ。ヒューズはファンが固着したことにより過電流が流れて切れたと思われる。

サービスマニュアルの手順では、ラジエターを外してからファンを外すことになっているが、ラジエターを外すにはクーラントを抜いて配管を外して…とかなり大掛かりな作業になってしまう。試しにラジエターの下の部分だけ外して手で押し広げて隙間からレンチを突っ込んだらファンのボルトが外れたので、ラジエターを車体に付けたままファンを外せた。

ラジエターを横から見た写真
ラジエターを横から見る。コネクタやサーモスイッチが見える。これだけ隙間があれば、ラジエターを外さなくても隙間からレンチを突っ込んでファンを外せる。
ファンをモータ側から見る
ファンをモータ側から見る。
ファンをファン側から見る
ファンをファン側から見る。
ファンのフレームに異物が付着している
ファンのフレームに異物が付着している。
サーモスイッチに接続するコネクタ
サーモスイッチに接続するコネクタ。250型の平型端子メス。
ファンモータのコネクタ
ファンモータのコネクタ。車体側のコネクタと分離するには、赤丸で囲った爪を矢印の方向にずらして引き抜く。この爪は車体に付いている状態では反対側を向いているので少々作業しにくい。

コネクタは初めて見た形だ。配線コムで調べたところ、住友電装製HM防水シリーズ3極Mコネクタだった。

ファンを車体から外す前は確かに固着していたのだが、外してみたら固着していなかったので試しに回してみた。

始動時の電流
始動時の電流。ヒューズの容量10Aをわずかに超えるが、一瞬なので溶断する程では無い。
定常時の電流
定常時の電流。4A弱と、10Aのヒューズの負荷としてはいたって普通だ。

不具合が再現しなくて困ったが、次の日にもう一度調べたら固着していた。しかし、少し動かすと固着が解かれる。これはもうモータ自体の故障で決まりだ。

パーツカタログでモータの品番を調べたらV,W(自分のはV)は19030-MAT-003だが、廃番になっていた。試しにX,Yの19030-MAT-E00とIの19030-MAT-021も調べたが、どちらも廃番だった。つまり、CBR1100XXの純正のモーターAssyは全て廃番だ。

仕方ないので、Webikeで似たような形のモーターAssyが無いか探してみた。

19030-MBB-640
VTR1000Fファイアストーム、スーパーホークIII CB400D
19030-MBW-610
CBR600F
19030-MCA-003
ゴールドウイング
19030-MER-D01
CBF600S、CBF600
19030-MT3-003
ST1100パンヨーロピアン
19032-MCA-003
ゴールドウイング

似たような形のファンモータがこれだけ引っかかったが、全てCMS経由なので、注文してから来るまでに3週間とかかかってしまう。これらの部品の品番で純正部品検索をして、値段が極端に高くないものという条件にしたら、ゴールドウイング用の19032-MCA-003が22880円だったのでそれを選んだ。尚、自分が注文したのが最後の1個だったらしく、後にもう一度検索したら廃番になってしまっていた(ゴールドウイング乗りの方、ごめんなさい!)。

19032-MCA-003の箱
19032-MCA-003の箱。“新品”の筈だが随分年季が入っている。
19030-MAT-003と19032-MCA-003の比較
19030-MAT-003と19032-MCA-003の比較。コネクタの形が違うが、モータは全く同じ形だ。モータのメーカはDENSO辺りかと思っていたが、どうやらPanasonic製らしい。

このモータはそのままではCBR1100XXにはつかないので、先ほど配線コムで調べたコネクタも注文した。

モータが届いたら、早速配線をぶった切ってコネクタや配線を取り付ける。貴重な新品の純正部品に元に戻せない加工をするのはかなり抵抗があったが、そのままでは使えなくて押入れの肥やしになるだけでありそれも勿体無いので仕方ない。

配線コムで注文したコネクタと端子
配線コムで注文したコネクタと端子。
緑色の配線とφ6mm丸型端子
1.25mm2の緑色の配線とφ6mmの丸型端子。配線はチューブで隠れて殆ど見えなくなるので別に色に拘らなくてもいいのだが。
新しいモータの配線を元々のモータと同じように加工する
新しいモータの配線を元々のモータと同じように加工する。チューブは新しいモータの配線をぶった切ったときに取れたものを加工して流用した。

モータと並列に繋がっている謎の黒い部品は不要なので外した。外した後で気付いたが、この部品はどうやらモータのノイズ除去用コンデンサらしい。250V 0.47と書いてあるので、おそらく耐圧250Vで容量が0.47μFなのだろう。コンデンサなら別にあっても困らないし、付けたままにしておけばよかった。

恐らく、このモータを取り付けるゴールドウイングはECUがついていて、誤作動防止のためにノイズ除去をした方がいいのだろう。しかし、キャブレターのCBR1100XXにはECUがついておらず、それっぽいものと言えばエンジンの点火タイミングを制御するイグニッションコントロールモジュールがあるくらいだ。だから多少のノイズは大丈夫なのだろう。

また、φ6mmの丸型端子と写真には無いが250型の平型端子と小さいタイラップが必要だ。

モータを交換したファンをモータ側から見る
モータを交換したファンをモータ側から見る。
モータをファンをファン側から見る
モータを交換したファンをファン側から見る。
ファンを車体に元通りに取り付ける
ファンを車体に元通りに取り付ける。
ヒューズボックス
ヒューズボックス。
ファンのヒューズが切れている
ファンのヒューズが切れている。
切れたファンのヒューズを交換した
切れたファンのヒューズを交換した。

その後、冷却水が温まったらファンは無事に元気よく回り、修理が完了した。

自宅からそれほど遠くない通勤経路で起こった故障だったので大した被害は出なかったが、ロングツーリングの出掛けた先で起こったらと思うとぞっとする。

作業時間自体は多分合計3、4時間程だと思うのだが、モータを注文して部品待ちだったり、仕事の絡みで明るい時間に作業時間を取れなくて結局直るまでに11日かかってしまった。

今回は何とか別の車種のモータを流用出来て事無きを得たが、次にまた同じ不具合が出たらその頃はもうモータが無いかもしれない。その場合はオーバーホール屋さんに出してモータをオーバーホールして貰うしかない。

カテゴリー: 未分類 | コメントする

【HK829とマイコンを使用】にぎったら「にぎにぎ」「コメコメ」としゃべるハンドグリップを作ってみた【回路設計・組み立て編】

目次

設計した回路を下図に示す。

全体回路図
図1: 全体回路図。画像クリックで拡大

HK829とNJM386の周辺は殆どデータシートの回路例の通りなので、何も難しい事は無い。HK829のメッセージ再生用スイッチの代わりにマイコンを接続した部分は、今回アレンジした点。HK829のスピーカー出力の部分はデータシートに386では無い別のアンプICに繋ぐ例が載っていたので、それを参照した。

導入編でも述べたが、HK829のM0~M3のピンはIC内部でプルアップされており、開放電圧を測ったらほぼ電源電圧だった。マイコンのGPIOも待機状態でHigh(=電源電圧が出力されている)であり、HK829のデータシートを読んだ限りではM0~M3にHighが入力される事は想定されていないようなのでそこが少し心配だが、HK829のHighもマイコンのHighもほぼ同電位なら殆ど電流は流れないから大丈夫だろうと勝手に納得することにした。間にトランジスタかMOSFETを挟んで開放状態を作り出す事も可能だが、面倒臭かったので。もしICが突然壊れたらこれが原因という事で対策の候補の一つになるだろう。

まずはブレッドボードで組んで実験した。ICに録音する際は、TVの音声を一旦PCに録音し編集してWalkmanに移し、Walkmanの出力をブレッドボードに接続した。PCから直接接続して録音してもノイズだらけで使い物にならなかったので、面倒だがこの手順を踏んだ。そしてテスト再生は見事に成功した。

こうして設計した回路をユニバーサル基板に組んだ。

この際、回路図上でHK829のMIC+、MIC-、MICG、/RECに接続されている部品はメッセージを再生する上では必要無いので省略した。

基板表
写真1: 基板表
基板裏
写真2: 基板裏

ケースはタカチのSW-85S。よくある72×47mmの基板の回路を収納するのにちょうどいい。

当初はモバイルバッテリを電源にしようと思っていたが、ケースに入りそうなモバイルバッテリを見つけられなかったので単4電池3本にすることにした。始めは電源電圧は5Vの想定で回路を設計していたが、データシートを見る限り4.5Vでも全てのICの定格電圧範囲に入っていたのでよしとする事にした。基板との接続はXHコネクタにして、道具を使わなくても着脱できるようにした。

電池ボックスと電源スイッチ
写真3: 電池ボックスと電源スイッチ
電源スイッチ拡大
写真4: 電源スイッチ拡大
XHコネクタ拡大
写真5: XHコネクタ拡大

ハンドグリップに付けるスイッチは秋月電子通商で売っていたSS-10GL13というレバー付きのマイクロスイッチにした。接点の定格はAC250V10.1Aで、機械等に使う工業用と思われる。ロジックのHigh、Lowを切り替えるという数mAオーダーの電流しか流れない用途には明らかにオーバースペックだが…。大きさやレバーがあることなどが今回の用途にちょうど良かったので選定した。

ハンドグリップはダイソーで25kgのものにした。ハンドグリップにスイッチを固定するのは、ホームセンターで配線を束ねるための金具を購入してスイッチのねじ穴に合うように穴を開けて加工した。

ケースにホームセンターで売っていた4mmの雄ねじが切ってあるヒートンを取り付け、ハンドグリップの輪の部分とカラビナで繋げた。

スピーカーは秋月電子通商で売っているDXYD50N-22Z-8A-F。5cm程度でフレームにねじ穴がついていてケースに取り付けるのが楽なのが選定理由。

ケース加工の寸法を下図に示す。

ケース加工図(スピーカー取り付け穴)
図2: ケース加工 蓋にスピーカー取り付け穴を開ける
ケース加工図(基板取り付け穴)
図3: ケース加工 底面に基板取り付け穴を開ける
ケース加工図(スピーカー取り付け穴)
図4: ケース加工 上面に電源スイッチとヒートン取り付け穴を開ける

図は省略したが、この他に電源スイッチとヒートン取り付け穴を開けた反対の面の中心辺りにハンドグリップに取り付けるスイッチの配線用の穴を開ける必要がある。

そして、基板に組んだ後で改めてブレッドボードでHK829と最低限の部品で回路を組み、試しにスピーカー端子に直接スピーカーを繋いでみたら、なんと結構な音量で音が鳴ってしまった。386のアンプ回路は要らなかったことになる。しかし今更基板を組み直すのも面倒なので、そのままにした。

完成写真を以下に示す。

完成写真
写真6: 完成写真
完成写真(蓋を開けた様子)
写真7: 完成写真(蓋を開けた様子)
完成写真(蓋を開けて上から見た様子)
写真8: 完成写真(蓋を開けて上から見た様子)
カテゴリー: 未分類 | 1件のコメント