Posted on 2 Comments

Goodmans Quadro 902 Composite Video Mod

CRT Module
CRT Module

Here’s the CRT & it’s drive board removed from the main chassis. Nicely modular this unit, all the individual modules (radio, tape, TV), are separate. This is effectively a TV itself, all the tuner & IF section are onboard, unlike in other vintage units I’ve modified, where the tuner & IF has been on a separate board. There’s a 3-pin header bottom centre for the tuning potentiometer, and external antenna input jack. The internal coax for the built in antenna has been desoldered from the board here. here a the usual controls on the back for adjusting brightness, contrast & V Hold, all the other adjustments are trimmers on the PCB.
Unfortunately after 30+ years of storage, this didn’t work on first power up, neither of the oscillators for vertical or horizontal deflection would lock onto the incoming signal, but a couple of hours running seemed to improve things greatly. The numerous electrolytic capacitors in this unit were probably in need of some reforming after all this time, although out of all of them, only 21 are anything to do with the CRT itself.

Anode Cap
Anode Cap

Here’s the anode side of the unit, with the small flyback transformer. The rubber anode cap has become very hard with age, so I’ll replace this with a decent silicone one from another dead TV. The Horizontal Output Transistor (a 2SC2233 NPN type) & linearity coil are visible at the bottom right corner of the board. Unfortunately, the disgusting yellow glue has been used to secure some of the wiring & large electrolytics, this stuff tends to turn brown with age & become conductive, so it has to be removed. Doing this is a bit of a pain though. It’s still a little bit flexible in places, and rock hard in others. Soaking in acetone softens it up a little & makes it easier to detach from the components.

Neck PCB
Neck PCB

There’s little on the neck board apart from a few resistors, forming the limiting components for the video signal, and the focus divider of 1MΩ & 470KΩ feeding G3. No adjustable focus on this unit. There’s also a spark gap between the cathode line & ground, to limit the filament to cathode voltage. The flyback transformer is nestled into the heatsink used by the horizontal output transistor & a voltage regulator transistor.

Tube Details
Tube Details

The CRT is a Samsung Electron Devices 4ADC4, with a really wide deflection angle. It’s a fair bit shorter than the Chinese CRT I have which is just a little larger, with a neck tube very thin indeed for the overall tube size.
Unusually, while the filament voltage is derived from the flyback transformer as usual, it’s rectified into DC in this unit, passing through a 1Ω resistor before the filament connection. I measured 5.3v here. The glow from the filament is barely visible even in the dark.

Electron Gun 1
Electron Gun 1

The electron gun is the usual for a monochrome tube, with 7 pins on the seal end.

Electron Gun 2
Electron Gun 2

The electrodes here from left are Final Anode, G3 (Focus Grid), Accelerating Anode, G2 (Screen Grid), G1 (Control Grid). The cathode & filament are hidden inside G1. In operation there’s about 250v on G2, and about 80v on G3.

Chipset
Chipset

The chipset used here is all NEC, starting with a µPC1366C Video IF Processor, which receives the IF signal from the tuner module to the left. This IC outputs the standard composite signal, and a modulated sound signal.
This then splits off to a µPC1382C Sound IF Processor & Attenuator IC, which feeds the resulting sound through the two pin header at the right bottom edge of the board to the audio amplifier in the chassis.
The composite video signal is fed through a discrete video amplifier with a single 2SC2229 transistor before going to the CRT cathode.
The remaining IC is a µPC1379C Sync Signal Processor, containing the sync separator, this is generating the required waveforms to drive the CRT deflection systems from another tap off the composite video line.
From this chip I can assume the unit was built around 1986, since this is the only date code on any of the semiconductors. Besides these 3 ICs, the rest of the circuit is all discrete components, which are well-crammed into the small board space.
There are 5 trimmer potentiometers on the board here, I’ve managed to work out the functions of nearly all of them:

  • SVR1: IF Gain Adjust
  • SVR2: H. Hold
  • SVR3: V. Size
  • SVR4: B+ Voltage Adjust
  • SVR5: Tuner Frequency Alignment? It’s in series with the tuning potentiometer in the chassis.
PCB Bottom
PCB Bottom

The PCB bottom shows the curved track layout typical of a hand taped out board. The soldermask is starting to flake off in places due to age, and there a couple of bodge wires completing a few ground traces. Respinning a board in those days was an expensive deal! Surprisingly, after all this time I’ve found no significant drift in the fixed resistors, but the carbon track potentiometers are drifiting significantly – 10KΩ pots are measuring as low as 8KΩ out of circuit. These will have to be replaced with modern versions, since there are a couple in timing-sensitive places, like the vertical & horizontal oscillator circuits.

Anode Cap Replaced
Anode Cap Replaced

Here the anode cap has been replaced with a better silicone one from another TV. This should help keep the 6kV on the CRT from making an escape. This was an easy fix – pulling the contact fork out of the cap with it’s HT lead, desoldering the fork & refitting with the new cap in place.

Here I’ve replaced the important trimmers with new ones. Should help stabilize things a little.

Composite Injection Mod
Composite Injection Mod

Injecting a video signal is as easy as the other units. Pin 3 of the µPC1366C Video IF Processor is it’s output, so the track to Pin 3 is cut and a coax is soldered into place to feed in an external signal.

CRT In Operation
CRT In Operation

After hooking up a Raspberry Pi, we have display! Not bad after having stood idle for 30+ years.

Datasheets for the important ICs are available below:
[download id=”5690″]
[download id=”5693″]
[download id=”5696″]

Posted on Leave a comment

Wireless Energy Management SmartSensor

Cover Removed
Cover Removed

Here’s another random bit of RF tech, I’m told this is a wireless energy management sensor, however I wasn’t able to find anything similar on the interwebs. It’s powered by a standard 9v PP3 battery.

Microcontroller
Microcontroller

System control is handled by this Microchip PIC18F2520 Enhanced Flash microcontroller, this has an onboard 10-bit ADC & nanoWatt technology according to their datasheet. There’s a 4MHz crystal providing the clock, with a small SOT-23 voltage regulator in the bottom corner. There’s a screw terminal header & a plug header, but I’ve no idea what these would be used for. Maybe connecting an external voltage/current sensor & a programming header? The tactile button I imagine is for pairing the unit with it’s controller.

PCB Bottom
PCB Bottom

The bottom of the PCB is almost entirely taken up by a Radiocrafts RC1240 433MHz RF transceiver. Underneath there’s a large 10kΩ resistor, maybe a current transformer load resistor, and a TCLT1600 optocoupler. Just from the opto it’s clear this unit is intended to interface in some way to the mains grid. The antenna is connected at top right, in a footprint for a SMA connector, but this isn’t fitted.

Posted on 3 Comments

Chinese “1200W” DC-DC Boost Converter DOA Fix

1200W DC-DC Converter
1200W DC-DC Converter

Ah the curse of the Chinese Electronics strikes again. These large DC-DC boost converters have become very common on the likes of AliExpress & eBay, and this time my order has arrived DOA… On applying power, the output LED lights up dimly, and no matter how I twiddle the adjustment pots, the output never rises above the input voltage.

Boost Converter Topology
Boost Converter Topology

From the usual topology above, we can assume that the switching converter isn’t working, so the input voltage is just being directly fed through to the output. The switching IC on these converters is a TL494,

Control Circuitry
Control Circuitry

The switching IC on these converters is a TL494,with it’s surrounding support components, including a LM358 dual Op-Amp. Power for this lot is supplied from the input via a small DC-DC converter controlled by an XL Semi XL7001 Buck Converter IC. Some testing revealed that power was getting to the XL7001, but the output to the switching controller was at zero volts.

Inductor
Inductor

The 100µH inductor for this buck converter is hidden behind the output electrolytic, and a quick prod with a multimeter revealed this inductor to be open circuit. That would certainly explain the no-output situation. Luckily I had an old converter that was burned out. (Don’t try to pull anything near their manufacturer “rating” from these units – it’s utter lies, more about this below).

Donor Converter
Donor Converter

The good inductor from this donor unit has been desoldered here, it’s supposed to be L2. This one had a heatsink siliconed to the top of the TL494 PWM IC, presumably for cooling, so this was peeled off to give some access.
After this inductor was grafted into place on the dead converter, everything sprang to life as normal. I fail to see how this issue wouldn’t have been caught during manufacture, but they’re probably not even testing them before shipping to the distributor.
The sensational ratings are also utter crap – they quote 1.2kW max power, which at 12v input would be 100A. Their max input rating is given as 20A, so 240W max input power. Pulling this level of power from such a cheaply designed converter isn’t going to be reliably possible, the input terminals aren’t even rated to anywhere near 20A, so these would be the first to melt, swiftly followed by everything else. Some of these units come with a fan fitted from the factory, but these are as cheaply made as possible, with bearings made of cheese. As a result they seize solid within a couple of days of use.
Proper converters from companies like TDK-Lambda or muRata rated for these power levels are huge, with BOLTS for terminals, but they’re considerably more expensive. These Chinese units are handy though, as long as they are run at a power level that’s realistic.

Posted on 1 Comment

Brother PT-E300 Industrial Label Machine Teardown

Tape Installed
Tape Installed

Here a tape is installed in the printer. This unit can handle tape widths up to 18mm. The pinch rollers are operated by the white lever at the top of the image, which engages with the back cover.

Li-Ion Battery
Li-Ion Battery

This printer is supplied with a rechargeable battery pack, but AA cells can be used as well. Some of the AA battery terminals can be seen above the battery.

Battery Specs
Battery Specs

Pretty standard fare for a 2-cell lithium pack. The charging circuitry doesn’t appear to charge it to full voltage though, most likely to get the most life from the pack.

Cartridge Slot
Cartridge Slot

With the cartridge removed, the printer components can be seen. As these cartridges have in effect two rolls, one fro the ribbon & one for the actual label, there are two drive points.

Pinch Rollers & Print Head
Pinch Rollers & Print Head

The thermal print head is hidden on the other side of the steel heatsink, while the pinch rollers are on the top right. The plastic piece above the print head heatsink has a matrix of switches that engage with holes in the top of the label cartridge, this is how the machine knows what size of ribbon is fitted.

Mainboard
Mainboard

Most of the internal space is taken up by the main board, with the microprocessor & it’s program flash ROM top & centre.

Charger Input
Charger Input

The charger input is located on the keyboard PCB just under the mainboard, which is centre negative, as opposed to 99% of other devices using centre positive, the bastards.

LCD Module
LCD Module

The dot-matrix LCD is attached to the mainboard with a short flex cable, and from the few connections, this is probably SPI or I²C.

Print Mech Drive
Print Mech Drive

The printer itself is driven by a simple DC motor, speed is regulated by a pair of photo-interrupters forming an encoder on the second gear in the train.

Battery Holder Connections
Battery Holder Connections

The back case has the battery connections for both the lithium pack & the AA cells, the lithium pack has a 3rd connection, probably for temperature sensing.

Posted on 2 Comments

Maplin A24GU Wireless Audio Module Teardown

Transmitter
Transmitter

This is a pair of modules that Maplin was selling some time back, to send stereo audio over a 2.4GHz radio link. The transmitter identifies as a USB sound card, I’ve personally used these units to transmit audio about 60ft. The transmitter, above, has a single button for pairing with the receiver below.

Receiver
Receiver

The receiver unit has a large external antenna, a link status LED & volume buttons, these directly control the volume level on the host PC via the sound card drivers.

Receiver PCB Top
Receiver PCB Top

Popping the case open on the receiver reveals a large PCB, holding the chipset, along with the audio output jacks & Mini-USB power input. The antenna Coax is soldered to the PCB.

Receiver PCB Bottom
Receiver PCB Bottom

The top of the board has the control buttons, and the status LED.

Receiver Chipset
Receiver Chipset

The chipset used here is a Nordic Semiconductor nRF20Z01 2.4GHz Stereo Audio Streamer, there’s a small microcontroller which does all the register magic on the RF transceiver. The RF chain is at the top of the photo, audio outputs on the top left, and the micro USB power input & voltage regulators at bottom left.

Transmitter PCB Top
Transmitter PCB Top

The transmitter PCB has a Sonix USB Audio Codec, to interface with the host PC. This is then fed into another Nordic Semi part on the opposite side of the board:

Transmitter PCB Bottom
Transmitter PCB Bottom

The bottom of the transmitter has the RF section, and another small control microcontroller.

Posted on 9 Comments

Arduino Milliohm Meter Build

