Tuesday, January 28, 2020

6-inch jumbo radio-controlled LED clock/timer

Large radio-controlled 7-segment blue LED clock

First completed: 2013

This was my A2 Level Electronics project, and the objective of this project was to create a clock/timer/stopwatch for a big hall which was large and bright enough to be clearly visible from across the hall. It also needed to synchronise the time automatically, like a radio-controlled clock.

Emphasis was placed on support electronics in my design because it was undesireable for A2 Electronics projects to focus too much on software.

Power supply selection

As good power efficiency over a wide range of operating voltages was desireable, an efficient regulator was required.

A linear regulator such as the 7805 simply turns "excess" voltage into heat, so if the LEDs required 5V, and the power supply was 20V, the regulator would only be 25% efficient. A switching regulator uses an inductor to efficiently step the voltage down with low losses. The MC34063 switching regulator was selected to ultimately power the LEDs because of its low cost, good availability, and 500mA current rating, which was adequate for the task.

The MC34063 is a rather old switching regulator operating at a low frequency compared to modern ones, but it was fine for this application and it was still a lot more efficient than a linear regulator. The low frequency also meant that the layout of the circuit had little effect on the performance of the switcher.

I tested the efficiency of this regulator with two different supply voltages. Despite the stripboard construction, the efficiency figures were not far off that in the datasheet. 2020 note: Constructing a modern high-frequency switcher this way will totally decimate its performance, based on the author's experience.

Switching regulator efficiency
Switching regulator on stripboard

Microcontroller architecture

This was one of the author's first Arduino projects and very ambitious for the author's skill level at the time, so the design was simplified a little by delegating the task of decoding the radio-controlled time signal to a PICAXE microcontroller. PICAXE was the first ever microcontroller system used by the author - it is a family of pre-programmed PICs running a special BASIC interpreter and aimed at the educational market; it's too slow to handle all functions of the project, but its key feature of being very easy to configure as an I2C slave made it a perfect fit for the task of handling the radio controlled time decoding. The ATmega328p microcontroller handled almost everything else, except the timekeeping, which was delegated to a DS1307 RTC and backed with a coin cell to allow immediate display of the (roughly) correct time on power-on.

System block diagram

At the time, the author was new to the Arduino/AVR platform, so some of the handy features of the platform, like interrupts, were neglected. The C program runs in a big loop: checking the buttons, performing I2C bus operations, and lighting up each of the six digits one at a time. This was not a real problem though, as the Arduino libraries provided handy functions like millis() to help with timing and there weren't any operations that took a long time to execute.

Radio controlled time (MSF / Time from NPL) signals on oscilloscope

The PICAXE decodes the Time from NPL using the bit-bang method and places it into "scratchpad" (a large block of memory inside the PICAXE that can be read by the I2C Master); the signal was essentially a serial signal with a baud rate of 10. The demodulation from 60kHz was done using a commercial off-the-shelf receiver.

Hardware development

The first prototype was built on breadboard using small 7-segment displays along with an additional microcontroller programmed to simulate the output signal from the radio controlled time receiver; the signal is susceptible to noise, making development using the real receiver difficult.

Prototype of the radio-controlled clock built on breadboard

The circuit was then built up on stripboard to make it permanent along with the addition of the transistors required to drive the big displays, which would be added later. A brightness selector switch was implemented by switching a second trimpot in parallel with the switching regulator's feedback resistor. This board was initially tested with small displays.

Control electronics built on stripboard undergoing testing

The display was made from a sheet of acrylic cut on the laser cutter. All 408 LEDs were pushed in and soldered by hand.

LEDs being pushed into the sheet of acrylic

The stripboard assembly was attached to the back of the display.

Picture of the stripboard assembly mounted on the back of the display with all major parts labelled

Summary

The project met its design goals; all intended functionality (clock, stopwatch, countdown timer and radio controlled synchronisation) were implemented and worked, and the display was bright and readable even outside.

Picture of the big clock outside

The power consumption of the display was tested over a wide range of supply voltages. The maximum power consumption with all segments on was 4W.

The code is available on GitHub. The code is extensively commented, but as one of my first Arduino projects, it's far from a shining example of C programming.

Tuesday, January 21, 2020

PSoC USB 3.0 Current Meter



Completed project photo
Completed project photo
First completed: June 2018

This project is a USB current meter based on the Cypress PSoC 5 microcontroller. The PSoC is an innovative microcontroller which combines a CPU with a small amount of programmable digital logic and some advanced analogue peripherals.

The objective was to implement it using as few external components as possible, by utilising the advanced peripherals built into the microcontroller. I also wanted it to support USB 3.0, because many USB power meters only support USB 2.0, meaning they cannot be used to measure the operating current of devices plugged into a USB 3.0 port - a typical use case is seeing if a phone increases its charge current to 900mA when plugged into a USB 3.0 port. Another objective was that the update speed needed to be fast, since many commercial meters have a very slow refresh rate. Additionally, it needed to support higher voltages than normal USB, so that it could be used to measure the voltage of "fast" chargers.

PSoC 5 microcontrollers are only available in surface-mount packages, so I've chosen the CY8CKIT-059 development kit so that I can build the circuit on stripboard.

To avoid potential signal integrity issues, I cut into a cable and just connected the power lines to the stripboard instead of adding my own USB connectors to the board. The current sensing is done using a 0.05-ohm resistor (the metal strip next to the cable) which is connected directly to two PSoC pins, and the voltage sensing is done using a normal potential divider connected to a third pin. The PSoC is powered from a 3.3V regulator in the TO92 package. Finally, the 7-segment displays are connected via current limiting resistors. The display is multiplexed to reduce the number of I/O required.

Top view of stripboard assembly
Bottom view of stripboard assembly

The PSoC design is very simple. The peripherals are easily configured using a block diagram. The differential delta sigma ADC is used to measure the current. The input range and gain can be configured to allow even small voltages to be measured with good precision. The successive approximation ADC is used for the single-ended USB voltage measurement. Both ADCs can use internal voltage references, which should prevent the supply voltage from affecting the ADC readings.


In addition to the block diagram, the CPU needs some code to handle the remaining functions: responding to the ADC ISR, filtering the readings, and converting the readings into digits to display on the 7-segment displays. The LED Driver takes care of the display multiplexing, so there's no need to program a timer ISR for that.

The project met the goals, and it can accurately measure the current and voltage of a USB connection. The PSoC microcontroller enabled a high level of integration not normally possible with traditional microcontrollers, which would enable the PCB to be made much smaller should size be a design consideration.

It should be noted that the delta sigma ADC is only included on the higher-end PSoC chips, and that the lower-end chips have a lot less peripherals and programmable logic. The CY8CKIT-059 is a loss leader with the PSoC chip itself being more expensive, so you must trade off cost for convenience and board space when selecting the PSoC. You can now (2020) buy a USB 3.0 power meter for less than it would cost to build this PSoC-based meter, so the PSoC may not be the best choice for a product where cost is important. I do however think the PSoC is a great fit for low-volume high-margin products, with or without size constraints.

Insertomatic 6000 Part 4: Finishing up

Summary of the Insertomatic 6000 One Raspberry Pi 3 + three Pi Zero 2 Ws fully networked using USB Gadget 6 analogue RF channels in t...