クオーツ時計を100倍速&リバースモード付きに改造してみた。
お疲れ様です。高橋です。
今日、奥さんから壊れた時計を貰いました。電池を入れ替えても針の進みが良くないとの事です。早速分解してみます。
時計の中身
裏蓋を外すと、ムーブメントが見えてきます。
さらに時針分針秒針と、ムーブメントを分解。
ムーブメント自体も分解。
そしてこの基板が時計のご本尊。電池からの+と-を受け付け、更に金属のケースに覆われた水晶を使って、裏側にあるコイル(電磁石)に定期的(時計なので1秒毎)に電気を流して、時計の針に達する磁石付きの歯車をピクッピクッと動かしています。
改造
Arduinoからは任意のタイミングで電気を流せるので、時計側の基板に付いている水晶は不要。なので、コイルから伸びている2本の線をArduinoから操作出来るように半田付けします。
とても細い線なので、慎重に一本目。
続いてもう一本も。
そして、歯車を元に戻し、時針分針秒針を挿して動作確認。電気を+と-を交互に入れ替えないと針が進みません。Arduino側でプログラムを書く際は、ここを気をつけないといけません。
この動画では、私自身が手動で発振子の役割と、プラスマイナスの電気の向きを交互に変えているのがわかると思います。
Arduino側から操作
配線は至って簡単で、コイルから伸びている2本の線を、適当なデジタルピンに挿します。今回はデジタル2番と4番に挿します。赤と白はどっちでも構いません。
そして、スケッチは下記の通りとなります。
int a = 2; int b = 4; bool isA = false; const int pulse_time = 20; int delay_milsec=1000; void pulse_reverse() { if (isA) { digitalWrite(a, HIGH); delay(50-pulse_time); digitalWrite(a, LOW); delay(pulse_time); } else { digitalWrite(b, HIGH); delay(50-pulse_time); digitalWrite(b, LOW); delay(pulse_time); } isA = !isA; } void pulse() { if (isA) { digitalWrite(a, HIGH); delay(pulse_time); digitalWrite(a, LOW); delay(50-pulse_time); } else { digitalWrite(b, HIGH); delay(pulse_time); digitalWrite(b, LOW); delay(50-pulse_time); } isA = !isA; } void setup() { digitalWrite(a, LOW); digitalWrite(b, LOW); pinMode(a, OUTPUT); pinMode(b, OUTPUT); } void loop() { pulse(); myDelay(); /* for(int i = 0 ; i < 10; i++) { pulse(); myDelay(); } for(int i = 0 ; i < 10; i++) { pulse_reverse(); myDelay(); } */ } void myDelay() { float input_delay = (float)map(analogRead(A4),0,1023,1,100)/100.0; if(input_delay > 0.6 ) input_delay=1; delay(delay_milsec * input_delay); }
aとbが2本の線を示すデジタルピンの番号です。どっちがどっちでも構いません。
booleanのisAは、aとbから交互に電気を流すためのスイッチ的役割です。
pulse_time はAとBに流す電気の時間的長さです。色々調整しましたが、20msecがちょうどいい感じでした。
delay_milsecは、電気を流す時の間隔です。時計なので、1秒に1回電気が流れるべきなので、1000msec(=1秒)にしています。
pulse_reverse() は、反時計回り、pulse()は時計回りです。
最初は10回毎に時計回りと反時計回りを交互に繰り返すプログラムを書いていたのですが、スイッチか何かでモードを切り替えようと思ったまま、結局面倒になってやめました。コメントアウトされている箇所は、それの名残です。
そして、myDelay()では、別途可変抵抗器(アナログ4番)から読み込む値を持って、針の速度を決定します。1倍~100倍までの速度が得られます。
配線
配線は下記の通りです。赤と白をデジタルの2番と4番のどっちに挿してもOKです。
針の進む速度を可変にしたいので、可変抵抗器の出力をアナログ4番に挿します。
最終動作確認
可変抵抗器をグリグリいじると、比例して針の進みが早くなります。
奥さんに見せた所、「全く役に立たない」というコメントを得ました。
個人的には
- トップをねらえ!ごっこ – ノリコとカズミがエクセリオンを宇宙怪獣の真ん中でブラックホール化させる時の地球時間と自分達の時間のズレ箇所を再現
- インターステラーごっこ – 秒針をモールス信号に合わせて動かせる
等の用途が見込めると思っています。
参考サイト: Arduinoで時計にいたずら
以上、よろしくお願い致します。
関連記事
-
-
耳コピミキサー 試作
お疲れ様です。高橋です。 iPhoneから流す音と電子ピアノから流す音を合成する …
-
-
Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験
お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …
-
-
シフトレジスタLED付きのYMZ294回路をFritzingに起こしてみた。
お疲れ様です。高橋です。 ユニバーサル基板で作ったYMZボードと、音階LED及び …
-
-
【完成】ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン
お疲れ様です。高橋です。 苦戦していたArduinoIDE1.6.4を使ったAT …
-
-
上司離着席検知システムと空巣検知
お疲れ様です。高橋です。 前回のおさらいと課題 前回の「上司離着席検知システムの …
-
-
Arduino電源ON/OFF機
お疲れ様です。高橋です。 Arduinoを使っている時、特に2個とか複数同時に使 …
-
-
YMZシールドの基板設計 #2
お疲れ様です。高橋です。 先日行ったYMZシールドの基板設計の設計図を元に、部品 …
-
-
4桁7セグLEDを基板に実装
お疲れ様です。高橋です。 昨日に引き続き今日も奇跡的に早く帰宅する事が出来たため …
-
-
大掃除を終え、aitendoで30円で売ってたタクトスイッチ基板でクリスマス
お疲れ様です。高橋です。 aitendoで店頭限定30円だったタクトスイッチ基板 …
-
-
aitendoで買った4桁7セグLEDを使う
お疲れ様です。高橋です。 aitendoの4桁7セグLED aitendoで1個 …
Comment
[…] Arduinoに書き込むプログラムはこちらを参考に自作してみました。 […]
[…] Arduinoに書き込むプログラムはこちらを参考に自作してみました。 […]
[…] Arduinoに書き込むプログラムはこちらを参考に自作してみました。 […]