During the rebuild of the wheelchair motors for the support trolley, I found myself needing an accurate milliohm meter to test the armature windings with. Commercial instruments like these are expensive, but some Google searching found a milliohm meter project based around the Arduino from Circuit Cellar.

Circuit Diagram
Circuit Diagram

Here’s the original author’s circuit diagram, paralleling nearly all of the Arduino’s digital output pins together to source/sink the test current, an ADS1115 ADC to take more accurate readings, with the results displayed on a jellybean 128×64 OLED module. The most expensive part here is the 10Ω 0.1% 15ppm reference resistor, R9.
I decided to make some small adjustments to the power supply section of the project, to include a rechargeable lithium cell rather than a 9v PP3 battery. This required some small changes to the Arduino sketch, a DC-DC boost converter to supply 5v from the 3.7v of a lithium cell, a charger module for said cell, and with the battery voltage being within the input range of the analogue inputs, the voltage divider on A3 was removed. A new display icon was also added in to indicate when the battery is being charged, this uses another digital input pin for input voltage sensing.
I also made some basic changes to the way an unreadable resistance is displayed, showing “OL” instead of “—–“, and the meter sends the reading out over the I²C bus, for future expansion purposes. The address the data is directed to is set to 0x50.

I’ve not etched a PCB for this as I couldn’t be bothered with the messy etchant, so I built this on a matrix board instead.

Final Prototype
Final Prototype

Since I made some changes to both the software and the hardware components, I decided to prototype the changes on breadboard. The lithium cell is at the top of the image. with the charger module & DC-DC converter. The Arduino Nano is on the right, the ADC & reference resistor on the left, and the display at the bottom.
The Raspberry Pi & ESP8266 module are being used in this case to discharge the battery quicker to make sure the battery level calibration was correct, and to make sure the DC-DC converter would continue to function throughout the battery voltage range.

Matrix Board Passives
Matrix Board Passives

Here’s the final board with the passive components installed, along with the DC-DC converter. I used a Texas Instruments PTN04050 boost module for power as I had one spare.

Matrix Board Rear
Matrix Board Rear

The bottom of the board has most of the wire jumpers for the I²C bus, and power sensing.

Matrix Board Modules
Matrix Board Modules

Here’s both modules installed on the board. I used an Arduino Nano instead of the Arduino Pro Mini that the original used as these were the parts I had in stock. Routing the analogue pins is also easier on the Mini, as they’re brought out to pins in the DIP footprint, instead of requiring wire links to odd spots on the module. To secure the PCB into the case without having to drill any holes, I tapped the corner holes of the matrix board M2.5 & threaded cap head screws in. These are then spot glued to the bottom of the case to secure the finished board.

Lithium Charger
Lithium Charger

The lithium charger module is attached to the side of the enclosure, the third white wire is for input sensing – when the USB cable is plugged in a charge icon is shown on the OLED display.

Input Connections
Input Connections

The inputs on the side of the enclosure. I’ve used the same 6-pin round connector for the probes, power is applied to the Arduino when the probes are plugged in.

Module Installed
Module Installed

Everything installed in the enclosure – it’s a pretty tight fit especially with the lithium cell in place.

Meter Top Cover
Meter Top Cover

The top cover has the Measure button, and the OLED display panel, the latter secured to the case with M2.5 cap head screws.

Kelvin Clips
Kelvin Clips

Finally, the measurement loom, with Kelvin clips. These were an eBay buy, keeping things cheap. These clips seem to be fairly well built, even if the hinges are plastic. I doubt they’re actually gold-plated, more likely to be brass. I haven’t noticed any error introduced by these cheap clips so far.

The modified sketch is below:

// ---------------------------------------------------------------------------------------------
//  Simple, accurate milliohmeter
//
//  (c) Mark Driedger 2015
//
//  - Determines resistance using 4 wire measurement of voltage across a series connected
//  reference resistor (Rr, 10 ohm, 0.1%) and test resistor (Rx)
//  - range of accurate measurement is roughly 50 mohm to 10Kohm
//  - Uses Arduino digital I/O ports to deliver the test current, alternating polarity to cancel 
//  offset errors (synchronous detector)
//  - 4 I/O pins are used for each leg of the test current to increase test current
//  - Averages 2 cycles and 100 samples/cycle 
//  - Uses a 16 bit ADC ADS1115 with 16x PGA to improve accuracy
//
//  Version History
//    May 24/15    v1.0-v4.0
//      - initial development versions
//    May 27/15    v5.0
//      - changed display to I2C
//      - backed out low power module since it seemed to cause serial port upload problems
// ---------------------------------------------------------------------------------------------

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//#include <LowPower.h>

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

// ---------------------------------------------------------------------------------------------
//  I/O port usage
// ---------------------------------------------------------------------------------------------
//    serial port (debug and s/w download)    0, 1
//    I²C interface to ADC & display          A4, A5
//    positive drive                          2, 3, 4, 5
//    push to test input                      8
//    unused                                  9, 10, 11, A0, A1, A2, A6, A7
//    negative drive                          6, 7, 8, 9
//    battery voltage monitor                 A3
//    debug output                            13

#define  P_PushToTest  10       // push button (measure), active low
#define  P_Debug       13
#define  CHG           12

//  ADS1115 mux and gain settings
#define  ADS1115_CH01  0x00    // p = AIN0, n = AIN1
#define  ADS1115_CH03  0x01    // ... etc
#define  ADS1115_CH13  0x02
#define  ADS1115_CH23  0x03
#define  ADS1115_CH0G  0x04    // p = AIN0, n = GND
#define  ADS1115_CH1G  0x05    // ... etc
#define  ADS1115_CH2G  0x06
#define  ADS1115_CH3G  0x07

#define  ADS1115_6p144  0x00   // +/- 6.144 V full scale
#define  ADS1115_4p096  0x01   // +/- 4.096 V full scale
#define  ADS1115_2p048  0x02   // +/- 2.048 V full scale
#define  ADS1115_1p024  0x03   // +/- 1.024 V full scale
#define  ADS1115_0p512  0x04   // +/- 0.512 V full scale
#define  ADS1115_0p256  0x05   // +/- 0.256 V full scale
#define  ADS1115_0p256B 0x06   // same as ADS1115_0p256
#define  ADS1115_0p256C 0x07   // same as ADS1115_0p256

Adafruit_SSD1306   display(0);               // using I2C interface, no reset pin
static int         debug_mode = 0;           // true in debug mode

float ADS1115read(byte channel, byte gain)
//--------------------------------------------------------------------------------------
//  reads a single sample from the ADS1115 ADC at a given mux (channel) and gain setting
//  - channel is 3 bit channel number/mux setting (one of ADS1115_CHxx)
//  - gain is 3 bit PGA gain setting (one of ADS1115_xpxxx)
//  - returns voltage in volts
//  - uses single shot mode, polling for conversion complete, default I2C address
//  - conversion takes approximatly 9.25 msec
//--------------------------------------------------------------------------------------
  {  
  const int    address = 0x48;      // ADS1115 I2C address, A0=0, A1=0 
  byte         hiByte, loByte;
  int          r;
  float        x;

  channel &= 0x07;                  // constrain to 3 bits
  gain    &= 0x07;
 
  hiByte = B10000001 | (channel<<4) | (gain<<1);    // conversion start command
  loByte = B10000011;
  
  Wire.beginTransmission(address);  // send conversion start command
  Wire.write(0x01);                 // address the config register
  Wire.write(hiByte);               // ...and send config register value
  Wire.write(loByte);           
  Wire.endTransmission();

   do                               // loop until conversion complete
    {
    Wire.requestFrom(address, 2);   // config register is still addressed
    while(Wire.available())
      {
      hiByte = Wire.read();         // ... and read config register
      loByte = Wire.read();
      }
    }
  while ((hiByte & 0x80)==0);       // upper bit (OS) is conversion complete

  Wire.beginTransmission(address); 
  Wire.write(0x00);                 // address the conversion register
  Wire.endTransmission();

  Wire.requestFrom(address, 2);     // ... and get 2 byte result
  while(Wire.available())
    {
    hiByte = Wire.read();
    loByte = Wire.read();
    }

  r = loByte | hiByte<<8;           // convert to 16 bit int
  switch(gain)                      // ... and now convert to volts
    {
      case ADS1115_6p144:  x = r * 6.144 / 32768.0; break;
      case ADS1115_4p096:  x = r * 4.096 / 32768.0; break;
      case ADS1115_2p048:  x = r * 2.048 / 32768.0; break;
      case ADS1115_1p024:  x = r * 1.024 / 32768.0; break;
      case ADS1115_0p512:  x = r * 0.512 / 32768.0; break;
      case ADS1115_0p256:  
      case ADS1115_0p256B:  
      case ADS1115_0p256C: x = r * 0.256 / 32768.0; break;
    }
  return x;
  }

// ---------------------------------------------------------------------------------------------
//  Drive functions
//   - ports 4-7 and A0-A3 are used to differentially drive resistor under test
//   - the ports are resistively summed to increase current capability
//   - DriveOff() disables the drive, setting the bits to input
//   - DriveOn()  enables the drive,  setting the bits to output
//   - DriveP()   enables drive with positive current flow (from ports 4-7 to ports A0-A3)
//   - DriveN()   enables drive with negative current flow
// ---------------------------------------------------------------------------------------------
void DriveP()
  {
    DriveOff();
    digitalWrite( 2, HIGH);
    digitalWrite( 3, HIGH);    
    digitalWrite( 4, HIGH);    
    digitalWrite( 5, HIGH);
    digitalWrite( 6, LOW);
    digitalWrite( 7, LOW);
    digitalWrite( 8, LOW);
    digitalWrite( 9, LOW);  
    DriveOn();
  }

void DriveN()
  {
    DriveOff();
    digitalWrite( 2, LOW);
    digitalWrite( 3, LOW);    
    digitalWrite( 4, LOW);    
    digitalWrite( 5, LOW);
    digitalWrite( 6, HIGH);
    digitalWrite( 7, HIGH);
    digitalWrite( 8, HIGH);
    digitalWrite( 9, HIGH);   
    DriveOn();
  }

void DriveOn()
  {
    pinMode( 2, OUTPUT);      // enable source/sink in pairs
    pinMode( 6, OUTPUT);
    pinMode( 3, OUTPUT);
    pinMode( 7, OUTPUT);
    pinMode( 4, OUTPUT);
    pinMode( 8, OUTPUT);
    pinMode( 5, OUTPUT);
    pinMode( 9, OUTPUT);
    delayMicroseconds(5000);  // 5ms delay
  }
    
void DriveOff()
  {
    pinMode( 2, INPUT);       // disable source/sink in pairs
    pinMode( 6, INPUT);
    pinMode( 3, INPUT);
    pinMode( 7, INPUT);
    pinMode( 4, INPUT);
    pinMode( 8, INPUT);
    pinMode( 5, INPUT);
    pinMode( 9, INPUT);
  }

int CalcPGA(float x)  
// ---------------------------------------------------------------------------------------------
//   Calculate optimum PGA setting based on a sample voltage, x, read at lowest PGA gain
//     - returns the highest PGA gain that allows x to be read with 10% headroom
// ---------------------------------------------------------------------------------------------
  {
    x = abs(x);
    if (x>3.680) return ADS1115_6p144;
    if (x>1.840) return ADS1115_4p096;
    if (x>0.920) return ADS1115_2p048;
    if (x>0.460) return ADS1115_1p024;
    if (x>0.230) return ADS1115_0p512;
    else         return ADS1115_0p256;
  }

void BatteryIcon(float charge)
// ---------------------------------------------------------------------------------------------
//   Draw a battery charge icon into the display buffer without refreshing the display
//     - charge ranges from 0.0 (empty) to 1.0 (full)
// ---------------------------------------------------------------------------------------------
  {
    static const unsigned char PROGMEM chg[] =     // Battery Charge Icon
    { 0x1c, 0x18, 0x38, 0x3c, 0x18, 0x10, 0x20, 0x00 };
    
    int w = constrain(charge, 0.0, 1.0)*16;  // 0 to 16 pixels wide depending on charge
    display.drawRect(100, 0, 16, 7, WHITE);  // outline
    display.drawRect(116, 2,  3, 3, WHITE);  // nib
    display.fillRect(100, 0,  w, 7, WHITE);  // charge indication

    //battery charging indication
    pinMode(CHG, INPUT);
    if (digitalRead(CHG) == HIGH)
      display.drawBitmap(91, 0, chg, 8, 8, WHITE);
  }

