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
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.
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.
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.
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.
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:
"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!
|