This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FW427: SCANIF OSC - Temperature Drift

Part Number: MSP430FW427

Hello,

We designed a rotary detection sensor with msp430fw427 and we need to upgrade it to sense a slightly higher distance. It works but is very unstable related to temperature mainly due to the scanif internal oscillator drift.

We implemented the algorithm for sifosc calibration when there is a change in its frequency according the Ti app note slaa288. The sifosc frequency could be recalibrated when the temperature changes, but this method is still not accurate because the "frequency step" is too high. We noticed that using a look-up table with different DAC levels for each temperature is more efficient but still not enough.

The difference between undamped and damped signals is around 100 mV, we could achieve this value only with a special inductor with a special core and wire resulting in a higher Q factor.

We also tested the provided run time calibration, but apparently  this doesnt work for this signal level and this method requires a angular speed higher than 0 to work which is very bad for our application.

I am out of alternatives to solve this problem.We might decrease the frequency to minimize the sifosc drift impacts but that also decreases the signal. The optimal frequency for achieving the 100 mV signal difference was about 500 kHz.

Is there anything left that i can try?

  • Hi Eduardo,

    What is the current distance and old distance that you are trying to sense across?
  • The worst case is 3.3 [mm].

    I am started to think that this can be a solution but is very expensive, could you please verify?

    1 - Increase the SIFOSC to 4 MHz (to compensate the use of ACLK in step 2)
    2 - Switch the measurement delay to ACLK instead of SIFOSC
    3 - Use a TXCO to ACLK.

    A even better approach would be using the SMCLK (ACLK from TXCO) for the SIF, disabling the internal RC oscillator, but i dont know if the SMCLK would follow the temperature compensation from the TXCO.

  • Hi Eduardo,

    Using a stable clock source for ACLK is recommended for the calibration method described in SLAA288. If your design allows you to have a TXCO sourcing a ACLK that would be a good solution. Which clock are you using currently to source ACLK?

    With respect to switching to SMCLK, one of the limitation of using SMCLK is that your application cannot transition to LPM3 mode since SMCLK needs to be active while the SIF module is enabled.

    Also, the frequency at which you need to trigger the SIFOSC calibration will depend on the temperature rate of change in your application.

    Regards,
    Ivan

  • Regarding do the TXCO, probably wont work because i would have to use it to clock all the TSM states, the signal would be very low in the measuring state because ACLK is only 32768 Hz. If i use the internal RC or SMCLK in the other states, the temperature drift will be present even with a TXCO driving ACLK.


    I tried to make it work with SMCLK, but the DCO is  very sensitive to temperatures well.

    I am not using the DAC SIFOSC calibration, because it needs several rotations to work making me miss some rotations in the process or even get DAC values that are not good enough (which happens all the time).


    I am using only the SIFOSC internal RC calibration, it works but as i said the frequency step is very large making the calibration fail in several temperatures.

  • I also tried to use the runtime calibration to solve this problem. It works but only when the disc is rotating. For example, if the temperature changes above 10 C with no rotation I get a deadlock.

    This is very frustrating :(.
  • Hi Eduardo,

    Here are a possible calibration idea that might help you minimize the effects of temperature in the measurement.

    1. Have you been able to characterize the LC sensor in your design across the expected operating temperature range? do you see any variations of the LC sensors oscillating frequency or damping level across temperature?
    2. If the LC sensor frequency and damping level are stable across temperature. Then you might be able to include create a TSM runtime calibration which take into account the measured SIFOSC frequency using the method described in SLAA288 and adjust the TSM configuration accordingly to ensure that the SIF module is always triggering the comparison of LC sensor signal level when the difference between damped and undamped signal is maximized.

    We are currently suspicious that since the SIFOSC is varying significantly across temperature, the time at which the comparison is occurring is getting shifted as well which more than likely is impacting the ability to differentiate between a damped or undamped state.

    Regards,
    Ivan

  • Hello Ivan,

    First of all thanks for the patience.

    Ivan Calzada said:
    We are currently suspicious that since the SIFOSC is varying significantly across temperature, the time at which the comparison is occurring is getting shifted as well which more than likely is impacting the ability to differentiate between a damped or undamped state.

    You are correct, this is happening.

    A runtime tsm calibration that adjusts the sifosc frequency doesnt work because the step is too large, at least this is what i have seen in the oscilloscope. If i make a sifosc adjustment when i detect a small change on it is enough to mess with my DACs calibration.

    What i did recently is using the initial calibration method (which finds the best DAC values) in the runtime calibration, i made a small change to make it work with the TEST cycles so my sensor will work even when calibrating, with this algorithm the sensor works perfectly !!

    I still loose some rotations when the disc starts to move again after a large temperature change until the calibration corrects the DAC values making the sensor come back to life but this situation will be very rare in the real world which makes this solution feasible.

    The example run time calibration algorithm works as well but it depends that the sensor is still able to differentiate damped or undamped, this doesnt happen when a large temperature change occurs. So i cannot use this because my sensor could stop to work forever in the condition above.

    Well, i could use my new runtime calibration, but i have to use it all the time to make sure i would never loose to many rotations. I am worried about the increase in the average current consumption, i am working with the lowest sampling rate, so maybe this wont be a problem. What do you guys suggest? Should i keep with this solution? Do you have the average current consumption of the system while doing the initial calibration so i could assume it for my run time calibration?

  • Hi Eduardo,

    I have another solution for you which will not loose any rotations when the disc starts to move again after a large temperature change.

    What are the values of the inductor and the capacitor you are using? These will depend the LC sensor's oscillation frequency. If you set the SIFOSC to 4MHz, and a small change on the SIFOSC will let you mess the damped and undamped state, you can try to lower the LC's oscillation frequency by increasing the value of the inductor or the capacitor. Than, you can use a look-up table for the TSM settings under different temperature. 

    This way may cost less current consumption than your method. Since the only thing will cost extra current consumption will be sampling the temperature, and the sampling frequency doesn't need to be very high(influenced by the temperature changing rate).

    Best regards,

    Cash Hao

  • Hello Cash,

    This actually was our first approach to solve the problem,but there are some bad things when doing this :

    1) After countless tests, we achieved the best sensitivity with a special inductor, so the only way to decrease the frequency would be changing the capacitor value, but this degrades the sensivity about 70% when decreasing to 250 KHz.

    2) Using a look-up table would be a solution,the sifosc measure would work as a temperature sensor, but in our application the gap will be different for each target , the sensor doesnt know what is the current gap, he would have to build a look up table each time the target is switched.

    The all-time calibration that we are using works even when the target is switched, the only drawback is that it loses about 4 rotations to make a new correct calibration.

    The ideal solution would be a very high sensitive sensor enough to operate with a single initial calibration for lifetime. This is only possible with a very high Q inductor and small gaps.

    Maybe i stick with our current solution, but this is very ugly and i still dont know how much is the current consumption impact even doing this at 25 Hz.

  • Hi Eduardo,

    Is there any possible that you can send us your run time calibration code? It would be much easier for us to help you figure out the current consumption and optimize the code. 

    If you are free to send, please send to cash-hao@ti.com. Thanks!

    Best regards,

    Cash Hao

  • Ok !, there is no problem in sharing this. I just sent you by e-mail.

**Attention** This is a public forum