I built this satellite tracker which tracks any sat of choice, points the antennas appropriately and corrects its doppler frequencies while receiving or transmitting. It also shows the position on a world map and birdview.
First I experimented with my 68010 CPU board with a TFT color screen, but this was irritating slow. So I decided to move on to the 68020 processor.
Overview of the hardware in the opend enclosure. Visible is the mainboard, containing the MC68020RC20 CPU, and a bandcable to the TFT screen in the front. Next to it a small board with four pushbuttons. In the back a 12V powersupply and a DC converter to 5V/3A.
- use as few components as possible
- minimal 2 serial ports, some parallel IO and ticker under interrupt
- real time clock on board
- full color TFT screen 480×272 pixels (or bigger)
- two serial ports: 9k6 for the rotor interface, and 4k8 for NMEA GPS data
- runs under Microware’s OS9
Design and schematics:
Main components on the board are a mc68020 processor running at ~30MHz, 2 Eprom 512kB x 8bits, offering 1MB ROM, 2 RAMs AS6C4008 512kB x 8bit, offering 1MB ram, a mc68681 DUART (including some parallel in- and outputs and a ticker), and some glue logic. This is mainly incorporated in a GAL 20V8B, and some additional TTL for address decoding, and interrupt priorities, a MAX232 RS232 converter and 2 x 74LS245 for interfacing the TFT screen. Since only irq4 is used, I could have left out the ‘148 8to3 encoder, for even less chips. But is was already on the board..
The contents of the GAL 20V8 is included in 020tft.eqn. Some tricks are used to minimise the design: resetting the CPU officially needs /HLT and /RTS taken low and would take an extra output of the GAL. But is resets perfectly with only /RST asserted. FC2 is not used, FC1/0 are enough. /BERR is not needed to signal buserrors, but to handle autovectoring, in combination with the addressspace (only A19). See the 020 manual for this. The ‘164 is used for delaying the ack but is not used (I think).
The 68020 sizes its bus on what the peripheral can offer: 8, 16 or 32 bits wide. The processor presents the amount of bytes it wants to read or write on the 2 outputs SIZ0/1, and the peripheral (ram, rom, IO) answers by asserting DSACK0 and/or DSACK1 depending on the size it offers. I used 16 bits wide EPROM and RAM, so dynamic bus sizing was easy. The IO is also 16 bits wide, of which only the lower 8 bits are actually read or write by the IO. Apart from the low level bootfile in Eprom, the system also has a rom disk in the eproms, know as /dd under OS9 and in which OS9Boot and a set of tools is stored (devs, irqs. mfree, exbin, attr and some more). On the RTC board, obtained via Ebay, the 24C32 8k I2C eeprom chip is replaced by the pin compatible 24C512 to increase the storage from 8k to 64kB. This is needed to store settings, but mainly also the kepler datasets of >150 satellites. The I2C reading and writing is implemented as an OS9 driver (and device descriptor /c0), using the 5 input and output pins of the mc68681. I2C is used for reading and writing of the RTC (via its own driver) and the eeprom. Not very convenient since these inputs and outputs are on separate pins, but I did not want to add another IO-chip. Apart from this some registers in the the mc68681 are common for the ports and the timer/ticker. And since these registers are read-only, you need to keep a mirror in global ram where all drivers have access to.
The device on top is my GPS-controlled 10MHz frequency standard, described elsewhere on this site. For the satellite tracker application, it delivers LAT/LON position of the station, and the time. The bottom device is my Arduino based (loosely following K3NG) antenna tracker, azimuth and elevation. In the middle is the 68020 satellite tracker shown, picturing an auto zoomed location of satellite CO-55.
Standard view after initialization is the list of sats, sorted on current elevation. The ones above the horizon show yellow, the others blue. Since at the moment more then 150 (!!) sats are in the NASA-TLE file, this screen consists of multiple pages, from elevation +90 down to -90 (when hanging over New Zealand). Interfacing is done with 4 buttons: up/down the list, select sat and step through display mode, and back to the list. When a specific satellite is shown, tracking is possible, both antenna (via RS232 Yaesu protocol) and doppler, via up/down pulses.
Here the spot of ANTELSAT. In the bottomline shows the sats name, azimuth and elevations, distance and time in UTC. The map shown is autozoomed, but it is possible to zoom from worldwide up to 64x. When zoomed in, borders are shown.
Apart from a spot view also a bird-view is implemented. Here you see what Lapan A3 sees of the world that moment.
Credits to Matjaz Vidmar S53MV whose map routines I used.