Tom2000's
Home Page

Howdy!

Welcome to my home page.

Here you'll find some freeware I wrote for the PC, and a nifty little microcontroller project that you can build. I'm also trying to chronicle some of my experiments with microcontrollers, but I'm afraid that my web site is far behind the progress I've made on my workbench. I'll try to catch up.

I've completed my codewheel generator program. It works really well. Now let's see if anyone is interested in homebrewing optical quadrature encoders, rotary encoders, wheel encoders for robots, or anything else one can imagine. If so, this is the tool for you.

From my searches, I think that my codewheel program is unique on the net. At least, when I needed something like this, I was unable to Google one up. This program might actually fill a void.

I've recently written a couple of small routines that might be of interest to radio hobbyists, and currently have a major program in development, also aimed at radio hobbyists.

The two new programs are an experimental audio CW keyboard. This program hasn't been fully developed so, at this time, it's of marginal usefulness. But it might be of use to some users experimenting with VOIP ham radio systems.

The other program, my most recent publiication, is an HF propagation forecasting tool. By itself, the program's clumsy input limits its day-to-day utility. However, the program is only a demo shell and verification test routine for the propagation calculator. For this project, I've posted the source code, so you can easily incorporate the calculator into your own programs. (I'm using this engine in the project I'm currently building, but the new version will be front-ended by a very spiffy graphic interface.)

Other freeware posted here include an MP3 player, a controller program for the TenTec RX320 shortwave receiver, and a general-purpose logging program for radio hobbyists of all persuasions.

I'm leaving the article on Turbo Delphi Express serial communications on this page, since it solves a widespread problem. I don't want to make it hard to find. I've removed my Delphi VU Meter class, though. I may put it back if and when I ever build a general-interest Delphi page.

On the microcontroller front, I've published a design for a nifty Intervalometer/ Timer/Remote shutter control for digital cameras. This is a little project that you can build that will add lots of capability to your photography.

Interested? Just scroll down this page to the Remote & Intervalometer project.

To send me e-mail, click here. My email address is tom2000@mindspring.com.

This site was last updated on March 31, 2011. I removed obsolete programs Newlog, B-Log, and Scan320.

 

 

Site Contents

 
Freeware for Windows PC's

 
MicroMUF HF Propagation Calculator, with Source Code

(February, 2010)

Here's an HF Propagation calculator that will be of use to ham radio operators and shortwave listeners. After entering the latitude and longitude for the source and destination stations, then the month and the current solar flux value, the program will calculate the Maximum Usable Frequency (MUF) and Lowest Usable Frequency ((LUF) for the desired path. The program also calculates the azimuths, distance, and the number of hops.

The best news is that I've included the source code for this project, including the source for the calculation engine originally designed by the BBC and Radio Nederland. (This program was originally published to the net as MicroMUF.BAS.) Having the code for the engine will make it very easy for you to add propagation calculation to your own software, or build yourself a stand-alone calculator.

I used this engine in a previous freeware program of mine, the long defunct Scan320DB program. I gave it a thorough test, for about three years, for my shortwave listening. The engine provides very realistic results. Which is why I'm using it, unchanged save for a spiffy graphic front end, in my new log project currently in development.

 

 
Codewheel Generator Program

(June, 2008)

I recently started working on a little microcontroller project to control a wideband RF synthesizer. My design required a rotary optical quadrature encoder to control the tuned synthesizer's tuned frequency.

Unfortunately, suitable quadrature encoders are very expensive. Even through surplus channels, a good encoder would cost more than I paid for the synthesizer kit. Although the price isn't prohibitive, paying more for a control than I did for the device it's controlling offends my engineering sense.

So I investigated the possibility of building my own quadrature encoder.

The first thing a homebrew encoder needs is a good codewheel. Generating a wheel image, and printing it out to transparency stock on my home inkjet seemed like the simplest approach to a cheap codewheel.

When I began searching for a codewheel generator program on the net, I was really surprised to find that there really wasn't anything available. I thought that homebrew codewheels would be such a logical idea that there would be many wheel generator programs out there.

I began to hack something out, quick and dirty, just to generate the wheel I needed. But I thought about the problem in larger terms, and realized that the reason that hobbyists don't seem to build their own encoders might be the unavailability of cheap codewheels. (Commercial codewheels, by themselves, cost just about as much as a complete surplus quadrature encoder.)

So I thought that if I wrote a versatile general-purpose program, folks might start trying their hand at their own optical encoder projects. I did, and I think the program came out pretty well.

It runs on Windows 98, 2000, XP, and Vista, and, like my other PC software, this program is free for your personal, non-commercial use.

The program will generate seven different wheel types, up to eight tracks per wheel. There are lots of options for size, configuration, and resolution. And once your wheel design meets your needs, printing is a snap. Just give it the print command, and the wheel will print at your design size, with no muss, no fuss. Want a 1.75 inch diameter wheel? Just specify that size, and your printed image will also be 1.75 inches in diameter.

The program is very easy to use. Although I've provided a help file, you can probably get right to work without even reading it.

If this program sounds interesting to you, click the image to jump to my codewheel page.

 

 
Tom's MP3 Player

Ok... so the name isn't very clever. But the player is pretty cool. Give it a try!

 

 
AI-1 Photograhic Remote & Intervalometer Project

