9 #if defined ARDUINO_ARCH_AVR 11 ADCSRA |= Mc_DEFAULT_AVR_ADC_PRESCALER;
13 analogReadResolution(12);
60 campioni=(campioni>>1);
80 unsigned int misureoversample=pow(4,Mc_ADC_bit_extension);
81 for(
unsigned char z=0;z<misureoversample;z++) val+=analogRead(pin);
83 return(val>>Mc_ADC_bit_extension);
93 kalman_state
kalman_init(
double q,
double r,
double p,
double intial_value)
99 result
.value = intial_value;
117 else state
->k = state
->p / 0.00001;
136 unsigned long LocalTime=0;
143 double timelen=(
double)num*1/Mc_voltage_freq*1000*1000;
152 while(micros()-LocalTime<timelen)
155 value=(Mc_SampleAnalogAvg(pin,1));
157 kalman_update(&KK,value);
158 if(value<Local.min) Local.min=value;
159 if(value>Local.max) Local.max=value;
160 Local.mean=(Local.mean+value)/2;
163 sum_radice+=(value*value);
167 Local.rms=sqrt(sum_radice/Local.counter);
void Mc_Analog_Inist()
Inizialize McMajanLibrary analogic section.
float Mc_SampleAnalogAvg(int, uint16_t)
This function sample an analogic input and return the averange value.
void Mc_CalculateSensorStep(struct Mc_AnalogSensor *)
Calcolate internal parameters to give you values in original units as Ampere, Volt, etc and not only a raw value.
#define Mc_ArduinoVoltageRange
void kalman_update(kalman_state *, double)
This function updates a Kalman filter.
#define Mc_High_ADC_Value
kalman_state kalman_init(double, double, double, double)
This function initialize a Kalman filter.
double Mc_OversampledAnalogRead(int)
This function sample an analogic input using oversample algorithm.
void Mc_SetSensorStep(struct Mc_AnalogSensor *, float)
This function is useful if you need to do a "manual calibration" of the sensor.
#define Mc_ADC_extended_bits
float Mc_KalmanAnalogAvg(int, uint16_t)
This function return the kalman filtered value of samples on an analogic pin. Note: the voltage of in...