Hantek CC-65 Current Clamp Probe – Part 1 – Probe Analysis and Discussion

This post will discuss the Hantek CC-65 current clamp probe, a cheap and useful tool. I’ve ordered this probe because of its low cost, and reasonable performance. I was happy to see there’s even a schematic for it available online as drawn in a post on the EEVblog forum. Looking at the schematic made it clear there’s a lot that can be done to improve it fairly easily. Due to the length of the post, and the fact I’m still waiting for the parts to arrive, I’m going to split this post into a few parts. In this part we’ll go over the operation of the probe and its schematic, and then discuss possible modification that can be made to it. There are quite a few tradeoffs to be made in the selection of parts and which mods to do, based on the requirements out of the probe. I will detail some of these considerations, and in the next parts will present results based on the mods I’ve decided to implement according to my preferences.
This part turned out to be quite long with a lot of text and little pictures/results. I think this is of value and will serve as good background and reference in the next parts on this topic where measurement data will be presented. There, it will be possible to simply point to the relevant part of the current post, to explain the reasoning behind chosen components for mods, and measurement results explanations.


The Hantek CC-65, like many other probes that can measure down to DC uses a “Hall element” sensor (see examples here) and not the typical transformer based structure AC clamps would use. This sensor has 2 ports (4 pins), one port for excitation current (for the sensor itself, not to be confused with the measured current), the other for differential voltage measurement which would be a function of the external magnetic field as well as the excitation current in the first port. The differential output voltage can later be filtered/amplified as needed to get an appropriate output voltage related to the magnetic field which itself is a function of the current being measured.
The CC-65 uses 2 such sensors placed at opposing sides of a magnetic core through which the wire carrying the measured current is inserted. Figure 1 shows a teardown picture of this, taken from the EEVblog thread about this probe. As can be seen in the figure, there are 2 such sensors placed with similar orientation. This means that any ambient magnetic field will have a similar affect on both, assuming they are well matched and placed in good alignment. On the other hand, magnetic field that is the cause of the wire threaded through this core (measured current) will be in opposite polarity between the two sensors. This in turn will allow us to add (or average) the signals from both sensors with appropriate weight and phase to attenuate stray magnetic field and leave the desired signal unaltered.

Fig. 1. Hall Sensors of CC-65 (source)

A few posts down the same EEVblog thread, you can find the schematic of the probe as was derived by members of the forum. The schematic was later refined by other members in the same thread. I will include in Figure 2 a version of the schematic posted later in this thread simply because some of the part values are updated there (go over that thread for more updated version of schematic which are uploaded over time). I should note that I’ve looked at a few teardown photos of this device before mine arrived, and it seems there are some variations in value between units. This specific variant of the schematic also has a couple of capacitors added around the LDO compared to the original state due to potential instability of the LDO. It has also been annotated by the creator of the file on EEVblog. Please note that not all device values are correct, some of the capacitors for instance. Therefore, use with caution.

Fig. 2. Schematic Variant of the CC-65 (source)

Despite not being 100% accurate due to some variations in values, this schematic is of great help in both analyzing the circuit, as well as considering some possible improvements to it. Lets first start with circuit analysis for this schematic.

Circuit Operation – Sensor Interface:

Lets start with the sensors input marked with the 4 pins connectors around the middle of the schematic. You can see the two sensors connect to Vg (ground) at pin 4, and to a biasing branch at pin 2. These pins (2,4) form the excitation port of the sensor. The biasing circuit sets the voltage over the sensors and therefore the gain of the sensors. The additional port of each sensor (pins 1,3) goes to a 909R resistor and then a 200R trimmer which connects both sensors. First thing to note here is that the two sensors are connected in opposite polarity. This is done to implement what was discussed in the intro of this post, cancel ambient magnetization, and average the magnetization due to the excitation current being measured. Since the sensors aren’t perfectly matched in gain/resistance, the 200R trimmers VR5/VR6 are needed. In this context, C11 being present seems very strange as it will result in unbalanced structure at higher frequencies, degrading this attenuation. Next we see a strange arrangement of resistors and trimmers with VR3/VR4. These are used to trim the average offset of the sensors. There are two things to note in this structure. First, you see that R12 and R8 are of different value, which makes this structure somewhat unbalanced. This allows for R12 to be the “coarse” adjustment, and R8 to be the fine adjustment. Given the resistance values, there’s more or less an order of magnitude separating the trim range of the two (~17.6K vs ~166.5K output resistance if we make some simplifications). The second thing to note here is that the reference voltage that is fed into these branches of VR3/VR4 is taken from the excitation port of the sensors. This is mandatory for a proper tracking as the offset of the sensors should be considered a magnetization offset, not a voltage offset. This in turn will be translated to offset voltage by the gain which depends on the biasing condition. Therefore, by making the offset trimming circuit referenced to the bias voltage of the sensors, this tracking can be achieved.

