Sign in to follow this  
Followers 0
littleclown

Project: Software Vibrograph/timegrapher to test watches

8 posts in this topic

#1 ·  Posted (edited)

Hello. This is not a request for a script - just an idea.

For thous who don't know Vibrograph or timegrapher is a hardware tool and with it you can precisely mesure how accurate is your mechanical or quartz watch. The idea is simple - this tool have a microphone and "listen" the tick-tack-ing of the watch and measures the periods. After a couple of seconds tells how accurate is the watch. It precisely measure the time between tick-tack-s. By default mechanical watches are not very accurate and cheap ones have +20 second per day.

My idea is can we make a tool that record and count the ticking of the watch for a bigger period - for example 10 minutes. With simple formula you can calculate how accurate is this watch, and make the corrections (normally there is a setting on the balance).

I have no problem with the math. My question is - can I use autoit to record and analyse the sound of the watch? I test with normal web microphone and there is a tiktak sound, but the graph is full with noise, and I am not sure how to filter and count ticks.

See what this guy do about it:

http://www.watchtalkforums.info/forums/o...e-mini-project-poor-mans-vibrograph.html

See the real hardware example of this tool:

http://www.timegrapher.com/tymc/mtg_5000L.html

I am watch enthusiast and I am sure a simple software tool like this will help thousands people like me.

Thank you in advance for your help!

Edited by littleclown

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

I missed this post when it appeared, but better late than never.

I believe you can do that in AutoIt, even if you'll have to beg someone else' advices for recording and filtering the sound. With an ounce of drive, it shouldn't be very hard anyway.

What I question is that you're likely going to compare the regulated quartz of some Omega watch (not the worst available) with the unregulated quartz of a PC, most probably much more subject to transients than the former. If you're a watch enthousiast, then you know that quartz isn't just quartz. The type, cut, enclosure, age, temperature, shocks, humidity, pressure, vibrations, all affect a given Xtal and those dedicated to watches are specialy selected for minimizing the mid-term variations in frequency for everyday use.

If you're serious about measuring something you should aim at measuring short-term, mid-term and long-term frequency drift (all three) in a reasonable temperature range (very important for quartz and mechanical calibers alike) against a clock source of known characteristics. Understand that a stock PC isn't usable alone.

I enjoy running a small calibration lab with 3 atomic clocks (Rubidium only, due to cost of Césium clocks), 2 Trimble GPS time receivers and a quartz reference oscillator, all merged in a dual Napoleon-hat configuration to minimize much of drifts causes. I also enjoy having an SR620 timer/counter which, driven by this reference frequency (10 MHz) can count/time with less than 100ps short- and mid-term accuracy. Last time I calibrated it against the HP Césium clock of a nearby friend (I also enjoy that!), it was at 60ps/h and 85ps/week accuracy, well below specifications.

Granted my personal setup is probably a bit too much (and probably too expensive) for such simple measures but, from experiments made with that good reference, I can assure you that stock PC show _huge_ variations in frequency (at any term) and that they definitely cannot be used for any accurate time-based measure.

Now are you going to chase watch drift at ns/s, ms/minute, s/month ??? That makes a big difference. That a wrist watch shows ample variations in the very short-term doesn't mean these fluctuations don't compensate correctly on the average in the mid-term. It may as well show little drift at body temperature but go wild below (or above). And so on.

I'm certainly not a watch specialist, but I assume that watch makers tend to compromize toward mid-term stability over a decent temperature range (a wristwatch is in contact with air _and_ your arm) and conditions (gravity, pressure, ...). Drawing any conclusion about drift over a 10s measure duration (see one of the link you posted) is completely meaningless from this point of view and shows a clueless amateur.

So, while your idea has some feasability, it will require at least one "good enough" reference clock source to produce meaningful results.

Look around, you can find used GPS time receivers (e.g. Trimble one) in good shape for less than an arm and a leg. Also have a look at the timenuts mailing list where you'll find experts to ask questions about timing in general (and hobbyists like me as well, when they have ... time!).

