Hacking the Macbook Pro Retina LCD, Part 1: First Looks

Since starting work on the iPad 3 LCD, I have become fascinated with Retina displays.  It’s crazy that you can pick up a panel that would until recently have cost hundreds or thousands for 60 bucks.  Mass production is a beautiful thing sometimes.  I may not be a Mac, but Apple gets my thanks for dragging the market out of the 1080p rut.

The only major issue with the iPad display is it’s less than ten inches diagonal.  That’s very small for everyday use.  They’re a nice portable size, but they’d look silly sitting on your desk as your primary monitor.  Of course Apple makes a couple more Retina products which are better suited to everyday use.  The largest of these is the display from the 15″ Macbook Pro Retina.

I believe my panel is from a Late 2012 Macbook Pro Retina 15″ unit. It is the LG version, model number LP154WT1(SJ)(A1).  I bought two of them on eBay for pretty cheap as semi-damaged top assembly pulls from complete laptops.  I ordered them about a week apart so only the first one has yet arrived.  The unit arrived with a screwdriver crunch in the controller PCB and the internal copper planes are visible, so hopefully it works without shorting.  Also the righthand cables were cut and there are two 3/8″ long quite deep scratches in one area.  Well, I guess you get what you pay for.

First looks

Macbook LCD assembly.

Macbook Pro 15″ Retina LCD assembly.

This really is a neat looking display.  The glass spans practically edge to edge (although the active area is around a half inch inset inside that, more on top to accomodate the camera).  According to the iFixit teardown, this assembly is only 7mm thick in the center with a panel glass thickness of 1.5mm.  That’s mighty tiny, but also not as impressive as it at first sounds as the bare glass doesn’t include the backlight and diffuser that a normal LCD has – that’s part of the full display assembly.  This is very important to note if you take up this project by purchasing one of the myriad bare-panel units on eBay – you’ll need to supply your own backlight, polarizer films and diffusers.  This can get quite pricey and/or labor intensive.

The bottom of the LCD houses a black PCB which most people identify as an inverter, but this is in actuality the LCD control electronics and has no control over the backlight (more on this later).  Inverter, in this case, is a misnomer anyway since the backlight is LED, and inverter topology backlight drivers are only applicable to CCFLs.  But I digress.

The top of the LCD controller board is very sparse.  Normally the WiFi/Bluetooth antenna array would be screwed to the top of this, so its lack of components was likely planned in order to prevent mechanical interference.  What are present are two connectors, labeled CNT1 and CNT2.

Connectors on the Macbook LCD assembly.

Connectors on the Macbook LCD assembly.

CNT2 is a 12-position dual row 0.4mm pitch board-to-board mezzanine connector with approximately 0.8mm stack height.  I can’t seem to find the exact connector, but they are similar to Molex SlimStack connectors. CNT1 is the main LCD power and data connector, and is a 30-pin I-PEX Cabline connector.

The LCD controller is held in place by a screw at either end and two adhesive pads in the middle.  In a complete assembly it would also be held in place by several additional screws which also affix the antenna array and the hinge cover, but these components were not present in the unit I purchased.  Removing the screws and unsticking the adhesive pads, the guts of the controller are revealed.  There are two metal shields covering the majority of the circuitry.

Detail of the backside of the Macbook LCD PCB.

Detail of the backside of the Macbook LCD PCB.  The metal shield covers have been removed.

Some of the ICs that are found:

  • Parade Technologies DP635 LCD Timing Controller
  • Integrated Memory Logic IML9660 Programmable LCD Calibrator
  • Silicon Mitus SM4031 Display Power Management IC
  • GD=EC 71L, 10-lead 3x3mm DFN (I believe this to be a Richtek DC-DC converter though I can’t yet prove it Proved it, it’s a Richtek RT8035)
  • 416R 8215, 8-lead 2x3mm DFN (I currently believe this to be an i2c EEPROM; there are SCL/SDA and WP testpoints nearby)

Naturally none of these things have datasheets available (EDIT: except for the RT8035!), but that’s okay, we really shouldn’t need them.  This should be a self-sufficient display unit, which we should be able to feed power and DisplayPort to and it should just work with no further investigation.  Hopefully.

Reverse-engineering the connectors

Unlike the iPad, I have been unable to locate a schematic for the Macbook Pro that explains the pinout of the connector.  But from looking at how the iPad connector is built, and from investigating some more prominent features of the panel with a multimeter and a keen eye, it is possible to get quite far in the determination of the pinout.

Let’s begin with connector CNT2.  We know that CNT2 goes to the display’s single backlight LED array from the iFixit teardown.  This also tells us that there are 48 white LEDs in the array.  This will become relevant in a moment.

