|
★ 恐怖のキンコンチャイム製作だ コロン ★ | |
実際の音を簡単に出すのは 本物を使えば良いので ヤフオクで落札!でもプレミアで高いのよ 動作は、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 //////////// |