I've recently purchased a 12v compressor with a control unit attached (QDZH35G - usually meant for refrigerators or A/C units, but this is for a DIY project). The speed of the compressor can be controlled (via the control unit) by changing the resistance. Here's the resistance and RPM speed chart shown in the linked documentation: QDZH35G speed settings

(and a little more details here, or documentation here)

I've been trying to research what the best electrical component would be to be able to do this, and some sources say that a MOSFET would be best, while others say JFET would be better. This compressor may run for hours at a time, and I know that MOSFETs tend to heat up a bit, so maybe that's something to factor in (though obviously I would use a heat sink).

I do have some experience with Arduino but I'm trying to break away from having to buy separate modules or breakout boards for everything, and instead actually make some of the circuits myself. I did purchase a variable potentiometer from Adafruit (DS3502) which could possibly work for this, but this seems like a great task to learn more about FETs.

If neither MOSFET or JFET are the best fit what is? Maybe a MCP4131-502E/P? (which I just found out about while writing this post, so not too familiar with it just yet).

Thank you.

  • 2
    \$\begingroup\$ how many of those values do you actually need, and how often/fast does it have to switch? \$\endgroup\$
    – danmcb
    Jul 3, 2023 at 5:28
  • \$\begingroup\$ Using MOSFETs or JFETs as variable resistors can be tricky since it is nonlinear, varies with temperature, and not well controlled from device to device. JFETs are also difficult to source and many don't go as low as "zero Ohms". 30-50 Ohms maybe. Maybe you don't need the speed range that gets you. You could also use MOSFETs or a multiplexer (if you can find one to support your working voltages) to switch between discrete resistors. \$\endgroup\$
    – DKNguyen
    Jul 3, 2023 at 5:37
  • \$\begingroup\$ @danmcb Well I would like to be able to control it to some degree. If I can't just have a linear range to use, then maybe ~6 different speeds would suffice. And im not sure how often it will need to change, but not super frequently. \$\endgroup\$
    – Justin
    Jul 3, 2023 at 7:24
  • \$\begingroup\$ so you could very easily use fixed resistors and either relays or FET switches. \$\endgroup\$
    – danmcb
    Jul 3, 2023 at 7:25
  • \$\begingroup\$ @DKNguyen Yeah, I figured it wouldn't be as easy as that. I could probably monitor the resistance through it and just control the JFET or MOSFET based on what known values would get me specific speeds. And using a multiplexer - That's not a bad idea, actually. Do you have an IC you'd recommend that could multiplex 6-8 channels? \$\endgroup\$
    – Justin
    Jul 3, 2023 at 7:27

1 Answer 1


Firstly, You might notice that there are two different Table 4's in each of your sources. One has its third column as C/T current (as pictured in your answer) and one as voltage (as in the document). I'm going to assume this is actually a voltage because of how it increases with resistance but double-check this. I would guess this is a good old-fashioned potential divider controlling the compressor speed.

If 7 is a thermostat connected across C and T, I'm again assuming, this will probably be a simple bimetallic strip (or similar) that's just going to make or break the circuit. The second thing to figure out would be how the voltages at C at T connect to the rest of the device (if at all). Ideally, I'd hope that T is connected to the negative voltage, but it might be isolated, or something else entirely. It will be important to make sure you've got a good handle on your negative voltages in something like this.

There's then a few options depending on how much granularity you want. You could use something like this circuit


simulate this circuit – Schematic created using CircuitLab

Below gives you a range of 130 Ω - 1.5 kΩ. You can fuss about with the exact values depending on how many settings you feel you need, and what exact range you'd like, you can of course include 0 Ω. This is good because it's simple, and has a relatively low part/pin count, but it's non-linear and might be a pain to code if you need a control loop. This is also pretty similar to a relay-fixed resistor approach suggested by danmcb.
Alternatively, if you have some kind of DAC you could use something like


simulate this circuit

[edit] I've added a voltage source to act as the DAC, and a voltage source + 800 Ω to act as the CT source. [/edit] You can aproximate a dac using PWM and filters, which would probably suffice for this (I assume). This circuit works basically by specifying the voltage at C, and the op-amp/MOSFET sort themselves out. I note you're concerned about the heating in a MOSFET, but the actual power dissipated is going to be 10 mW, so not really anything to worry about. If you go down this route, be sure to check the MOSFET voltages work. It might be hard to find a MOSFET that's happy with a very low VDS. I've popped a series resistor in there, but the value is arbitrary, again I'd check/simulate this. You'd have to remove it if you wanted to get close to 0 Ω for the lowest speeds. The advantage of using an opamp is also that it will compensate for any drift.
It's worth noting the op-amp has positive feedback and therefore could oscillate or ring if not damped properly.

I'm sure there are other ways, but these are the first two I can think of. I've made a lot of assumptions, that I don't think are particularly silly, but do double-check them.

  • \$\begingroup\$ I've never seen the simulated circuit app before, looks amazing. When I click on "Simulate", I believe its waiting for some inputs. What values should I provide to run the simulations? (Again, I apologize for my naiveté - new to this area of electronics). \$\endgroup\$
    – Justin
    Jul 3, 2023 at 14:23
  • \$\begingroup\$ I've edited the second schematic so it simulates. I needed to add voltage sources to act as the DAC and I've approximated the input as a 5V source with 800 Ohms series resistance. You can see the voltage at C matches the DAC input. \$\endgroup\$
    – LordTeddy
    Jul 3, 2023 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.