Apple Cinema Display Repair

A few weeks ago my 20″ Apple Cinema Display decided to stop working. Instead, the power LED flashed a short-long-short error code indicating that there was a fault in the power brick. A quick swap with another display revealed this was not the case (otherwise this would be a very short post).

After doing a bit of searching there were two solutions to the problem. One of the ‘fixes’ is to block a voltage sense pin on the power connector. It seems in many cases this will let the monitor start-up, however doing this will mean that the monitor is running at an unsafe voltage. The other solution in many cases was to replace a faulty voltage regulator. Because  most of the answers I found focused on the 23″ display I couldn’t be certain until I took apart my monitor.

The culprit: 1117-3.3sj.

I feel rather fortunate in that the voltage regulator that was the source of the display not turning on. Instead of putting out the expected 3.3V, I was able to read a little over 4V on my multimeter. This was very similar to a number of other posts I found (search for “1117-3.3sj”). Annoyingly the regulator was in a DPAK (or TO-252) package, and it is one of those things that I can’t imagine many people would have lying around. I couldn’t find a data sheet for the particular regulator, so I found a replacement regulator that was overkill for the application. I ordered an LD1086 3.3V 1.5A from Digikey on Friday and got it in this afternoon.

Desoldering the old regulator was time-consuming. I snipped the two small leads off and desoldered those first. The larger tab took a lot of time and heat before it came loose. I then wicked away the excess solder and installed the new regulator.

I ended up with a little excess flux, but overall the new regulator went into place easily. I was then able to test and see if I had fixed the problem.

Powering up the monitor a green LED indicator light up, the backlight came on, and upon testing the output voltage at the regulator I was happy to see  around 3.3V. I took a little time to inspect the rest of the board while I had the monitor apart and have included a gallery with all the pictures. Re-assembling the monitor went quickly, and the $1.50 for the regulator sure beats buying a new monitor!


TI’s TMP006

Today I received a sample order from Texas Instruments. Among several ICs for a school project I also sampled some of the TMP006  “Infrared Thermopile Sensors”. I don’t have a PCB to solder them to yet, so I decided to take some macro photos.

I apologize for the quality. The top light in my microscope burned out and so all the pictures are light from the side with a handheld flashlight while trying to hold my camera steady and focused through the eyepiece. After this buying a nice microscope with a built in digital camera seems like a good idea.

The title picture is the top of the chip. It has the part number (TMP006), the alignment mark in the lower left, and what is probably the lot trace code. The interesting part is when the chip is flipped over. This is a chip-scale BGA package, which is convenient in terms of the amount of space it takes up, but almost impossible to solder by hand. To give a sense of scale the spacing between the center of each metal ball is 0.5mm.

I would have liked to get some higher quality pictures, but that will have to wait until I have a better setup .



Today I made a carrot cake, which can be a good change from electronics. If something goes wrong it is usually discovered right away, and most of the time it is fixable. This cake took about an hour to cook which seems like an instant compared to the time it takes to get prototype PCBs.

A lot of circuits can be prototyped on a breadboard and verified almost immediately which is great, but higher frequencies are desired this prototyping becomes more difficult. For a project I’m working on right now I needed to use a high speed serial ADC. On the breadboard I could get semi-reliable data up to around 30MHz, although the signal looked terrible. Pushing past this simply didn’t work, and there was no way I could reach the 48MHz needed to get the full 3MSPS out of the ADC.

Instead I had to lay out my board and hope for the best at the higher  frequencies. The turn around on boards for me ends up being a couple of weeks to a month, the trade off being that I don’t have to pay through the nose a couple of small prototype boards. This of course leaves an annoyingly long amount of time being committed to one design, and it is impossible to start a second revision until the 2-4 weeks has passed and the first prototype has been built up and tested.

I feel like I have been lucky with my last batch of boards where everything turned out great. I just sent off a new set of boards including the project mentioned previously as well as my LPC1114 DIP board, hopefully everything will come back and build up perfectly around the middle of the month. I will post the final LPC1114 board then as well as an oscilloscope picture comparing the ADC serial signals on the breadboard and final PCB.

Wireless Module Prototype


This is a random idea I had a few months ago. I wanted a small cheap wireless module that could be setup as a mesh network of sensors. This of course could be describing XBees, but I wanted something of my own. My implementation uses the RFM12B wireless module which costs around 6$ in single quantities. An ATtiny84 microcontroller on back will do all of the processing over SPI.


Prototype partially assembled.

My prototype board is partially assembled. I am missing some 0603 resistors needed to connect the SPI lines on the wireless module to the MCU. I also reminded myself how painful it is to try and solder SMT parts without the proper equipment. I am a fan of solder paste and a cheap reflow oven. If those aren’t available a regular soldering iron works as long as there is plenty of flux. With plenty of flux soldering 0402 isn’t even a problem! Unfortunately my flux was nowhere to be found. I’m saving my second prototype board for when I have some solder paste and can compare the two boards.

In terms of the idea behind the board, I plan on writing my own software to communicate between nodes on a wireless mesh network. There are two outputs/inputs on each node. This means I could easily attach 1-wire or analog sensors to the board, toggle a switch, send IR commands, etc.

The next revision of the board will be smaller, hopefully matching the dimensions of the wireless module. It will also include a coin cell battery holder.

More to come when I get the parts I need and I start on the software.


LPC Bootloader Auto-Baud

Before I found the updated version of lpc21isp I thought I was stuck using flashmagic, or writing my own tool to program the chip over serial. When I first looked through the user manual I unfortunately missed the syntonization protocol the bootloader follows. I was about to try looking at the data being transmitted on an oscilloscope when I found the correct way to finish the auto-baud routine. Section 21.3.3 of the lpc111x user manual (UM10398) fits it all into one paragraph.

The confusing aspect of this protocol is that earlier in the user manual section 10.5.14 specifies doing auto-baud using an ‘A’ or ‘a’ character and gives reasoning as to why those characters are used. The ISP auto-baud protocol requires the ‘?’ character.

If one character was all that was needed to enter the bootloader I would try and think of a couple reasons for the use of the ‘?’ character. However, after sending the initial ‘?’ there are another couple of steps required.

Connected to the bootloader.

The protocol to access the bootloader is as follows:

  • Reset with the ISP pin held low
  • Connect to RX/TX and open a terminal with your favorite program
  • ‘?” and hit return
  • LPC111x will return ‘Synchronized’
  • Reply with ‘Synchronized’
  • LPC will return ‘OK’
  • Reply with the crystal frequency in kHz (12000 in my case)
  • LPC will return ‘OK’
  • Auto-baud is now finished and ISP commands can be executed.

In my case the formatting covered up some of what I had typed, but everything worked perfectly even at 115200 baud.

I might still write something in python to flash new code onto my board, but the new version of lpc21isp looks promising and covers OSX and Linux.