Circuit Operation – Amplifier:

Next let us move to the instrumentation amplifier built around U3-1/U3-2/U4-1. This is a straight forward instrumentation amplifier structure although some values chosen for resistors makes you wonder why they aren’t identical. The two trimmers VR2/VR1 are used to trim the gain of the two ranges (65A/6.5A). The output of U3-1 has some protection at its output in the form of R18 (its actually a PTC, not a resistor) and D2/D3. I’d expect to see some form of clamping device after these diodes (such as a zener from Vr+ to Vg), or else I’m not sure it will be an effective protection structure, but I don’t see that in this instrument. Note that R18 actually upsets the loop stability around U4-1 (it make the output pole more dominant, although C15 is actually of lower value than in the schematic, as detailed in this post). Its placed inside the feedback loop to minimize distortion it adds since its a PTC and not a linear resistor.

Circuit Operation – Biasing:

Next lets move the structure at the bottom left corner of the schematic. This branch is used to generate reference voltages of both polarities. The positive voltage is used for both the battery level detection (U6-1 used as a comparator in this case), as well as bias voltage for the sensors via U1-2. In addition both polarities of the reference are used via VR7 and the voltage divider formed with R27/R26 to set the reference voltage for U4-2. U4-2 is used as the offset nulling op-amp and VR7 trimming is needed to compensate for its own offset voltage. C3 is required for stability of the loop around U4-2 as its negative feedback loop runs through multiple amplification stages and poles when the null switch (ZERO in the schematic) is pressed. C23 offers local bypass of the negative feedback loop at higher frequency. C4 is used to hold the control voltage that this feedback loop is generating once the nulling switch is released.

Lets move to U1-2 which is used to bias the sensor. D1 is used to offer a temperature dependent voltage (drops with increase in voltage), which in turn would increase the input voltage to U1-2 as temperature rises. The voltage coefficient of the diode is a reasonable tracking method for the sensors tempco in a limited temperature range only. This voltage will than be amplified by the loop around U1-2 and used to bias the sensor. There is a clear tradeoff between maximum signal gain (high biasing voltage value for the sensor), and safe-operation of the sensor. Lookin at the datasheet of the sensor you can see its resistance drops rapidly with increasing temperature, and maximum voltage allowed dropping with temperature. This means that at maximum temperature we can’t have a high voltage over the sensor. However, because of the temperature coefficient of gain for the sensor, high temperature is where we want a maximum voltage over the sensor. Combine the two, and the result is that at nominal room temperature we are actually working far below the thermal limits of the sensor, and have a reduced gain and signal amplitude.
Observing the loop around U1-2 we can make some assumptions such as the sensors resistance in excitation port (~400R per sensor) and the transconductance of the BJT at the bias point (~0.1S). This means that this stage of BJT and 2 sensors has a voltage gain of ~X20 (26dB). We can also calculate the pole of C1 and the sensors resistance, which would be at <20Hz. This means that we are adding inside the feedback loop of U1-2 another gain stage and an additional pole that falls inside the region where loop gain is >0dB. This seems like a bad idea for stability. I’d expect such a feedback loop to be marginally stable and cross the 0dB loop gain mark at a few KHz to tens of KHz depending on exact component parameters. In extreme case this can result in oscillations, but it can generate noise peaking even with less extreme circumstances. This peaking would in turn modulate the input signal sensed by the Hall sensors, so generally its best to avoid that.
Another point to consider in this part of the schematic is that the P272C can only swing to 1.2V below the positive rail (typical, worst case is 1.8V). Thankfully, in this application the load is sourcing current from the positive rail, and not sinking it to ground, which means only the low side of the output stage for U1-2 is working and its bias is provided by the load itself. This might explain why such a structure is used despite its undesirable effect of phase margin. This will result in very little bias current to the output stage which might again degrade performance. Therefore it might be of benefit to add a resistor from the positive supply to the output pin of U1-2 to increase this bias current to a somewhat more substantial (10K might be a reasonable value with limited effect on total power consumption). An alternate solution would be to replace this op-amp with one that can swing closer to positive supply. I’d choose the OPA2196 (which I’ve also used in a different project) which is a true rail-rail op-amp, which also happens to have lower noise density, lower offset, and lower power consumption than the P272C used for U1. So while the noise density and offset aren’t of real value for U1, the lower power consumption will offset some of the increase by replacing other parts. Additionally, its ability to swing closer to the rails can be useful here, mostly for U1-1 buffer.


