Input Devices: It's Getting Hot in Here?


This week I made a PCB that takes an input of temperature through a thermistor. For those of you who don't know (including me one week ago), a thermistor is a resistor whose resistance is very sensitive to temperature. Thus you can read the temperature by converting the electrical reading through the resistor times some coefficient of resistance.

I designed the board for the thermistor in Eagle. The schematic is below.
25

Here is the board view. As you can see, I added a 9V battery to power the board so I don't need it to be attached to my computer. I used a 5v 100mA regulator to make sure steady power was coming through.
25

Below is the profile cut for the Modela, which uses a 1/32" endmill.
25

Below are the traces to be cut on the Modela, using a 1/64" endmill.
25

Below is the Modela at work on the traces.
25

Below is a screenshot of the fab module that runs the Modela. Here it is showing the cut path.
25

I ended up cutting the traces again because on the first go around, the endmill was very blunt and kept getting junk built up and not cutting fully.
25

Here is the fully milled board, before doing the profile cut to cut it out.
25

Here is the board stuffed. The thermistor is circled in red.
25

And here is the board all hooked up. You can see the attachment for the 9V battery.
25



Now the challenge is to read the temperature: For the electronics part, the code is simple:
25
int ledpin = 8; int thermistor_raw=8; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(ledpin, OUTPUT); pinMode(thermistor_raw, INPUT); } double Thermister(int thermistor_raw) { double Temp; // See wikipedia for explanation of formula Temp = log(((10240000/thermistor_raw) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp)); Temp = Temp - 273.15; // Convert Kelvin to Celcius return Temp; } // the loop function runs over and over again forever void loop() { if (digitalRead (thermistor_raw) > 0){ digitalWrite(ledpin, LOW); // turn the LED on (HIGH is the voltage level) } else{ digitalWrite(ledpin, HIGH); // turn the LED off by making the voltage LOW } }
The only problem is that the LED doesn't shine very bright
25