gas_sensor.c 678 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "gas_sensor.h"
  2. #include "bsp/bsp.h"
  3. static gas_t _gas;
  4. void gas_sensor_init(void){
  5. _gas.voltage = 0;
  6. _gas.lowpass = 5;
  7. HAL_ADC1_ChanConfig(SPEED_SENSOR_ADC_CHANNEL);
  8. gas_sample_voltage();
  9. }
  10. void gas_sample_voltage(void){
  11. u32 vadc = 0;
  12. u32 max = 0, min = 0xFFFFFFF;
  13. int count = 8;
  14. for (int i = 0; i < count; i++) {
  15. u32 one = HAL_ADC1_ReadValue(SPEED_SENSOR_ADC_CHANNEL);
  16. vadc += one;
  17. if (min > one) {
  18. min = one;
  19. }
  20. if (max < one) {
  21. max = one;
  22. }
  23. }
  24. vadc -= (max + min);
  25. vadc = vadc / (count - 2);
  26. _gas.voltage = ((float)vadc)/(65536.0f) * ADC_REFERENCE_VOLTAGE;
  27. }
  28. float gas_get_value(void){
  29. return _gas.voltage/ADC_REFERENCE_VOLTAGE;
  30. }