ElishaKrauss (Talk | contribs) |
|||
Line 48: | Line 48: | ||
<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:1200px;margin-left:12%">Breathing Rate</h3> | ||
+ | <p style="width:1200px;margin-left:12%">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:1200px;margin-left:12%">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 src="https://static.igem.org/mediawiki/2018/f/f5/T--Queens_Canada--RawThermistorData.png" alt='Raw Thermistor Data'/> | ||
+ | <p style="width:1200px;margin-left:12%">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:1200px;margin-left:12%" src="https://static.igem.org/mediawiki/2018/7/7f/T--Queens_Canada--FilteredThermistorData.png" alt='Filtered Thermistor Data'/> | ||
+ | <p style="width:1200px;margin-left:12%">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> | ||
Revision as of 22:07, 11 October 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.
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.
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.
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.
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.
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.