/******************************************************************************** * * Embedded Studio (C) 2008 * * File: ES_RvdtDrv.h * Desc: Rotary Variable Differential Transformer (RVDT) Driver Functions * **********************************************************************************/ #ifndef __ES_RVDTDRV_H__ #define __ES_RVDTDRV_H__ /**************************************************************************** Constant definitions. They are application dependent. ****************************************************************************/ #define RVDT_POS_GAIN 1.25 // Position Gain (in / ratio) #define RVDT_POS_OFFSET 5.0 // Position Offset (in) #define RVDT_POS_LIMIT_HI 10.0 // Position limit high #define RVDT_POS_LIMIT_LO -0.5 // Position limit low #define RVDT_POS_MID_STROKE 5.0 // middle stroke #define RVDT_FAULT_ON_COUNT_MAX 3 // fault on persistence 3 times #define RVDT_FAULT_OFF_COUNT_MAX 30 // fault off persistence 30 times #define RVDT_SUM_LIMIT_HI 5.5 // Vsum + 0.5 #define RVDT_SUM_LIMIT_LO 4.5 // Vsum - 0.5 /**************************************************************************** data structures ****************************************************************************/ //RVDT data structure typedef struct tRvdtDataStruct { float Va; //secondary voltage Va float Vb; //secondary voltage Vb float Vsum; //sum of Va and Vb float Vdiff; //diff of Va and Vb float Position; //current position float PosPrev; //previous position } RvdtDataStruct; //RVDT status data structure typedef struct tRvdtStatusStruct { union { struct { unsigned int rsvd :29; unsigned int HiLimitFault :1; //position high limit fault unsigned int LoLimitFault :1; //position low limit fault unsigned int SumFault :1; //Vsum fault }Bits; unsigned int All; }Status; //status bits unsigned int SumFaultOnCounter; //counter for sum fault on unsigned int SumFaultOffCounter; //counter for sum fault off unsigned int HiLimitFaultOnCounter; //counter for high limit fault on unsigned int HiLimitFaultOffCounter; //counter for high limit fault off unsigned int LoLimitFaultOnCounter; //counter for low limit fault on unsigned int LoLimitFaultOffCounter; //counter for low limit fault off } RvdtStatusStruct; /**************************************************************************** public functions ****************************************************************************/ bool RVDT_Init(void); void RVDT_GetData(void); float RVDT_GetPosition(void); bool RVDT_IsDataValid(void); #endif /**************************************************************************** End of File ****************************************************************************/