Saturday, October 15, 2011

Low temperature electronics

The commercial temperature range for electronic components is 0 °C to 70 °C, industrial −40 °C to 85 °C and military −55 °C to 125 °C.  So what happens if you take parts beyond these ranges?  Do they fail immediately? Usually not.  It is very much component dependent.  Some components are quite resilient to very low temperature.

Components generally degrade gradually over temperatures, but after some temperature, some might exhibit large changes and some might fall apart completely.  There are some reasons for these abrupt changes.  For instance, a gate driver stops working completely below -120C because the logic threshold increases too much and the input fails to trigger.  One voltage regulator falls apart after -130C and another regulator with similar specifications holds up well at -150C; this can be attributed to some small design differences in the current limit and thermal limit circuitry.  The SRAM based FPGA can fail in an unpredictable and dangerous way.  As the temperature goes below -125C, the increase in transistor threshold can cause the SRAM bits that hold the logic configuration to flip which could completely alter the logic output.

There is no good way of knowing which part might do better at low temperatures other than testing and screening.

Saturday, September 17, 2011

Batteries

  • Samsung cell phone battery Li-ion 3.7V 900mAh 4.6x3.4x0.5cm 19g
  • Samsung cell phone battery Li-ion 3.7V 1000mAh 21g
  • Energizer NiMH AA 1.2V 2300mAh 5.0cm O1.4cm 29g
  • Energizer NiMH AAA 1.2V 850mAh 4.5cm O1.0cm 12g
  • Energizer Akkaline C 1.5V 5.0cm O2.5cm
  • Duracell Alkaline MN1500 AA(LR6) 1.5V 5.0cm O1.4cm 24g
  • Duracell Alkaline MN2400 AAA(LR03) 1.5V 4.5cm O1.0cm 11g
  • Energizer 377/376 1.55V Silver Oxide [SR626W]
  • Energizer 364 1.55V Silver Oxide [SR621SW]
  • Rayovac Hybrid NiMH AA 1.2V 2100mAh 28g

Monday, June 6, 2011

Open-source tools for ARM microcontrollers

The ARM (Advanced RISC Machine) architecture appears in many 32-bit microcontrollers. I have NXP (Philips) LPC2138 (ARM7TMDI-S) and Luminary Micro LM3S811 (ARM7 Cortex-M3) microcontrollers. Embedded software development is well supported by open-source tools.

My current preferred development environment is Cygwin running under Windows, but Linux works well too. The GNU cross compiler for ARM7 can be built to run with Cygwin. Binutils, GCC, and GDB source code can be configured and compiled under Cygwin. The graphic user interface for gdb is available with insight and ddd. Windows Emacs also works with gdb. The Cortex-M3 support is not available with earlier versions of GCC. A relatively compact C library can be built from newlib.  The flash programming for LPC21xx can be done with the open source program lpc21isp.

The ARM7 microcontrollers have on-chip debugging capability with JTAG interface. Openocd (Open On-Chip Debugger) is the package for flash memory download and debugging interface for gdb. Openocd supports a number of JTAG hardwares, including simply parallel port "wiggler" interface, USB FT2232 interface. It can also be built under Cygwin. The parallel port interface requires the giveio driver (from AVRDUDE). The driver package (including .h and .lib) from FTDI can be used for the FT2232 interface. An open-source driver for FT2232 is also available.

The Luminary Micro's LM3S811 eval board use FTDI's FT2232 chip to drive the JTAG signals. It can also be used as the JTAG interface for external devices. Despite of lacking TRST (Tap Reset) and SRST (System Reset) signals at the external connector, it is able to interface with LPC2138. A small modification to the LM3S811 eval board allows the control of TRST. By lifting the resistor connecting to the USB_RSTn line and soldering a haywire to the connector TRST pad, we have the control of TRST. When we debug the on-board microcontroller, we need to insert a jumper wire between the TRST pin and the external debug pin. Note that the existing openocd software thinks it is toggling SRST, but I found it works quite well with LPC2138.  [Update: The later version of the LM3S811 Eval board has the SRST signal added.]
Modified to debug external device with OpenOCD.

Thus embedded software development is possible with the set of open-source tools. If a real-time operating system is desired, FreeRTOS has been ported to a number of ARM microcontrollers.

However, it is worth noting that the code generated by the GNU compiler seems far less efficient than the commercial compilers.  My single-precision Whetstone benchmark testing has shown it to be 6 times as slow and double-precision to be 3 times as slow with almost 3 times of code size.

Sunday, May 29, 2011

Solid state relay

Solid state relays that carry large current are bulky.  A simply way to have a small optocoupler driving a power MOSFET.

Monday, March 28, 2011

Layout Check List

  • DRC
    • Make sure the rules are complete
    • Resolve all DRC errors
  • Footprint verification
    • Check for footprint orientation, pin assignment, especially  transistors
    • Check for soldermask occlusion
  • Components clearance in 3D
    • Check for components extrusion beyond footprint, especially edge connectors
  • Silkscreen visibility
    • Check for overlap with holes
    • Check for overlap with components extrusion beyond footprint
    • Check for component designators
  • Fiducial marks
    • Three fiducial marks for the board
    • Fiducial marks for high pin count components
  • Polarization marks
    • Mark all polarized components
    • Mark Pin 1 of components/connectors
  • Logo/labels
    • Company logo
    • Board name
    • Fab date
    • Serial number
  • Gerber inspection
    • Inspect Gerber files with possible a different viewer
    • View in skeleton mode
    • View plane layer in positive mode

Tuesday, January 25, 2011

Miniature servo drive

A miniature servo motor may require a voltage of 5V or less and current of 200mA.  An audio amplifier is ideally suitable to drive this type of motors.  It normally uses a bridge tied load (BTL) configuration, which makes H-bridge unnecessary.  It is capably of 1-2W into 4 or 8 Ohm speaker, so it can source and sink the required motor current and the bandwidth is more than adequate for a servo drive.  The National LM4866 2.2W stereo audio amplifier in the small TSSOP-20 package can drive two small motors.  It is likely to result in lower components and smaller footprint than other solutions.