void f2str(float x, int N, char *c)
// ---------------------------------------------------------------------------------------------
//    Converts a floating point number x to a string c with N digits of precision
//     - *c must be a string array of length at least N+3 (N + '-', '.', '\0')
//     - x must be have than N leading digits (before decimal) or "#\0" is returned
// ---------------------------------------------------------------------------------------------
  {
  int     j, k, r;
  float   y;

  if (x<0.0)                    // handle negative numbers
    {
      *c++ = '-';
      x = -x;
    }
  for (j=0; x>=1.0; j++)        // j digits before decimal point
    x /= 10.0;                  // .. and scale x to be < 1.0

  if (j>N)                      // return error string if too many digits
    {
      *c++ = '#';
      *c++ = '\0';
      return;
    }

  y = pow(10, (float) N);       // round to N digits
  x = round(x * y) / y;
  if (x>1.0)                    // if 1st digit rounded up ...
    {
      x /= 10.0;                // then normalize back down 1 digit
      j++;
    }

  for (k=0; k<N; k++)
    {
      r = (int) (x*10.0);        // leading digit as int
      x = x*10-r;                // remove leading digit and shift 1 digit
      
      *c++ = r + '0';            // add leading digit to string
      if (k==j-1 && k!=N-1)      // add decimal point after j digits
        *c++ = '.';              // ... unless there are N digits before decimal
    }
  *c++ = '\0';
  }

void DisplayResistance(float x)
// ---------------------------------------------------------------------------------------------
//    Adds the resistance value, x, to the display buffer without refreshing the display
//      - converts to kohm, milliohm or microohm if necessary
// --------------------------------------------------------------------------------------------- 
  {
    static const unsigned char PROGMEM omega_bmp[] =     // omega (ohm) symbol
    { B00000011, B11000000,
      B00001100, B00110000,
      B00110000, B00001100,
      B01000000, B00000010,
      B01000000, B00000010,
      B10000000, B00000001,
      B10000000, B00000001,
      B10000000, B00000001,
      B10000000, B00000001,
      B10000000, B00000001,
      B01000000, B00000010,
      B01000000, B00000010,
      B01000000, B00000010,
      B00100000, B00000100,
      B00010000, B00001000,
      B11111000, B00011111 };

    char  s[8];
    char  prefix;
    
    if (x>=1000.0)          // display in killo ohms
      {
        x /= 1000.0;
        prefix = 'k';
      }
    else if (x<0.001)       // display in micro ohms
      {
        x *= 1000000.0;
        prefix = 0xe5;    // mu
      }
    else if (x<1.0)         // display in milli ohms
      {
        x *= 1000.0;
        prefix = 'm';
      }
    else
      prefix = ' ';         // display in ohms
  
    f2str(x, 5, s);
       
    // display computed resistance
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,20);
    display.print(s);

    // display prefix
    display.setCursor(85,20);
    display.print(prefix);
    
    // display omega (ohms) symbol
    display.drawBitmap(103, 18, omega_bmp, 16, 16, WHITE);
  }

void DisplayDebug(int a, int b, float x, float y, float Vbat)
// ---------------------------------------------------------------------------------------------
//    Adds debug info to the display buffer without showing the updated display
//      - Adds 2 ints (a, b) and a float(Vbat) to the top line and 2 floats (x, y) 
//      to the bottom line+, all in small (size 1) text
// ---------------------------------------------------------------------------------------------
  {
    // display x, y in lower left, small font
    display.setTextSize(1);
    display.setCursor(0,45);
    display.print(x,3);
    display.print("  ");
    display.print(y,3);

    // display a, b in upper left, small font
    display.setTextSize(1);
    display.setCursor(0,0);
    display.print(a);
    display.print("  ");
    display.print(b);

    // display Vbat in upper middle, small font
    display.setTextSize(1);
    display.setCursor(60,0);
    display.print(Vbat,1);
  }

void DisplayStr(char *s)
// ---------------------------------------------------------------------------------------------
//    Adds a string, s, to the display buffer without refreshing the display @ (0,20)
// --------------------------------------------------------------------------------------------- 
  {
    display.setTextSize(2);              
    display.setTextColor(WHITE);
    display.setCursor(8,20);
    display.print(s);
  }

#ifdef TESTMODE
void loop()
  {
    while (digitalRead(P_PushToTest))
      ;
    DriveP();
    display.clearDisplay();
    DisplayStr("Drive: +");
    display.display();
    delay(250);

    while (digitalRead(P_PushToTest))
      ; 
    DriveN();
    display.clearDisplay();
    DisplayStr("Drive: -");
    display.display();
    delay(250);

    while (digitalRead(P_PushToTest))
      ; 
    DriveOff();
    display.clearDisplay();
    DisplayStr("Drive: Off");
    display.display();
    delay(250);
  }
#endif
  
void setup() 
// ---------------------------------------------------------------------------------------------
//    - initializae display and I/O ports
// --------------------------------------------------------------------------------------------- 
  {
    DriveOff();                                    // disable current drive
    Wire.begin();                                  // join I2C bus
    display.begin(SSD1306_SWITCHCAPVCC, 0x3c, 0);  // initialize display @ address 0x3c, no reset
    pinMode(P_PushToTest, INPUT_PULLUP);           // measure push button switch, active low
    debug_mode = !digitalRead(P_PushToTest);       // if pushed during power on, then debug mode
    pinMode(P_Debug, OUTPUT);                      // debug port
  }
  
void loop() 
// ---------------------------------------------------------------------------------------------
//    main measurement loop
// --------------------------------------------------------------------------------------------- 
  {
    const float      Rr = 10.0;             // reference resistor value, ohms
    const float      Rcal = 1.002419;       // calibration factor
    const int        N = 2;                 // number of cycles to average
    const int        M = 50;                // samples per half cycle
    static long      Toff;
    double           Rx;                    // calculated resistor under test, ohms
    byte             PGAr, PGAx;            // PGA gains (r = reference, x = test resistors)
    float            Vr, Vx, Wx, Wr;        // voltages in V
    float            Rn;                    // calculated resistor under test, ohms, single sample
    double           Avgr, Avgx;            // average ADC readings in mV
    int              j, k, n;
    float            Vbat;                  // battery voltage in V (from 2:1 divider)
    char             serialbuff[10];        // Buffer for sending the reading over I²C

    display.clearDisplay();
    DisplayStr("measuring"); 
    display.display();

    // determine PGA gains      
    DriveP(); 
    Wr =  ADS1115read(ADS1115_CH01, ADS1115_6p144);
    Wx =  ADS1115read(ADS1115_CH23, ADS1115_6p144);    
    DriveN();
    Vr = -ADS1115read(ADS1115_CH01, ADS1115_6p144);
    Vx = -ADS1115read(ADS1115_CH23, ADS1115_6p144);

    //  measure battery voltage ... while drive is on so there is a load
    Vbat = analogRead(A3)*5.0/1024.0;    // 2:1 divider (5V FS) on 4.2v lithium battery

    DriveOff();

    PGAr = CalcPGA(max(Vr, Wr));           // determine optimum PGA gains
    PGAx = CalcPGA(max(Vx, Wx));

    // measure resistance using synchronous detection
    Avgr = Avgx = 0.0;                     // clear averages
    Rx = 0.0;
    n = 0;
    for (j=0; j<N; j++)                    // for each cycle
      {
        DriveP();                          // turn on drive, positive
        for (k=0; k<M; k++)
          {
            digitalWrite(P_Debug, 1);
            Vx = ADS1115read(ADS1115_CH23, PGAx);
            digitalWrite(P_Debug, 0);
            Vr = ADS1115read(ADS1115_CH01, PGAr);
            Avgx += Vx;
            Avgr += Vr;
            Rn = Vx/Vr;
            if (Rn>0.0 && Rn<10000.0)
              {
              Rx += Rn;
              n++;
              }
          }

        DriveN();                          // turn on drive, negative
        for (k=0; k<M; k++)
          {
            digitalWrite(P_Debug, 1);
            Vx = ADS1115read(ADS1115_CH23, PGAx);
            digitalWrite(P_Debug, 0);
            Vr = ADS1115read(ADS1115_CH01, PGAr);
            Avgx -= Vx;
            Avgr -= Vr;
            Rn = Vx/Vr;
            if (Rn>0.0 && Rn<10000.0)
              {
              Rx += Rn;
              n++;
              }
          }
      }
    
    DriveOff();
    Rx   *= Rr * Rcal / n;                 // apply calibration factor and compute average
    Avgr *= 1000.0 / (2.0*N*M);            // average in mV
    Avgx *= 1000.0 / (2.0*N*M);   

    // display the results ... battery icon, Rx measurement, debug info if requested
    display.clearDisplay();                // ... and display result
    BatteryIcon((Vbat-3.0)/(4.2-3.0));     // 7.5V = 0%, 9V = 100%
    //display.drawLine(0, 8, 127, 8, WHITE); //Draw separator line under icons
    if (n==0){                              // no measurement taken ...
      display.setTextSize(2);
      display.setCursor(51,20);
      display.print(F("OL"));
    }
      //DisplayStr("-----");
    else
      DisplayResistance(Rx);
    //Send Reading via I²C
      Wire.beginTransmission(0x50);
      Wire.write(dtostrf(Rx, 5, 5, serialbuff));
      Wire.endTransmission();
    if (debug_mode) 
      DisplayDebug(PGAr, PGAx, Avgr, Avgx, Vbat);
    display.display();                     // show the display
    
    // and then wait for next measurement request
    Toff = millis()+60000L;
    while(digitalRead(P_PushToTest))       // loop until measure button pressed
      {
        // Enter power down state for 120ms with ADC and BOD module disabled
        //LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF);  
        if (millis()>Toff)                 // after 7 seconds ...
          {
            display.clearDisplay();        // clear display
            display.display(); 
          }
      }
  }

 

Posted on 1 Comment

32A Bench PSU Build

Load Test

Since I’ve discovered some nice high power PSUs in the form of Playstation 3 PSUs, it’s time to get a new Bench PSU Build underway!

Specifications
Specifications

I’ve gone for the APS-227 version as it’s got the 32A rail. This makes things slightly beefier overall, as the loading will never be anywhere close to 100% for long, more headroom on the specs is the result.

Desktop Instrument Case
Desktop Instrument Case

The case I’ve chosen for this is an ABS desktop instrument case from eBay, the TE554 200x175x70mm. The ABS is easy to cut the holes for all the through-panel gear, along with being sturdy enough. Aluminium front & back panels would be a nice addition for a better look.

PSU Mounted
PSU Mounted

The PSU board is removed from it’s factory casing & installed on the bottom shell half, unfortunately the moulded-in posts didn’t match the screw hole locations so I had to mount some brass standoffs separately. The AC input is also fitted here, I’ve used a common-mode filter to test things (this won’t be staying, as it fouls one of the case screw holes). The 40A rated DC output cable is soldered directly to the PCB traces, as there’s no room under the board to fit the factory DC power connector. (This is the biggest case I could find on eBay, and things are still a little tight). Some minor modifications were required to get the PCB to fit correctly.

Output Terminals & Adjuster
Output Terminals & Adjuster

I decided to add some limited voltage adjustment capability to the front panel, I had a 100Ω Vishay Spectrol Precision 10-turn potentiometer in my parts bin, from a project long since gone that just about fits between the panel & the output rectifier heatsink. The trimpot I added when I first posted about these PSUs is now used to set the upper voltage limit of 15 volts. (The output electrolytics are 16v rated, and are in an awkward place to get at to change for higher voltage parts). The binding posts are rated to 30A, and were also left over from a previous project.

Vishay Spectrol 10-Turn
Vishay Spectrol 10-Turn

 

Addon Regulator Components
Addon Regulator Components

This front panel potentiometer is electrically in series with the trimpot glued to the top of the auxiliary transformer, see above for a simple schematic of the added components. In this PSU, reducing the total resistance in the regulator circuit increases the voltage, so make sure the potentiometer is wired correctly for this!
After some experimentation, a 500Ω 10-turn potentiometer would be a better match, with a 750Ω resistor in parallel to give a total resistance range on the front panel pot of 300Ω. This will give a lower minimum voltage limit of about 12.00v to make lead-acid battery charging easier.
I’ve had to make a minor modification to the output rectifier heatsink to get this pot to fit in the available space, but nothing big enough to stop the heatsink working correctly.

Terminal Posts
Terminal Posts

Here I’ve got the binding posts mounted, however the studs are a little too long. Once the wiring is installed these will be trimmed back to clear both the case screw path & the heatsink. (The heatsink isn’t a part of the power path anyway, so it’s isolated).

