Crystal Oven Temperature Sensor Reads 0.01F Resolution


[Scott Harden] continues his work on a high precision crystal oven. Being able to set a precise temperature depends on the ability to measure temperature with precision as well. That’s where this circuit comes in. It’s based around an LM335 linear temperature sensor. He’s designed support circuitry that can read temperature with hundredth-of-a-degree resolution.

Reading the sensor directly with an AVR microcontroller’s Analog-to-Digital Converter (ADC) will only yield about 1-2 degrees of range. He approached the problem by amplifying the output of the sensor to target a specific range. For the demonstration he adjusts the swing from 0-5V to correspond to a room temperature to body temperature range.

Of course he’s using analog circuitry to make this happen. But before our digital-only readers click away you should view his video explanation. This exhibits the base functionality of OpAmps. And we think [Scott] did a great job of presenting the concepts by providing a clear and readable schematic and explaining each part slowly and completely.

So what’s this crystal oven we mentioned? It’s a radio project that goes back several years.

17 thoughts on “Crystal Oven Temperature Sensor Reads 0.01F Resolution

    1. Calibration might be off a degree or two but that’s okay because changes are linear. I care less about the exact temperature, and more about the relative temperature (now compared to 5 minutes ago). I don’t care if it’s 120.12F or 125.12F, as long as it stays exactly at one temperature. As with any design it could be more accurate/precise, but my goal is maximizing precision and minimizing expense.

      1. People tend to use the terms accuracy and precision interchangeably, but they’re actually two very different concepts. Consider a rifleman who sends 10 rounds downrange to a paper target.

        If the target is peppered with holes in no particular arrangement, the rifleman is neither accurate nor precise.

        If the holes appear on the target as a tight cluster, but not centered on the bullseye, the rifleman is precise, but not accurate.

        If the holes in the target appear in a loose group, that is more-or-less centered on the bullseye, the rifleman in accurate, but not precise.

        If the grouping is very tight and centered on the bullseye, the rifleman is both accurate and precise.

        As you point out, for oven control, relative accuracy is not as important as precision. However, drift potentially affects both, particularly when you introduce stages with a lot of gain (in your case (100/1.8). If there is any drift in the in your offset voltage or in the temp sensor/buffer, that error is amplified along with the signal to the tune of ~55.6 times. Any temp drift in your feedback resistors changes gain, too. Let’s not forget gain changes in your uP A/D as a function of temperature.

        I wonder if some of this could be mitigated by enclosing the analog portions of the temp control circuitry itself in the oven with your crystal.

        My other question is why use a uP to control temp at all? Since you don’t care about accuracy, I think very stable analog temp control could be implemented with your sensor, an opamp, and a handful of other parts. Plain silicon diodes make decent sensors for this kind of app, by the way. (2mV/degC)

        1. Thanks for the input!

          Indeed, stability and drift prevention is obtained by mounting the oven controller within the temperature-controlled device. This is the intention of the final project. The breadboarded version is a prototype.

          the MCU was chosen so I can encapsulate the entire controller in styrofoam and control it by reprogramming the MCU with a long, thin cable. In the future, no MCU will be involved. Furthermore, the MCU was to allow me to monitor (a) room temperature, (b) enclosure temperature, (c) temperature sensor output, and (d) current drive level. My main goal is to find a method which does not oscillate. Even a 1F oscillation is too much for my use. Once I find values that work well, I can eliminate the MCU and assume these things do not need to be monitored.

    1. That’s fantastic – thanks for the link! Unfortunately that’s accurate to a little over 0.1ºF… I think I’m going to try to stick with analog to get higher precision.

      Since I’m actually using the oscillator’s output, the clean signal of the RF is pretty important to me. That’s why I have to have smooth current injection and prevent rapid state transitions. In other words, I’m concerned that the signals coming off the digital sensor would get into my RF stages… Worth a build though!

  1. If you don’t care about calibration, why not measure the resistance of the 10k pot and replace with a approximate value resistor to prevent the 10k pot from drifting during use?

    1. because I do care about having the ability to raise or lower temperature at will. In the final device, when I know what temperature I’ll be using, I certainly will use a fixed resistor divider. I’ve also considered a digital potentiometer, which allows some interesting opportunities. Since it’s an RF device, I’m trying to stay away from PWM to set voltage.

      1. I was going to make the same comment. You are measuring the difference with a reference amplified by 100/1.8=55, and a zener might have 6mv/dC * 55 = 333mV/dC at the output. So that’s 1/15 or less than 4 bits of accuracy with only 1 degC change in room temperature. Did you try putting your finger on the reference zener?

        A voltage reference like the LM385 has 150ppm/dC but ~$4 references are 20ppm. But then your resistors also have a temperature coefficient.

        I don’t understand why you buffered the + input to the output op-amp.

    1. That’s exactly what I intend to use. They’re more sensitive, swing over a narrower range, and are dirt cheap. The downside is they’re a bit non-linear, especially when used in a voltage divider. I’m using this LM335 setup to calibrate thermistors so that my final project will use thermistors to sense temperature. Good call!

      1. The non-linearity isn’t really a problem when your goal is to keep the temperature constant. And if you keep the other leg of the voltage divider inside the oven as well, you don’t have to worry about it drifting with ambient temperatures.

  2. Scott–A few questions. 1)What kind of equation between temperature variation and the frequency of the XCO it’s in? That is, if you do achieve 0.01 degree sensing, what would your XCO frequency variation in Hz be? 2) How much would the topology of the oscillator (Colpitts, Hartley, etc.) matter? 3) What method are you thinking about to minimize changes in oscillator loading (in actual use) to minimize changes in the self-heating of circuit components? 4) What kind of stabilizing thermal mass are you contemplating to associate with the XCO within its insulated enclosure (inasmuch as the essential issue here is thermodynamic)?

    Cool stuff! Thanks!

    –Todd K7TFC

    1. K7TFC de AJ4VD

      First off, if you’re not familiar with QRSS you should read up on it. It’s what I’m working toward, and it’s a fantastic little niche of RF tinkering!

      1.) Crystals often vary frequency with temperature nonlinearly, and in fact have “turnaround” points which can be identified and targeted to provide maximum frequency stability. Check out my friend Bill’s write-up about this concept: (he graphs frequency vs. temperature)

      2.) topology is critical. Some variable capacitors are more temperature sensitive than others. Core inductors are notoriously temperature sensitive. Some fixed capacitors have a positive temperature coefficient, others have a negative one – and the right balance of using both can make an oscillator temperature stable passively. Hartley oscillators have a wide tuning range, but are therefore more sensitive to temperature changes. Colpitts oscillators is what I’ll be using. Actually, I’m going to compare a colpitts with an AVR.

      3.) I’m going to clock the microcontroller at 10.140MHz (my target output frequency for QRSS) with a crystal using XTAL1/XTAL2 pins. Then using CKOUT pin I obtain buffered square waves at my fundamental frequency. This gets past the loading issue. Alternatively, in analog land I’d just use a few buffering stages to minimize load on the oscillator.

      4.) I’m trying several things. Find me on facebook and you can see pics of my project in development. It’s basically an oscillator manhattan style on a copper board with the crystal and heater on the back – surrounded by styrofoam – packed in a metal case – then put in a bigger styrofoam box. This thing will be ready for world war III :)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.