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.

[参考译文] EVM430-CAPMINI:用于电容4-20mA 传感器的 Captivate MCU 最佳/良好选件?

Guru**** 657930 points
Other Parts Discussed in Thread: MSP430FR2512, ENERGYTRACE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1068017/evm430-capmini-captivate-mcu-best-good-option-for-capacitive-4-20ma-sensor

部件号:EVM430-CAPMINI
《线程》中讨论的其他部件:MSP430FR2512ENERGY-TRACEMSP-EXP430G2TEST

我想制作一个具有可调整偏移量(高达100pF)的4-20mA 回路供电的微微法电容仪表,其全刻度范围可调至可能高达10pF。 看起来 MSP430FR2512可以在一个芯片中处理其中的大部分。 当我从 Captivate 项目生成 CCS 项目时,按下按钮时 LED 指示灯不会亮起,如果需要,这是正常的。

生成的 CCS 项目是否仅包括对迷人输入的调整,而不包括音频生成和 LED 控制?

增量存储在任意位置还是在 Captivate 应用程序中计算?

(花了一段时间才找到,但这就是我获得类似读数的方式- rawSensor = 1960-PRX00.pCycle [0]-> pElements[0]-> filterCount.ui16 Natural;)

生成项目中的超时或近端探测是否会导致连续电容测量出现问题(按24小时以上的顺序)?

另一种措辞;

如果更新时间设置为50ms,生成的代码是否允许此操作而不会超时或通过阈值?

在 CCS 能量曲线中,我获得了4.1mA 的相当高的平均电流,这是预料中的吗?

以下是传感器设置;

 

//*****************************************************************************
// CAPT_UserConfig.c
//
// \version 1.83.00.05
// Released on May 15, 2020
//
//*****************************************************************************

//*****************************************************************************
//
// NOTE: This is an automatically generated source code file!  The Captivate
// Design Center generates the User Configuration file automatically based
// upon the sensor layout that was created.
//
// Changes to this file will be OVERWRITTEN if a you select
// "Update Existing Project" under "Generate Source Code" in the Design Center.
//
// To avoid interference with the code generation process, keep ALL application
// code external to this file.
//
//*****************************************************************************

#include "CAPT_UserConfig.h"

//*****************************************************************************
//
//! Captivate Element Definitions
//! All elements in this application are defined below.
//! Each element has 3 components:
//!  1) a raw count array (One index per freq. scanned) (uint16_t)
//!  2) a tuning array (One index per freq. scanned) (tCaptivateElementTuning)
//!  3) a element structure (tElement)
//
//*****************************************************************************
// Sensor: PRX00, Element: E00
uint16_t PRX00_E00_RawCnts[CAPT_SELF_FREQ_CNT];
tCaptivateElementTuning PRX00_E00_Tuning[CAPT_SELF_FREQ_CNT];
tElement PRX00_E00 =
{
    .ui8RxPin = 0,
    .ui8RxBlock = 0,
    .ui8TouchThreshold = 60,
    .pRawCount = PRX00_E00_RawCnts,
    .pTuning = PRX00_E00_Tuning,
};


//*****************************************************************************
//
//! Captivate Time Cycle Definitions
//! All time cycles in this application are defined below.  Time cycles are
//! groups of elements that are measured together in parallel in one time slot.
//! Each cycle has 2 components:
//!  1) an element pointer array to the member elements (tElement*)
//!  2) a cycle structure (tCycle)
//
//*****************************************************************************
// Time Cycle: PRX00_C00
tElement* PRX00_C00_Elements[1] =
{
    &PRX00_E00,
};
tCycle PRX00_C00 =
{
    .ui8NrOfElements = 1,
    .pElements = PRX00_C00_Elements,
};


//*****************************************************************************
//
//! Captivate Sensor Definitions
//! All sensors in this application are defined below.  Sensors are
//! groups of time cycles that utilize raw measurement data to create an
//! abstract sensor type, such as a button, slider, wheel, or prox sensor.
//! Each sensor has 3 components:
//!  1) a cycle pointer array to the member time cycles (tCycle*)
//!  2) a sensor-specific parameter structure (tGenericSensorParams)
//!  3) a sensor structure (tSensor)
//
//*****************************************************************************
//Sensor: PRX00
const tCycle* PRX00_Cycles[1] =
{
    &PRX00_C00,
};

tProxSensorParams PRX00_Params =
{
    .pSensor = NULL,
    .ui8NumberOfSensors = 0,
};

