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.
Hi all,
I am using the LC Sensor Rotation Detection with MSP430, but the sensitivity when detect metal disk very low, the delta voltage between no metal disk and metal disk is 160mV.
i using L =235uH (GT1128-0, GEMPHIL) and C=470pF.
How to increase sensitivity of LC sensor ?
Thanks,
Hi Loc,
Have you seen https://www.ti.com/lit/slaa639?
Are you measuring that 160mV at the peak of the difference between the two signals?
My understanding of electromagnetic damping is pretty rusty, but the induced current in the metal disk is what is actually responsible for the damping effect on the oscillation signal. I would expect that bringing the metal disk and LC sensor closer together would increase the magnitude of damping. Using a higher conductance material for the metal disk may help as well.
Best Regards,
Brandon Fisher
Dear Brandon,
Thank
Hi Loc,
Are you measuring that 160mV at the peak of the difference between the two signals? => Yes. Can you share the peak of the diffenrence between the two sensor of EVM430-FR6989.
I'm currently checking to see if we have one of these on hand, may have to order it otherwise to get a measurement.
Best Regards,
Brandon Fisher
Hi Brandon,
I am checking the EVM430-FR6989 form supplier. I started my project without use any Evaluation board. I think i miss more information.
I am getting the big issue, when the water meter run long time, sometime the counter miss a few dozen to a few hundred pulse.
Thanks,
Loc,
Hi Loc,
I've requested a board be sent to me, but it may be a few days.
I am getting the big issue, when the water meter run long time, sometime the counter miss a few dozen to a few hundred pulse.
Are you entering any low power modes in your code? Is this custom software?
It sounds a bit like it might be an overflow issue.
Best Regards,
Brandon Fisher
Hi Brandon,
Ok, i will send to you schematic and PCB layout.
Are you entering any low power modes in your code? => Yes
Is this custom software? => Yes, this is customer software.
Please check link (pcb layout, schematic, metal disk, PCB).
Link: https://drive.google.com/file/d/1cRKrXxMYnjKaEvgf725NB359FCmSK9Ks/view?usp=sharing
Thanks,
Loc,
Hi Brandon,
The material of metal disk look like stainless steel (Weak interaction with magnets).
Thanks,
Loc,
Hi Brandon,
It sounds a bit like it might be an overflow issue.
=> I reset counter every 4 counts.
//////////////////////////code
Rotation_Cnt = ESI_getCounter1();
if((Rotation_Cnt > 3)||(Rotation_Cnt < -3))
{
ESI_PSM_resetCounter(ESICNT2RST|ESICNT1RST|ESICNT0RST);
Rotation_Cnt += Surplus_Rotation_Cnt;
Integer_Rotation_Cnt = Rotation_Cnt/4;
Surplus_Rotation_Cnt = Rotation_Cnt%4;
///
FlowVolume += Integer_Rotation_Cnt;
}
Thanks
Loc,
Thanks for sharing your files Loc, I will take a look at them.
=> I reset counter every 4 counts.
//////////////////////////code
Rotation_Cnt = ESI_getCounter1();
if((Rotation_Cnt > 3)||(Rotation_Cnt < -3))
{
ESI_PSM_resetCounter(ESICNT2RST|ESICNT1RST|ESICNT0RST);Rotation_Cnt += Surplus_Rotation_Cnt;
Integer_Rotation_Cnt = Rotation_Cnt/4;
Surplus_Rotation_Cnt = Rotation_Cnt%4;
///
FlowVolume += Integer_Rotation_Cnt;}
This seems like it should workin terms of keeping Rotation_Cnt bounded, what are the size of Integer_Rotation_Cnt, Surplus Rotation_Cnt, and FlowVolume?
Best Regards,
Brandon Fisher
Hi Brandon,
what are the size of Integer_Rotation_Cnt, Surplus Rotation_Cnt, and FlowVolume?
=>
short Rotation_Cnt
long Integer_Rotation_Cnt
long Surplus_Rotation_Cnt
long FlowVolume
Best Regards,
Thanks,
Loc,
Hi Brandon,
May I check if there is any update on this?
Thanks.
Best Regards,
Ernest.
Ernest, Loc,
Are you running a recalibration routine at any point in your program? If so how often? How long does it take for these failures to start occurring?
Based on what you shared so far I don't see any obvious reason for an overflow or software condition to create missed cycles, but these systems do require regular recalibration due to drift.
Best Regards,
Brandon Fisher
Hi Brandon,
Are you running a recalibration routine at any point in your program? If so how often?
=>The Recalib_ESI function was set every 10 minutes.
How long does it take for these failures to start occurring?
=> It is random. a few days or a few hours.
Based on what you shared so far I don't see any obvious reason for an overflow or software condition to create missed cycles, but these systems do require regular recalibration due to drift.
=> I don't think the reason is overflow. I checked the volume of water meter, when it is false (the counter value don't increase)., there isn’t any interrupt event. The counter will be working normally after it was missing a few dozen to a few hundred liters.
=> Do you think the reason is small the peak of the difference between the two signals ?
Hi Loc,
What is your sample rate? If the maximum number of rotations is exceeding the upper limit set by your sample rate it is possible that you could miss some counts. Does your flow rate vary in this setup or is it constant?
=> I don't think the reason is overflow. I checked the volume of water meter, when it is false (the counter value don't increase)., there isn’t any interrupt event. The counter will be working normally after it was missing a few dozen to a few hundred liters.
Just to clarify, are you saying you were able to watch the counts value and for interrupts during one of the failure events? That would indicate to me that something could be wrong in signal level or configuration.
=> Do you think the reason is small the peak of the difference between the two signals ?
It is possible, but 160mV is enough that I would expect it could be distinguished if the DAC levels are set correctly. Your peak-to-peak differences could vary while the system runs though.
Best Regards,
Brandon Fisher
Hi Brandon,
What is your sample rate? If the maximum number of rotations is exceeding the upper limit set by your sample rate it is possible that you could miss some counts. Does your flow rate vary in this setup or is it constant?
=> The same rate is 72, it is constant. The maximum number of rotations is 2000 cycles/hours (2 m3/h) => 0.55 cycles/second (0.55 liter /s)
Just to clarify, are you saying you were able to watch the counts value and for interrupts during one of the failure events? That would indicate to me that something could be wrong in signal level or configuration.
=> Yes, i can read counter value and interrupt status by NFC reader. when i checked the counter value don't change but the water meter is running (metal disk is running), i can check there isn’t any interrupt event by NFC reader. I will send to you my configuration (please check link: ESI_configuration.c).
Your peak-to-peak differences could vary while the system runs though.
=> if you said "Your peak-to-peak differences could vary while the system runs though", why the counter can work well again after it was missing a few dozen to a few hundred liters.
Thanks,
Best Regards,
Loc,
Hi Loc,
Thanks for sharing your code.
Is there a reason you are not using the ESI_TSM_copyTable functions or ESI_TSM/PSM_copyTable functions? Were you having issues when using these?
Did you use the FlowESI GUI to generate the TSM/PSM tables?
Hi Brandon,
Is there a reason you are not using the ESI_TSM_copyTable functions or ESI_TSM/PSM_copyTable functions? Were you having issues when using these?
=> I used the PSMtable and TSMtable from TIDM-LC-WATERMTR V1, i am not using ESI_TSM_copyTable because i want to write direct to register
Did you use the FlowESI GUI to generate the TSM/PSM tables?
=> Yes, but i don't use TSM_table from FLowESI GUI generate. Do you think i need try with TSM_table from FLowESI GUI ?
////TMStable FLowESI generate
uint16_t gTSMTable[] = {
0x0400, // DAC=off, CA=off, 1xACLK
0x202C + CHANNEL_0_SELECTION, // DAC=off, CA=off, 5xESICLK, excitation
0x0404 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xACLK
0x0024 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0xF134 + CHANNEL_0_SELECTION, // DAC=on, CA=on, 31xESIFCLK,
0x5974 + CHANNEL_0_SELECTION, // DAC=on, CA=on, OUTPUT LATCHES ENABLED, 12xESICLK
0X0401 + CHANNEL_0_SELECTION, // DAC=off, CA=off, 1xACLCK, Internally damped
0x202C + CHANNEL_1_SELECTION, // DAC=off, CA=off, 5xESICLK, excitation
0x0404 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xACLK
0x0024 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0x0024 + CHANNEL_1_SELECTION, // DAC=off, CA=off, 1xESIFCLK , delay tunable
0xF134 + CHANNEL_1_SELECTION, // DAC=on, CA=on, 31xESIFCLK,
0x5974 + CHANNEL_1_SELECTION, // DAC=on, CA=on, OUTPUT LATCHES ENABLED, 12xESICLK
0x0200, // stop
};
//////////////////////TMStable from TIDM-LC-WATERMTR V1
//ESI_TSM_copyTable(gTSMTable, sizeof(gTSMTable));
ESITSM0 = 0X0400; // DAC=off, CA=off, 1xACLK for ACLK sync
ESITSM1 = 0x202C; // DAC=off, CA=off, 5xESICLK, excitation CH.0
ESITSM2 = 0x0404; // DAC=off, CA=off, 1xACLK CH.0
ESITSM3 = 0x0024; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.0
ESITSM4 = 0x0024; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.0
ESITSM5 = 0x0024; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.0
ESITSM6 = 0x0024; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.0
ESITSM7 = 0x0024; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.0
ESITSM8 = 0xF134; // DAC=on, CA=on, 31xESIFCLK, CH.0
ESITSM9 = 0x5974; // DAC=on, CA=on, OUTPUT LATCHES ENABLED, 12xESICLK CH.0
ESITSM10 = 0X0401; // DAC=off, CA=off, 1xACLCK, Internally damped CH.0
ESITSM11 = 0x20AD; // DAC=off, CA=off, 5xESICLK, excitation CH.1
ESITSM12 = 0x0485; // DAC=off, CA=off, 1xACLK CH.1
ESITSM13 = 0x00A5; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.1
ESITSM14 = 0x00A5; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.1
ESITSM15 = 0x00A5; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.1
ESITSM16 = 0x00A5; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.1
ESITSM17 = 0x00A5; // DAC=off, CA=off, 1xESIFCLK , delay tunable CH.1
ESITSM18 = 0xF1B5; // DAC=on, CA=on, 31xESIFCLK CH.1
ESITSM19 = 0x59F5; // DAC=on, CA=on, OUTPUT LATCHES ENABLED, 12xESICLK CH.1
ESITSM20 = 0x0200; // stop
Thanks,
Best regard,
Loc,
Hi Loc,
=> Yes, but i don't use TSM_table from FLowESI GUI generate. Do you think i need try with TSM_table from FLowESI GUI ?
Yes I would try this if you haven't already.
Out of curiosity, is this a single setup with this issue or have you seen this on multiple boards?
Is it possible to move the disk closer for a temporary test? It seems like we've checked most of the other potential items here. I know your housing uses a fixed distance but if you could figure out a way around that, it would tell you for certain if your amplitude is really the issue.
Best Regards,
Brandon Fisher
Hi Brandon,
I am trying with TSM_table from FLowESI GUI generate.
is this a single setup with this issue or have you seen this on multiple boards?
=> I already tested more than 100 devices.
I will try to move the disk closer for a temporary test ( i will check how to do it).
Thanks,
Best Regards,
Loc,
**Attention** This is a public forum