upm  1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
Data Structures | Functions | Typedefs
Include dependency graph for otp538u.h:

API Description

/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <upm_utilities.h>
#include <otp538u.h>
bool shouldRun = true;
// analog voltage, usually 3.3 or 5.0
#define OTP538U_AREF 5.0
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main()
{
signal(SIGINT, sig_handler);
// Instantiate a OTP538U on analog pins A0 and A1
// A0 is used for the Ambient Temperature and A1 is used for the
// Object temperature.
otp538u_context temps = otp538u_init(0, 1, OTP538U_AREF);
// enable debugging if you would like
// otp538u_set_debug(temps, true);
// Output ambient and object temperatures
while (shouldRun)
{
float ambient = 0, object = 0;
if (otp538u_get_ambient_temperature(temps, &ambient))
printf("otp538u_get_ambient_temperature() failed\n");
else if (otp538u_get_object_temperature(temps, &object))
printf("otp538u_get_object_temperature() failed\n");
else
printf("Ambient temp: %f C, Object temp: %f C\n",
ambient, object);
printf("\n");
upm_delay(1);
}
printf("Exiting\n");
otp538u_close(temps);
return 0;
}

Go to the source code of this file.

Data Structures

struct  _otp538u_context
 

Functions

otp538u_context otp538u_init (int pinA, int pinO, float aref)
 
void otp538u_close (otp538u_context dev)
 
upm_result_t otp538u_get_ambient_temperature (const otp538u_context dev, float *temperature)
 
upm_result_t otp538u_get_object_temperature (const otp538u_context dev, float *temperature)
 
void otp538u_set_voltage_offset (const otp538u_context dev, float offset)
 
void otp538u_set_output_resistence (const otp538u_context dev, int resistance)
 
void otp538u_set_ivref (const otp538u_context dev, float vref)
 
void otp538u_set_debug (const otp538u_context dev, bool enable)
 

Typedefs

typedef struct _otp538u_contextotp538u_context
 

Function Documentation

otp538u_context otp538u_init ( int  pinA,
int  pinO,
float  aref 
)

OTP538U constructor

Parameters
pinAAnalog pin to use for the ambient temperature
pinOAnalog pin to use for the object temperature
arefAnalog reference voltage
Returns
intialized context, or NULL if error

Here is the call graph for this function:

void otp538u_close ( otp538u_context  dev)

OTP538U destructor

Parameters
devDevice context

Here is the caller graph for this function:

upm_result_t otp538u_get_ambient_temperature ( const otp538u_context  dev,
float *  temperature 
)

Gets the ambient temperature in Celsius

Parameters
devDevice context
tempAmbient temperature
Returns
UPM status

Here is the caller graph for this function:

upm_result_t otp538u_get_object_temperature ( const otp538u_context  dev,
float *  temperature 
)

Gets the object temperature in Celsius

Parameters
devDevice context
tempObject temperature
Returns
UPM status

Here is the call graph for this function:

Here is the caller graph for this function:

void otp538u_set_voltage_offset ( const otp538u_context  dev,
float  offset 
)

Sets the offset voltage

The Seeed Studio wiki gives an example of calibrating the sensor and calculating the offset voltage to apply. Currently, the default value is set, but you can use the function to set one of your own.

Parameters
devDevice context
vOffsetDesired offset voltage

Here is the caller graph for this function:

void otp538u_set_output_resistence ( const otp538u_context  dev,
int  resistance 
)

Sets the output resistance value

The Seeed Studio wiki example uses a value of 2,000,000 in one of the equations used to calculate voltage. The value is the resistance of a resistor they use in the output stage of their SIG2 output. This was 'decoded' by looking at the EAGLE* files containing their schematics for this device.

Parameters
devDevice context
outResistanceValue of the output resistor; default is 2M Ohm

Here is the caller graph for this function:

void otp538u_set_ivref ( const otp538u_context  dev,
float  vref 
)

Sets the reference voltage of the internal Seeed Studio voltage regulator on the sensor board.

The Seeed Studio wiki example uses a value of 2.5 in one of the equations used to calculate the resistance of the ambient thermistor. The value is the voltage of an internal voltage regulator used on the sensor board. This was 'decoded' by looking at the EAGLE files containing their schematics for this device.

Parameters
devDevice context
vrefReference voltage of the internal sensor; default is 2.5

Here is the caller graph for this function:

void otp538u_set_debug ( const otp538u_context  dev,
bool  enable 
)

Enable debugging output (linux platforms only).

Parameters
devDevice context
enabletrue to enable some debug output, false otherwise

Here is the caller graph for this function:

Typedef Documentation

device context