Jump to content
  • 0

Automatic Resistance with Impedance Analyzer


MLopes

Question

I have purchased an Analog Discovery 2 with the Impedance Analyzer add-on board to see if it would be a suitable replacement for the HP4294A that my employer currently has as it's starting to perform poorly. Luckily, the personnel that are using this only use it to measure the impedance and phase of piezo devices and don't really use any of the other features that it offers. 

I am pretty sure that the AD2/IA setup will work for them but upon initial setup, I am finding some issues. The first thing that I have noticed is that I get quite a lot of Resitor Too Low messages. This doesn't make sense to me as the software states that it automatically switches to the approriate reference resistor. If that is the case, then in my mind I should never see those messages when using the Impedance Analyzer add-on board. 

I am testing this system out by verifying that the plots/data that I get when using the HP4294A match the results when I use the AD2/IA setup. As of right now, I see spikes occuring when during anti-resonance, which also coincides with the Resistor Too Low messages. I can clear those spikes by selecting a higher resistor in the drop-down menu. If I set that same resistance value, at the beginning of the plot, the software automatically lowers it as the impedance at resonance is ~10Ω. I have searched the forums and have found a suggestion about creating a custom program that would prevent the changing of resistances during the Constant Voltage mode that I am going to try. 

I had also seen a post in which it was suggested to try lowering the Vrms value. In playing around with the software, I lowered the voltage from 1Vrms to 100mVrms which did get rid of those Resistor Too Low messages. As I was watching the Resistor selection menu through the entire cycle, I would see it increase the resistor value as it continued on with the cycle whereas previously once it switched to the lower 10Ω resistor it would never increase it. The only problem with the lower voltage is that the waveform now displays a step in the phase plot that goes above 90 degrees and it should never go above that. With that being said, I am confused on how one would set the appropriate voltage for the DUT. I am assuming that the HP4294A is set to 1Vrms. Any thoughts or suggestions will be greatly appreciated. I will be creating a custom program but that also required to set the appropriate Vrms which I am currently confused on how to properly set that.

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Thank you @attila. Out of curiosity, how does one determine the approriate Vrms to set for a device? Is there some rule of thumb or equation? I am trying to match the results from the impedance analyzer that we have so that I can compare the waveforms to verify that everything matches.

Link to comment
Share on other sites

  • 0

Thank you very much @attila. Using the Custom option with the Constant Voltage worked in that I was able to get similar waveforms as the HP impedance analyzer. 

I am still a little confused on this situation. Isn't the purpose of having those different reference resistors and having the ability to switch to the appropriate reference resistor throughout the cycle to prevent having sections of the waveform in which the reference resistor is too low or too high? I'm assuming that the waveforms aren't accurate during the time that those Resistor Too Low and Resistor Too High messages are appearing, correct? If so, then doesn't that mean that there is something wrong with the software or logic that is preventing the Impedance Analyzer from setting the correct reference resistor? 

I really do love this setup and think it's a very powerful tool.

Link to comment
Share on other sites

  • 0

I do understand that one would want to install a reference resistor that would equal the impedance of the DUT and I also understand seeing those type of messages but only if one was not using the Impedance Analyzer adapter. 

Correct me if I am wrong but wouldn't the reason to use the Impedance Analyzer adapter be to 
     a- Take the guess work out of determining the appropriate reference resistor to install into the circuit and 
     b- Automatically adjust the reference resistor throughout the entire specified frequency range to be able to get the most accurate impedance and phase measurements throughout that entire specified frequency range?

I would expect that with the Impedance Analyzer adapter installed, the software would be constantly keeping a track on the impedance of the DUT throughout the entire specified frequency range and once it saw that the ratio between the measured impedance and the reference resistor was getting close to that 25 window, then the software would automatically switch to a different reference resistor in order to lower that ratio so that it wouldn't produce those warning messages as well as poviding the most accurate measurements throught the entire specified frequency range. Am I not correct in this assumption? 

This setup is being used to characterize piezo devices and I'm trying to get a setup that would would work for the majority, if not all, of the piezo devices that we create without having the operator determine what the appropriate reference resistor needs to be when characterizing certain piezo devices. This is one of the reasons why I was so excited for the Impedance Analyzer adapter.

Link to comment
Share on other sites

  • 0

Hi @MLopes and @attila.
 

Thanks for sharing all your comments. 
As mentioned Attila, we have similar doubt about how the IA (by Waveform) can adjust automatically the reference resistor.

 

We solved the resistors alarm using the "custom" mode and the "contanst voltage adapter" script example. But the signal was more noisy. 

The Vtotal(wavegen)=V(DUT)+V(reference resistor)
V(DUT)= VRMS*√2
V(Total)= "amplitude"

The VRMS/Amplitude measure the relative weight of Zdut/[Z(DUT)+Z(ref resistor)]

I don't know which is the best criteria to change the resistor. The "constant voltage adapter" example use the 25 rate to switch the resistor.
For example. If you set in the "contanst voltage adapter" script:
Voltage= 0.01 
Max amplitud=0.25 

The amplitude can move between 0,25V-0.02V until switch the resistor down or up.

Please, correct me if I wrong

Attila , can you explain me how it work "CV mode"

 

best regards

Matías

Link to comment
Share on other sites

  • 0

Hi @mmachtey

The switching thresholds for "CV/CC Resistor" modes are the same as in the custom script examples. I've tested/tuned the method in script then added as C code for measurement mode.