You can see there are a few points above that deal with stability being sub-optimal. According to what was written in that EEVblog thread linked to above, there is a stability issue with the LDO which calls for additional output capacitors to be added. So combining that point with what was discussed here doesn’t add any confidence in the design and validation of this probe after the schematic was drawn. The final effect of these points on output signal might not be catastrophic, especially given the limited BW of 20KHz, but that’s something to address when extending its performance as we aim to do.

Circuit Operation – Noise:

Finally, lets make some quick noise calculations and see where it stand as is. U6 has no effect on noise in the signal path so we can ignore it, neither does U4-2 who’s noise is only relevant during zero sampling and will be negligible in any case. U1-1 will contribute some noise, but due to the higher value of R23 compared with the node its driving, the noise of U1-1 is greatly attenuated. Noise of U1-2 will not show up directly at the output, as its modulating the input signal and not added directly to it. Therefore when no signal is present its noise is negligible – this obviously assumes the sensors have been properly calibrated using the trimmer to get no significant CM->Diff translation. Next lets have a look at U3 and U4-1. U4-1 will only have noteworthy noise contribution in the 65A range where the gain of the first stage around U3 is low. In that case since the same P272C is used for U4 and U3, U4-1’s noise contribution will be similar to U3.  However, lets focus on the 6.5A range which is probably the interesting of the two in terms of noise.

In the 6.5A range, U3 will dominate the noise of the entire CC-65 probe. Each P272C has 25nV/rtHz equivalent input voltage noise. Sum U3-1 and U3-2 and you get 3dB higher (non-correlated noise addition) or 35nV/rtHz. The resistors in the feedback network will also generate an input equivalent noise density of just a few nV/rtHz, and the same is true for the resistance in series with the sensors. Overall, we can use the op-amps noise as being the dominant source and round everything to ~35nV/rtHz. We can see from the schematic, assuming VR1 is in the center position, that the overall gain of the instrumentation amplifier in this case would be about >X40 (note R15 and R22 are of different value), and that at the output at this range 1mV represents 10mA input current. Therefore, 40nV/rtHz input voltage is equivalent to 14,000nA/rtHz noise (35*40*10).  The -3dB is somewhat higher than 20KHz for this probe, so given a single pole response the noise-BW is ~30KHz. Therefore total integrated noise would be ~2.5mArms. Since there are some stability concerns with a few stages, we can expect noise peaking, and we’ve obviously neglected 1/f noise which would increase the noise density at <1KHz or so. Therefore some increase in noise is very much possible. I’ve also shared these calculations over at the EEVblog discussion, and user “dcac” has helped with simulating the noise of this structure, which resulted in very similar numbers for overall integrated noise, presented in this post.

Discussion – Improving Performance:

Before looking at improving the circuit, it makes sense to operate the sensor itself at maximum gain which would reduce all other noise sources. However, when you leave some margin for the sensor limits at elevated temperatures, the default bias voltage is quite reasonable (~0.95V at room temperature). Therefore, there is limited gain we can have without risking damage to the sensor at elevated temperatures. An argument can be made that these temperatures aren’t something we will work at, and that the temperature tracking at these temperatures is of limited value if any, but I prefer to leave these margins. Because of this, I will not alter the bias value set by the components around U1-2. At least not for the time being.

Lets start with the LDO at the input, first is checking its output voltage to check for any instability. Multiple people have mentioned this as an issue, so adding proper bypass caps or other LDO, and verifying stability again after the mod is a good idea. While there we can add a zener diode as a voltage clamp on the positive rail too, although I doubt its needed as we don’t expect a significant discharge from the probe output (so is there really a need for R18 PTC there?).

Next let us move to the sensor bias circuit around U1-2. While we don’t plan on changing the DC operating point, this feedback loop does raise some doubt about its stability. A possible solution would be to add a bypass capacitor from op-amp output to its inverting input to offer alternate path for the negative feedback at higher frequency to improve the phase margin. Placing the pole at any frequency below the 0dB crossing of the loop gain will increase phase margin. By using nominal values for all, with a bit of margin 10KHz should be good enough for this. With R4||R7 this will result in capacitance of 2.7nF (or higher). The higher the capacitance, the lower the BW for which U1-2 will attenuate noise and interference at the sensors input. However, the lower the capacitance, the higher the BW over which U1-2 will contribute its own noise and the noise at its input to the sensors input. Therefore, there is a tradeoff between the two. This isn’t expected to be a dominant noise source in either case, so I won’t spend too much effort in trying to optimize the value. I will have a look that when I get to measuring this probe and will share my findings.

