〜 懐かしい速度警告装置を作ります 〜
コンセプト
1・実際の音と間隔を再現する
2・当時と同じく105km/hを超えると警報音(キンコン)が鳴る
3・できるだけコンパクトにする
まあ早い話が、当時と同じものを目指します


★ 恐怖のキンコンチャイム製作だ コロン ★

実際の音を簡単に出すのは
本物を使えば良いので
ヤフオクで落札!でもプレミアで高いのよ
動作は、12Vを印加すると、キンと鳴り
印加をやめると、コンと鳴った。

とりあえず中身がどうなっているのか
気になったので分解
なんてことは無い
ただの電磁式のソレノイド機構であった
戻りはスプリング・・・・単純。

ケースに入れてみた
いちおう分解したので
キレイに収まっている

さっそく回路を考えてみた
パルスをマイコンに入力して
一定のパルス数をカウントしたら
キンコンと鳴るようにする。



インターネットで検索すると、
車速信号はJIS規格で、60km/hで637palse/min
だが各社パルス数の精度を上げるためn乗でパルス数を
増やしているようです。

60km/h 637p/min × 1 →  637p/min
60km/h 637p/min × 2 → 1274p/min
60km/h 637p/min × 4 → 2548p/min
60km/h 637p/min × 8 → 5096p/min
60km/h 637p/min × 16 → 10192p/min

でも大部分は×4倍との事。
ネット社会とは便利ですな。

上記より
105km/h = 4459p/min = ですので1秒間に74.3166・・・・・・
パルス以上カウントすれば105km/h以上となるのですが、
それでは1秒ってケッコウ長いので
0.5秒間での計測にしました、したがって
105km/h = 37.15833・・・・・・p/0.5sec

0.5秒おきにパルス数をカウントして
37パルスより多くカウントしたらキンコン鳴らせば
おk




なかなかいい感じです
でもキンコンの音の間隔が分からず
アニメの頭文字Dを見て
時間を調節しました。
うーんいい感じ



///////プログラムです///////

$regfile = "ATtiny45.dat"
$crystal = 1000000
Config Portb.0 = Output			'NC
Config Portb.1 = Output			'NC
Config Portb.2 = Input			'SIGNAL
Config Portb.3 = Output			'BEEP
Config Portb.4 = Output			'NC
Config Timer0 = Counter , Edge = Rising
Stop Timer0

Do

Timer0 = 0
Start Timer0
Waitms 500
Stop Timer0

If Timer0 > 36 Then			'PALSE >= 37
Gosub BEEP
End If

Loop
End

BEEP:
Portb.3 = 1
Waitms 444
Portb.3 = 0
Waitms 666
Return


何でか?分からないが極たまにミスカウントし
何でも無い時に、キンコン鳴る時がありました。
どうしてか?分からず試行錯誤していたら、
あるサイトで、パルス信号線にコンデンサを接続し
ノイズ除去しているのを発見!
マイコンがノイズをカウントしていたのですネ
単純だったのですが、気づかないものですね。
実はこの発見までに、2週間かかりました。
コンデンサを追加したら、アッサリ正常動作
まあ、こんなもんです。

ついでに、動作確認するのに一般道ではすぐに105km/hは出せないので
60km/hと105km/hでキンコンするように、切り替えスイッチを付けました

105km/h, 60 km/h の時、20パルスカウントする時間は
105 km/h = 269.1186364655752410854451673734 msec/20p
60 km/h = 470.9576138147566718995290429036 msec/20p

したがって、チェック間隔時間は、0.269 秒間隔でチェックするので
前よりは更新間隔は早くなってます。
実用にも全然問題無く いい感じです。
キンコーン キンコーン キンコーン



'////////////  PROGRAM  X4  ////////////

$regfile = "ATtiny45.dat"
$crystal = 1000000
Config Portb.0 = Output			'NC
Config Portb.1 = Output			'NC
Config Portb.2 = Input			'SIGNAL
Config Portb.3 = Output			'BEEP
Config Portb.4 = Input			'60 or 105km S/W
Config Timer0 = Counter , Edge = Rising
Dim T As Word				'60km, 471msec / 105km, 269msec
Portb.4 = 1				'Pinb.4 Pull UP
Stop Timer0

Do

If Pinb.4 = 1 Then
T = 471					'60km 471msec
Else
T = 269					'105km 269msec
End If

Timer0 = 0
Start Timer0
Waitms T					'60km, 471msec or 105km, 269msec
Stop Timer0

If Timer0 > 19 Then			'PALSE >= 20
Gosub BEEP
End If

Loop

End

BEEP:
Portb.3 = 1
Waitms 444
Portb.3 = 0
Waitms 666
Return

'////////////  PROGRAM  X4  ////////////




前のページに戻る