tSensor PRX00 =
{
    // Basic Properties
    .TypeOfSensor = eProx,
    .SensingMethod = eSelf,
    .DirectionOfInterest = eDOIDown,
    .pvCallback = NULL,
    .ui8NrOfCycles = 1,
    .pCycle = PRX00_Cycles,
    .pSensorParams = (tGenericSensorParams*)&PRX00_Params,
    // Conversion Control Parameters
    .ui16ConversionCount = 2000,
    .ui16ConversionGain = 100,
    .ui8FreqDiv = 1,
    .ui8ChargeLength = 1,
    .ui8TransferLength = 1,
    .bModEnable = false,
    .ui8BiasControl = 3,
    .bCsDischarge = true,
    .bLpmControl = false,
    .ui8InputSyncControl = 0,
    .bTimerSyncControl = false,
    .bIdleState = true,
    // Tuning  Parameters
    .ui16ProxThreshold = 60,
    .ui16NegativeTouchThreshold = 30,
    .ui16ErrorThreshold = 8191,
    .ui16TimeoutThreshold = 65535,
    .ProxDbThreshold.DbIn = 1,
    .ProxDbThreshold.DbOut = 0,
    .TouchDbThreshold.DbIn = 1,
    .TouchDbThreshold.DbOut = 0,
    .bCountFilterEnable = true,
    .ui8CntBeta = 1,
    .bSensorHalt = false,
    .bPTSensorHalt = true,
    .bPTElementHalt = true,
    .ui8LTABeta = 7,
    .bReCalibrateEnable = true,
};


#if (CAPT_CONDUCTED_NOISE_IMMUNITY_ENABLE==true)
//*****************************************************************************
//
//! \var g_EMCConfig
//! This structure stores the EMC configuration for this application.
//
//*****************************************************************************
const tEMCConfig g_EMCConfig =
{
	// Conversion Style
	.selfModeConversionStyle = CAPT_SELF_MODE_CONVERSION_STYLE,
	.projModeConversionStyle = CAPT_PROJ_MODE_CONVERSION_STYLE,
	
	// Oversampling Style
	.selfModeOversamplingStyle = CAPT_SELF_MODE_OVERSAMPLING_STYLE,
	.projModeOversamplingStyle = CAPT_PROJ_MODE_OVERSAMPLING_STYLE,
	
	// Jitter Filter Enable
	.bJitterFilterEnable = true,
	
	// Noise Thresholds and Calibration Noise Limits
	.ui8NoiseThreshold = CAPT_NOISE_THRESHOLD,
	.ui16CalibrationNoiseLimit = CAPT_CALIBRATION_NOISE_LIMIT,
	.ui8CalibrationTestSampleSize = 8,
		
	// Dynamic Threshold Adjustment Parameters
	.bEnableDynamicThresholdAdjustment = CAPT_DYNAMIC_THRESHOLD_ADJUSTMENT,
	.ui8MaxRelThreshAdj = 76,
	.ui8NoiseLevelFilterEntryThresh = 40,
	.ui8NoiseLevelFilterExitThresh = 0,
	.ui8NoiseLevelFilterDown = 6,
	.ui8NoiseLevelFilterUp = 1,
	.coeffA = _IQ31(0.0065),
	.coeffB = _IQ31(0.050)
};
#endif

//*****************************************************************************
//
//! \var g_pCaptivateSensorArray
//! This array allows for indexed access to any
//! sensor in the configuration.
//
//*****************************************************************************
tSensor* g_pCaptivateSensorArray[CAPT_SENSOR_COUNT] =
{
    &PRX00,
};


//*****************************************************************************
//
//! \var g_uiApp
//! This structure stores the global settings for this application.
//
//*****************************************************************************
tCaptivateApplication g_uiApp =
{
    .state = eUIActive,
	.pSensorList = &g_pCaptivateSensorArray[0],
    .ui8NrOfSensors = CAPT_SENSOR_COUNT,
    .ui8AppLPM = CAPT_LOW_POWER_MODE,
    .bElementDataTxEnable = true,
    .bSensorDataTxEnable = true,
    .ui16ActiveModeScanPeriod = 50,
    .ui16WakeOnProxModeScanPeriod = 50,
    .ui16InactivityTimeout = 303,
    .ui8WakeupInterval = 7,
};


谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rick,

    请记住,Captivate 技术可以测量电容的变化,而不是绝对电容的变化,因此,如果您希望检测到从高达100pF 的基本电容变化10pF,那么您就在正确的轨道上。

    [引用 userid="509778" url="~ë/support/microoptions/MSP-low-Power-microcontroller-group/MSP430/f/MSP-low-Power-microcontroller-forum/1068017/evm430-capmini-captim-mcum-mcMCU -最佳电容选项-4-20mA 传感器]生成的 CCS 是否仅包括控制输入和调节音频输入,但不包括控制音频输入[引用该项目的控制]

    不会。Captivate 设计中心输出项目是一个代码框架,它仅使用您在 GUI 中设置的传感器配置运行电容感应。  任何附加功能,LED,蜂鸣器等都是您需要添加到应用程序中的代码。  您可以从 cap-mini 示例的开箱即用功能中复制/粘贴大部分所需内容。

    [引用 userid="509778" url="~ë/support/microoptions/MSP-low-Power-microcontroller-group/MSP430/f/MSP-low-Power-microcontroller-forum/1068017/evm430-capmini-captim-MCU-bote-bote-option-forcote-4-20mA 传感器],Δ 存储在应用程序中的任意位置或计算在应用程序中[引用]

    增量未存储。  它在每个测量处更新,是元素的 LTA (转换计数的长期平均值)与过滤的转换计数测量之间的差值。  注意,对于自电容差,增量为 LTA -过滤计数;相互为过滤计数- LTA。  您在计算中显示的1960是 LTA,是的,您也可以使用 RAW,但过滤效果更好。  您可以使用传感器结构中的.ui8CntBeta 设置来控制过滤器的级别或重量,也可以在 GUI 中的调优选项卡>计数过滤器 Beta 下进行设置。  如果单击 GUI 调整选项卡中的超链接,将会显示有关所有这些操作的工作方式的说明。

    ~~引用 userid="509778" url="μ S/support/microoptions/MSP-低功耗微控制器-组/MSP430/f/MSP-低功耗微控制器-论坛/1068017/evm430-capmini-captit-mc-最佳电容性好可选件-20mA 电容性微控制器阈值-4m20mA 传感器] MSP 是否会在不支持超时或不支持低功耗的情况下以最低功耗为单位[引用/974]/50*[报价单]

    我不确定您在这里要问什么, 但是,如果您询问传感器长时间处于检测状态(自盖模式下的转换计数<(LTA -阈值))会发生什么情况,则在此期间 LTA 将停止,并且不会跟踪温度的变化。 有一个超时设置将强制系统重新校准传感器,但我不确定您是否要为此应用程序执行此操作。  您能否提供有关应用程序在该模式下如何运行的更多详细信息?

    [引用 userid="509778" url="~ë/support/microoptions/MSP-low-Power-microcontroller-group/MSP430/f/MSP-low-Power-microcontroller-forum/1068017/evm430-capmini-captime-MCU-bote-bote-macity-4-20mA 传感器],CCS 能迹线中的电流是否预计相当高,电流为4.1mA?]

    是的,如果您在测量电流的同时未连接到 GUI, 这太多了。  MCU @8MHz 将消耗~300uA 的100%运行,但当以 默认的33ms 扫描速率测量时,MCU 仅在几毫秒内处于活动状态,然后将剩余的时间用在低功耗模式下,因此可能只消耗100uA 或更少。  如果您看到 mA 电流,您必须打开 LED?

    您表示您正在使用 energyTrace,由于 cap-mini 没有此功能,我假设您正在使用另一个 MSP430 Launchpad。  确保卸下 J2上的任何跳线,并将 EnergyTrace 3.3连接到此处所示的插针。  您不想为板载3.3V LDO 供电,也不想将电流转储到电池中(如果已安装)。  

    现在,关于您的设置或传感器配置(Capt_UserConfig.c),我可以立即看到,您在使用.ui16ConversionCount =2000时会遇到一些问题。  在不深入了解一切工作原理的螺母和螺栓的情况下,.ui16ConversionCount (目标转换计数)设置测量的灵敏度。  经验法则是尝试使用高达1000的值获得所需的灵敏度,否则系统对系统和环境噪音太敏感,导致错误检测。  现在有一种方法可以通过将触摸阈值提高到噪声边界以上来帮助缓解某些影响。  请参阅MSP430 Captivate 灵敏度,SNR 和设计边界调整指南。 但是,提高阈值意味着您的传感器现在不那么敏感,这就违背了提高灵敏度的目的。 因此,如果您需要使用1500或以上范围内的目标转换计数值,那么您需要更改传感器设计或机械方面的内容。  增加传感器的尺寸或消除传感器上的寄生电容(接地线,接地线,其他附近导电物体)。

    有关此应用程序的任何其他信息都有助于准确了解您希望如何使用此技术。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Dennis

    感谢您澄清这些问题。  

    我制作了一个迷人的 CCS 项目。 我在 Capmini 开发板上调试了基本 CCS 项目。 这就是为什么我要询问 LED 和音频发生器的原因,您通过确认项目的感应部分仅转换为 CCS 项目来回答。 我使用 MSP-EXP430G2作为编程器/调试接口,连接到 CapMini 主板上的 RST/TST/3.3V/GND 引脚。 我使用此连接在 CapMini 上对 MSP430G2512进行编程和测试。

    终端应用是电容发射器,而不是 prox 或按钮。 因此,它将持续感应,无中断地进行 LTA 校准。

    关于4mA 负载, 当我卸下 CapMini 开发板上的 RX/TX 跳线时,它下降到560uA (平均值),因此现在一切都很好。

    我想将电场投射到感应垫之外的产品中,电极垫旁边和下面的交叉阴影接地似乎在 CapMini 上效果良好。 这似乎不会影响 我的手靠近被检测到的产品。

    如果电路主要在70°C 下工作,但如果由于持续测量电容而导致 LTA 停止工作,则会导致0°C 以下的情况,您认为会产生很多错误吗?