On the main PCB, suspiciously nearby behind CNT2, is a 1206 ceramic capacitor, C103 (around 1.8-2.2uF, measured at 1.9uF).  A bit of probing tells us that one end of the capacitor is tied to the gold-plated mounting pads for the screws, which is bound to be GND.  The other end is tied to pins 5 and 6 (assuming pin 1 in upper right and pins numbered 1-6 top to bottom on right, 7-12 on left).  Thus we can assume that pins 5 and 6 are the anode(s) of the LED array.  More probing reveals that the two pins are also tied together in the mate connector, so we will assume that it is a single anode design.

Remember there are 48 LEDs in the array.  The vast majority of LED drivers can only drive arrays that have equal numbers of LEDs in them.  There are 10 remaining unknown pins on the backlight connector, but this is not an even divisor of 48.  It is therefore quite likely for some of the pins to be no-connects, and for the LEDs to be split into series strings of 48, 24, 16, 12, 8, or 6 LEDs depending on the number of cathode connections present.  It is difficult to determine the cathode connections at this point, so we change focus.

Let’s take a look at CNT1.  We can assume that if this display is in fact eDP as everyone says, this connector is required to have the following:

  • 4 lanes / 8 pins DisplayPort data (high resolution displays such as this will use all 4 lanes)
  • 2 pins Aux channel
  • 1 pin Hot Plug Detect
  • At least one +V pin (probably several)
  • At least one ground (probably several)
  • Backlight control – either:
    • anode and cathode connections from an off-board LED driver, or
    • PWM, power and enable signals for an on-board LED driver

As a shot in the dark, I probed the connector to determine whether it happened to contain connections to the LED anodes as previously discovered, and sure enough, pin 1 was connected.  Followup probing revealed that pins 3-8 were connected to pins 12-7 of CNT2.  So it is apparent that the backlight driver for this panel is housed off-board, and that there are six driven strings that make up the backlight.  This means there are 8 white LEDs per string, and if they consume around 3.2-3.4V apiece (common for white LEDs), the strings need to be driven with 25.6-27.2V each.  We’ll file this knowledge away for a while.

We know that the mount/screw pads should always be GND, so this is where we turn next.  Probing the connector for continuity to a mount pad, we find that pins 13, 16, 19, 22, 25, 26, and 27 are GND.  This arrangement provides some further insight:  There are three GND pads at the righthand side, which are likely the main power GND connections.  Also every third pad is a GND for a long period.  It is very common to separate high-speed signal lines with a GND connection, so we can guess that the four DisplayPort lanes can be found between the remaining GNDs.  We’ll confirm that in a moment.

We now know where power GND is located, and there are three unknown pads adjacent which are very likely to be +V.  This can be verified easily, as there is a 3A/32V fuse (F1) on the rear of the panel.  As there are no other fuses present nearby, we can assume that this is the fuse for the power input, and measuring continuity between it and the connector yields that much as expected, the last three pins (28, 29, and 30) are +V.  We don’t have a way of knowing yet how much +V is, but at least we know where it is.

It is assumed that pins 14-15, 17-18, 20-21, and 23-24 are the DisplayPort lanes, but we don’t know for sure.  For this, I unwrapped one end of the I-PEX cable that runs through the hinge to look at how the wires were arranged.  A twisted pair or coaxial line would certainly mean high-speed data.  As predicted, removing the (very well adhered) black adhesive cloth and desoldering some of the connector casing revealed four coaxial pairs on the pins in question.  The connector also showed that the righthand pin of each pair has an insulated coating whereas the lefthand does not.  I arbitrarily assume that the insulated wire is data+, and the uninsulated is data-, but verification of this is needed.

Macbook Pro 15" Retina LCD cable, slightly disassembled.

Macbook Pro 15″ Retina LCD cable, slightly disassembled.

There are now five unaccounted-for pins in the connector.  One is pin 2, in the middle of the LED anodes and cathodes; we can assume that this pin is no-connect as no wire appears to be populated in the cable.  The remaining four (pins 9, 10, 11, and 12) must map to three remaining required pins: AUX+, AUX-, and Hot Plug Detect.  It is unknown what the fourth pin is for, but it is wired in the connector.  It will be difficult or impossible to figure out which is which with simple probing.  It will similarly be difficult or impossible to determine the order of the DisplayPort lanes.  At this point there is no additional investigation that can be done prior to applying power to the panel.

Next steps

The I-PEX cable assembly is built through the hinge of the MacBook.  As such they are very expensive to buy individually, so I don’t want to damage or cut the cable, and even if I did, soldering the very, very small 40AWG wires would be a nightmare.  I am therefore designing a very simple board that breaks out the connector to pin headers.  On the same board I will also place a mini DisplayPort connector connected to pin headers, so I can use jumper wires to test different pin configurations very quickly and easily to determine the complete and correct pinout.  I do not plan to offer the documents for this PCB because it will only be useful for one test, and after I figure out the pinout I will be spinning a proper board with properly-routed matched-impedance connections.  So stay tuned for that.

Macbook LCD test board, design in progress.

Macbook LCD test board, design in progress.

More on this when more is discovered.

Next post in this series >>

Hacking the iPad 3 LCD, A Simpler Approach Part 2: Mistakes and Fixes