Power Meter Control Board & Fan
Power Meter Control Board & Fan

To keep the output rectifier MOSFETs cool, there’s a fan mounted in the upper shell just above their location, this case has vents in the bottom already moulded in for the air to exit. The fan is operated with the DC output contactor, only running when the main DC is switched on. This keeps the noise to a minimum when the supply doesn’t require cooling. The panel meter control board is also mounted up here, in the only empty space available. The panel meter module itself is a VAC-1030A from MingHe.

Meter Power Board
Meter Power Board

The measurement shunt & main power contactor for the DC output is on another board, here mounted on the left side of the case. The measurement shunt is a low-cost one in this module, I doubt it’s made of the usual materials of Manganin or Constantan, this is confirmed by my meansurements as when the shunt heats up from high-power use, the readings drift by about 100mA. The original terminal blocks this module arrived with have been removed & the DC cables soldered directly to the PCB, to keep the number of high-current junctions to a minimum. This should ensure the lowest possible losses from resistive heating.

Meter Panel Module
Meter Panel Module

The panel meter module iself is powered from the 5v standby rail of the Sony PSU, instead of the 12v rail. This allows me to keep the meter on while the main 12v output is switched off.

PSU Internals
PSU Internals

here’s the supply with everything fitted to the lower shell – it’s a tight fit! A standard IEC connector has been fitted into the back panel for the mains input, giving much more clearance for the AC side of things.

Inside View
Inside View

With the top shell in place, a look through the panel cutout for the meter LCD shows the rather tight fit of all the meter components. There’s about 25mm of clearance above the top of the PSU board, giving plenty of room for the 40mm cooling fan to circulate air around.

Load Test
Load Test

Here’s the finished supply under a full load test – it’s charging a 200Ah deep cycle battery. The meter offers many protection modes, so I’ve set the current limit at 30A – preventing Sony’s built in over current protection on the PSU tripping with this function is a bonus, as the supply takes a good 90 seconds to recover afterwards. I’ll go into the many modes & features of this meter in another post.

Posted on Leave a comment

Philips LED PAR38 Lamp Teardown

Philips PAR38
Philips PAR38

These large LED Philips PAR38 lamps were recently on clearance sale in my local T.N. Robinsons electrical contractors for about £3, so I decided to grab one in the hopes I might be able to hack it into a low-voltage LED lamp. These are full-size PAR38 format, with most of the bulk being the large aluminium heatsink on the front. The back section with the power supply module is secured with silicone, so some unreasonable force was required to liberate the two pieces.

Specification
Specification

These lamps are rated at 18W in operation, and are surprisingly bright for this power level.

Lens
Lens

The front has the moulded multi-lens over the LEDs, to spread the light a bit further than the bare dies.

LED Array
LED Array

The LED array is two series strings of 4 LEDs, for ~24v forward voltage. Unusual for a high power LED array, this PCB isn’t aluminium cored, but 0.8mm FR4. Heat is transferred to the copper plane on the backside by the dozens of vias around the Luxeon Rebel LEDs. There is a thermal pad under the PCB for improved heat transfer to the machined surface of the heatsink.

Control PCB Top
Control PCB Top

The power supply & control PCB is pretty well made, it’s an isolated converter, so no nasty mains on the LED connections.

Control PCB Bottom
Control PCB Bottom
Posted on 11 Comments

Jaguar S-Type Aux Heater / Webasto Thermo Top V Part 2 – W-Bus Diagnostics

As I mentioned in the previous post, these heaters have a standard interface that’s used for control & diagnostics, the W-Bus. This is transmitted over the K-Line of the vehicle bus, and all heaters, regardless of firmware modifications done by the various car manufacturers respond to this interface. Official Webasto diagnostic adaptors are available, but these are just a very expensive serial adaptor. A much cheaper option is a ~£5 Universal ODB adaptor.

ODB2
ODB2

Above shows the signals on the ODB connector – the ones we’re interested in here are Pin 16, the +12v supply, and Pin 7, K-Line. Connect Pin 16 to the positive supply to the heater, and Pin 7 to Pin 2 on the Webasto heater. (Valid for all TT-V heaters).

Device Selection
Device Selection

Once these two connections are made to the heater, fire up the Thermo Test software. The screen above will be displayed. Pick W-Bus at top left.

COM Port Selection
COM Port Selection

First thing, connect the ODB adaptor to USB, and change to the correct COM port in Thermo Test. There may be several in the list, but a newly connected USB device should show up with the highest COM number.

Thermo Test
Thermo Test

Once Thermo Test is running, start communications by going to the Diagnosis Menu > Start Diagnostic (F2 keyboard shortcut).

Initialized
Initialized

After a few seconds, communication will be established. This will show faults, if any are present, and allow testing of the heater & it’s component parts. A summary report can be generated with Diagnosis > View Summary:

Diagnosis report                                               Webasto Thermosystems
------------------------------------------------------------------------------------------


Configuration:
--------------
  W-Bus version...............................................................3.3           
  Device name.............................................................X204 SH           
  W-Bus code.......................................................715CC0E73F8000           
  Fuel type................................................................Diesel           
  Circulating pump in control idle period.......................................0           
  Heating duration limitation.................................................255 [min]     
  Factor for shortening of ventilation duration...............................1/1           
  Device identification number..........................................09007236E           
  Dataset identification number.......................................09006806H05           
  Software identification number........................................000000000           
  HW version................................................................51/03           
  SW version..................................................Tuesday/07/04 12.12           
  SW version (EEPROM).........................................Tuesday/07/04 12.12           
  Date of manufacture control unit.......................................27.10.03           
  Date of manufacture heater.............................................04.02.04           
  Customer identification number.....................................4R8318K463AE           
  Serial number........................................................0000123626           
  Test signature.............................................................4B42           
  Minimum voltage threshold....................................................10 [V]       
  Maximum voltage threshold....................................................16 [V]       
  Delay for supply voltage min. detection......................................20 [s]       
  Delay for supply voltage max. detection.......................................6 [s]       

Operating data:
---------------
  Working hours.............................................................44:03 [h:m]     
  Operating hours.........................................................5388:08 [h:m]     
  Start count...............................................................19129           
  Burning duration PH 1..33%.................................................0:00 [h:m]     
  Burning duration PH 34..66%................................................0:00 [h:m]     
  Burning duration PH 67..100%...............................................0:00 [h:m]     
  Burning duration PH >100%..................................................0:00 [h:m]     
  Burning duration SH 1..33%.................................................0:00 [h:m]     
  Burning duration SH 34..66%................................................0:00 [h:m]     
  Burning duration SH 67..100%...............................................0:00 [h:m]     
  Burning duration SH >100%..................................................0:00 [h:m]     
  Working duration PH........................................................0:51 [h:m]     
  Working duration SH......................................................121:10 [h:m]     
  Start counter PH..............................................................6           
  Start counter SH............................................................854           
  Ventilation duration.......................................................0:00 [h:m]     

Error:
------

------------------------------------------------------------------------------------------
12.03.17  17:17:30                                       Webasto Thermo Test  2.16.1

This shows all the important stuff, including running hours. (5388Hrs on this heater!). Most importantly, there are no faults listed.

Heater Running
Heater Running

The heater can be fully tested by issuing a start command from the Command Menu > Parking Heating option. Obviously cooling water will be required for this, along with an external water pump. (The water pump control output on these heaters seems to be totally disabled in firmware, as they rely on the engine’s coolant pump). I used a bucket of water along with a small centrifugal pump to provide the cooling. During this test I noted that the firmware is much more aggressive in these units. The marine versions shut down at ~72°C water temperature, whereas these don’t so the same until ~90°C.

Now I’ve managed to communicate with the heater, I’ll get onto building a standalone controller so I can dispense with the Windows VM for control.

Posted on 8 Comments

Virgin Media Superhub 2 Teardown

I recently got the latest upgrade from Virgin Media, 200Mbit DL / 20Mbit UL, and to get this I was informed I’d have to buy their latest hardware, since my existing CPE wouldn’t be able to handle the extra 5Mbit/s upload speed. (My bullshit detector went off pretty hard at that point, as the SuperHub 2 hardware is definitely capable of working fine with 20Mbit/s upload rates). Instead of having to return the old router, I was asked to simply recycle it, so of course the recycling gets done in my pretty unique way!

Mainboard
Mainboard

The casing of these units is held together by a single screw & a metric fuckton of plastic clips, disassembly is somewhat hindered by the radio antennas being positioned all over both sides of the casing. Once the side is off, the mainboard is visible. The DOCSIS frontend is lower left, centre is the Intel PUMA 5 Cable Modem SoC with it’s RAM just to the lower right. The right side of the board is taken up by both of the WiFi radio frontends, the 5GHz band being covered by a Mini PCIe card.

Atheros Gigabit Switch
Atheros Gigabit Switch

The 4 gigabit Ethernet ports on the back are serviced by an Atheros AR8327 Managed Layer 3 switch IC, which seems to be a pretty powerful device:

The AR8327 is the latest in high performance small network switching. It is ultra low power, has extensive routing and data management functions and includes hardware NAT functionality (AR8327N). The AR8327/AR8327N is a highly integrated seven-port Gigabit Ethernet switch with a fully non-blocking switch fabric, a high-performance lookup unit supporting 2048 MAC addresses, and a four-traffic  class Quality of Service (QoS) engine. The AR8327 has the flexibility to support various networking applications. The AR8327/AR8327N is designed for cost-sensitive switch applications in wireless AP routers, home gateways, and xDSL/cable modem platforms.

Unfortunately most of the features of this router are locked out by VM’s extremely restrictive firmware. With any of their devices, sticking the VM supplied unit into modem mode & using a proper router after is definitely advised!

Intel Puma 5 CM CPU
Intel Puma 5 CM CPU

The cable modem side of things is taken care of by the Intel PUMA 5 DNCE2530GU SoC. This appears to communicate with the rest of the system via the Ethernet switch & PCI Express for the 5GHz radio.

Atheros WiFi SoC
Atheros WiFi SoC

The 2.4GHz radio functionality is supplied by an Atheros AR9344 SoC, it’s RAM is to the left. This is probably handling all the router functions of this unit, but I can’t be certain.

Atheros LAN PHY
Atheros LAN PHY

A separate Ethernet PHY is located between the SoC & the switch IC.

 

5GHz Radio Card
5GHz Radio Card

The 5GHz band is served by a totally separate radio module, in Mini PCIe format, although it’s a bit wider than standard. This module will probably be kept for reuse in another application.

Power Supplies
Power Supplies

All down the edge of the board are the multiple DC-DC converters to generate the required voltage rails.

MaxLinear MXL261 Frontend
MaxLinear MXL261 Frontend

The DOCSIS frontend is handled by a MaxLinar MXL261 Tuner/Demodulator. More on this IC in my decapping post 🙂

The Unknown One
The Unknown One

I’ve honestly no idea what on earth this Maxim component is doing. It’s clearly connected via an impedance matched pair, and that track above the IC looks like an antenna, but nothing I search for brings up a workable part number.

2.4GHz Frontend
2.4GHz Frontend

The RF switching & TX amplifiers are under a shield, these PA chips are SiGe parts.

Atheros 5GHz Radio
Atheros 5GHz Radio

Pretty much the same for the 5GHz radio, but with 3 radio channels.

Posted on 3 Comments

Anker PowerPort Speed 5 USB Rapid Charger Teardown

Front
Front

Here’s a piece of tech that is growing all the more important in recent times, with devices with huge battery capacities, a quick charger. This unit supports Qualcomm’s Quick Charge 3 standard, where the device being charged can negotiate with the charger for a higher-power link, by increasing the bus voltage past the usual 5v.

Rear
Rear

The casing feels rather nice on this unit, sturdy & well designed. All the legends on the case are laser marked, apart from the front side logo which is part of the injection moulding.

Specifications
Specifications

The power capacity of this charger is pretty impressive, with outputs for QC3 from 3.6-6.5v at 3A, up to 12v 1.5A. Standard USB charging is limited at 4.8A for the other 3 ports.

Ports
Ports

The two of the 5 USB ports are colour coded blue on the QC3 ports. The other 3 are standard 5v ports, the only thing that doesn’t make sense in the ratings is the overall current rating of the 5v supply (4.8A), and the rated current of each of the ports (2.4A) – this is 7.2A total rather than 4.8A.

Top Removed
Top Removed

The casing is glued together at the seam, but it gave in to some percussive attack with a screwdriver handle. The inside of this supply is mostly hidden by the large heatspreader on the top.

