The rev0Trac VTx APRS Transmitter is an all-in-one unit containing a GPS, 5W transmitter covering the US 2m amateur band, LCD and user interface, 2200mAH 2-cell Lithium Polymer battery, and USB interface for charging and firmware updates. The transceiver measures 106 x 47 x 38mm without antenna and weighs 167g.
The design of the rev0Trac VTx involved the creation and evolution of a 3D model, made in Autodesk Inventor. The batteries were modeled and used as the main size determinant for the PCB; the PCB should be no larger than, but need not be smaller than the batteries. The PCB was then decided to be as wide as the LCD (45mm) and as tall as the batteries. The power amplifier was positioned below the LCD, since it was too high to fit underneath the LCD. The GPS was positioned on a sub-board at 45 degrees with respect to the main PCB, to save space and allow the device to work well when positioned both horizontally or vertically. The scroll wheel and button were positioned, as well as the battery connector and SMA connector. The inductors were also modeled to ensure their fit beneath the LCD. A heatsink was then added to the design, positioned in the lower left corner beneath the power amplifier. The amplifier would be on as often as every 15s with an on-time of up to 3s, yielding a duty cycle of 20%. The amplifier dissipates up to 7.5W, as determined in the Power Amplifier testing, giving an maximum average dissipation of 1.5W. A 1.1" square heatsink was chosen, placed on the top side of the board below the power amplifier.
The system design follows directly from the individually tested modules. The microcontroller is an MSP430F5508, which takes in data from the GPS and user input and controls the transmitter IC, LCD, and amplifier. The battery is charged through the boost converter and LiPo charger IC, which are enabled when the device is plugged into a USB port. The analog modulation signal and gate voltage of the amplifier are controlled through a pair of 12-bit TI DAC7311 digital to analog converters, chosen for their small size and ease of interfacing. The output of the amplifier is fed through a Chebyshev low pass filter to reduce harmonics. The final circuit was designed for 7 mil spacing, 8 mil width, and 15 mil vias, and was manufactured by Imagineering, Inc.
The design files for v1.1 can be found here: http://www.rev0proto.com/files/rev0Trac_VTx_v04.zip
The custom Eagle library whose components were used in this design can be found here: http://www.rev0proto.com/files/custom.lbr
5/17/2012 - The microcontroller section was assembled and the device was plugged into a computer in bootloader mode to verify correct operation of the MCU section.
5/18/2012 - The remainder of the board except the GPS, LCD, and PA was assembled, and power was applied to the battery input. The boost converter and charger IC are enabled when the device is powered from battery, which should not be the case. The enable lines of these devices is tied to the USB VCC line, which is connected through a schottky diode to the 5V line. The diode is specified to have a 55uA leakage current. The enable inputs of the boost converter and charger IC are only 0.1uA and 0.01uA, respectively, well below the leakage current. Thus, these devices are active since the leakage current is more than sufficient to activate the ICs. The solution is to add a resistor of much less than 9.1k ohms, which would reduce the voltage below the 1.4V necessary to act as a logic low signal to both ICs. A 1k ohm resistor was added from the VUSBR line to ground, eliminating the problem.
5/19/2012 - The PA was soldered to the board and attached using two 1/4"-20 stainless machine screws, with a thermal pad and Arctic Silver 5 thermal compound to improve heat transfer. The board was then powered and loaded with a program to test the two DACs. The power amplifier control DAC was first set to output 3.5V, the nominal gate voltage during transmit operation. This test checked out, with the actual output being 3.481V. A heatsink was then temporarily attached to the PCB with some thermal adhesive strips, and the program was set to operate with a 13.3% duty cycle (2s on, 13s off), representative of the worst-case power dissipation the device will see. This resulted in a case temperature (measured at the base of the PA) of 50.5°C average, well within acceptable limits. The waveform DAC was then tested. After seeing no output, I inspected the PCB to find that the SCLK line was not soldered. After fixing that, the program was then set to generate 1200Hz and 2200Hz tones at 217mVpp, representative of the APRS 1s and 0s to be used in the final application. These waveforms were recorded before and after the low-pass filter and are shown below. The program was then set to generate a tone burst of 84 bits of alternating 1s and 0s, which was recorded and is shown below. The program was then modified to transmit a pre-defined bitstream, allowing the board to transmit its first APRS packet, as verified in MULTIPSK. The LCD and GPS were then soldered. When the board was powered, I discovered that the 3.3V rail was being shorted to ground. Inspection of the LCD and GPS showed that the footprint for the GPS was reversed. This was fixed by flipping the GPS 180 degrees and soldering a new 45 degree header to it and to the main board. The program was then updated to use the LCD. I discovered two circuit errors in my debugging; first, the data/command line of the LCD was not connected to any I/O pins, second, the reset line was left floating. I corrected these errors by tying the D/C line to pin P1.1 on the MCU, and shorting reset to Vcc.
5/20/2012 - The program was modified to receive and parse GPS data, and now displays Sattelites, Fix, UTC Time, Latitude, Longitude, and Altitude on the screen. Further testing has shown the LCD to have intermittent errors such as the screen blacking out, or the addressing being misaligned. The solution appears to be to tie the reset line to an I/O pin and perform a proper reset on startup. The program was also modified to use the ADC to read the battery voltage. A 5-point calibration was done, which shows an offset error of 20mV, now corrected in software.
- Off current: 615uA @ 8.14V
- On standby current: 31.2mA @ 8.14V
- Transmit Rise Time (0->3.15V): 5.0ms
- Transmit Fall Time (3.5->2V): 1.8ms
- Case temperature of PA with 13.3% duty cycle: 50.5°C
5/25/2012 - An issue was discovered with the LCD displaying garbage during/after transmitting a packet. This was resolved by preventing any LCD writes during the time when a packet is transmitted. This was caused by the interrupts (which require a large proportion of CPU time) breaking up the SPI transmissions to the LCD and causing erroneous data to be written.
5/29/2012 - The APRSGen program, originally written in Python, was modified to C, in order to format GPS data and other information into a packet and convert it into a bitstream that can be transmitted out as tones. This was then implemented in the microcontroller code, allowing transmission of real-time GPS data.
5/30/2012 - The transmitter was tested at a battery voltage of 7.78V on the CXA N9000A spectrum analyzer to measure harmonics, bandwidth, and output power. The results are summarized below:
|Specified power||Carrier power||2nd Harmonic power||3rd Harmonic power||4th Harmonic power|
Harmonics are more than -67dBc, easily meeting the FCC specification of -40dBc and spurious power <25uW for a <25W transmitter.
5/31/2012 - The program was modified to allow control of the output power via the push switch, cycling through 0.1, 0.5, 1, and 5W. Pre-emphasis was added to the 2200Hz tone to improve the copy on standard FM receivers. The amplitudes of the two waveforms are: .217V 1200Hz, .52V 2200Hz. The program was hard-coded to transmit on 144.390MHz so the packets can be put on APRS-IS via a temporary IGate using AGWPE and UI-View32. The LCD displays the current frequency (as a variable, so changes to frequency will be reflected on screen).
6/2/2012 - A new revision PCB was routed to include the fixes outlined below:
- Added trace from MCU to LCD RST line
- Added trace from MCU to LCD D/C line
- Added trace from MCU to LCD backlight PMOS
- Added 1k resistor to ground on VUSBR line
- Added tri-state buffer and header to accommodate an external GPS or serial UART connection