Example #1
0
        /// <summary>
        /// Uses the temperature lookup table to convert a resistance into
        /// a thermistor temperature
        /// </summary>
        /// <param name="r">The measured resistance</param>
        /// <param name="type">The type of thermistor</param>
        /// <returns>The temperature of the thermistor</returns>
        public static double ConvertRToT(double r, ThermistorType type)
        {
            switch (type)
            {
            case (ThermistorType.Warner):
                if (r < R0_Warner)
                {
                    r = R0_Warner;
                }
                if (r > RMax_Warner)
                {
                    r = RMax_Warner;
                }
                return(T_Warner[(int)r - R0_Warner]);

            default:
                if (r < R0_Omega)
                {
                    r = R0_Omega;
                }
                if (r > RMax_Omega)
                {
                    r = RMax_Omega;
                }
                return(T_Omega[(int)r - R0_Omega]);
            }
        }
Example #2
0
 /// <summary>
 /// Constructs a new thermistor
 /// </summary>
 /// <param name="daq">The daq-board for reading the thermistor</param>
 /// <param name="channelName">The ai channel readint the thermistor bridge</param>
 /// <param name="type">The type of the thermistor</param>
 public Thermistor(PCIe6323 daq, string channelName, ThermistorType type)
 {
     if (ViewModelBase.IsInDesignMode)
     {
         Temperature = 12.3456789;
         return;
     }
     _type = type;
     if (channelName.ToLower() == "ai0")
     {
         daq.AI.AI0.MinValue = -5;
         daq.AI.AI0.MaxValue = 5;
         daq.AI.AI0.Callback = (sampleIndex, samples) => {
             int    length = samples.Length;
             double sum    = 0;
             for (int i = 0; i < length; i++)
             {
                 sum += samples[i];
             }
             Temperature = ConvertRToT(ConvertVToR(sum / length), _type);
         };
     }
     if (channelName.ToLower() == "ai1")
     {
         daq.AI.AI1.MinValue = -5;
         daq.AI.AI1.MaxValue = 5;
         daq.AI.AI1.Callback = (sampleIndex, samples) => {
             int    length = samples.Length;
             double sum    = 0;
             for (int i = 0; i < length; i++)
             {
                 sum += samples[i];
             }
             Temperature = ConvertRToT(ConvertVToR(sum / length), _type);
         };
     }
     if (channelName.ToLower() == "ai2")
     {
         daq.AI.AI2.MinValue = -5;
         daq.AI.AI2.MaxValue = 5;
         daq.AI.AI2.Callback = (sampleIndex, samples) => {
             int    length = samples.Length;
             double sum    = 0;
             for (int i = 0; i < length; i++)
             {
                 sum += samples[i];
             }
             Temperature = ConvertRToT(ConvertVToR(sum / length), _type);
         };
     }
     if (channelName.ToLower() == "ai3")
     {
         daq.AI.AI3.MinValue = -5;
         daq.AI.AI3.MaxValue = 5;
         daq.AI.AI3.Callback = (sampleIndex, samples) => {
             int    length = samples.Length;
             double sum    = 0;
             for (int i = 0; i < length; i++)
             {
                 sum += samples[i];
             }
             Temperature = ConvertRToT(ConvertVToR(sum / length), _type);
         };
     }
 }