Pages: [1]   Go Down
Author Topic: Phidgets and Arduino  (Read 945 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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



Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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




Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks to the lickey post, I rechecked my old post and there is an error   smiley-cry

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: