curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

クオーツ時計を100倍速&リバースモード付きに改造してみた。

 

お疲れ様です。高橋です。

今日、奥さんから壊れた時計を貰いました。電池を入れ替えても針の進みが良くないとの事です。早速分解してみます

IMG_5110

時計の中身

裏蓋を外すと、ムーブメントが見えてきます。

IMG_5111

IMG_5112

さらに時針分針秒針と、ムーブメントを分解。

IMG_5115

ムーブメント自体も分解。

IMG_5116

そしてこの基板が時計のご本尊。電池からの+と-を受け付け、更に金属のケースに覆われた水晶を使って、裏側にあるコイル(電磁石)に定期的(時計なので1秒毎)に電気を流して、時計の針に達する磁石付きの歯車をピクッピクッと動かしています。

IMG_5117

改造

Arduinoからは任意のタイミングで電気を流せるので、時計側の基板に付いている水晶は不要。なので、コイルから伸びている2本の線をArduinoから操作出来るように半田付けします。

IMG_5119

とても細い線なので、慎重に一本目。

IMG_5120

続いてもう一本も。

IMG_5121

そして、歯車を元に戻し、時針分針秒針を挿して動作確認。電気を+と-を交互に入れ替えないと針が進みません。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です。

IMG_5129

針の進む速度を可変にしたいので、可変抵抗器の出力をアナログ4番に挿します。

最終動作確認

可変抵抗器をグリグリいじると、比例して針の進みが早くなります。

奥さんに見せた所、「全く役に立たない」というコメントを得ました

個人的には

  • トップをねらえ!ごっこ – ノリコとカズミがエクセリオンを宇宙怪獣の真ん中でブラックホール化させる時の地球時間と自分達の時間のズレ箇所を再現
  • インターステラーごっこ – 秒針をモールス信号に合わせて動かせる

等の用途が見込めると思っています。

参考サイト: Arduinoで時計にいたずら

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

FM音源YM2203をArduinoで鳴らしたい #1

お疲れ様です。高橋です。 きっかけ 4月から現在に掛けてのコロナな最近、会社のと …

Arduino+EEPROM+YMZ294で曲の抜き差し

お疲れ様です。高橋です。 I2Cの256KBitなEEPROMに曲データを書き込 …

上司離着席検知システムの開発

お疲れ様です。高橋です。 下記、フィクションでイメージです。 背景 何かしらの相 …

YMZシールドの作成 #1

お疲れ様です。高橋です。 実体配線図を書き起こしておいたYMZシールドの半田付け …

aitendoのArduino用生シールド基板を1枚120円で買った。

お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …

マウスを入力I/Fとして使うのを断念してみた。

お疲れ様です。高橋です。 先日の「マウスを分解してみた」でマウスを分解し、ケーブ …

マウスの位置座標を使った電子楽器を作ってみた。

お疲れ様です。高橋です。 先日分解したマウスを使って、位置座標の取り出しと、取り …

ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン

お疲れ様です。高橋です。 先日実験したArduinoで赤外線リモコンの問題点、そ …

iPhoneでルンバを操作してみたい

お疲れ様です。高橋です。 突然ですがiPhoneでルンバを操作したいと思います。 …

耳コピを簡単にするミキサー構想

お疲れ様です。高橋です。 私が普段耳コピをする時は、iPhoneで音楽を鳴らしな …