Difference between revisions of "Team:Queens Canada/Luminometer"

Line 47: Line 47:
 
<img  style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/2/2c/T--Queens_Canada--LuminometerEagleCAD.png" alt='EagleCAD layout of PCB'/>
 
<img  style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/2/2c/T--Queens_Canada--LuminometerEagleCAD.png" alt='EagleCAD layout of PCB'/>
 
<img style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/b/bd/T--Queens_Canada--LuminometerCompletedBoard.png" alt='Completed board'/>
 
<img style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/b/bd/T--Queens_Canada--LuminometerCompletedBoard.png" alt='Completed board'/>
 +
<h3 style="width:70%;margin-left:15%">Software</h3>
 +
<h4 style="width:70%;margin-left:15%">Luminometer</h4>
 +
<p style="width:70%;margin-left:15%">The light to frequency sensor used as a luminometer was attached to a digital input on the microcontroller. When the sensor detects a photon, it sends a pulse of high voltage to the digital input which is then detected by the controller. To properly count each photon, an interrupt was attached to this digital input in the software, such that any time the controller received a pulse of high voltage, the rest of the program was interrupted, and the photon count was increased. By allowing the program to run for a set amount of time, a rate can be calculated for the number of photons per second. By increasing the length of this sampling period, lower levels of light can be more accurately measured and compared. </p>
 +
<p style="width:70%;margin-left:15%">Add results</p>
 +
<h4 style="width:70%;margin-left:15%">Breathing Rate</h4>
 +
<p style="width:70%;margin-left:15%">To measure breathing rate, multiple readings are taken of the NTC thermistor’s resistivity over a set period of time. As the child breathes out, warmer air comes in contact with the thermistor, which is then followed by colder air as the child breathes in. These changes in temperature are reflected in the changes in resistivity of the thermistor, the maximums and minimums of these changes over time can be counted to calculate a rate. </p>
 +
<p style="width:70%;margin-left:15%">The code written to calculate this rate first takes a reading of the thermistor’s resistivity once every second for 100 seconds and stores the values in an array. This data can be plotted against time to create a sinusoidal wave as shown below. However, to count the peaks corresponding to each individual breath, the data must be preprocessed to remove outlying maximums and minimums. </p>
 +
<img style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/0/0d/T--Queens_Canada--LuminometerSchematic.png" alt='Final hardware schematic'/>
 +
<p style="width:70%;margin-left:15%">This is done using an exponential filter, which is a type of low pass filter used to remove high frequency noise. It is also an autoregression filter, which means that it relies on past output and input, so that over time it relies more heavily on past values and is able to detect patterns such as a steady breathing rate. The filtered data can be plotted to produce the sinusoidal wave shown below.</p>
 +
<img style="width:70%;margin-left:15%" src="https://static.igem.org/mediawiki/2018/0/0d/T--Queens_Canada--LuminometerSchematic.png" alt='Final hardware schematic'/>
 +
<p style="width:70%;margin-left:15%">The cleaned data can then be analyzed to detect peaks. This is done by comparing each value to the previous value and the value following it. If the current value is larger than both, it must be a maximum and the number of peaks is increased. The total number of peaks, corresponding to the total number of breathes, is then divided by 100 seconds to determine a rate of breathes per second.</p>
 +
 +
 +
 +
 +
 
<footer style="background-color: #212121;height:90px ">
 
<footer style="background-color: #212121;height:90px ">
 
             <div class="container">
 
             <div class="container">

Revision as of 01:14, 25 September 2018

Electrical Design

Hardware

The main electrical component used in the pacifier is the RFduino microcontroller. Similar to a standard Arduino, the RFduino can be programmed using Arduino software, which provides students with a familiar platform and coding language. The benefit of using the RFduino is its small size, built-in Bluetooth capabilities, and the availability of both prototyping and surface mount versions of the chip.

Prototyping board, Surface mount chips for PCB, and USB connector

The next three components included in the design were sensors to monitor temperature and breathing rate, as well as a luminometer to measure light produced by Luciferase.

Both the temperature and breathing rate were monitored using small NTC thermistors. The thermistors were then used in voltage divider circuits to monitor the changes in resistivity through an analog input on the microcontroller. One thermistor is placed in the tip of the nipple to monitor temperature, and the other placed underneath the child’s nose to detect changes in temperature corresponding to their breathing.

The luminometer was constructed using a light to frequency sensor (TSL237T) which has the ability to detect individual photons as they come in contact with the sensor. By counting photons over a set period of time, a rate can be calculated to measure the amount of light in an enclosed environment. To detect such small amounts of light, the sample must be isolated in a dark container for these measurements.

Additional hardware components included in the final design were a battery holder for a 3V coin cell battery, a switch to turn the pacifier on and off, and a location to connect the RFduino microcontroller to a desktop computer so that it could be properly programmed. The final schematic for the hardware design is shown below.

Final hardware schematic

To include all the required components in the pacifier, a printed circuit board (PCB) was designed using EagleCAD. Due to such limited size constraints, surface mount components were used where possible. This allowed for both sides of the board to be used so that the components could overlap and reduce the amount of space required. Since both sides of the board were used, the layout of the components was also designed such that anything that needed to be accessible (light to frequency sensor, connections to the RFduino, on/off switch, and battery holder) were placed on the top of the board. All remaining components were placed on the bottom so that users could not access them or interfere with the wiring. A single hole was also drilled in the board so that it could be attached with a screw to the back half of the pacifier casing. Any additional wire connections, such as those required for the thermistors, could then be contained between the bottom of the board and the back of the casing.

The EagleCAD layout of the PCB and the completed board are shown below.

EagleCAD layout of PCB Completed board

Software

Luminometer

The light to frequency sensor used as a luminometer was attached to a digital input on the microcontroller. When the sensor detects a photon, it sends a pulse of high voltage to the digital input which is then detected by the controller. To properly count each photon, an interrupt was attached to this digital input in the software, such that any time the controller received a pulse of high voltage, the rest of the program was interrupted, and the photon count was increased. By allowing the program to run for a set amount of time, a rate can be calculated for the number of photons per second. By increasing the length of this sampling period, lower levels of light can be more accurately measured and compared.

Add results

Breathing Rate

To measure breathing rate, multiple readings are taken of the NTC thermistor’s resistivity over a set period of time. As the child breathes out, warmer air comes in contact with the thermistor, which is then followed by colder air as the child breathes in. These changes in temperature are reflected in the changes in resistivity of the thermistor, the maximums and minimums of these changes over time can be counted to calculate a rate.

The code written to calculate this rate first takes a reading of the thermistor’s resistivity once every second for 100 seconds and stores the values in an array. This data can be plotted against time to create a sinusoidal wave as shown below. However, to count the peaks corresponding to each individual breath, the data must be preprocessed to remove outlying maximums and minimums.

Final hardware schematic

This is done using an exponential filter, which is a type of low pass filter used to remove high frequency noise. It is also an autoregression filter, which means that it relies on past output and input, so that over time it relies more heavily on past values and is able to detect patterns such as a steady breathing rate. The filtered data can be plotted to produce the sinusoidal wave shown below.

Final hardware schematic

The cleaned data can then be analyzed to detect peaks. This is done by comparing each value to the previous value and the value following it. If the current value is larger than both, it must be a maximum and the number of peaks is increased. The total number of peaks, corresponding to the total number of breathes, is then divided by 100 seconds to determine a rate of breathes per second.