Main PCB Bottom
Main PCB Bottom

This is a nicely designed board, the creepage distances are at least 8mm between the primary & secondary sides, the bottom also has a conformal coating, with extra silicone around the primary-side switching transistor pins, presumably to decrease the chances of the board flashing over between the close pins.
On the lower 3 USB ports can be seen the 3 SOT-23 USB charge control ICs. These are probably similar to the Texas Instruments TPS2514 controllers, which I’ve experimented with before, however I can’t read the numbers due to the conformal coating. The other semiconductors on this side of the board are part of the voltage feedback circuits for the SMPS. The 5v supply optocoupler is in the centre bottom of the board.

Heatsink Removed
Heatsink Removed

Desoldering the pair of primary side transistors allowed me to easily remove the heatspreader from the supply. There’s thermal pads & grease over everything to get rid of the heat. Here can be seen there are two transformers, forming completely separate supplies for the standard USB side of things & the QC3 side. Measuring the voltages on the main filter capacitors showed me the difference – the QC3 supply is held at 14.2v, and is managed through other circuits further on in the power chain. There’s plenty of mains filtering on the input, as well as common-mode chokes on the DC outputs before they reach the USB ports.

Quick Charge 3 DC-DC Converters
Quick Charge 3 DC-DC Converters

Here’s where the QC3 magic happens, a small DC-DC buck converter for each of the two ports. The data lines are also connected to these modules, so all the control logic is located on these too. The TO-220 device to the left is the main rectifier.

Posted on Leave a comment

Mercury 30A Ham Radio SMPS

Mercury 30A SMPS
Mercury 30A SMPS

After having a couple of the cheap Chinese PSUs fail on me in a rather spectacular fashion, I decided to splash on a more expensive name-brand PSU, since constantly replacing PSUs at £15 a piece is going to get old pretty fast. This is the 30A model from Mercury, which seems to be pretty well built. It’s also significantly more expensive at £80. Power output is via the beefy binding posts on the front panel. There isn’t any metering on board, this is something I’ll probably change once I’ve ascertained it’s reliability. This is also a fixed voltage supply, at 13.8v.

Rear Panel
Rear Panel

Not much on the rear panel, just the fuse & cooling fan. This isn’t temperature controlled, but it’s not loud. No IEC power socket here, the mains cable is hard wired.

Main Board
Main Board

Removing some spanner-type security screws reveals the power supply board itself. Everything on here is enormous to handle the 30A output current at 13.8v. The main primary side switching transistors are on the large silver heatsink in the centre of the board, feeding the huge ferrite transformer on the right.

Transformer
Transformer

The transformer’s low voltage output tap comes straight out instead of being on pins, due to the size of the winding cores. Four massive diodes are mounted on the black heatsinks for output rectification.

 

SMPS Controller
SMPS Controller

The supply is controlled via the jelly bean TL494 PWM controller IC. The multi-turn potentiometer doesn’t adjust the output voltage, more likely it adjusts the current limit.

Standby Supply
Standby Supply

Power to initially start the supply is provided by a small SMPS circuit, with a VIPer22A Low Power Primary Switcher & small transformer on the lower right. The transformer upper left is the base drive transformer for the main high power supply.

Posted on 2 Comments

Ferguson A10RWH Portable Colour TV Teardown

Back Removed
Back Removed

Here’s the other TV that was picked up from the local water point having been put of to be recycled. This one is much newer than the Thorn TV, a 10″ colour version from Ferguson.

RCA 27GDC85X CRT
RCA 27GDC85X CRT

The colour CRT used is an RCA branded one, 27GDC85X.

Power Inputs
Power Inputs

Like the other TV, this one is dual voltage input, mains 240v & 12v battery. This TV is a factory conversion of a standard 240v AC chassis though.

HV PSU
HV PSU

The 12v power first goes into this board, which looked suspiciously like an inverter. Measuring on the output pins confirmed I was right, this addon board generates a 330v DC supply under a load, but it’s not regulated at all, under no load the output voltage shoots up to nearly 600v!

Live Chassis
Live Chassis

I’ve not seen one of these labels on a TV for many years, when back in the very old TV sets the steel chassis would be used to supply power to parts of the circuitry, to save on copper. Although it doesn’t have a metal chassis to actually become live, so I’m not sure why it’s here.

Main PCB
Main PCB

The main PCB is much more integrated in this newer TV, from the mid 90’s, everything is pretty much taken care of by silicon by this point.

Main Microcontroller
Main Microcontroller

This Toshiba µC takes care of channel switching & displaying information on the CRT. The tuner in this TV is electronically controlled.

PAL Signal Processor
PAL Signal Processor

The video signal is handled by this Mitsubishi IC, which is a PAL Signal Processor, this does Video IF, Audio IF, Chroma, & generates the deflection oscillators & waveforms to drive the yoke.

CRT Adjustments
CRT Adjustments

There are some adjustments on the CRT neck board for RGB drive levels & cutoff levels. This board also had the final video amplifiers onboard, which drive the CRT cathodes.

Posted on 12 Comments

Zhiyu ZBP30A1 Electronic Dummy Load

60W DC Electronic Load
60W DC Electronic Load

Here’s a useful tool for testing both power supplies & batteries, a dummy load. This unit is rated up to 60W, at voltages from 1v to 25v, current from 200mA to 9.99A.
This device requires a 12v DC power source separate from the load itself, to power the logic circuitry.

Microcontroller Section
Microcontroller Section

Like many of these modules, the brains of the operation is an STM8 microcontroller. There’s a header to the left with some communication pins, the T pin transmits the voltage when the unit is operating, along with the status via RS232 115200 8N1. This serial signal is only present in DC load mode, the pin is pulled low in battery test mode. The 4 pins underneath the clock crystal are the programming pins for the STM8.

Serial Comms
Serial Comms
Cooling Fan
Cooling Fan

The main heatsink is fan cooled, the speed is PWM controlled via the microcontroller depending on the temperature.

Main MOSFET
Main MOSFET

The main load MOSFET is an IRFP150N from Infineon. This device is rated at 100v 42A, with a max power dissipation of 160W. On the right is a dual diode for reverse polarity protection, this is in series with the MOSFET. On the left is the thermistor for controlling fan speed.

Load Terminals
Load Terminals

The load is usually connected via a rising clamp terminal block. I’ve replaced it with a XT60 connector in this case as all my battery holders are fitted with these. This also removes the contact resistance of more connections for an adaptor cable. The small JST XH2 connector on the left is for remote voltage sensing. This is used for 4-wire measurements.

Function 1 - DC Load
Function 1 – DC Load

Powering the device up while holding the RUN button gets you into the menu to select the operating modes. Function 1 is simple DC load.

Function 2 - Battery Capacity Mode
Function 2 – Battery Capacity Mode

The rotary encoder is used to select the option. Function 2 is battery capacity test mode.

Beeper Mode
Beeper Mode

After the mode is selected, an option appears to either turn the beeper on or off.

Amps Set
Amps Set

When in standby mode, the threshold voltage & the load current can be set. Here the Amps LED is lit, so the load current can be set. The pair of LEDs between the displays shows which digit will be changed. Pressing the encoder button cycles through the options.

Volts Set
Volts Set

With the Volts LED lit, the threshold voltage can be changed.

When in DC load mode (Fun1), the device will place a fixed load onto the power source until it’s manually stopped. The voltage setting in this mode is a low-voltage alarm. The current can be changed while the load is running.

When in battery discharge test mode (Fun2), the voltage set is the cutoff voltage – discharge will stop when this is reached. Like the DC load mode, the current can be changed when the load is running. After the battery has completed discharging, the capacity in Ah & Wh will be displayed on the top 7-segment. These results can be selected between with the encoder.

Below are tables with all the options for the unit, along with the error codes I’ve been able to decipher from the Chinese info available in various places online. (If anyone knows better, do let me know!).

OptionFunction
Fun1Basic DC Load
Fun 2Battery Capacity Test
BeOnBeeper On
BeOfBeeper Off
Error CodeMeaning
Err1Input Overvoltage
Err2Low Battery Voltage / No Battery Present / Reverse Polarity
Err3Battery ESR Too High / Cannot sustain selected discharge current
Err4General Failure
Err6Power Supply Voltage Too Low / Too High. Minimum 12v 0.5A.
otPOvertemperature Protection
ErtTemperature Sensor Failure / Temperature Too Low
ouPPower Supply Overvoltage Protection
oPPLoad Power Protection
Posted on Leave a comment

LG Flatron 22EA53VQ-P Power Issue

I was recently given a pretty nice LED backlit 1080p LG monitor, with the instruction that it wouldn’t power on correctly. The monitor would power on as far as the standby light, but when fully powered on, would flash the backlight momentarily then shut down. A power supply issue was immediately suspected.

LCD Logic Board
LCD Logic Board

I popped the covers off the monitor itself first, thinking that it was an electrolytic gone bad in the backlight DC-DC converter. Not to mention the fact that cracking into a wall-wart type of PSU is only occasionally possible without the use of anger & large hammers. (Cracking the glue with the handle of a screwdriver doesn’t work so well when the factory went a bit nuts with the glue/ultrasonic welder). As can be seen in the photo, there’s not much inside these monitors, the logic is a single-chip solution, the rest of the PCB is dedicated to supplying the power rails for the various circuits. On the left is the power input & the DC-DC converter for the backlight, along with the DC-DC converter supplying the logic circuits. None of the capacitors here are damaged, everything looks good.
I then measured the output of the PSU, which under no load was the correct 19v DC. However applying any load caused the output voltage to drop like a proverbial brick. Applying a full load of 1.3A saw the output voltage drop so severely that the PSU tripped on it’s UVLO.

200mA Load
200mA Load

At 200mA of load the factory PSU is already dropping to 18v, with a 5.3kHz switching frequency appearing.

500mA Load
500mA Load

At higher load the frequency increases to 11.5kHz & the output voltage has dropped to 11.86v!

750mA Load
750mA Load

750mA was as high as I could make the supply go without it tripping itself out – the UVLO circuit trips at 9v. 12.6kHz is now riding on the severely low DC at this point.

PSU Ratings
PSU Ratings

The power supply is supposed to be rated at 1.3A at 19v, however with this fault it’s getting nowhere near that. The LG brand is on this PSU but it’s contracted out to Shenzen Honor Electric Co. Ltd.

Output Electrolytic
Output Electrolytic

Here’s the problem with this PSU. The output electrolytic has ballooned. I don’t have an ESR tester, but this cap has gone way past it’s sell-by date. It’s position right next to the heatsink with the output rectifier diodes has probably cooked it. The PSU isn’t that badly built for a Chinese one – there’s plenty of creepage distance on the PCB & even a couple of isolation slots.

Posted on 12 Comments

Panasonic NV-M5 VHS Camcorder Teardown

Overview

Panasonic NV-M5 Camera
Panasonic NV-M5 Camera

Time foe some more retro tech! This is a 1980’s vintage CCD-based VHS camcorder from Panasonic, the NV-M5. There are a lot of parts to one of these (unlike modern cameras), so I’ll split this post into several sections to make things easier to read (and easier to keep track of what I’m talking about :)).

Left Side
Left Side

The left side of the camera holds the autofocus, white balance, shutter speed & date controls.

Left Side Controls
Left Side Controls
Lens Adjustments
Lens Adjustments

The lens is fully adjustable, with either manual or motorized automatic control.

Rear Panel
Rear Panel

The back panel has the battery slot, a very strange looking DC input connector, remote control connector & the earphone jack.

Top Controls
Top Controls

The top panel of the camera holds the main power controls, manual tape tracking & the tape transport control panel.

Viewfinder
Viewfinder

The viewfinder is mounted on a swivel mount. There’s a CRT based composite monitor in here. Hack ahoy!

Camera Section

Process Board Assembly
Process Board Assembly

Here’s the camera section of the camcorder, and is totally packed with electronics! There’s at least half a dozen separate boards in here, all fitted together around the optics tube assembly.

AWB PCB
AWB PCB

On the top of the assembly is the Automatic White Balance PCB. Many adjustments here to get everything set right. Not much on the other side of this board other than a bunch of Op-Amps. The iris stepper motor is fitted in a milled opening in the PCB, this connects to one of the other PCBs in the camera module.

AWB Sensor
AWB Sensor

Here’s the AWB sensor, mounted next to the lens. I’m not all to certain how this works, but the service manual has the pinout, and there are outputs for all the colour channels, RGB. So it’s probably a trio of photodiodes with filters.

