| 123456789101112131415161718192021222324252627282930313233343536 |
- #include "gas_sensor.h"
- #include "bsp/bsp.h"
- static gas_t _gas;
- void gas_sensor_init(void){
- _gas.voltage = 0;
- _gas.lowpass = 5;
- HAL_ADC1_ChanConfig(SPEED_SENSOR_ADC_CHANNEL);
- gas_sample_voltage();
- }
- void gas_sample_voltage(void){
- u32 vadc = 0;
- u32 max = 0, min = 0xFFFFFFF;
- int count = 8;
- for (int i = 0; i < count; i++) {
- u32 one = HAL_ADC1_ReadValue(SPEED_SENSOR_ADC_CHANNEL);
- vadc += one;
- if (min > one) {
- min = one;
- }
- if (max < one) {
- max = one;
- }
- }
- vadc -= (max + min);
- vadc = vadc / (count - 2);
- _gas.voltage = ((float)vadc)/(65536.0f) * ADC_REFERENCE_VOLTAGE;
- }
- float gas_get_value(void){
- return _gas.voltage/ADC_REFERENCE_VOLTAGE;
- }
|