Based on the DUT VRMS measurement and desired value the generated signal amplitude is adjusted. If the target amplitude is above 2.5V (5Vpk2pk) it switches to lower resistor. The maximum would be 5V (10Vpk2pk) for Analog Discovery Wavegen but with 2.5V the Scope input can stay in low range 5Vpk2pk to have better measurement resolution. If the target is below 0.2V (2.5/12.5) it switches to higher resistor value. After a resistor change the measurement is repeated to fine adjust the amplitude for the new resistor value.

const Voltage = 0.1 // desired VRMS
const MaxAmplitude = 2.5 // maximum AWG amplitude

if(Amplitude==0) { // first step, initialize 
    Resistor = 1e6
    Amplitude = Voltage*Math.SQRT2
    Repeat = 2 // repeat step twice
}else{ // adjust amplitude based on VRMS
    Amplitude *= Voltage/VRMS
    if(Amplitude>MaxAmplitude && Resistor>10){ // amplitude top limit, change resistor
        Resistor /= 10
        Amplitude /= 10
        Repeat = 2 // repeat step twice
    }else if(Amplitude<MaxAmplitude/12.5 && Resistor<1e6){ // amplitude low limit, change resistor
        Resistor *= 10
        Amplitude *= 10
        Repeat = 2 // repeat step twice
    }else if(Repeat){
        Repeat--
    }else{
        Repeat = 1 // do each step twice, to adjust and measure
    }
}

 

Edited by attila
Link to comment
Share on other sites

  • 0
On 12/9/2021 at 12:00 PM, attila said:

Hi @mmachtey

The switching thresholds for "CV/CC Resistor" modes are the same as in the custom script examples. I've tested/tuned the method in script then added as C code for measurement mode.

Based on the DUT VRMS measurement and desired value the generated signal amplitude is adjusted. If the target amplitude is above 2.5V (5Vpk2pk) it switches to lower resistor. The maximum would be 5V (10Vpk2pk) for Analog Discovery Wavegen but with 2.5V the Scope input can stay in low range 5Vpk2pk to have better measurement resolution. If the target is below 0.2V (2.5/12.5) it switches to higher resistor value. After a resistor change the measurement is repeated to fine adjust the amplitude for the new resistor value.


const Voltage = 0.1 // desired VRMS
const MaxAmplitude = 2.5 // maximum AWG amplitude

if(Amplitude==0) { // first step, initialize 
    Resistor = 1e6
    Amplitude = Voltage*Math.SQRT2
    Repeat = 2 // repeat step twice
}else{ // adjust amplitude based on VRMS
    Amplitude *= Voltage/VRMS
    if(Amplitude>MaxAmplitude && Resistor>10){ // amplitude top limit, change resistor
        Resistor /= 10
        Amplitude /= 10
        Repeat = 2 // repeat step twice
    }else if(Amplitude<MaxAmplitude/12.5 && Resistor<1e6){ // amplitude low limit, change resistor
        Resistor *= 10
        Amplitude *= 10
        Repeat = 2 // repeat step twice
    }else if(Repeat){
        Repeat--
    }else{
        Repeat = 1 // do each step twice, to adjust and measure
    }
}

 

 

On 12/9/2021 at 12:00 PM, attila said:

Hi @mmachtey

The switching thresholds for "CV/CC Resistor" modes are the same as in the custom script examples. I've tested/tuned the method in script then added as C code for measurement mode.

Based on the DUT VRMS measurement and desired value the generated signal amplitude is adjusted. If the target amplitude is above 2.5V (5Vpk2pk) it switches to lower resistor. The maximum would be 5V (10Vpk2pk) for Analog Discovery Wavegen but with 2.5V the Scope input can stay in low range 5Vpk2pk to have better measurement resolution. If the target is below 0.2V (2.5/12.5) it switches to higher resistor value. After a resistor change the measurement is repeated to fine adjust the amplitude for the new resistor value.


const Voltage = 0.1 // desired VRMS
const MaxAmplitude = 2.5 // maximum AWG amplitude

if(Amplitude==0) { // first step, initialize 
    Resistor = 1e6
    Amplitude = Voltage*Math.SQRT2
    Repeat = 2 // repeat step twice
}else{ // adjust amplitude based on VRMS
    Amplitude *= Voltage/VRMS
    if(Amplitude>MaxAmplitude && Resistor>10){ // amplitude top limit, change resistor
        Resistor /= 10
        Amplitude /= 10
        Repeat = 2 // repeat step twice
    }else if(Amplitude<MaxAmplitude/12.5 && Resistor<1e6){ // amplitude low limit, change resistor
        Resistor *= 10
        Amplitude *= 10
        Repeat = 2 // repeat step twice
    }else if(Repeat){
        Repeat--
    }else{
        Repeat = 1 // do each step twice, to adjust and measure
    }
}

 

 

Hello Mr. @attila,

You noted that  "I've tested/tuned the method in script then added as C code for measurement mode.

Could share the C code? The script logic is clear. As I know, the script code runs once at each step.  All parameters are called by reference, not value. But, I am stuck into function orchestration within a custom application. 
For example, You are using the "Repeat" parameter. The script changes it for the next step. So, it should be memorable. What's the wrapper function logic which encapsulates and calls the script? 

Regards,

Thanks In Advance

 

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...