As I alluded to in previous comments and update posts, I have received and built up the boards for the simple breakout.  I used a sharpened toothpick to apply solder paste to the board, and reflowed the board in my toaster oven.  I have noted a couple of issues with the first revision of the boards:

  • The backlight power pads are through-hole.  Care must be taken to keep the backlight leads flush with the board or they interfere with the panel FFC.
  • The connector for the panel has contacts on both top and bottom.  This makes it possible to electrically connect the panel backwards.  The DisplayPort connector is on the other side of the board, which makes it reasonable to expect the panel to be plugged in backward.
  • With the DP connector on the back, it makes the board awkwardly arranged – it can’t be affixed flat to the back of the panel.  It was designed to be free-hanging on the cable since it is meant as an interface for those using the panel in a projector, but it would be nice to have an alternate mounting method for those who want to use the panel as is.
  • FInally, and most seriously, I accidentally used the source-side pinout for the DisplayPort connector.  In the source connector, from pin 1 the lanes are numbered 0, 1, 2, 3; in the sink connector they are mirrored.  This results in Link Failure errors on the host system.  This was an important lesson, and one which I’m actually glad to have discovered after only $50 worth of boards, instead of at work where I am also working with a DisplayPort design but where the cost would be closer to $3000.

The first three issues were workable, but the last one meant the board was inoperable.  But with an Xacto knife and some 36AWG magnet wire, I was able to make the required changes.  The finished board looks like this:

Front view.  Note the magnet wire modifications in the center.

Front view. Note the magnet wire modifications in the center.

Rear of board.  Ignore the flux mess.

Rear of board. Ignore the flux mess.

If you happened to order the Rev A boards, you too can make the changes.  You will need to cut the DP traces at the rear of the connector, and again at each of the vias where they are transported to the bottom side.  You could conceivably leave one or the other of them connected, but it is improper to leave such a long stub on a high-speed data line as it distorts the signal and causes reflections.  Then connect the vias back to the connector in reverse order.  The modifications are as follows:

Cut at the red marks, install wires across the green and blue lines.

Cut at the red marks, install wires across the green and blue lines.

I would suggest soldering the wires to the back of the DP first, then threading the wires through the vias and soldering them in place.  I think this will produce a more robust and neater end product.  I soldered the wires in the vias first, and finishing the other end was a tremendous pain.

After making these changes, the board works great!  I am very pleased with the project so far.  The panel looks great – plenty of brightness, and super high resolution.  Regarding brightness, I installed 100-ohm resistors and ran the panel at about 19.5V.

First panel test.  At top is a 1080P HD movie at full scale.

First panel test. At top is a 1080P HD movie at full scale.  Plenty of screen real-estate!

I have made the necessary changes to the board.  As it works out, when the pinout is corrected it makes more sense to have the FFC and the DP connector on the same side of the board.  This has the side effect of making the connection orientation more obvious, and allowing the board to be rear-mounted to the panel.  I have also increased the size of the backlight pads, so the wires can be more easily surface-soldered and not stick through and interfere with the FFC.

I also had the opportunity to correct the trace size for the proper dielectric constant of the laminate.  The OSH Park stackup is as follows:

  • 1 oz copper (1.4 mil)
  • 6.7 mil prepreg
  • 0.5 oz copper (0.7 mil)
  • 47 mil core
  • 0.5 oz copper (0.7 mil)
  • 6.7 mil prepreg
  • 1 oz copper (1.4 mil)

For 1 oz copper with a 6.7 mil height over plane, using dielectric constant of 3.66 for FR408, and assuming minimum 6-mil spacing, to maintain 100 ohm differential impedance, Saturn PCB Toolkit calculates necessary trace width of 8.1 mils.  I used the Saturn built-in value for FR408 when I originally designed the board, which is a little different and called for slightly smaller traces.  Using the new trace sizing and the new board layout, I was easily able to make the traces all very near to equal length (506 +/- 2 mils).  This is closer than they usually come out without a large amount of effort – in this case the board modifications only took an hour or two.

Simple interface adapter, Rev B.

Simple interface adapter, Rev B.

The new boards are on order and should be in house in two weeks or so.  I’m pretty confident now that I’ve tested the hand-wired version, but I was also confident when I originally released this board so it’s at your own risk if you want to order these boards yourself.  Here are the board documents (now with pad masters, in case you want to order stencils):

<< Previous post in this seriesNext post in this series >>

Miscellaneous updates, 2013-06-13

A short and sweet update for today.  I have built up one each of both iPad interface boards, and am having DP link failure issues with both.  I am beginning to suspect that something may be wrong with my connector pinouts.  I have pulled the documents until I can iron everything out.  My apologies if anyone has already ordered these boards and they end up being incorrect.

I’ll post an update as soon as I figure out what’s going on.

