A leap second has been announced at the end of June 2012.
Chris asks what advantage GPS has over WWVB for my clock project. I don't have a good answer for that (except that having enough controls to select one of 4 mainland US timezones and whether to apply DST is undesirable). However, this did prompt me to do some googling about WWVB. I found some interesting links about generating WWVB signals at home.
"Third Hand" and decided to make my own. The main feature of my version is the two-part circuit board clamp. The clamps were manufactured with Chris's help on Jr, his new cnc milling machine.
Rob Seward's design, I decided to build my own random number generator based Will Ware's "avalanche noise in a reverse-biased PN junction" (try this mirror of Will Ware's page). Also important is turbid which introduced me to the concept of hash saturation and the math behind it.
The sensors are each about 1" by .5" and are connected to the arduino by a 3-pin header. The components on the board are very simple -- two 1M resistors. With a combination of software running on the microcontroller and in the PC, the sensor is made into a virtual slider.
Back in 2006, I got a PCI card from Futurlec with 3 8255 chips on it. I finally gave a serious effort at getting it to work, but as you'll read in the updated original article the board seems to simply be broken. Too bad!
For real-world use, external pull-ups should probably be added to the board's input side, according to the directions of the encoder manufacturer.
summary I promised a single, 800kHz quadrature divider for the attiny13. Well, I haven't done that yet (I don't have any attiny13s to test on anyway), but I have something else instead.
As I mentioned earlier, Chris had already milled a servo control board for his lathe. Like the Etch Servo board, it controls two servo motors with a single L298 chip. Unlike the Etch Servo, it has 3 encoder inputs (X, Z, and spindle). His servo motors have 500-line encoders and have a no-load speed of about 4000 RPM, while the spindle will have a 1024-line encoder with index pulse, but rotate slower (much less than 2000RPM when threading). 133kHz is too fast to count in the PC, but divided by 8 or 16 it's very managable.
mkstate.py is a Python program which generates a quadrature divider table. By changing 'N', 'M', 'x' and 'ux', it's possible to generate tables with different properties. After generating the table, a variety of tests are performed on it to verify that it is correct. Output can be a "C" array or a table of bytes for an assembler program.
qq2.S is a GNU assembler program that actually performs the quadrature division. According to my cycle counting, it polls at 470kHz when a 16MHz crystal is used, so it is expected to work reliably with a 133kHz quadrature signal. So far, though, it has been tested with a single motor spinning at hundreds of RPM.
mkstate.py and qq2.S are released as free software under the terms of the GNU GPL.
Files currently attached to this page:
All older entries
Website Copyright © 2004-2017 Jeff Epler