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