Edit: here is a thread you might find of interest

Edited by jchd

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Share this post


Link to post
Share on other sites

Hello. Sorry for the huge delay, but I didn't monitor the topic for a long time.

I talk just about mechanical watches, and I need to know the accuracy with 2 second tolerance (this is an error 0.001 seconds for 1 minute of measurement)

The issue is that autoit (and the computer itself maybe) is slower than that and this error goes bigger than 0.001 seconds for 1 minute

I found this func:

Func _mciSendString($lpszCommand, $lpszReturnString, $cchReturn, $hwndCallback)

Return DllCall("winmm.dll", "long", "mciSendStringA", "str", $lpszCommand, "str", $lpszReturnString, "long", $cchReturn, "long", 0)

EndFunc ;==>_mciSendString

this gave me the level of microphone noise. I can start a loop for monitoring the mic noise and when this hear a noise it can record the time in miliseconds, and after some ticks just to math the results. But every autoIT line get some miliseconds. The DLLCALL get some more, and everything goes really inacurate. This is the issue now.

Share this post


Link to post
Share on other sites

Yeah, and multitasking (including system and services components) make the all thing even worse, as you have little control over that.

What I was talking about in my previous post is that any clock (independant of the tehcnology it uses) has some drift over any time period. What's important in your case isn't the short-term drift (say within one minute), but the drift over something like a week and in usage conditions (temperature, acceleration due to wearing it, altitude, atmospheric pressure).

Millisecond error within a minute doesn't tell you much about the week drift, as mechanical parts imperfection can completely offset that drift at some point, or worsen it dramatically.

I really can invest much time in this issue, but you might have more repeatable success with another approach: use a relatively fast sampling (AdlibRegister will be useful) over a suitable time period and record the samplings so that you can restore the actual noise variations. This requires that the sampling rate be a non divisor of the clock's tick rate. If you collect enough samplings, you can determine the actual expectable noise peak value, pluse width and rise/fall times. Once you have a good idea of how the tick pulse looks like, you can probably determine its period with better accuracy than the way you expose. I didn't experiment such a setup myself, so take what I write with a grain of salt! Anyway, an AdlibRegistered function with just a dllcall and storage of the value in a pre-allocated array sould be very fast of a stock PC.


This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Share this post


Link to post
Share on other sites

Its strange but I open the post just to edit my previus post about the idea to analyse the sound, but not to detect noise from the mic :graduated:.

I just record some noise and look at the wave after that. The resolution of the raw sound file is impressive! :(. OK. Now I need to record a sample, and analyse the sound after that. I will search in the forum for ideas, but if you have something in mind, you are welcome :D. Recording is the easy part. The sound analyse will be tricky. In parallel I try to develop a mic with amplifier to amplify the ticks and to have a big difference between a tick and silence. This will help to detect ticks after that.

The issues about watch accuracy - I know there are a lot of variables like position, temperature, power reserve - i am a watch fan actually :D. But this issues exists when you use professional vibrograph too. My target is not to create the perfect machine, but to know is one clock moves + 20 seconds per day or 5 seconds per day. This will help me to set my watches collection to work better :D.

Thanks again. Its cool to see enthusiasts like you in the net :D

Share this post


Link to post
Share on other sites

Hello.

I have some progress, but don't have time to finalize this project.

You can find all related files here: http://strelki.info/vibro.zip

I use a lot of code from this forum, and a lot of my own ideas.

linco command line recording tool is in the package too.

Share this post


Link to post
Share on other sites

And one sample result from the tool

post-15972-0-21942000-1299064916_thumb.j

Share this post


Link to post
Share on other sites

Gentlemen, two and a half year later from your last post, is there any progress about Vibrograph Software? I'm also interested in this topic, some time ago this idea appeared in my mind, and I tried to find is there any Software solution on Internet... but nothing for now.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0