# Simulating a Constant Temperature Anemometer

I am trying to simulate the results I see when using a constant temperature anemometer circuit to sense air flow. An excellent discussion can be found: arduino thermal anemometer.

Here is my simulated circuit: https://www.circuitlab.com/circuit/ttr9y3/simple_cta/

The basic principle of the FS5 sensor (as I understand) is that there are 2 resistors, 1 to heat (RH = 45 Ohms) and 1 to temperature sense (RS = 1200 Ohms). The circuit is designed so that a constant temperature differential is maintained, i.e. when air flows through cooling the sensing resistor, it's resistance decreases, the bridge becomes unbalanced, the op amp activates the transistor, which then allows current to be drawn into the heating resistor in an attempt to re-balance the bridge. Therefore, the bridge voltage is proportional to the air flow.

I am getting the right results in practice with Vout=5V-10V depending on flow, and at rest I read:

• Vout = 5V
• AM2 = 40mA
• RS = 1500 Ohms
• RH = 65 Ohms

However, when I try to simulate this, I am getting Vout=9.2V and AM2=82mA! The DC Sweep should show that as RS decreases, Vout increases, yet this is also not the case.

This has been bugging me for a while now, please help me understand why this circuit works in reality, but not in theory! What am I doing wrong??

If Vout is 9.2 V then the op-amp output is saturating hard against the 10V rail. This is likely due to the fact that using fixed resistors in a simulation will never resolve the loop into equilibrium i.e. the op-amp will always be unbalanced because RS remains at precisely 1500 ohms and doesn't alter as temperature increases.

How would it know that localized temperature has increased either: -

There is nothing about RS that makes it anything else other than a perfect 1500 ohm resistor - in reality RS will alter its value with temperature changes and at some amount of output current RS will be heated to a value where the whole circuit acquires equilibrium.

Equilibrium is when the bridge is balanced and, if you shorted out the 140 ohm resistor the bridge attains near-perfect balance i.e. the aim of RS is fall to about 1360 ohms under heat. If air flow increases, RS's resistance rises and this forces the op-amp to drive the transistor harder which warms up the 68R more and forces down the resistance of RS to 1360 ohms.

• Thankyou for the explanation, it certainly makes sense. You're explaining exactly what I was trying to do with the DC Sweep, which also agrees. I always thought a thermistor's response was inversely proportional to heat, however, when I look at the resistance of RS as I remove the power, it cools and decreases from 1500 to 1200 ohms. Why is it doing this? It is the root cause of my confusion! Apr 11, 2016 at 17:00
• You should be simulating a negative temperature coefficient terminator not positive. Apr 11, 2016 at 17:49
• When I use it in practice, why do you think RS (and RH) act like a positive temperature coefficient resistor? Apr 12, 2016 at 12:59
• RH is just a fixed resistor used as a heater. It may have a small temperature coefficient but I can't tell you about RS because I don't know what device you have used. Apr 12, 2016 at 13:40
• Sorry, it is called the FS5: ist-ag.com/eh/ist-ag/resource.nsf/imgref/… Apr 12, 2016 at 17:42

To simulate this you need to use a resistor thermal model. One that includes a thermal resistance and a temperature coefficient.

.SUBCKT VC_RES 5 4 2 1
GRES  1  2  VALUE = { V(1,2) / V(4,5) }
.ENDS


Drive this with the resistance at 273K as a voltage (e.g. 1200V for 1200Ohms) and add the resistance change with temperature (as a voltage), thus; Measure the voltage across the VC_RES and the current through it and multiply them together to get the power (as a voltage). Multiply this by the thermal resistance (e.g. 100 K/W) and the temperature coefficient (e.g. 3900 ppm/K)

X1 1 0 2 3 VC_RES  ;Voltage controlled resistor
V1 4 0 SIN(0 1 10) ;External driving source
V2 1 4 0           ;Current sense source
V3 5 2 1200        ;Base resistance as a voltage, R0
B1 3 5 V=V(5)*0.0039*((V(1)*I(V2)*100) + 20) ;Thermal model
* P=V*I
* Tr=(P*Rt) ; Temp rise with Rt=100
* R=R0*Tc*(T+Tamb) ; Tamb=20 Tc=0.0039


This is a starting point as this is actaully an over simplification. In practice you can get some really silly answers when you use it in a bridge configuration, so you need to put limits in to prevent that.