I have worked on a number of micro controller projects using PIC18 devices, here are some examples:-

Robot Car

This car was designed to follow a black lane painted on a light background. It had optical IR sensors back and front to detect the presence of black and white. It also had ultra sonic sensors front and back to detect the presence of an object. The robot was fitted with left and right stepper motors to control the drive. The firmware was designed for the robot car to travel forwards following the black line until the ultra sonic sensor detected an object less than six inches away. In which case the car would switch to reverse and follow the black line backwards until a rear object was detected. The whole project was designed, built and fully tested within three weeks.

Robot Car


 Anniversary Reminder

 The purpose of the Anniversary Reminder is to provide a convenient and automatic reminder of anniversaries, with appropriate messages and sound. The unit will constantly display a reminder of the number of days passed since a birthday or anniversary. This display will probably be attached to a static picture as shown On the yearly anniversary of the event, from 9am in the morning to 6pm at night the unit will output the first few lines a simple musical cerebration of the event such as "Happy Birthday To You". Again the whole project was designed, built and fully tested within a few weeks.



Swimming Pool Controller

This unit was designed to monitor and control a domestic swimming pool installation. It monitors all relevant temperatures to control the solar panel switching. The algorithm was tuned to obtain the most heat from these panels without ever cooling the water when the sun temperature is weak. It also switches the pump on and off and monitors the water pressure. During the winter it controls a fan heater to prevent frost damage while switching on the pump in severe conditions. All information is data logged and stored. It is a standalone unit fitted within the pump house but linked to a PC situated within the house via a wireless link, using two XBEE units. The house PC runs a VB application to monitor the results and graphically display the data as shown in the attached picture. The application also allows remote control of all pool equipment to override the automated functions. All electronics, firmware and VB application was designed / written exclusively by myself and completed with 6 weeks.

 IV Drip Scales

This device is used to measure the volume of fluid used by one or more drip bags fed into a patient. The measurement sensor is a load cell that feeds a 24bit ADC. The displays consist of two LCD screens, one to give the volume used by the current drip bag and the other to give the volume used over multiple drip bags. The unit contains both hardware and software averaging to prevent vibrations from the IV pump from effecting the accuracy and ensuring stable display readings. Powered from an external 9V DC supply or internal rechargeable batteries. Control is via a simple infer-red sensor to avoid touching the scales.




Medical Application

 This device was designed to control the exposure of MS patients to blue light at specific points in time to regulate their circadian rhythms (sleep cycle).  Switches will be mounted to the hinge on the glasses so that it can be determined if patient was wearing them when the LED's were on.

 The device had to meet the following specific targets

  • The device must record the times when both micro switches are switched on
  • Resolution to be at least every second.
  • Data must be stored in non volatile memory.
  • Control the on /off periods of two separate LED's  
  • Programming of On/Off times via a USB interface.
  •  Upload of data to be also via a USB interface. Memory big enough to hold at least 4 weeks worth.
  •  Battery powered that should last at least 1 week
  • The battery should be rechargeable and charged and via the USB port

  A picture of the prototype module is shown below, together with the PC user interface screens to upload the data and to program the LED events.

 Medical Device




 The design has now been implemented on a custom PCB and production units are being assembled.


Audio Player

The application was to read audio files from a FAT32 formatted SD card and play then through a low power amplifier. This was successfully implemented as a prototype module and is currently being evaluated by the customer 


LED Map Simulation

This project was to design  an LED control system that would simulate the flashing navigation buoys situated in harbours and estuaries.  The LED's would be fitted within a map of the particular coastal area  of interested and each one would flash on and off exactly matching the flash rate of each navigation buoy.  The system I designed could support up to eighty LED's organised into twenty groups of four. Each group could then be programmed with an individual flashing characteristic.  The overall brightness of the LED's is controlled by a pulse width modulation method using the current ambient light detected by a light sensitive resistor. The over setup of each groups timing is programmed from a user friendly VB windows application via a USB interface. 

 Harbour Map


Waveform Player

The unit will be used primarily to test and demonstrate multi channel data acquisition set-ups such as oscilloscopes and transient recorder systems/ data loggers. Once the instrumentation is set up and configured to the correct settings the "Waveform player" unit would be used to give "real" signals to the system to check that trigger levels, time bases and amplitude levels are set correctly. The signals to be replayed will be saved waveforms that have previously been captured by similar data acquisition systems. The unit will have four channel outputs that can all output individual waveforms at a fixed 1M/s rate simultaneously. The waveforms will be read from an SD card that can be inserted directly into the unit. All operations will be from one micro controller that has a user interface that consists of a few buttons and an LCD display.
The control for this high speed function was complex and required the use of a high speed gate array in conjunction with the PIC micro controller. The four layer PCB is very dense with SMT components fitted to both sides. The prototype has now been approved by the customer and currently a production batch is being built.







Laser Game


This is a game to align mirrors to direct a laser to a target