Focus & Zoom Motors
Focus & Zoom Motors

Focus & Zoom are controlled with a pair of DC gear motors. The manual operation is feasible through the use of slip clutches in the final drive pinion onto the lens barrel.

Process Board
Process Board

The main camera section process board is above. This board does all the signal processing for the CCD, has the bias voltage supplies and houses the control sections for the motorized parts of the optics assembly. There are quite a few dipped Tantalum capacitors on pigtails, instead of being directly board mounted. This was probably done due to space requirements on the PCB itself.2016-08-20_13-40-11_000357

Under the steel shield on this board is some of the main signal processing for the CCD.

Optics Assembly
Optics Assembly

The back of the optics tube is a heavy casting, to supress vibration. This will be more clear later on.

Position Sensor Flex
Position Sensor Flex

The position of the lens elements is determined by reflective strips on the barrel & sensors on this flex PCB.

Sub Process Board
Sub Process Board

There’s another small board tucked into the side of the tube, this hooks into the process PCB.

Process Delay Line
Process Delay Line

According to the schematic, there’s nothing much on this board, just a delay line & a few transistors.

Piezo Focus Disc
Piezo Focus Disc

Here’s the reason for the heavy alloy casing at the CCD mounting end of the optics: the fine focus adjustment is done with a piezoelectric disc, the entire CCD assembly is mounted to this board. Applying voltage to the electrodes moves the assembly slightly to alter the position of the CCD. The blue glass in the centre of the unit is the IR filter.

IR Relective Sensors
IR Relective Sensors

The barrel position sensors are these IR-reflective type.

Iris Assembly
Iris Assembly

The iris is mounted just before the CCD, this is controlled with a galvanometer-type device with position sensors incorporated.

Iris Opening
Iris Opening

Pushing on the operating lever with the end of my screwdriver opens the leaves of the iris against the return spring.

Tape Transport & Main Control

Main Control Board
Main Control Board

Tucked into the side of the main body of the unit is the main system control board. This PCB houses all the vital functions of the camera: Power Supply, Servo Control, Colour Control,Video Amplifiers, etc.

Tape Drum
Tape Drum

Here’s the main tape transport mechanism, this is made of steel & aluminium stampings for structural support. The drum used in this transport is noticeably smaller than a standard VHS drum, the tape is wrapped around more of the drum surface to compensate.

Tape Transport
Tape Transport

The VHS tape sits in this carriage & the spools drive the supply & take up reels in the cartridge.

Main Control PCB
Main Control PCB

Here’s the component side of the main control PCB. This one is very densely packed with parts, I wouldn’t like to try & troubleshoot something like this!

Main PCB Left
Main PCB Left

The left side has the video head amp at the top, a Panasonic AN3311K 4-head video amp. Below that is video processing, the blue components are the analogue delay lines. There are a couple of hybrid flat-flex PCBs tucked in between with a couple of ICs & many passives. These hybrids handle the luma & chroma signals.
Top left is the capstan motor driver a Rohm BA6430S. The transport motors are all 3-phase brushless, with exception of the loading motor, which is a brushed DC type.

Delay Line
Delay Line

Here’s what is inside the delay lines for the analogue video circuits. The plastic casing holds a felt liner, inside which is the delay line itself.

Internal Glass
Internal Glass

The delay is created by sending an acoustic signal through the quartz crystal inside the device by a piezoelectric transducer, bouncing it off the walls of the crystal before returning it to a similar transducer.

Main PCB Centre
Main PCB Centre

Here’s the centre of the board, the strange crystal at bottom centre is the clock crystal for the head drum servo. Why it has 3 pins I’m not sure, only the two pins to the crystal inside are shown connected on the schematic. Maybe grounding the case?
The main servo controls for the head drum & the capstan motor are top centre, these get a control signal from the tape to lock the speed of the relative components.

Main PCB Right
Main PCB Right

Here’s the right hand side. The main power supply circuitry is at top right, with a large can containing 4 switching inductors & a ferrite pot core transformer. All these converters are controlled by a single BA6149 6-channel DC-DC converter controller IC via a ULN2003 transistor array.
The ceramic hybrid board next to the PSU has 7 switch transistors for driving various indicator LEDs.
The large tabbed IC bottom centre is the loading motor drive, an IC from Mitsubishi, the M54543. This has bidirectional DC control of the motor & built in braking functions. The large quad flat pack IC on the right is the MN1237A on-screen character generator, with the two clock crystals for the main microcontroller.

Erase Head
Erase Head

The full erase head has it’s power supply & oscillator on board, applying 9v to this board results in an AC signal to the head, which erases the old recording from the tape before the new recording is laid down by the flying heads on the drum.

Audio Control PCB
Audio Control PCB

The Audio & Control head is connected to this PCB, which handles both reading back audio from the tape & recording new audio tracks. The audio bias oscillator is on this board, & the onboard microphone feeds it’s signal here. The control head is fed directly through to the servo section of the main board.

Drum Motor
Drum Motor

The motor that drives the head drum is another DC brushless 3-phase type.

Hall Sensors
Hall Sensors

These 3 Hall sensors are used by the motor drive to determine the rotor position & time commutation accordingly.

Stator
Stator

The stator on this motor is of interesting construction, with no laminated core, the coils are moulded into the plastic holder. The tach sensor is on the side of the stator core. This senses a small magnet on the outside of the rotor to determine rotational speed. For PAL recordings, the drum rotates at 1500 RPM.

Motor Removed
Motor Removed

Not much under the stator other than the bearing housing & the feedthrough to the rotary transformer.

Head Disc
Head Disc

The heads are mounted onto the top disc of the drum, 4 heads in this recorder. The signals are transmitted to the rotating section through the ferrite rotary transformer on the bottom section.

Head Chip
Head Chip

The tiny winding of the ferrite video head can just about be seen on the end of the brass mounting.

Capstan Motor Components
Capstan Motor Components

The capstan motor is similar to the drum motor, only this one is flat. The rotor has a ferrite magnet, in this case it wasn’t glued in place, just held by it’s magnetic field.

Capstan Motor Stator
Capstan Motor Stator

The PCB on this motor has a steel backing to complete the magnetic circuit, the coils for the 3 motor phases are simply glued in place. The Hall sensors on this motor are placed in the middle of the windings though.
Again there is a tach sensor on the edge of the board that communicates the speed back to the controller. This allows the servo to remain locked at constant speed.

Viewfinder

Viewfinder Assembly
Viewfinder Assembly

As usual with these cameras, this section is the CRT based viewfinder. These units take the composite signal from the camera to display the scene. This one has many more pins than the usual viewfinder. I’ll hack a manual input into this, but I’ll leave that for another post.

Viewfinder Circuits
Viewfinder Circuits

Being an older camera than the ones I’ve had before, this one is on a pair of PCBs, which are both single-sided.

Main Viewfinder Board
Main Viewfinder Board

The main board has all the power components for driving the CRT & some of the adjustments. The main HV flyback transformer is on the right. This part creates both the final anode voltage for the tube & the focus/grid voltages.

Viewfinder Control PCB Top
Viewfinder Control PCB Top

The viewfinder control IC is on a separate daughter board in this camera, with two more controls.

Control IC
Control IC

The control IC is a Matsushita AN2510S, this has all the logic required to separate the sync pulses from the composite signal & generate an image on the CRT.

Viewfinder CRT Frame
Viewfinder CRT Frame

The recording indicator LEDs are mounted in the frame of the CRT & appear above the image in the viewfinder.

Viewfinder CRT With Yoke
Viewfinder CRT With Yoke

Here the CRT has been separated from the rest of the circuitry with just the deflection yoke still attached.

M01JPG5WB CRT
M01JPG5WB CRT

The electron gun in this viewfinder CRT is massive in comparison to the others that I have seen, and the neck of the tube is also much wider. These old tubes were very well manufactured.

Viewfinder Optics
Viewfinder Optics

A simple mirror & magnifying lens completes the viewfinder unit.

Posted on Leave a comment

MingHe D3806 Buck-Boost DC-DC Converter

DC-DC Converter
DC-DC Converter

Here’s a useful buck-boost DC-DC converter from eBay, this one will do 36v DC at 6A maximum output current. Voltage & current are selected on the push buttons, when the output is enabled either the output voltage or the output current can be displayed in real time.

Display PCB
Display PCB

Here’s the display PCB, which also has the STM32 microcontroller that does all the magic. There appears to be a serial link on the left side, I’ve not yet managed to get round to hooking it into a serial adaptor to see if there’s anything useful on it.

Display Drive & Microcontroller
Display Drive & Microcontroller

The bottom of the board holds the micro & the display multiplexing glue logic.

Main PCB
Main PCB

Not much on the mainboard apart from the large switching inductors & power devices. There’s also a SMPS PWM controller, probably being controlled from the micro.

Posted on Leave a comment

ELuc BLU4 Intelligent Lithium Battery Charger W/Bluetooth

BLU4 Battery Charger
BLU4 Battery Charger

Here’s another battery charger designed for lithium chemistry cells, the BLU4. This charger doesn’t display much on it’s built in LCD, apart from basic cell voltage & charging current limits, as it has a built in Bluetooth module that will link into an Android or iOS app.

Above the charger is operating with 4 brand new cells, at a current of 500mA per cell. If only a pair of cells is being charged, the current can be increased to 1A per cell.

LCD
LCD

Not much in the way of user interface on the charger, a tiny LCD & single button for cycling through the display options.

Dataplate
Dataplate

The usual stuff on the data plate, the charger accepts an input of 12v DC at 1A.

Bottom Cover Removed
Bottom Cover Removed

Removing the 6 screws on the bottom of the casing allows the board to be seen. Not much on the bottom, the 4 cell negative connections can be seen, with their springs for adjusting for cell length.

MOSFETs
MOSFETs

There’s a couple of P-Channel FETs on the bottom side for the charging circuits, along with some diodes.

Main PCB
Main PCB

The main PCB is easily removed after the springs are unhooked from the terminals. Most of the power circuitry is located on the top side near the power input. There are 4 DC-DC converters on board for stepping the input 12v down to the 4.2v required to charge a lithium cell.

Second Controller
Second Controller

Not entirely sure what this IC is in the bottom corner, as it’s completely unmarked. I’m guessing it’s a microcontroller though.

DC Input Side
DC Input Side

The top left of the board is crammed with the DC-DC converters, all the FETs are in SO8 packages.

DC-DC Converters
DC-DC Converters

One pair of DC-DC inductors is larger than the other pair, for reasons I’m unsure of.

Bluetooth Module
Bluetooth Module

Bluetooth connectivity is provided by this module, which is based around a TTC2541 BLE IC.

Microcontroller
Microcontroller

Below the Bluetooth module is yet another completely unmarked IC, the direct link to the BLE interface probably means it’s another microcontroller. The Socket to the left of the IC is the connector for the front panel LCD & button.

LCD PCB
LCD PCB

There’s not much to the LCD itself, so I won’t remove this board. The LCD controller is a COB type device, from the number of connections it most likely communicates with the micro via serial.

Magnets in High Power or Precision He-Ne Laser Heads

Effects of Magnetic Fields on He-Ne Laser Operation

If you open the case on a higher power (and longer) He-Ne laser head or one that is designed with an emphasis on precision and stability, you may find a series of magnets or electromagnetic coils in various locations in close proximity to the He-Ne tube. They may be distributed along its length or bunched at one end; with alternating or opposing N and S poles, or a coaxial arrangement; and of various sizes, styles, and strengths.

Magnets may be incorporated in He-Ne lasers for several reasons including the suppression of IR spectral lines to improve efficiency (such as it is!) and to boost power at visible wavelengths, to control its polarization, and to split the optical frequency into two closely spaced components. There are no doubt other uses as well.

The basic mechanism for the interaction of emitted light and magnetic fields is something called the ‘Zeeman Effect’ or ‘Zeeman Splitting’. The following brief description is from the “CRC Handbook of Chemistry and Physics”:

“The splitting of a spectrum line into several symmetrically disposed components, which occurs when the source of light is placed in a strong magnetic field. The components are polarized, the directions of polarization and the appearance of the effect depending on the direction from which the source is viewed relative to the lines of force.”

