From dd9050e0aabb47622167174697861ab9cce4cd57 Mon Sep 17 00:00:00 2001 From: Noel Eck Date: Wed, 28 Sep 2016 11:47:16 -0700 Subject: [PATCH] dfrph: Updated to use mraa read_float Use mraa's normalized adc read. Updated names of struct members accordingly. Signed-off-by: Noel Eck --- src/dfrph/dfrph.c | 29 ++++++++++++----------------- src/dfrph/dfrph.h | 4 ++-- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/dfrph/dfrph.c b/src/dfrph/dfrph.c index 21735bcd..1cde8ce1 100644 --- a/src/dfrph/dfrph.c +++ b/src/dfrph/dfrph.c @@ -39,8 +39,8 @@ dfrph_context dfrph_init(int16_t pin) /* Set the ref, offset, and scale */ dev->m_aref = 5.0; - dev->m_count_offset = 0.0; - dev->m_count_scale = 1.0; + dev->m_offset = 0.0; + dev->m_scale = 1.0; if(dev->aio == NULL) { free(dev); @@ -69,13 +69,13 @@ float dfrph_get_aref(const dfrph_context dev) upm_result_t dfrph_set_offset(const dfrph_context dev, float offset) { - dev->m_count_offset = offset; + dev->m_offset = offset; return UPM_SUCCESS; } upm_result_t dfrph_set_scale(const dfrph_context dev, float scale) { - dev->m_count_scale = scale; + dev->m_scale = scale; return UPM_SUCCESS; } @@ -92,23 +92,18 @@ upm_result_t dfrph_get_raw_volts(const dfrph_context dev, float *volts) upm_result_t dfrph_get_ph(const dfrph_context dev, float *value) { - /* Read counts */ - int counts = mraa_aio_read(dev->aio); + /* Read normalized */ + *value = mraa_aio_read_float(dev->aio); + if (*value < 0.0) return UPM_ERROR_OPERATION_FAILED; - /* Get max adc value range 1023, 2047, 4095, etc... */ - float max_adc = (1 << mraa_aio_get_bit(dev->aio)) - 1; - - /* Apply raw scale */ - *value = counts * dev->m_count_scale; - - /* Apply raw offset */ - *value += dev->m_count_offset * dev->m_count_scale; - - /* Normalize the value */ - *value /= max_adc; + /* Apply scale */ + *value *= dev->m_scale; /* Vmax for sensor is 0.8 * Vref, so scale by 1/0.8 = 1.25 */ *value *= 1.25 * 14; /* Convert to pH */ + /* Apply offset in pH */ + *value += dev->m_offset; + return UPM_SUCCESS; } diff --git a/src/dfrph/dfrph.h b/src/dfrph/dfrph.h index 5829a8d8..30aea712 100644 --- a/src/dfrph/dfrph.h +++ b/src/dfrph/dfrph.h @@ -48,9 +48,9 @@ typedef struct _dfrph_context { /* ADC reference */ float m_aref; /* Raw count offset */ - float m_count_offset; + float m_offset; /* Raw count scale */ - float m_count_scale; + float m_scale; } *dfrph_context; /**