Phidgets and Arduino

Hi all,
I spent some hours hacking to connect analogic Phidgets sensors to Arduino, and maybe this could save the time of somebody.

Wire connections are quite simple. From phidget to arduino, they are:

  • black wire --> Grd
  • red wire --> 5 V
  • white wire --> an Analogic In

The read values must be a little adjusted. Phidgets outputs values between 0 - 999 while Arduino reads values between 0 - 1023. So

adjusted value = read value * 1.024

Usually such a correction is not important, a part of you are using a precision temperature sensor ...
On the version 1114 (from -40C to +125C), the formula to translate sensor value in temperature is:

T (Celsius) = (value * 1.024 / 4.0) - 50.0

On the version 1124 (from -50C to +150C), the formula is:

T = (value * 0.21699) - 61.111 [Thanks to http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1288003709 for the formula]

Enjoy hacking!
Or on the other hand, let me to know if I do some formula mistakes ....

Hmmmm

Thanks for the advice, I'm not sure if I changed the code in the right places. Now it's all zeros in the serial viewer!

I'm using the Phidgets 1129 sensor and the AnalogInOutSerial example code:

/*
Analog input, analog output, serial output

Reads an analog input pin, maps the result to a range from 0 to 255
and uses the result to set the pulsewidth modulation (PWM) of an output pin.
Also prints the results to the serial monitor.

The circuit:

  • potentiometer connected to analog pin 0.
    Center pin of the potentiometer goes to the analog pin.
    side pins of the potentiometer go to +5V and ground
  • LED connected from digital pin 9 to ground

created 29 Dec. 2008
by Tom Igoe

*/

// These constants won't change. They're used to give names
// to the pins used:
const int analogInPin = 0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 1.024; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 999, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);

// print the results to the serial monitor:
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);

// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(10);
}

Hi lickey,
sorry for the long silence.

It's the first time I'm reading AnalogInOutSerial ... so the response is based only on the code you posted.

int sensorValue = 1.024; is non important, you reset in the beginning of loop() with sensorValue = analogRead(analogInPin);

And Arduino is reading. So it reads values 0 - 1023 and you would map to 0 - 255: map(sensorValue, 0, 999, 0, 255);

Thanks to the lickey post, I rechecked my old post and there is an error =(

If you are using a precision temperature sensor version 1114 (from -40C to +125C), the formula to translate sensor value in temperature is:

T (Celsius) = (value * 0.977 / 4.0) - 50.0

In fact:

PhidgetValue = ArduinoValue * 0.977

ArduinoValue = PhidgetValue * 1.024

Hi guys,

i recently bought the same sensor and I have some problems...

i connected as you indicated

  • black wire --> Grd
  • red wire --> 5 V
  • white wire --> an Analogic In to A0

and I use your code but from the serial I receive always only this

sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 810 output = 206
sensor = 810 output = 206
sensor = 808 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 808 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 809 output = 206
sensor = 810 output = 206
sensor = 809 output = 206
sensor = 808 output = 206