|
Time Display unit for a GPS module |
|
I decided to build a device to permanently display accurate time received from a cheap GPS module installed in my workshop.
Having obtained a PIC18F1320 microcontroller for experimentation, I wanted to learn about the new features of the PIC18F range using only minimal hardware to control the display.
I am currently using it with the on-chip 8Mhz oscillator only and driving a six digit led display, multiplexed with further saving of chip pins by a technique pioneered by Charlie Allen of Maxim-Dallas for their MAX6951 LED display drivers called “Charlieplexing” (see their application note AN1880).
I would have liked to have used a MAX6951 chip for better display brightness, but they appear to be only available in "Quarter Size Outline Packages" (QSOP) - the leads are very close together,not easy to experiment with.
Another alternative would be to use a MAX7219 display driver, this chip has a serial interface and an option to adjust the display brightness - something I may try later.
Features
Simple design, few components, no surface-mount types.
UTC time configurable to different time zones with DST option
Low power consumption
Uses modern Microchip PIC 18F1320 microcontroller
Selectable 12 or 24 hour time display modes
Leading zero blanking option
AM/PM indication in 12 hour mode
GGA and RMC sentence status indication
Circuit Description
The microcontroller receives serial data from a GPS module at the standard rate of 4800 Baud.
It parses the NMEA 0183 Standard data sentences, looking for only two types of sentence – RMC and GGA. (These sentences must be sent by the GPS module every second for it to work.)
The RMC sentences include date and time information and GGA has Time and number of satellites received (no date information).
The serial time data sentences are only usually accurate to within a second, so a separate 1pps pulse from the GPS module is used to sync the seconds transitions.
(Note. Some GPS modules do not have a 1pps pulse output, these will not work with the current project firmware ).
(It has been tested ok with a Holux GM-82 module with TTL logic serial outputs.)
The controller drives the three (high efficiency) dual LED digit common cathode type display segments through series 510ohm resistors to help limit the current to remain within the 25mA per pin drive limit, together with the multiplexing action which effectively reduces the average current.
A disadvantage of this method is with the multiplexing and drive current limitations, the display is not very bright, requiring the use of high efficiency LEDs to achieve an acceptable brightness.
It is possible to increase brightness by the use of separate driver transistors for the display cathodes - but my initial tests found this produced some switching radio interference. (the MAXIM chips overcome that problem by using slew-limiting on their switching transistors).
Because the display cathodes share the same microcontroller outputs as the segments, the multiplexing action also switches outputs into high impedance (input mode) in addition to to high and low logic levels depending on which segments/cathodes are being driven.
Using the on-chip oscillator frees-up the two pins normally used for connecting a crystal to be used as ports instead.
Another extra (input only) port could have been gained by not using the MCLR pin – I decided not to do this as it can apparently cause problems when used with some types of PIC programmers (according to some web forum posts).
There are two tactile pushbuttons for configuration – a “SET” button to enter config mode and an “UP” button to increment the config values also show the date and number of satellites received.
The transistor (T1) Diode (D1)and resistor (R6) are provided to allow the unit to work with GPS modules that output the serial data using RS232 voltage levels. My GPS module outputs data at TTL logic levels (0-5v) so I have not used those components on my board yet (I will test it later by connecting to a PC emulating a GPS module).
The power requirements are very simple, It consumes less than 50mA with a 9V DC input (the 7805CT 5v regulator could be replaced with a smaller 78L05 type to save space).
The 470uF capacitor (C3) is only required if your DC power supply is not already smoothed.
Operation
When power is first applied, the display shows start-up information, including the project name and firmware version.
On receipt of 1pps pulses it will then show zeros while it waits for the GPS module to get valid satellite time. (this can take about a minute).
As soon as it has obtained valid data, it shows the time.
The red LED flashes to indicate the second pulses received from the GPS module.
Satellite time is UTC (GMT) time so there are options to change this:
Pressing the SET button will enter set-up mode and show an option to change to DST (Summer time) one hour advance.
The next press of the SET button allows the Time Zone offset (up to +/-15 hours) to be changed.
The next option toggles 12/24 hour time display mode.
The fourth option toggles leading zero blanking.
Changed settings are saved in eeprom and retained when switched off.
There are no other config options yet – I may add more later...
The DP led next to the second digit indicates an RMC sentence is detected ok.
The DP led next to the fourth digit indicates an GGA sentence is detected ok.
The DP led next to the last digit indicates time is PM (in 12 hour mode)
Firmware info
The firmware for this project is written in assembler language. The 18F1320 controller has 8Kb of memory, allowing up to 4096 instructions.
The current firmware occupies only about 25% of the available memory.
I found a few advantages to using 18F controllers, such as easier control of memory – no need to keep changing memory banks for accessing registers etc. and the additional commands make it easier to perform some tasks.
The downside is that some things are a bit more complicated – small tables are now not so simple because every entry uses two bytes of memory (It does provide some powerful commands for working with tables though).
The extra complexity added to some features such as interrupts and timers etc. can cause a few slight problems,requiring careful studying of the data sheets.
In addition to reading the 18F1320 datasheet, a more detailed coverage of 18F features can be found in the 976 page PICmicro® 18C MCU Family Reference Manual (39500a.pdf) which is available from the microchip website.
Another useful document is Application Note AN716 which explains the differences encountered when migrating from 16F to 18F devices.
I have a few ideas to expand the software features for this project and/or use them in future projects – when I have time..
Files/Firmware
You will require a PIC programmer compatible with the PIC18F1320 microcontroller.
If you don't have one - there are various articles on the web for constructing a simple serial port "JDM" type programmer. Good Freeware programmer software is easily available - such as "IC-Prog" or "WinPic800".
I shall update the file version here as features are added/bugs fixed etc.
The initial version of the program HEX file (v0.1) (04/06/2006) is HERE (right-click then "Save As")
(Note. This is a beta software version - still being tested etc)
I do not release the ASM source code for this project.
PCB Layout
The circuit is small enough to construct on stripboard, Or you may wish to try the double sided pcb layout design provided.
The microcontroller and displays should be mounted in sockets. Sockets for the displays can be made by carefully cutting-off the ends of 0.6 inch wide 24 or 28 pin ic sockets so they just have 18 pins (or cut some 18 pin 0.3 inch wide sockets down the middle).
If you decide to make the double sided pcb,the "toner transfer" method can be used (search for instructions on the web) - you will need to position both sheets on the pcb very accurately to achieve good results.
I have included some alignment marks in the pcb artwork and the topside sheet is already mirrored ready for printing.
I used a bright light to help align the two sheets together accurately.
PCB vias will have to be made with short lengths of wire soldered between pcb sides.
Many component leads will require soldering on both sides of the pcb - you need to leave a small gap between sockets and the board to allow access to the topside pads for soldering.
|
|
|
|
Accurate LC Meter
Build your own Accurate LC Meter (Capacitance Inductance Meter) and start making your own coils and inductors. This LC Meter allows to measure incredibly small inductances making it perfect tool for making all types of RF coils and inductors. LC Meter can measure inductances starting from 10nH - 1000nH, 1uH - 1000uH, 1mH - 100mH and capacitances from 0.1pF up to 900nF. The circuit includes an auto ranging as well as reset switch and produces very accurate and stable readings. |
|
PIC Volt Ampere Meter
Volt Ampere Meter measures voltage of 0-70V or 0-500V with 100mV resolution and current consumption 0-10A or more with 10mA resolution. The meter is a perfect addition to any power supply, battery chargers and other electronic projects where voltage and current must be monitored. The meter uses PIC16F876A microcontroller with 16x2 backlighted LCD. |
|
|
|
60MHz Frequency Meter / Counter
Frequency Meter / Counter measures frequency from 10Hz to 60MHz with 10Hz resolution. It is a very useful bench test equipment for testing and finding out the frequency of various devices with unknown frequency such as oscillators, radio receivers, transmitters, function generators, crystals, etc. |
|
1Hz - 2MHz XR2206 Function Generator
1Hz - 2MHz XR2206 Function Generator produces high quality sine, square and triangle waveforms of high-stability and accuracy. The output waveforms can be both amplitude and frequency modulated. Output of 1Hz - 2MHz XR2206 Function Generator can be connected directly to 60MHz Counter for setting precise frequency output. |
|
|
|
BA1404 HI-FI Stereo FM Transmitter
Be "On Air" with your own radio station! BA1404 HI-FI Stereo FM Transmitter broadcasts high quality stereo signal in 88MHz - 108MHz FM band. It can be connected to any type of stereo audio source such as iPod, Computer, Laptop, CD Player, Walkman, Television, Satellite Receiver, Tape Deck or other stereo system to transmit stereo sound with excellent clarity throughout your home, office, yard or camp ground. |
|
USB IO Board
USB IO Board is a tiny spectacular little development board / parallel port replacement featuring PIC18F2455/PIC18F2550 microcontroller. USB IO Board is compatible with Windows / Mac OSX / Linux computers. When attached to Windows IO board will show up as RS232 COM port. You can control 16 individual microcontroller I/O pins by sending simple serial commands. USB IO Board is self-powered by USB port and can provide up to 500mA for electronic projects. USB IO Board is breadboard compatible. |
|
|
|
|
ESR Meter / Capacitance / Inductance / Transistor Tester Kit
ESR Meter kit is an amazing multimeter that measures ESR values, capacitance (100pF - 20,000uF), inductance, resistance (0.1 Ohm - 20 MOhm), tests many different types of transistors such as NPN, PNP, FETs, MOSFETs, Thyristors, SCRs, Triacs and many types of diodes. It also analyzes transistor's characteristics such as voltage and gain. It is an irreplaceable tool for troubleshooting and repairing electronic equipment by determining performance and health of electrolytic capacitors. Unlike other ESR Meters that only measure ESR value this one measures capacitor's ESR value as well as its capacitance all at the same time. |
|
Audiophile Headphone Amplifier Kit
Audiophile headphone amplifier kit includes high quality audio grade components such as Burr Brown OPA2134 opamp, ALPS volume control potentiometer, Ti TLE2426 rail splitter, Ultra-Low ESR 220uF/25V Panasonic FM filtering capacitors, High quality WIMA input and decoupling capacitors and Vishay Dale resistors. 8-DIP machined IC socket allows to swap OPA2134 with many other dual opamp chips such as OPA2132, OPA2227, OPA2228, dual OPA132, OPA627, etc. Headphone amplifier is small enough to fit in Altoids tin box, and thanks to low power consumption may be supplied from a single 9V battery. |
|
|
|
|
|
Arduino Prototype Kit
Arduino Prototype is a spectacular development board fully compatible with Arduino Pro. It's breadboard compatible so it can be plugged into a breadboard for quick prototyping, and it has VCC & GND power pins available on both sides of PCB. It's small, power efficient, yet customizable through onboard 2 x 7 perfboard that can be used for connecting various sensors and connectors. Arduino Prototype uses all standard through-hole components for easy construction, two of which are hidden underneath IC socket. Board features 28-PIN DIP IC socket, user replaceable ATmega328 microcontroller flashed with Arduino bootloader, 16MHz crystal resonator and a reset switch. It has 14 digital input/output pins (0-13) of which 6 can be used as PWM outputs and 6 analog inputs (A0-A5). Arduino sketches are uploaded through any USB-Serial adapter connected to 6-PIN ICSP female header. Board is supplied by 2-5V voltage and may be powered by a battery such as Lithium Ion cell, two AA cells, external power supply or USB power adapter. |
|
200m 4-Channel 433MHz Wireless RF Remote Control
Having the ability to control various appliances inside or outside of your house wirelessly is a huge convenience, and can make your life much easier and fun. RF remote control provides long range of up to 200m / 650ft and can find many uses for controlling different devices, and it works even through the walls. You can control lights, fans, AC system, computer, printer, amplifier, robots, garage door, security systems, motor-driven curtains, motorized window blinds, door locks, sprinklers, motorized projection screens and anything else you can think of. |
|
|
|