[Edit]  Damn it all.  I numbered the DisplayPort connector pins in the manner of the source-side connector instead of the sink-side.  On the sink side the ordering of the lanes is reversed (3,2,1,0 instead of 0,1,2,3).  So all the DP lane pins are wrong on both of my boards.  Super apologies to anyone who ordered these boards, and I’ll have them fixed in a short time.

[Second edit] I’ve also got a plan for how to salvage these boards if you were unfortunate enough to have ordered them.  More on that later.

Investigating the iPad 3 Touch Panel, Part 3: First Electrical Tests

The digitizer breakout boards arrived, signalling a new round of experimentation with the iPad 3 touch panel.  The design of the board seems mostly solid but for a couple of issues.  First, as predicted, the edges of the digitizer FFCs need to be trimmed off for them to fit in the connector.  This is easily done by pressing down on the FFC on a hard surface with a sturdy sharp knife; the semi-brittle stiffener separates cleanly and without bending the contact portion of the cable.

The connectors used on the breakout need the FFC trimmed just shy of the contacts, but this is easy to do.

The connectors used on the breakout need the FFC trimmed just shy of the contacts, but this is easy to do.

I reflow soldered the board by manually controlling the guts of my toaster-turned-reflow-oven, which worked quite well.  I would be cautious to try hand-soldering the tiny connectors as alignment is extremely important, but it might not be a terrible idea, particularly if you don’t have infinite time and patience – I did not have a stencil and individually applying the proper amount of solder paste to each of the 78 miniscule pads took nearly two hours.  But the result works beautifully, so I consider it worth the time – plus I got to experiment with a method I’ll need to use a lot when I start building the other boards.  Tip: Sharpen a wooden toothpick to use as an applicator.  I tried metal points and had a lot of trouble.

The completed breakout.  This one has the pins set up for breadboard use.  Soldering the FFC connectors took forever.

The completed breakout. This one has the pins set up for breadboard use.

The other issue with the board is that it overhangs four breadboard rows beyond the connection row, so it’s not impossible but certainly difficult to connect to the row of pins toward the FFC connectors.  Again though, this is not meant to be an end-all solution, just something to facilitate probing the digitizer until a real board is built, so I’m not too upset about it.  Plus the board could not be made much narrower without disrupting the currently-zenlike layout of traces.

As I now have a way to get into the connectors, I’ve done some more experimentation with the panel and have come to realize that much of what I thought I knew about the driving of this panel is wrong.  I have stared at the pictorial diagram of the concept of mutual pcap for many tens of minutes, but it never clicked until I started playing with the digitizer.  The key is this: the capacitance of the display isn’t directly sensed!  No relaxation oscillators here, the pictorial says it all – mutual pcap uses your body capacitance to prevent some of the electric field from coupling from the driven lines to the sense lines!

It took me an embarrassingly long time to register what is happening here.

It took me an embarrassingly long time to register what is happening here.

Using the breakout, it is easy to see how this works.  Using a function generator, I drove an 18V square wave into FORCE0 through a resistor (value dependent on frequency used) and connected generator common to the GND pins.  Take note, Apple drives the digitizer with approximately 18V in the iPad also.  I then connected an oscilloscope to SENSE28 referenced to GND, and grounded SHLD.  The result was a mirror of the input signal at an amplitude of approximately 330mV coupled onto the sense line.  Then, when the bottom right corner of the digitizer is touched (this is the cross point of FORCE0 and SENSE28), a visible 30mV drop in amplitude shows up on the sensed waveform.

Initial breadboard setup of the digitizer test board.

Initial breadboard setup of the digitizer test board.

Waveform capture of a 72KHz signal driven through a 10K resistor into FORCE0, coupling into SENSE28.  Yellow is source, white is sense without touch, cyan is sense with touch.  A clear difference can be seen between touch and no touch.

Waveform capture of a 72KHz signal driven through a 10K resistor into FORCE0, coupling into SENSE28. Yellow is source, white is sense without touch, cyan is sense with touch. A clear difference can be seen between touch and no touch.

Now, 30mV may not seem like a lot, but against 330mV that’s just over 9%, which should certainly be detectable.  In fact, if we fed this signal directly to a 3.3V-referenced 12-bit ADC, this would be around 40 steps of difference, which may be detectable with ample averaging.  But we can do better than that.  By using op amps to amplify the signal to the 3.3V range (and to DC bias it up above ground for better compatibility with ADCs), we should have plenty of dynamic range to sense touches.

This is where I hit a snag.  I figure that for 40 force lines and 30 sense lines, and desiring a refresh rate equal to the LCD itself (60Hz) to prevent sluggishness, a touch scan rate of 40*30*60=72KHz is the minimum necessary.  If averaging is desired for better accuracy, then scan rate will need to be a multiple of this.  However, I only had general purpose op amps on hand, with slew rates in the 0.5V/us range.  In the 70+KHz range, square wave edges over a 0.5V/us slew rate device are just too slow compared to the small differences we are looking for.  I will need to source some higher-speed op amps before I can really try this out.