(August, 2007)

After a fairly intense month of steady spare-time work, my integrated digicam Remote & Intervalometer project is complete and, at least on the breadboard, a smashing success. I'm delighted with the results.

I was unable to implement the project on either a Picaxe 18X or the newly-released Picaxe 28X1. The interface was just too much for even the 4k of program memory available to the user in the 28X1, no matter now efficiently that processor uses program memory (and it does use its memory efficiently.)

A couple of weeks ago, I stumbled across the Arduino processor. It's an AVR ATmega168 28-pin processor with the Arduino bootloader installed. The bootloader lets a user program the processor over a serial link using free development software, just as the Picaxe does. It has a lot more memory, though, making it a good candidate for this project. It met my two goals. First, anyone can duplicate the project without having to buy any expensive development hardware and software and second, it has the capability to actually bring this project to completion.

Well, it does, I did, and it did. :-) The project is now finished, and it looks very good. Click the sketch to the left to visit my AI-1 Remote project page.

 

 
Pic and Picaxe

I've discovered the wonderful little PIC microcontrollers manufactured by Microchip, and have started gearing up to incorporate them into projects. Along the way, I discovered a very interesting PIC variant, the PICAXE, that allows one to build projects containing an embedded processor, but requires no external programming hardware.

I've posted an introduction, and the progress of a PICAXE-driven project that I'm currently designing: an all-in-one remote control unit for a digital camera that incorporates a wired remote, wireless remote, an intervalometer for time lapse photo sequences, and shooting at the command of an external trigger signal. You can follow my adventures with embedded processing on my Picaxe page.

As of this date (July 27, 2007), I've completed the design -- at long last!! -- and have posted it. Click the sketch, below, to go to my AI-1 Remote Project Page.

On the PIC front, my trusty old Easy ICD2 programmer packed it up and died. I bought a fancy new USB PIC programmer, but it was non-functional upon arrival. I'm trying to resolve the issue now, but until I do, my PIC activity has stalled dead. Which is OK, I guess, since I've been devoting all my spare time to the intervalometer project lately, anyway.

 

 
Serial Communications for Turbo Delphi Explorer

In a non-Delphi forum, I raised the topic of CodeGear's free Turbo Explorer packages, specifically Turbo Delphi. It's a very capable package, easily worth many dollars, but CodeGear is giving it away. I thought everyone should know about it.

The only hitch is that none of the Turbo Explorer packages support components.

A component is a pre-packaged piece of software that installs easily, becomes just another component (like a button, edit box, label, etc) that you can select from the IDE while developing software. Components, either those widgets provided as part of the package or those provided by third parties, are what make Windows software development so easy in Delphi.

With one exception, the inability to use third party componenents isn't a problem for Turbo Delphi users. Borland provides a component for virtually any need. As I said, except one. And, depending upon an individual's needs, that one exception might be a real "gotcha."

That one exception is serial communications capability.

Delphi doesn't natively support serial communications. Until the Turbo packages came along, that wasn't a problem. Those of us using the traditional ($$$) Delphi packages would just obtain and install one of the many third-party serial communications components and go about our business. No muss, no fuss.

Well, one of the folks in that forum happened to be a big serial communicator. (He uses Visual Basic, which, I understand, supports serial communications very well.) He'd taken a look at Turbo Delphi, but discarded it because he couldn't write serial comm programs with it. In a response to my posting, he really panned Turbo Delphi for that reason.

I looked into the problem for him.

I posted an enquiry on Borland's news server (newsgroups.borland.com) in the borland.public.delphi.language.delphi.win32 newsgroup. "SteveJG" was kind enough to post the following response:

"The following references an article on how to use Dejan Crnila's tool to control a radio transceiver but the technique will work for any RS232 project. You might find it useful.

"Go to http://www.arrl.org/qexfiles/ and download the program and text files associated with “Turbo Delphi Explorer: Develop Amateur Radio Projects for Windows with a Free Compiler.” that appeared in September 2007 QEX magazine, the download file is called 9x07_Gradijan.zip "

I did as Steve recommended. However (did I mention that I'm rusty in Delphi? <g>), trying to figure how to install that code as part of a users app, then explain it to a Delphi novice, was somewhere I didn't want to go.

I searched some more, finding nothing that specifically addressed the problem for Turbo Delphi Explorer users. Howver, I did find a simple polled serial communications algorithm developed for Turbo C++ by the folks at SimpleSerial.com.

It's a simple communications package consisting of just a few functions that any Turbo C++ user can include right into a program. Great! But that doesn't solve the problem for Turbo Delphi Explorer users.

I translated the C++ code into Delphi's Object Pascal code, tried it out, and was surprised to see it work right away. And the limited testing I've given it seems to indicate that it works well.

I'm not sophisticated enough to test the difference between the simple polled serial method and the threaded and overlayed code in the library Steve referenced. But the simple method works, at least, and is easy to include in your own programs.

So, Turbo Delphi Explorer users, thanks to the folks at SimpleSerial, you can now incorporate serial communications capabilities into your Turbo Delphi programs.

Many thanks to the folks at SimpleSerial for solving this problem!

 

Download the SimpleSerial Delphi Communications Code