This page provides information and photos to aid in the construction of the Pinewood Derby Timer (PDT). The focus for this page is on the PDT hardware and circuits. Refer to the Software page for details on how to configure/load the Arduino sketch (software) and interface to software running on a PC.
The following subjects are covered:
- Parts List
- Finish Line Bridge
- Circuit Construction
- Place / Time Displays
- Power Requirements
- Start Gate Solenoid
- Adafruit 1.2" Displays
The tables below list the components required to build each part of the PDT. Refer to the schematics for the layout of each circuit. The ID of each component in the tables below corresponds to the designator shown on the schematics. Note that the quantity needed for some components is dependent on the number of lanes of your track.
The following components are needed to build the core PDT circuit.
The following components are needed to build the detection circuits needed to register when the cars cross the finish line and optionally display each car's place order and race time.
Remote Start Components
The following components are needed to build the optional remote start gate release circuit that allows the start gate to be release via computer (software) control.
Finish Line Bridge
The finish line 'bridge' (or 'arch') holds a light (LED) directly over each lane which shines light on a corresponding detector (phototransistor) mounted on (or under) the track. As cars pass between the lights and detectors the PDT registers the elapsed time for each lane. Optionally the bridge can also contain a digital display over each lane to show the place order and elapsed time of the cars as they finish the race.
The design of the finish line bridge will be heavily dependent on your particular track and can range from the strictly utilitarian to the artfully designed. A sample of PDT designs is shown below and you can visit the Timer Builds page for more examples.
Here are a few things to consider when designing your finish line bridge:
Timer circuit: The timer's 'brain', an Arduino Uno microcontroller with the PDT circuit, must also be housed in the finish line enclosure or be placed in a nearby control box.
Cable connections: Wiring connections to the PDT are the following:
- a 2-wire cable to the track's start gate (4 wires if utilizing the optional solenoid start-gate circuit)
- a USB cable (for connection to a PC) if using race management software
- a power supply connection (if needed by the number of displays)
Bridge height: For maximum reliability the distance between the lights (in the bridge) and the detectors (on or below the track) should typically be set between 5 and 9 inches (13 and 23 cm). Your track's construction and your derby's ruleset (maximum car height, for example) will also be factors to consider.
Light / detector mounting: Care should be taken that each lane's light and detector are exactly in line with one another. The design for this will be heavily dependent on your track and bridge design but LED holders - which can be found at Amazon or any general electronics store - could be helpful.BACK TO TOP
Although optional the shield PCB simplifies the construction of a PDT by providing mounting and wiring points for the various components. It has the standard Arduino shield format that allows it to be stacked directly on top of the Arduino microcontroller board. Most of the instructions below refer to the use of the shield PCB - if this is not the case for your build simply refer to the schematic for the appropriate Arduino Uno pin number for each connection.
The headers used to mount the shield to the Arduino microcontroller board are standard break-away 0.1" male header strips. The strips can be cut to length using a utility knife or wire cutters. Two sets of 8 pin headers are needed for the top and two sets of 6 pin headers are needed for the bottom. The two left-most header holes on the top of the PCB board (highlighted red in the picture below) are not utilized for the Uno and do not require headers.
The headers should be mounted so that the black plastic 'body' is on the bottom of the PCB board (in between the PCB board and Arduino when the shield is mounted) as shown below on the left. Note that the headers are only soldered to the PDT shield PCB and simply slide into the Arduino's female headers as shown below on the right (partially mounted on an Arduino):
Power and Status LEDs
The white/clear status LED (5mm RGB) has four (4) leads and should be orientated so that the flat spot (on the base of the LED) is facing to the right. The red power LED (3mm) has two (2) leads and should also be oriented so that the flat spot (on the base of the LED) is facing to the right. The LEDs can be soldered directly to the shield PCB or attached via wire if they will be mounted on the outside of the bridge or project box.
The corresponding current limiting resistors (CLRs) for the LEDs are mounted in the resistor spots labeled 'Power' and 'Status'. The CLRs in the base component package available from this site are sized to the specifications of the status and power LEDs. If you source your components elsewhere, please refer to the note below regarding calculating the CLR values.
The two reset switch positions are designed to utilize small 6mm tactile button switches. If an enclosure is used the wire leads from any momentary switch can be soldered to the PCB in place of the tactile switches. The Arduino reset switch resets the microcontroller board (a complete 'reboot') and isn't normally used. The PDT switch has two uses and should be accessible for normal use. Its main use is to reset the status of the timer. Its secondary use is to enter the hardware test mode during startup and to step through each stage of the test mode. Refer to the Software page for information about the hardware test mode.
Start Gate Bus
This 4-pin bus (2x2) is for connecting the PDT to the start gate circuit(s). A small 2x2 male or female header can be utilized or wire leads can be soldered to the PCB that go to another connector or the start gate itself.
The start gate circuit utilizes the normally closed (NC) terminal of a simple snap switch. The switch should be mounted so that the closed start gate (pre-race) engages the switch (opening the connection) and releases the switch (closing the connection) when the start gate is opened (at race start). A switch mounted on a BestTrack track is shown to the right.
The pins in this bus are:
- GS - Gate switch connection.
- Gnd - Ground for the gate switch connection and the optional solenoid start circuit.
- V - 5V power for the trip side of the optional solenoid start circuit - cannot be used to operate the solenoid!
- Sol - Solenoid signal from the PDT for the optional solenoid start circuit.
A diagram of the start gate switch connection is shown below (click to enlarge):
The six 3 pin busses (1x3) are for connecting the PDT to the lane light and detector circuit(s). A small 1x3 male or female header can be utilized or wire leads can be soldered to the PCB that go to another connector or the lanes themselves. The pins in each bus are:
- Sig - Signal from the lane detector (phototransistor).
- Gnd - Ground for the lane light (LED) and detector (phototransistor).
- V - 5V power for the lane light (LED).
A diagram of a lane light/detector circuit for lane 1 is shown below (click to enlarge). Note that the CLR for each lane's light (LED) goes on the PCB in the spots indicated. This circuit would be repeated for each lane of the timer:BACK TO TOP
Place / Time Displays
The optional Adafruit 1.2" 7-segment displays are mounted in the finish line bridge over each lane to display the place order and elapsed time of each car as it finishes the race. Normally only one display per lane is supported but if your track has four or less lanes the PDT sketch can be modified to drive two displays per lane - this allows a display on each side of the finish line bridge for each lane. Another dual display option is to have a Adafruit 8x8 matrix display showing the finish order on the same side as the 7-segment display showing the finish time.
The Adafruit 0.56" 7-segment display and backpack are shown in the picture above. When mounting (soldering) the display onto the backpack make sure it is correctly oriented so that the display's decimal points are at the bottom of the backpack (near the lettering) - see the picture above.
When there is more than one lane each display needs its own address so that the PDT can communicate the correct information to each display. Changing an address is done utilizing a set of three jumpers on the display's circuit board - see the yellow square in the above picture. Using the table below determine the jumpers that need to be set for each display and use a blob of solder to connect the jumper's pads.
Note: Use the first lane column for the normal display configuration (up to 6 lanes), use the second column for the two displays per lane option (front & back, up to 4 lanes). The default address of the Adafruit display is 0 so nothing needs to be done for the lane 1 display.
WARNING: If utilizing the Adafruit 8x8 matrix displays for the dual display option to show the place order, be aware that the A1 and A2 labels are swapped on the PCB board for the display.
Display Dimmer Potentiometer
The display dimmer position on the shield PCB can utilize any (small) 3-terminal potentiometer. The resistance value is not important since it is being utilized as a voltage divider. Linear taper would be preferred to audio taper but either would work.
This 4-pin bus (1x4) is for connecting the PDT to the optional displays. A small 1x4 male or female header can be utilized or wire leads can be soldered to the PCB that go to another connector or the displays themselves. The pins in this bus are:
- V - 5V power for the displays. Please refer to the section below regarding the possible need for an external power supply (depending on the number of displays).
- Gnd - Ground for the displays.
- SCL - Clock signal for the displays.
- SDA - Data signal for the displays.
A diagram of the optional display circuit is shown below (click to enlarge).
I2C Splitter Board
The I2C splitter board is an optional PCB that aids in wiring the displays in parallel. It can be utilized with the optional pre-made jumper wires or by soldering wires directly to the board. Note that the left side of the PCB has two spots for the connection to the PDT - utilize the spot that matches the revision number of the shield PCB you are using.BACK TO TOP
There are two ways to power the PDT/Arduino:
- via the USB connection
- via an external power supply using the DC jack and on-board regulator on the Arduino
The first option, using the USB connection, should only be used for very simple setups - no displays or only 1 lane with a display.
The second option, an external power supply, is the recommended setup. But even with an external power supply the power requirements of the displays and the capability of the on-board 5V regulator of the Arduino should be taken into consideration when utilizing three or more displays. To maximize the output and reliability of the on-board regulator use a power supply with an output voltage as near to 7V as possible (but don't go below 7V).
Reducing the maximum brightness of the displays can also be used to limit the power draw of the circuit. The table below summarizes the power draw of one display for various brightness levels. Note this is for the worst-case scenario with all LED segments lit. Refer to the PDT manual for instructions on how to set the maximum brightness of the displays.
PDTs with 5-6 lanes and displays will need to power the displays with a separate power supply and regulator (always maintain a common ground with the PDT/Arduino circuit).BACK TO TOP
Start Gate Solenoid
The optional solenoid (and supporting circuit) allows the start gate to be opened remotely (usually via software).
MORE INFORMATION TO COME.
Adafruit 1.2" Displays
The standard PDT construction optionally utilizes the Adafruit 0.56" displays for showing each lane's place order and finish time. The digits on the displays are 0.56" tall and are similar to the displays utilized on other timers.
In some cases, it is desirable to have larger displays. An option for this is the Adafruit 1.2" display which, with a little work, can be utilized by the PDT timer. The photo below shows a 1.2" display compared to a 0.56" display (the measurement in each case indicates the height of the digits).
The 1.2" displays are setup almost identically to the 0.56" displays as described on the Construction page. There are two differences: one is the 1.2" displays have an extra pin in its header - it is labeled V_IO. This pin should be connected to +5V - one option is to simply connect it to the neighboring +5V pin on the header as shown below:
The other difference is because the only decimal point on the display is on the top - the display must be mounted/used upside down as shown below:
Since the 1.2" displays must be used upside down the corresponding Adafruit library must be modified to drive the displays correctly. You will need to modify the following file (change 'USERNAME' below to your Windows username):
Find the definition for 'numbertable' and change it to the following:
0x3F, /* 0 */
0x30, /* 1 */
0x5B, /* 2 */
0x79, /* 3 */
0x74, /* 4 */
0x6D, /* 5 */
0x6F, /* 6 */
0x38, /* 7 */
0x7F, /* 8 */
0x7D, /* 9 */
0x7E, /* a */
0x67, /* b */
0x0F, /* C */
0x73, /* d */
0x4F, /* E */
0x4E, /* F */
Then find the definition for 'Adafruit_7segment::writeDigitRaw' and change it to the following:
if (d > 4) return;
displaybuffer[4-d] = bitmask;
Finally, you will need to enable the LARGE_DISP parameter in the PDT sketch as described on the Software page.
Although they are bigger the 1.2" displays do not draw more power than the 0.56" displays. The power considerations are the same, refer to the power section on the Construction page.BACK TO TOP
Last updated: 21 Dec 2020