Magnetic fields may affect the behaviour of He-Ne tubes in several ways:

  • He-Ne tubes with long discharge paths will tend to amplify the (generally unwanted) IR wavelengths (probably the one at 3.39µm which is one of the strongest, if not the strongest of all lines) at the expense of the visible ones. The purpose of these magnets is to suppress spectral lines that do not contribute to the desired lasing wavelength (usually the visible red 632.8nm for these long tubes). As a result of the Zeeman Effect, if a gas radiates in a magnetic field, most of its spectral lines are split into 2 or sometimes more components. The magnitude of the separation depends on the strength of the magnetic field and as a result, if the field is also non-uniform, the spectral lines are broadened as well because light emitted at different locations will see an unequal magnetic field. These ‘fuzzed out’ lines cannot participate in stimulated emission as efficiently as nice narrow lines and therefore will not drain the upper energy states for use by the desired lines. The magnitude of the Zeeman splitting effect is also wavelength dependent and therefore can be used to control the gain of selected spectral lines (long ones are apparently affected more than short ones on a percentage basis).The Doppler-broadened gain bandwidth of neon is inversely related to wavelength. At 632.8nm (red) it is around 1.5 to 1.6 GHz; at 3,391nm (the troublesome IR line), it is only around 310MHz. A magnetic field that varies spatially along the tube will split and move the gain curves at all wavelengths equally by varying amounts depending on position. However, a, say, 100 or 200MHz split and shift of the gain curve for the 632.8nm red transition won’t have much effect, but it will effectively disrupt lasing for the 3,391nm IR transition.Without the use of magnets, the very strong neon IR line at 3.39µm would compete with (and possibly dominate over) the desired visible line (at 632.8nm) stealing power from the discharge that would otherwise contribute to simulated emission at 632.8 nm. However, the IR isn’t wanted (and therefore will not be amplified since the mirrors are not particularly reflective at IR wavelengths anyhow). Since the 3.39nm wavelength is more than 5 times longer than the 632.8 nm red line, it is affected to a much greater extent by the magnetic field and overall gain and power output at 632.8nm may be increased dramatically (25 percent or more). The magnets may be required to obtain any (visible) output beam at all with some He-Ne tubes (though this is not common).

    The typical higher power Spectra-Physics He-Ne laser will have relatively low strength magnets (e.g., like those used to stick notes to your fridge) placed at every available location along the exposed bore along the sides of the L-shaped resonator frame. They will alternate N and S poles pointing toward the bore. Interestingly, on some high mileage tubes, brown crud (which might be material sputtered off the anode) may collect inside the bore – but only at locations of one field polarity (N or S, whichever would tend to deflect a positive ion stream into the wall). The crud itself doesn’t really affect anything but is an indication of long use. And on average, tubes with a lot of brown crud may be harder to start, and require a higher voltage to run, and have lower output power.

    I do not know how to determine if and when such magnets are needed for long high power He-Ne tubes where they are not part of an existing laser head. My guess is that the original or intended positions, orientations, and strengths, of the magnets were determined experimentally by trial and error or from a recipe passed down from generation to generation, and not through the use of some unusually complex convoluted obscure theory. 🙂

    The only thing I can suggest other than contacting the manufacturer (like any manufacturer now cares about and supports He-Ne lasers at all!) is to very carefully experiment with placing magnets of various sizes and strengths at strategic locations (or a half dozen such locations) to determine if beam power at the desired wavelength is affected. Just take care to avoid smashing your flesh or the He-Ne tube when playing with powerful magnets. Though the magnets used in large-frame He-Ne lasers with exposed bores aren’t particularly powerful, to produce the same effective field strength at the central bore of an internal mirror He-Ne tube may require somewhat stronger ones, though even these needn’t be the flesh squashing variety. And, magnets that are very strong may affect other characteristics of the laser including polarization, and starting and running voltage. Enclosing the He-Ne tube in a protective rigid sleeve (e.g., PVC or aluminium) would reduce the risk of the latter disaster, at least. 🙂 If there is going to be any significant improvement, almost any arrangement of 1 or 2 magnets should show some effect.

    There may be an immediate effect when adding or moving a magnet. However, to really determine the overall improvement in (visible) output power and any reduction in the variation of output power with mode sweep, the laser should be allowed to go through several mode sweep cycles for 3.39 µm. These will be about 5.4 times the length of the mode sweep for 632.8 nm.

    CAUTION: For soft-seal laser tubes in less than excellent health (i.e., which may have gas contamination), changing the magnet configuration near the cathode may result in a slow decline in output power (over several hours) which may or may not recover. I have only observed this behaviour with a single REO one-Brewster tube, but there seems to be no other explanation for the slow decline to about half the original power, and then subsequent slow recovery with extended run time after the magnets were removed entirely. Possibly simply leaving the magnets in the new configuration would have eventually resulted in power recovery, but at the time the trend was not encouraging.

    (From: Lynn Strickland ([email protected]).)

    “They’ve pretty much nailed the 3.39 micron problem on red He-Ne tubes these days so magnets really aren’t needed on them. Even the new green tubes don’t have much of a problem – especially since the optic suppliers have perfected the mirror coatings. All of the good green mirrors are now done with Ion Beam Sputtering (IBS), as opposed to run-of-the-mill E-Beam stuff.However, you’ll probably see a benefit from magnets to suppress the 3.39µm line on the older He-Ne tubes.”

  • While most inexpensive He-Ne tubes that produce linearly polarized light do so because of an internal Brewster plate and lasers with external mirrors have Brewster windows on the ends of the plasma tube, it is also possible to affect the polarization of the beam with strong magnets again using the Zeeman Effect.Where the capillary of the plasma tube is exposed as with many older lasers, and the magnets can be placed in close proximity to the bore, their strength can be much lower. A few commercial lasers (like the Spectra-Physics model 132) offered a polarization option which adds a magnet assembly alongside the tube. In this case, what is required is a uniform or mostly uniform field of the appropriate orientation rather than one that varies as for IR spectral line suppression though both of these could be probably be combined. However, the polarization purity with this approach never came anywhere close to that using a simple Brewster window or plate, found in all modern polarized He-Ne lasers.Also see the section: Unrandomizing the Polarization of a Randomly Polarized HeNe Tube.
  • Two-frequency He-Ne lasers are used in precision interferometers for making measurements to nanometer accuracy. With these, the Zeeman effect is exploited to split the output of a single frequency He-Ne laser into a pair of closely spaced optical frequencies so that a difference or “split” frequency can be obtained using a fast photodiode. The most common are axial Zeeman lasers that use a powerful magnetic field oriented along the axis of the tube. For these, the “split” frequency is typically between 1.5 and 7.5 MHz (though it could be much lower but not much higher). Transverse Zeeman lasers use a moderate strength field oriented across the tube and have split frequencies in the 100s of kHz range. To stabilize these lasers, either a heater or piezo element is provided to precisely control cavity length.

In principle, varying fields from electromagnets could be used for intensity, polarization, and frequency modulation. I do not know whether any commercial He-Ne lasers have been implemented in this manner.

But if magnets were not originally present, the only situation where adding some may make sense is for older longer or “other colour” He-Ne tubes where a series of weak magnets may actually boost output power by 10 to 25 percent or more. On the other hand, most non-Zeeman stabilized He-Ne lasers do NOT like magnets at all. Even a relatively weak stray magnetic field from nearby equipment may result in a significant change in behaviour. However, unless ferrous metals are used in the laser’s construction, any change will likely not be permanent.

Typical Magnet Configurations

Here are examples of some of the common arrangements of magnets that you may come across. In addition to those shown, magnets may be present along only one side of the tube (probably underneath and partially hidden) or in some other peculiar locations. I suspect that for many commercial He-Ne lasers, the exact shape, strength, number, position, orientation, and distribution of the magnets was largely determined experimentally. In other words, some poor engineer was given a bare He-Ne tube, a pile of assorted magnets, a roll of duct tape, and a lump of modelling clay, and asked to optimize some aspect(s) of the laser’s performance. 🙂

  • Transverse (varying field) – These will most likely be permanent magnets in pairs, probably several sets.Polarity may alternate with North and South poles facing each other across the tube forming a ‘wiggler’ so named since such a they will tend to deflect the ionized discharge back and forth though there may be no visible effects in the confines of the capillary:
                       N      S      N      S      N      S      N
                 ||===================================================||
                 ||======. .=================================. .======||
                       S |||  N      S      N      S      N  |_| S
                         '|'                                 '|'
    
    

    For some including the Spectra-Physics 120, 124, 125, and 127, the magnets are actually below and on one side. The objective is usually IR (3.39µm) suppression and the magnets are generally relatively weak (refrigerator note holding strength). Alternatively, North and South poles may face each other:

                       N      S      N      S      N      S      N
                 ||===================================================||
                 ||======. .=================================. .======||
                       N |||  S      N      S      N      S  |_| N
                         '|'                                 '|'
    
    

    With either of these configurations, after long hours of operation, there may be very pronounced brown deposits inside the bore that correlate with the pole positions.

  • Transverse (uniform field). Here, the objective is to achieve a constant field throughout the entire discharge:
                       N      N      N      N      N      N      N
                 ||===================================================||
                 ||======. .=================================. .======||
                       S |||  S      S      S      S      S  |_| S
                         '|'                                 '|'
    
    

    This configuration is found in two very different situations. Strong magnets were used in laser like the Spectra-Physics 132P to polarize the beam. Weaker magnets are used in transverse Zeeman two-frequency He-Ne lasers.

  • Axial – These will most likely be permanent magnet toroids (similar to magnetron magnets), though an electromagnetic coil (possibly with adjustable or selectable field strength) could also be used. Thus, the North and South poles will be directed along the tube axis:
                            +--+      +--+      +--+      +--+
                          N |  | S  N |  | S  N |  | S  N |  | S
                            +--+      +--+      +--+      +--+
                ||======================================================||
                ||====. .========================================. .====||
                      |||   +--+      +--+      +--+      +--+   |_|
                      '|' N |  | S  N |  | S  N |  | S  N |  | S '|'
                            +--+      +--+      +--+      +--+
    
    

    Other axial configurations with opposing poles or radially oriented poles may also be used or there may be a single long solenoid type of coil or cylindrical permanent magnet as for a two-frequency laser interferometer.

Posted on 1 Comment

eBay High Voltage DC-DC Converter Module

High Voltage DC-DC
High Voltage DC-DC

Going through eBay recently looking for parts for a couple of CRT-based projects, I came across these DC-DC converters.
Apparently rated from 45-390v DC output at 200mA, these should be ideal for driving some of the electrodes (focus, screen, grid) in a CRT.
Above is the top of the board, input voltage header on the left, output voltage adjust in the centre & output voltage header on the right.
This module has a mini-automotive fuse, at 10A for input protection.
On the heatsink is mounted the main switching MOSFET, a RU7088R from Ruichips. This FET is fairly heavily rated at 70v 80A, with 6.5mΩ on-resistance.

PCB Bottom
PCB Bottom

The bottom of the board has the control components, with a pair of ICs. Unfortunately the numbers have been scrubbed off, so no identification here. The output from the transformer is rectified with a single large SMD diode on the left side of the board.
There’s also plenty of isolation gap between the HV output trace & the low voltage logic side of the circuit, the two being bridged only by a resistive divider for output voltage measurement.

Posted on 4 Comments

TS100 12-24v Soldering Iron

Handle
Handle

When I ordered the tiny USB soldering iron, I decided a proper iron upgrade would be a good idea. Looking around for something that didn’t require AC mains power turned up the TS100, a Chinese design, that unusually is actually very good! Above is the handle itself, with it’s small OLED display & two operation buttons.
This iron is controlled by a STM32 ARM microcontroller, the firmware & schematics are completely open-source.

DC Input Jack / USB Port
DC Input Jack / USB Port

The bottom end of the iron has the main DC input jack, designed with laptop chargers in mind (DC input range from 10v-24v). Above that is the micro USB port for programming.

Heating Element Socket
Heating Element Socket

The iron tips slot into the other end, many different tip types & shapes are available. The one supplied was the simple conical tip.

Standby Screen
Standby Screen

Plugging the iron into some power gets a standby screen – it doesn’t just start heating immediately, for safety.

Heating
Heating

The left hand button starts the heater, which on a 24v input voltage gets to operating temperature well within 10 seconds.

Temperature Stable
Temperature Stable

The right hand screen icon changes when the temperature has stabilized. The control PCB has an integrated accelerometer, leaving the iron hot for a few minutes triggers a timeout & it powers down. Once picked up again, the heater instantly restarts.
The operating temperature is adjustable with the pair of buttons, from 100°C to 400°C.

Different Bits
Different Bits

Here’s a selection of bits for the iron. The design is very similar to the Hakko T15 series of irons, but these are a much shorter version. Like the Hakko versions, the actual tips aren’t replaceable, once the bit burns out, the entire assembly is replaced.