But until that happens, here is my plan for interfacing the digitizer.  I will use some programmable logic or a few 4:16 decoders to drive an array of transistors connected to the force lines, which will generate a pulse on each line in turn.  An analog mux will pipe all 30 sense channels into a high-speed op amp and then into a megafast ADC which will continuously scan until a certain voltage level has been reached.  If the pulse generation time and the minimum level received time are a known distance apart, it should be trivial to determine whether the screen is being touched in this area – the longer it takes to reach the desired voltage, the more charge is being diverted into the attached capacitive body (e.g. finger).  An array of op amps and a couple of multichannel ADCs could be used in place of the multiplexer as well if that ends up being less expensive or more accurate.

Now awaits another trip to Digikey and some more research, but this is starting to look more and more feasible.

<< Previous post in this series

Miscellaneous updates, 2013-05-16

I haven’t got the ambition to do a full post today, but here’s the state of the world:

Full Interface Board

After the longest 15 days ever, this board is finally at the fabricator.  It is missing the USB crystal and I have changed the pinout of the button and LED board connector, but this revision is what it is and will at least be good for troubleshooting.  Parts are mostly on order.

Button board

These boards finally arrived, and what do you know, they’re just too small to use comfortably.  I have redone the board, replacing the switches for larger ones and the LED for a slightly larger common-anode unit to trim cost and aid availability.  The new board is 60% taller and the exposed area is slightly wider to accommodate the larger switches, but the board area is fairly comparable so the cost is similar.  I will write a full post and release the documents on the new board sometime soon.

Simple interface board

Also has made it to the fabricator.  Parts are also on order.  This is likely to be the first board that gets built, as it will allow me to test out the panel.  Keep an eye out.

Reflow oven mod

I have installed the insulation and the air exit port.  The insulation makes a dramatic difference in the speed at which the chamber heats and cools (it heats to 260C a full minute ahead of the noninsulated chamber, and cools much more slowly).  I am still contemplating how to install the air intakes and diffusers, so that’s the major mechanical holdup at this point.  Electrically, I am awaiting parts in order to model them for PCB footprints, but at least some of what I’ll need (such as the enclosure) are on order.  SSR is in house now, as are the thermocouples; thermocouple interface ICs are on order.

iPad touchscreen breakout

Boards are at the fabricator, parts are on order.  Should be in on Monday.  Maybe these will be the first ones to be built up.  Research progress on the digitizer is halted pending the build of the boards.

Sure seems like I have a lot of things going on right now, mostly waiting on fabricators.  I could use a faster board house than OSH Park… but it’s hard to beat the price.  How can anyone be making money when I get three boards shipped to my house for $2.50?

Building a Desktop Reflow Oven, Part 1: Plans and First Steps

I would say I’m pretty good at hand soldering.  I can solder TSSOP and QFP pin by pin, and I work with 0603 size parts on a very regular basis.  Unfortunately, industry has decided that 0603 parts and exposed pins are wasteful in space, and many really neat parts come only in QFN or BGA, and next to these, 0603 parts are absolutely gigantic.  I thus find myself wanting a way to process boards with no-lead and micro-scale parts.  At this size it’s pretty much reflow soldering or the highway.  The company where I work has a nice six-stage production reflow oven, but I can hardly go asking them to fire that up whenever I need something made, so I would like to have a solution at home to do quick-turn work on my own.

There are plenty of projects on the Internet that document homebrew reflow systems.  Some are built on electric skillets, some in toaster ovens, some in custom made boxes, with varying amounts of complexity.  But I have found that most homebrew designs lack the advanced features found on “real” reflow setups.  Proper profiling is desirable – that is, not only getting it hot enough to melt, but actually following the manufacturers’ specified ramps, which should lead to more reliable boards.  The ability to sense temperature at the board or high-mass board components and provide provisions to optimize the ramp thereafter would also be nice.  Semi-automatic cycling would be good, to press one button and come back in ten minutes to a finished board.  And all of this should be possible without the unit needing to be tethered to an external computer, thereby keeping the footprint small.

Here is the (un?)willing victim, an el-cheapo Wal-Mart toaster oven.

Here is the (un?)willing victim, an el-cheapo Wal-Mart toaster oven.

Similar to many designs, my plan is to base the unit on a basic toaster oven – in this case, a 1000W unit with two quartz heating elements, model TO-88, originally from Wal-Mart but in my posession via a dumpster.  There is nothing particularly special about this toaster oven, and any similar design could also be used.

Inside the toaster oven.  Not much to it.

Inside the toaster oven. Not much to it.

The inside of this unit illustrates exactly how cheap it probably was.  It makes no effort to insulate the cooking chamber from the outside world, which must make it very inefficient as well as hot to the touch.  The innards are all 28 gauge sheet steel, which has gaps where it was bent to shape.  The control system uses the (high) ambient temperature directly outside of the cooking chamber to regulate cook temperature in the box; how it achieves any sort of temperature accuracy is boggling (it might not be remotely accurate; I really haven’t tested it).  It’s electrically pretty simple – hot lead in series with the timer, in series with the thermostat/element selector switch, in series with the two elements (in parallel through the selector switch), and out to the neutral lead.  I have picked up a couple of other toaster ovens and there are more elaborate control systems than this, but I plan to rip all of this out so it’s not important how complex it is.