As we’ve calculated above during the circuit analysis, U3 (and in some cases U4-1) are the dominant sources of noise, therefore its only logical to find a better op-amp to replace them. There are a few candidates here, depending on what you are willing to pay for it in terms of performance. For instance, OPA2156 is a potential match for this. It has much lower noise (X8 better white noise density), negligible input bias current and current noise, 10X higher GBW, and an extremely low offset voltage and drift. The higher GBW will allow us to extend BW further, and the lower noise will translate to lower noise density at the output of the probe. However, the extremely low offset has another benefit which might not be clear at first sight. If we replace U4 with OPA2156 we no longer need the function of VR7. This offset is so low (25uV is equal to 0.25mA) its probably better than what you can get by fiddling with VR7 anyway. So this would allow us to short R26 which means VR7 is no longer doing anything, and we have one less trimmer to worry about. However, here’s where it gets more interesting. If you are willing to leave with some residual offset (25uV per amp, lets add U3-1 and U3-2 which are uncorrelated, we get 35uV, multiply by X40 gain and X10 translation to current we get 14mA residual offset), you can eliminate the nulling function (ZERO switch) completely. Why is that important? Because C4 leaks and therefore the nulling must be refreshed periodically. By eliminating it you no longer need to worry about this. So if this offset is low enough for you (it will scale with the range obviously), all you have to do in such a case is replace U3/U4 with OPA2156 and remove R23.

So this all sounds great, right? Then why is the OPA2156 not a perfect match, and why is this elimination of nulling not a must have? Lets start with the OPA2156, its current consumption is quite high, which means battery life will be lower. You can look for another substitute with similar or better relevant parameters (such as offset, and offset drift) and lower quiescent current, and pay in something else such as lower GBW or higher noise. This is something that must be balanced according to your needs of noise/BW/battery life/nulling requirement.
There is however, another point to keep in mind. In the last few sentences, we’ve eliminated the need to zero the offset of the op-amps. However, this assumes there is no offset from the sensors. This might not be true in case the offset tracking isn’t perfect, or the sensors contribute different weighted offset at different temperatures or over time in which case ambient magnetization isn’t attenuated sufficiently. Therefore, while it might be possible to eliminate the nulling, it remains to be proven in practice if this is good enough or not. My gut feeling is that the sensors won’t be sufficiently well balanced in some units, and therefore a residual gain of a few tens of mA’s is not out of the questions. I didn’t think this removal of nulling is sufficiently important to pay the price in other parameters, and made a different decision as I will explain below. Despite this, as I will show later, this doesn’t mean that there is no way to gain in the nulling (ZERO) usability.

After a few other op-amps striking out due to one parameter or the other, I have found a few possible op-amps that seem to offer good tradeoff for my taste. These are the OPA1652, OPA2189, and OPA1602. The OPA1602 has the widest GBW, but I didn’t like the input bias current being high which might call for a few additional changes. Its input current noise density can also become dominant, but I was planning on reducing the value of the resistors around it anyway which would make this noise source less dominant. Out of the remaining 2 options, the OPA1652 has the slightly higher BW and lower noise. The OPA2189 has much lower offset voltage, lower quiescent current draw, and no 1/f noise around DC. However, the OPA2189 achieves this by operating as a chopper, which means it has elevated noise at higher frequency. Therefore, despite the possible elimination of the need for nulling (which is only a theory until proven in practice) with the OPA2189, I’ve decided to go with the OPA1652. For U4 it might still make sense to go with the OPA2189, as for the 6.5A range its noise contribution is of no affect, and the gain around it is lower which means it will still be fast enough. This will allow removing VR4 trimming step completely due to the super low offset of the OPA2189. Since I aim at extending BW quite significantly, I’d go for the OPA1652 as my first option. Note that neither of these two op-amps has rail-rail input, but this isn’t required by the input signal. Since the last stage has a gain of X2.5, the input swing is lower than that of the output, which itself is limited to 650mV for 6.5A/65A. The CM voltage at the inputs is also limited do to the sensor bias voltage which is approximately double the CM voltage at the input of the instrumentation amplifier. The CM should still be verified to make sure these suggested op-amps have sufficient margins, this will be measured and posted in the next part of this series of posts. If there is some margin missing, this can be easily fixed too, simply trade off the positive vs negative supply rails slightly, and adjust the battery voltage limit resistors accordingly. Alternatively, we can add a CM voltage at the input of the first stage if it will be the limiting portion.

