Go Down

Topic: Phidgets and Arduino (Read 1 time) previous topic - next topic

mapiram

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 ....




lickey

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);                     
}

mapiram

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); 





mapiram

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

Quote
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

Go Up