I will need to do a little testing to determine the characteristics of the unit – primarily, maximum heat rate, and maximum cool rate when elements are disabled.  I suspect that 1000W is enough to heat the board quickly enough to conform to proper reflow curves, but that despite its lack of insulation the unit will not be able to cool off fast enough to meet the profile.  I am therefore tentatively planning to circulate air through the box with a small blower at one end, and vent it out the other.  By controlling fan speed and heating element duty cycle, I should be able to very quickly and accurately control chamber temperature.  I will also leverage the blower to make sure heat is evenly dispersed throughout the chamber to prevent hotspots.  To reduce the power required to run a board and the heat at the exterior of the box, I will insulate the chamber where convenient to do so (likely inside the outer casing, at top, left and right) with fiberglass mat.

The existing controls will be removed.  The top control (thermostat) will be replaced with a main power switch, and the bottom control (timer) will be replaced with a neon indicator of heating element power.  The blower will be housed in the plenum where the controls were, and will be ducted into the chamber.  Hopefully this will allow it to be far enough away to prevent the (plastic) blower from being damaged by heat.  So long as the fan keeps sucking cool air, I think it should be OK.

The main control circuitry will be housed in a new control panel affixed to the side of the unit, which will be built in a plastic project box (Hammond RP1065).  The box will contain a Crydom D1225 solid-state relay (I already purchased this on eBay for this purpose), heatsunk out the back.  It will also contain a custom board which will serve as the brains of the unit.  I am planning to use the same 32-pin Freescale Kinetis L2 processor as the iPad screen controller.  This will talk to two Maxim MAX31855 thermocouple-to-SPI converters and in turn to two K-type thermocouples which can be affixed to a board in the unit.  Front panel control will be achieved via a 1.8″ SPI LCD and a few tactile switches.  The unit will be able to take input from USB, front panel and/or SD card (not sure which combination will be implemented).

First concept for the controller for the reflow oven.  The PCB isn't shown as it hasn't yet been designed.

First concept for the controller for the reflow oven. The PCB isn’t shown as it hasn’t yet been designed.

The oven, SSR, fiberglass mat, scrap sheet metal, blower, and hardware are all in house already; the LCD and thermocouples are on order.  Most of the remaining components will come from Digikey as soon as one of them comes back in stock.  I am feeling good about this – it’s about time I got around to building it.  More later.

Investigating the iPad 3 Touch Panel, Part 2: Breakout Board and Approach

After discussion with commenter Eva in the last part of this series, i was motivated to make some progress on the investigation of the iPad 3 digitizer.  Based on leaked schematics for the iPad mainboard assembly and on the physical digitizer itself, I have mapped the physical pins on the digitizer FFC to functions.  There are 40 excitation pins, 30 sense pins, three grounds and a SHLD pin of which I have not yet determined a function.  Normally SHLD means shield, but it’s being fed into a processor input so that doesn’t make sense.  I will continue to investigate.

Layout of the pins on the iPad 3 digitizer.

Layout of the pins on the iPad 3 digitizer.

The leaked documents also indicate that the proper mate to these are Molex 502250 series connectors, the same series as the one used on my DisplayPort boards for the eDP tail.  But contrary to the 51-pin version, this one is not so easy to get ahold of.  As I noted in the previous post on the digitizer, the 503566-3700 is a close alternative, but it looks as if these FFCs are just too wide (11.7mm) to fit in them (11.4 +/-0.05mm max).  There are not a lot of alternatives though, so if worse comes to worst I may end up trimming the FFC to fit – as you can make out in the above photo, there is a small amount of tab with no contact at each edge, and without this the connector easily comes in at under 11.4mm.  Also of note, the distance from the edge of one connector to the edge of the other is 13.5mm.

I have done all I can do with the digitizer by inspection alone, and at this point can only advance with it electrically.  To aid in this I have drawn up a simple breakout for the digitizer.  As I was not sure what my end application would be, I included provisions for connection either to a breadboard directly or to another board via inexpensive 40-pin IDE cables.  The FFC connectors are on the bottom of the board, since the contacts of the digitizer face up when the tail is unfolded and the connector chosen has only bottom contacts (the 502250 series has contacts on both top and bottom).  Not ideal, but workable for the short-term use that this board is designed for.

A simple breakout for the iPad 3 digitizer. Install J3 and J6, and J4 and J7 for cable use or J5 and J8 for breadboard use.

A simple breakout for the iPad 3 digitizer.

Each position is labelled on both sides with its function to the best of my knowledge.  Dimensions of the board are 0.9″ by 4.1″.  Production of this (2-layer) board at OSH Park costs $18.50 for three pieces.  Populate J3 thru J8 with 0.1″ snappable header strips – omit J4 and J7 for breadboard use, and omit J5 and J8 for IDE cable use.  The mount pads are sized for 2-56 screws.