TS100 Soldering Iron
TS100 Soldering Iron

Here’s the iron fully assembled. The entire device is about the same length as just the heating element from a Hakko T15!

Posted on Leave a comment

Multifunction LCD Power Meter MHF-8020P

LCD Unit
LCD Unit

I recently came across these on eBay, so I thought I’d grab one to see how they function, with all the metrics they display, there’s potential here for them to be very useful indeed.
One of the best parts is that no wiring is required between the sensor board & the LCD head unit – everything is transmitted over a 2.4GHz data link using NRF24L01 modules.
Above is the display unit, with it’s colour LCD display. Many features are available on this, & they appear to be designed for battery powered systems.

Monitor PCB
Monitor PCB

Another PCB handles the current & voltage sensing, so this one can be mounted as close to the high current wiring as possible.

Monitor PCB Microcontroller
Monitor PCB Microcontroller

The transmitter PCB is controlled with an STM8S003F3 microcontroller from ST Microelectronics. This is a Flash based STM with 8KB of ROM, 1KB of RAM & 10-bit ADC. The NRF24L01 transceiver module is just to the left.
There’s only a single button on this board, for pairing both ends of the link.

Output MOSFET
Output MOSFET

The high current end of the board has the 0.0025Ω current shunt & the output switch MOSFET, a STP75NF75 75v 75A FET, also from ST Microelectronics. A separate power source can be provided for the logic via the blue terminal block instead of powering from the source being measured.

LCD Unit Rear
LCD Unit Rear

Here’s the display unit, only a pair of power terminals are provided, 5-24v wide-range input is catered for.

LCD Unit PCB
LCD Unit PCB

Unclipping the back of the board reveals the PCB, with another 2.4GHz NRF24L01 module, and a STM8S005K6 microcontroller in this case. The switching power supply that handles the wide input voltage is along the top edge of the board.

Unfortunately I didn’t get any instruction manual with this, so some guesswork & translation of the finest Chinglish was required to get my head round the way everything works. To make life a little easier for others that might have this issue, here’s a list of functions & how to make them work.

LCD Closeup
LCD Closeup

On the right edge of the board is the function list, a quick press of the OK button turns a function ON/OFF, while holding it allows the threshold to be set.
When the output is disabled by one of the protection functions, turning that function OFF will immediately enable the output again.
The UP/DOWN buttons obviously function to select the desired function with the cursor just to the left of the labels. Less obviously though, pressing the UP button while the very top function is selected will change the Amp-Hours display to a battery capacity icon, while pressing DOWN while the very bottom function is selected will change the Watts display to Hours.
The round circle to the right displays the status of a function. Green for OK/ON Grey for FAULT/OFF.

  • OVP: Over voltage protection. This will turn off the load when the measured voltage exceeds the set threshold.
  • OPP: Over power protection. This function prevents a load from pulling more than a specified number of watts from the supply.
  • OCP: Over current protection. This one’s a little more obvious, it’ll disable the output when the current measured exceeds the specified limit.
  • OUT: This one is the status of the output MOSFET. Can also be used to manually enable/disable the output.
  • OFT: Over time protection. This one could be useful when charging batteries, if the output is enabled for longer than the specified time, the output will toggle off.
  • OAH: Over Amp-Hours protection. If the counted Amp-Hours exceeds the set limit, the output will be disabled.
  • Nom: This one indicates the status of the RF data link between the modules, and can be used to set the channel they operate on.
    Pairing is achieved by holding the OK button, selecting the channel on the LCD unit, and then pressing the button on the transmitter board. After a few seconds, (it appears to scan through all addresses until it gets a response) the display will resume updating.
    This function would be required if there are more than a single meter within RF range of each other.

I’ve not yet had a proper play with all the protection functions, but a quick mess with the OVP setting proved it was very over-sensitive. Setting the protection voltage to 15v triggered the protection with the measured voltage between 12.5v-13.8v. More experimentation is required here I think, but as I plan to just use these for power monitoring, I’ll most likely leave all the advanced functions disabled.

Posted on Leave a comment

IC Decapping: The Process

As I’ve been posting some photos of decapped ICs lately, I thought I’d share the process I use personally for those that might want to give it a go 😉

The usual method for removing the epoxy package from the silicon is to use hot, concentrated Nitric Acid. Besides the obvious risks of having hot acids around, the decomposition products of the acid, namely NO² (Nitrogen Dioxide) & NO (Nitrogen Oxide), are toxic and corrosive. So until I can get the required fume hood together to make sure I’m not going to corrode the place away, I’ll leave this process to proper labs ;).

The method I use is heat based, using a Propane torch to destroy the epoxy package, without damaging the Silicon die too much.

TMS57002 Audio DSP
TMS57002 Audio DSP

I start off, obviously, with a desoldered IC, the one above an old audio DSP from TI. I usually desolder en-masse for this with a heat gun, stripping the entire board in one go.

FLAMES!
FLAMES!

Next is to apply the torch to the IC. A bit of practice is required here to get the heat level & time exactly right, overheating will cause the die to oxidize & blacken or residual epoxy to stick to the surface.
I usually apply the torch until the package just about stops emitting it’s own yellow flames, meaning the epoxy is almost completely burned away. I also keep the torch flame away from the centre of the IC, where the die is located.
Breathing the fumes from this process isn’t recommended, no doubt besides the obvious soot, the burning plastic will be emitting many compounds not brilliant for Human health!
Once the IC is roasted to taste, it’s quenched in cold water for a few seconds. Sometimes this causes such a high thermal shock that the leadframe cracks off the epoxy around the die perfectly.

All Your Die Belong To Us
All Your Die Belong To Us

Now that the epoxy has been destroyed, it breaks apart easily, and is picked away until I uncover the die itself. (It’s the silver bit in the middle of the left half). The heat from the torch usually destroys the Silver epoxy holding the die to the leadframe, and can be removed easily from the remaining package.

Decapped
Decapped

BGA packages are usually the easiest to decap, flip-chip packages are a total pain due to the solder balls being on the front side of the die, I haven’t managed to get a good result here yet, I’ll probably need to chemically remove the first layer of the die to get at the interesting bits 😉

Slide
Slide

Once the die has been rinsed in clean water & inspected, it’s mounted on a glass microscope slide with a small spot of Cyanoacrylate glue to make handling easier.

Some dies require some cleaning after decapping, for this I use 99% Isopropanol & 99% Acetone, on the end of a cotton bud. Any residual epoxy flakes or oxide stuck to the die can be relatively easily removed with a fingernail – turns out fingernails are hard enough to remove the contamination, but not hard enough to damage the die features.

Once cleaning is complete, the slide is marked with the die identification, and the photographing can begin.

Microscope Mods

I had bought a cheap eBay USB microscope to get started, as I can’t currently afford a proper metallurgical microscope, but I found the resolution of 640×480 very poor. Some modification was required!

Modified Microscope
Modified Microscope

I’ve removed the original sensor board from the back of the optics assembly & attached a Raspberry Pi camera board. The ring that held the original sensor board has been cut down to a minimum, as the Pi camera PCB is slightly too big to fit inside.
The stock ring of LEDs is run direct from the 3.3v power rail on the camera, through a 4.7Ω resistor, for ~80mA. I also added a 1000µF capacitor across the 3.3v supply to compensate a bit for the long cable – when a frame is captured the power draw of the camera increases & causes a bit of voltage drop.

The stock lens was removed from the Pi camera module by careful use of a razor blade – being too rough here *WILL* damage the sensor die or the gold bond wires, which are very close to the edge of the lens housing, so be gentle!

Mounting Base
Mounting Base

The existing mount for the microscope is pretty poor, so I’ve used a couple of surplus ceramic ring magnets as a better base, this also gives me the option of raising or lowering the base by adding or removing magnets.
To get more length between the Pi & the camera, I bought a 1-meter cable extension kit from Pi-Cables over at eBay, cables this long *definitely* require shielding in my space, which is a pretty aggressive RF environment, or interference appears on the display. Not surprising considering the high data rates the cable carries.
The FFC interface is hot-glued to the back of the microscope mount for stability, for handheld use the FFC is pretty flexible & doesn’t apply any force to the scope.

Die Photography

Since I modified the scope with a Raspberry Pi camera module, everything is done through the Pi itself, and the raspistill command.

Pi LCD
Pi LCD

The command I’m currently using to capture the images is:
raspistill -ex auto -awb auto -mm matrix -br 62 -q 100 -vf -hf -f -t 0 -k -v -o CHIPNAME_%03d.jpg

This command waits between each frame for the ENTER key to be pressed, allowing me to position the scope between shots. Pi control & file transfer is done via SSH, while I use the 7″ touch LCD as a viewfinder.

The direct overhead illumination provided by the stock ring of LEDs isn’t ideal for some die shots, so I’m planning on fitting some off-centre LEDs to improve the resulting images.

Image Processing

Obviously I can’t get an ultra-high resolution image with a single shot, due to the focal length, so I have to take many shots (30-180 per die), and stitch them together into a single image.
For this I use Hugin, an open-source panorama photo stitching package.

Hugin
Hugin

Here’s Hugin with the photos loaded in from the Raspberry Pi. To start with I use Hugin’s built in CPFind to process the images for control points. The trick with getting good control points is making sure the images have a high level of overlap, between 50-80%, this way the software doesn’t get confused & stick the images together incorrectly.

Optimiser
Optimiser

After the control points are generated, which for a large number of high resolution images can take some time, I run the optimiser with only Yaw & Pitch selected for all images.

Optimising
Optimising

If all goes well, the resulting optimisation will get the distance between control points to less than 0.3 pixels.

Panorama Preview
Panorama Preview

After the control points & optimisation is done, the resulting image can be previewed before generation.

Texas Instruments TMS67002
Texas Instruments TMS67002

After all the image processing, the resulting die image should look something like the above, with no noticeable gaps.

Posted on Leave a comment

De La Rue Coin Counting Machine Followup – PSU Oddness

I did a little more digging into the PSU circuitry of the small coin counting machine, and it’s even more strange than I thought!
The part I originally thought was a transformer on the PSU board is in fact a DC-DC converter module!

DC-DC Converter
DC-DC Converter

Here’s the device after desoldering it from the PCB. It turns out that instead of a transformer, it’s an inductor.

Hiding Control Electronics
Hiding Control Electronics

Underneath is the controller electronics, with an COB controller & the switching transistors are under a protective covering of silicone.

Mains Transformer
Mains Transformer

Driving this whole lot of PSU randomness is the mains transformer, with a secondary voltage of 35v.

The only reason I can think of that the manufacturer went to this much expense with the power supply is stability – a coin counting machine that miscounts due to power supply surges, sags & spikes wouldn’t be very much use. It’s not likely I’ll see anything similar again, unless I manage to get hold of something like medical grade equipment.

Posted on Leave a comment

Duratool ZD-915 12v Conversion

Inkeeping with everything else in my shack being low voltage operated, I had planned from the outset to convert the desoldering station to 12v operation. It turns out this has been the easiest tool to convert in my shack so far.

PSU Outputs
PSU Outputs

The factory SMPS is a fairly straightforward 18v 12A unit, with only a single small oddity: the desoldering gun’s heating element is controlled from inside the supply.

Iron MOSFET
Iron MOSFET

Next to the output rectifier on the heatsink is a large MOSFET, in this case a STP60NF06 from ST Micro. This is a fairly beefy FET at 60v & 60A capacity, RDS On of <0.016Ω.
This is driven via an opto-isolator from the main logic board. I’ve not yet looked at the waveform on the scope, but I suspect this is also being PWM’d to control temperature better when close to the set point.

Iron Element Controller
Iron Element Controller

Rather than fire up the soldering iron & build a new element controller circuit (Lazy Mode™), I opted to take a saw to the original power supply. I cut the DC output section of the PCB off the rest of the supply & attached this piece back to the frame of the base unit. I also added a small heatsink to the MOSFET to make sure it stays cool.

12v Power Supply
12v Power Supply

Since the fan & vacuum pump are both already 12v rated, those are connected directly to the DC input socket, that I’ve installed in place of the original IEC mains socket. The 18v for the heating element is generated by a 10A DC-DC converter, again from eBay.

Oddly, the iron itself is rated at 24v 80W, but the factory supply is only rated to 18v. I’m not sure why they’ve derated the system, but as the station already draws up to 10A from a 13.8v supply, increasing the voltage any further would start giving my DC supplies a problem, so it can stay at 18v for now.