Therma Pattern

Therma Pattern allows the user to choose different patterns to display on their shirt.

Music by Jon Hopkins - Candles


             One day our clothing will be able to display information and allow us to interact with it. Therma Pattern begins this exploration by figuring out how to create a flexible material that can change visual displays.

            The Therma Pattern shirt has 21 woven nitinol structures painted over with thermochromic pigment to control the color change. Nitinol is an excellent actuator for quickly heating thermochromic pigments. Three layers of the garment were made; one Ponte knit and two silk organzas, to isolated layers.  Similar to PCBs, each layer of fabric acts as an insulator preventing current flow.

            Current heats up nitinol, which changes the color of the thermochromic pigments. The more current sent to the Nitinol, the hotter it gets, changing the thermochromatic pigments faster. Through many tests, nitinol was preferred over the conductive thread to create a change in thermochromic pigments. By weaving nitinol together into an efficient structure, the thermochromic pigments changed colors more rapidly. Two half drivers (NCV7719) were used to control the current flow going to each woven nitinol structure. A Teensy 3.2 was used for the microcontroller of the project. A Micro Oled was attached to assist the viewer in picking a pattern displayed on the garment.



System Overview

Different Patterns

Pattern 1
Pattern 2
Pattern 3

Component Description

Teensy 3.2

A Teensy 3.2 was chosen because it is a  powerful microcontroller, unlike an Arduino, which runs on atmega328p a Teensy 3.2 runs on an MK20DX256VLH7 Cortex-M4.  What is nice about the Teensy is that many pins can be used for various purposes. For instance, any pin can be used as an interrupt. A downside is that the internal pull-up resistors are too low for I2C communication, so added external pull-up resistors are needed.

Micro OLED Breakout board

The micro OLED breakout board was chosen because it is tiny and only takes about 10mA.  One of the downsides of a Teensy is its max output current is 20mA, instead of a typical Arduino. An OLED with a low supply current is needed.  This OLED works on SPI or I2C. SPI was initially tested but interfered with the SPI on the driver chips. Thus I2C was the final communication used  (which operated slower on the micro OLED).

NCV7719 half drivers

The NCV7719 surface mount half driver chips were chosen because they can handle a considerable amount of current as they are intended for vehicles. A matrix circuit is needed to control 21 nitinol structures. Initially, Darlington transistors were used instead to create this matrix, but the problem was that Darlington transistors bring the circuit to the ground. 



  1.  To operate driver outputs 7 and 8 while 1-6 are on, a small delay is needed between the SPI commands. This is because the driver chips need to realize two different driver channels are being turned on.

  2. A half driver will give an underload protection response (when switching current on and off) if one turns off the HS driver then, in turn, turning on the LS driver, grounding the current, making the underload protection turn on. To prevent the drivers from giving an underload protection response, one must turn off the half-bridge driver that is enabled through an SPI command ( so instead of sending commands like 0b0000000100000100 and then 0b0000000100000000 (changing from HS to LS), one should send commands like 0b0000000100000100 then 0b0000000000000100 (changing from HS to the output driver off). 

  3. The half driver chips are a frame behind, meaning the chip will output the previous command.

How NCV7719 works

Note: the LED in the schematic below represents a nitinol structure

HS = high side LS = low side

SPI communication

16-bit serial SPI communication is used to interact with the half drivers.  The NCV7719 chips are great because they will respond via the serial port to know if the chip is doing what it's supposed to do.  Although the chIp can run on a 5.5V power supply, a 7.4V LiPo battery was used. 

Choosing correct SPI mode

The SPI mode for the Arduino code was determined by looking at the datasheet for the NCV7719 chips and comparing this to the SPI modes listed on the Arduino page.

Rising edge occurring at the serial communication output

Falling edge occurring at the serial communication input

Arduino page for SPI modes

SPI timing of NCV7719 half drivers

Nitinol Structures

Two-ply Conductive thread and 0.005" Nitinol were woven into a Ponte knit and then painted with thermochromic pigments. Many tests were run on the two materials to compare the speed of color change vs. vibrancy.


.0.005" Nitinol was chosen after examining Flexinol's technical datasheet. A diameter too small will have too much resistance per inch, while a diameter too big will require too much current to heat up. Looking at the technical datasheet, one can see that to send about 250mA will reach roughly 194°F. Since the thermochromic pigment needs to be heated above 88°F, one could estimate that 100mA is required.  




Figure:  two graphs, one comparing Voltage vs. Current, the other comparing transition times of the two materials. Note: the lower the current, the less vibrant the color change was. (A) plot comparing Nitinol and conductive thread to see how much voltage was needed for certain currents. (B) plot comparing  Nitinol and conductive thread to see which changes color faster.

Video: Nitinol woven to 1.1cm long vs Conductive thread woven to 1.1cm long in ponte knit


Nitinol will create a faster and smoother color transition than conductive thread because it heats faster due to its nickel-titanium composition.

Schematic and Circuitry

Figure: Schematic of the Therma Pattern shirt. Note that the LED's in the schematic are the nitinol structures on the shirt.

The resistors added to the matrix above are very low. This is because there is already resistance included within the nitinol and conductive thread used in the garment construction. 

Figure: outputs from the half driver chips location on the shirt

close up of Teensy 3.2
sewn in wrapping wire
sewn in wrapping wire
layout of nitinol
insulating thread
creating matrix
nitinol actuators
color change
white background
face lightening


The code to control the Therma Pattern shirt operates with a finite state machine. An image of how the finite state machine works is shown below:

Below is a link to the code on Github