I have ordered a set of these boards and plan to experiment with them a bit, so you may want to wait until I troubleshoot everything.  If you are impatient, documents for the digitizer breakout are below:

So then, now that we can connect to the panel, how do we read touches?  That part isn’t quite so simple. If the documentation from the iPad mainboard is to be trusted, 40 independent outputs are generated and sent to the panel in sequence to 40 horizontal electrodes, and 30 vertical electrodes pick up the signal when coupled into them by a conductive mass (e.g. finger) on the surface.  In the first part of this series I counted 41 squiggly horizontal lines and presumed these to be the electrodes, but it turns out that the sensitive area is between the squiggles, resulting in 40 driven rows.

The methods for driving and sensing touch position are a hot area of development in industry at the moment, and the big companies are all hush-hush on their analog frontend design.  But we know generically how Pcap touch should work, and we can take a guess from this and by examining how Pcap is implemented in devices.  For instance, we know that Apple uses three main ICs to drive the touchscreen – a driver to generate the output to the panel, a receiver of the signals produced by the panel which incorporates an analog-to-digital converter, and a processor to interpret the ADC data.  One popular method of Pcap sensing is to use the changing capacitance to shift the frequency of a relaxation oscillator, then use a frequency to voltage converter and finally an ADC to sense this capacitance.  Given the structure of the panel and supporting circuitry, it seems reasonable for the panel to be read in this way.  A couple of links that provide information on mutual Pcap: http://ww1.microchip.com/downloads/en/DeviceDoc/93064A.pdf, http://www.walkermobile.com/SID_2012_Short_Course_S3.pdf.

I believe it is unlikely that a hobbyist would be able to get ahold of the particular solution used in the iPad – in fact, as at least the receive and processing ICs are made by Broadcom, I’m positive it is impossible – and it is almost as unlikely that there will be an off-the-shelf controller with the proper number of channels that a hobbyist can buy in reasonable quantities.  I therefore plan to implement a solution using generic hardware – simple programmable logic and/or MCUs.  This way cost and minimum buys aren’t problematic.  But that architecture is a topic for a later post, this one has gone on long enough.

<< Previous post in this seriesNext post in this series >>

Miscellaneous updates, 2013-05-07

I don’t have enough content for a full post today, but here’s the state of things.

Full Interface Board

I discovered that I made a dumb mistake and left out the oscillator for the USB controller in the MCU.  The oscillator takes a good amount of floor space and the board is already packed, so a fairly serious redesign of that section of the board might be in order.  Thankfully I’m only out $40 and not the $couple hundred I would be at a traditional board house.  I’ll still use the existing boards to work out the kinks on the power switching and backlight sections and to develop the non-USB functions of the MCU.  Actually, so long as you aren’t using USB, the boards should still be perfectly workable.  Nonetheless, documents will be held back until this is resolved.

Button board

Probably too small, but I want to see how too small before I remake it.  Boards on order.  Documents released, but you probably don’t want them yet.

Simple interface board

Out for manufacture, documents released.  Go nuts, but do realize that I haven’t tested this design in the slightest yet.

There is also a new project on the horizon which will get its own post as soon as I can talk enough about it to do so.  It will be impossible to hand-solder these boards what with my love of QFN and related no-leaded parts and things with thermal slugs.  The company where I work has a nice 6-stage production-class IR reflow oven, but I’d rather not have to ask them to fire the thing up to do one tiny board.  For a few years now I’ve been contemplating building a desktop reflow oven for my personal projects, and this seems like it might be the perfect opportunity.  I have been gathering materials for a while and now am at a stage to put a design.  Keep an eye out for that in the coming days.

Hacking the iPad 3 LCD, Part 4: Button Board

Now that the main board has been put on order, my focus can shift to the ancillary parts of the project.  In particular, it is time to consider the human-interaction part of this build.  I think it is important to be able to control the brightness, as well as overall system power, of the panel.  Some designs handle brightness via the USB HID monitor class, and I may well go this way eventually, but for the short term I would rather have simple up/down/off button control, so I can have immediate gratification before I spend the time to write the HID software.

Most monitors have some controls in the lower righthand corner – power, up/down, menu, etc – as well as a status LED.  As I will not be inserting video data and thus will not have an OSD, some of these buttons are not important.  But I think the lower-righthand corner is natural for monitor controls, so my plans call for a simple board adhered to the back of the panel at this point, with basic controls and a status indicator LED.  This will connect to J8 on the main board, which has been wired for this purpose (three active-low button inputs pulled high, and three resistor-limited PWM outputs).  I have chosen to use a RGB LED because I have not yet decided on indicator colors.  Perhaps white would have been ideal for this application as it is an Apple panel, but I couldn’t find a white + orange (for standby) LED.  I chose a 0604-size 6-pin LED (Rohm SMLP36RGB1W3), so I could fit discrete white and orange 0402 LEDs if I wanted to change to that.