The OPA1652 has a GBW of 18MHz. Therefore as is, it will be good for ~1MHz -3dB BW. However, we can extend this further somewhat by moving part of the gain from the first stage of the instrumentation amplifier to the second stage. Now that the OPA1652 is used, the white noise density drops from 25nV/rtHz in the original op-amp to 4nV/rtHz. This means that the op-amps are no longer dominant. In fact, following this change, for the 6.5A range, the resistors will contribute most of the noise, and the overall noise frequency should be ~10nV/rtHz as compared with the ~40nV/rtHz we’ve started with. This can be improved slightly (and even more so in the 65A range) by scaling down the resistor values in the instrumentation amplifier. By scaling the resistors down sufficiently we can gain another 2-3dB in the input noise density compared with just replacing the op-amps, down to <8nV/rtHz.

Staying inside the instrumentation amplifier, it also makes sense to reduce the value of capacitors (or eliminate them completely) to allow the BW extension. Additionally, the PTC (R18) with its nominal 1Kohm resistance causes stability issue when we include the load capacitance. Therefore, we need to reduce the value of this resistance if we want to extend the BW significantly, remove C15 (or at the very least make it much smaller in value), and add an isolation resistor between the output of U4-1 and the output cable to isolate the feedback loop from the capacitive load that might upset stability. Doing this with a PTC isn’t a good idea as its parameters can vary quite a bit, therefore a standard metal film resistor should be used.

Finally, as I’ve mentioned above, just because we can’t eliminate the need for nulling, doesn’t mean there’s nothing to improve there. The obvious thing is to replace C4 with a higher capacitance, lower leakage capacitor, which would extend time between nulling cycles as drift would be reduced.  This can be a bit difficult to do as you will need to find a capacitor and measure its leakage to be sure its indeed low enough. Operating the capacitors at their rated voltage for some time (hours or days) can improve this. However, there is more to gain to be had from the op-amp replacement in this case (U3/U4). For instance, now that we have U4-2 with much lower max offset voltage than that of the P272C used in the CC-65 to begin with, we can make the weight of VR7 lower. This can be easily accomplished by reducing R26 with a low value resistor (exact value would be a function of the op-amp chosen for U4, but even 120R would probably be a good generic match). This in turn would make the tuning via VR7 X8 less sensitive, which would allow finer setting of the residual offset following nulling. If we go with something with extremely low offset (say OPA2189), we can eliminate this completely, and simply short R26, or remove R27. This will result in excellent nulling ,and no need to trim VR7 ever.
Additionally, this also means that U3-1/U3-2/U4-1 now have a much lower offset voltage too. If we assume the op-amps were non-negligible source of offset we need to trim, this means that the offset path can be so much weaker. Therefore we can replace R23 with a higher value resistor (820K for instance). This is very beneficial as this means that a similar drift in the voltage over C4, will now result in a X8 lower drift in output voltage than previously. This can significantly extend time between nulling cycles. All of this of course, will only be true if the op-amps offset (which isn’t tracked by the biasing of the sensor) is dominant. If other causes of offset are more significant this resistor will need to be scaled back down to compensate. I think there is some benefit to be had here, this will have to be verified over time when using the probe over different temperatures and after some drift of components – only then we can determine how much benefit this would actually allow to gain. On the same point of R23, if you observe the circuit you will see that C4 is a polarized cap. This means its meant to operate with a very limited voltage over it. However, if we replace this with a non-polarized cap, we can extend this voltage range, and in turn increase R23 further. I think we can gain quite a bit of margin here, but once again, this remain to be verified in measurement.


This is all for this first part of the post. The probe/circuit analysis presented in the earlier part of this post will be of use to anyone who want to understand the probe operation. It is also useful as it allowed us to recognized the parts of the circuit that can benefit the most from mods, and which mods should be considered. These potential mods were than discussed in the later part of the post. I’ve left the discussion fairly open-ended, as the trade-offs should be made according to personal needs and preferences. In the next part on this probe I will present measurement results for the stock probe, mods I chose to implement, and measurement results following these mods.


Leave a Reply

Your email address will not be published. Required fields are marked *