For buttons, I was really torn.  On one hand, it would have been nice to have the whole board hidden from view, and use right-angle buttons just exposed beyond the edge.  I couldn’t think of a good way to show the LED though.  I thought about capacitive touch buttons, which would be neat and fit with the Apple theme of the unit, and I actually wired the button inputs to capacitive touch inputs just in case, but I didn’t want to bother with the software and debugging right off the bat.  So I went with regular SMD microminiature tactile switches (C&K KMR421G LFS).  These are seriously, seriously small buttons.  They should end up no taller than the panel is thick (and if you have a panel, you know how crazy thin it is), and allow my exposed board area to shrink to 0.14″.  So enough talking about it, let’s have a look, eh?

First go at the iPad LCD controller interface board.  It's smaller than it looks.

First go at the iPad LCD controller interface board. It’s smaller than it looks.

You’ll notice a couple of things about the design.  First, note that there are no traces or copper features on the left section of the top of the board.  I plan to adhere this board directly to the back of the panel, so I made sure there was no copper (even under soldermask) that could be rubbed through and short on the back of the panel.  Mind you, this circuit was designed with short circuits in mind, and nothing will be damaged, but if it shorts it won’t work right and I’ll be peeved.  I think I will use contact cement to adhere this board rather than the foam tape of the other one, as it is designed for flat contact  and has no components or pins like the other board does.

You’ll also note that the bottom side traces extend straight for a quarter inch from where they are routed to the connector.  I actually made this board larger than it had to be, because I didn’t think I could get good adhesion in only a quarter-inch of mating surface.  I kept the traces straight in this area so I could easily make the board wider or narrower as needed.  The total board dimensions are now 0.65 by 0.76 inches, driven in X by adhesion area and in Y by the components themselves.  This board is 2-layer and should be very inexpensive (at $5 per square inch, my math works out to $2.47 per 3 – I wonder if OSH Park has a minimum order?), so I plan to order it and just see how it works without putting too much more thought into it.

I spent a little bit of time deciding whether this will end up too small, and in doing so drew up a quick model of the boards in place on the LCD.  Decide for yourself if I’m crazy.

Assembly concept 1, top

Assembly concept 1, top

Assembly concept 1, bottom

Assembly concept 1, bottom

I don’t have the FFC modeled in yet, but assume it would naturally plug into the connector in its current position.  I also haven’t bothered to model any structural components, which I also haven’t mentioned yet.  In lieu of a full case, I think I’ll do a minimal support structure out of 1/8″ aluminum bar stock – a strip down each side to catch the mount pads, one across the back and a hinge with a foot so it sits upright on a desk.  I’ll talk more on that when I get that far.

Documents for the button board are available for download:

In the process of generating these prints I did a little more measurement and I think these will be way, way too small.  But what the hell, they’re cheap, so I ordered them anyway.  You may want to wait for Rev B.

<< Previous post in this series

Hacking the iPad 3 LCD, Part 3: First Layout

Much has happened since the last update.  I have received a panel, as well as the balance of the components that I ordered.  The panel has a half-inch scratch on the front, so hopefully it is still functional.

The design has been steadily progressing.  The architecture of the board is now a bit more complex – a Freescale Kinetis-L2 (ARM Cortex-M0+) processor is onboard, primarily because it was cheaper than the competing TI MSP430 that I had planned on using, go figure.  To accompany this, a Mini-USB header has been added.  This will not power the system as per other folks’ designs because I refuse to violate the USB spec (and my motherboard) that badly, but it will allow for connectivity to the host in order to (hopefully) enable control of the panel from keyboard hotkeys.  A Linear Technology LT3502 switching regulator has been added to provide 3.3V for the panel and the processor, and a Skyworks AAT4618 high-side switch was put in place to allow power to the panel to be disabled when the system is inactive for greater power efficiency.  The board should operate from something like 8 to 40V DC, for whatever power adapter you happen to have around that fits.

First run of the full-function interface board, revision A.

First run of the full-function interface board, revision A.  I was too lazy to add some of the 3D models.  For a sense of scale, the corner pads are sized for a 2-56 screw.

So there it is.  The board is now fully routed and has been sent out for manufacture.  Naturally this means I’ve started noticing errors in it, but I’ve not found anything that means it altogether won’t work.  Getting matched trace lengths on the mDP lines took a couple hours, and was probably the one most time consuming part of the design, but now all 8 lines are matched to within 10 mils.  This is probably excessively close, but what the hell – as long as we’re doing it, may as well do it right.  The final dimensions of the board ended up at 2.525 by 1.5 inches – quite a bit smaller than I originally planned on.  And it is dense.  We’ll see how well everything works.

(2013-05-07) I will not be releasing documents for this board for a while as I have noted a serious flaw in the processor section.  I will use these for debugging the power system then respin the board when I am satisfied.

<< Previous post in this seriesNext post in this series >>