ASDX Series Pressure Transducer
jbirdman
Posts: 9
I have a Honeywell ASDXRR001PD2A5 (quite the mouthful for just a cheap little pressure transducer) that I'm trying to get to talk to my propeller. Problem is, I can't seem to read data from it. I can't find any reference to internal registers in it's documentation (http://sensing.honeywell.com/index.cfm/ci_id/155937/la_id/1/document/1/re_id/0) so I was trying the method suggested here (http://forums.parallax.com/showthread.php?106998-How-to-use-I2C-without-a-register-address-and-read-sequential-FIFO) combined with what few random thoughts I had after reading about the i2c protocol (basically it turned out to be trial and error). In the end, here's what I've ended up with (I'm using the Basic_I2C_Driver):
I get a %0 acknowledging the first write to the device address, and then %0 when attempting to read the data on it. I've been fighting this thing for a few days now and I'm pretty much at my wits end (though admittedly I'm still in a nearly vertical part of the microcontroller learning curve) so any help would be appreciated.
Thanks,
~Bird
i2c.Initialize(23) repeat 1 waitcnt(cnt+clkfreq) i2c.Start(23) Debug.str(string(10,"--------")) temp := i2c.Write(23,$51) Debug.str(string(10)) Debug.bin(temp,8) repeat 5 waitcnt(cnt+clkfreq) pressure := i2c.Read(23,1) Debug.str(string(10)) Debug.bin(pressure,8) pressure := i2c.Read(23,0) Debug.str(string(10)) Debug.bin(pressure,8) 'Debug.dec(counter) i2c.Stop(23)
I get a %0 acknowledging the first write to the device address, and then %0 when attempting to read the data on it. I've been fighting this thing for a few days now and I'm pretty much at my wits end (though admittedly I'm still in a nearly vertical part of the microcontroller learning curve) so any help would be appreciated.
Thanks,
~Bird
Comments
[Edit] After doing a bit of research (I have a need for a pressure sensor so this interests me) I found that the exchange is not standard, that is, it doesn't work quite the same as other devices. Other programmers suggest this is the exchange (edited for Honeywell 7-bit addresses).
Putting it into a method (as above) allows you to isolate that code from your application, as well as adjust the value returned for the scale of the component you're using.
Note: I have my own I2C routines that are very simple (clean); I've attached in case you want to give them a try.
Where 24 is SCL, 23 is SDA, and get_pressure looks like this:
Any ideas what I could be doing wrong? I'm pretty sure I've got the thing wired right, I'm 99+% sure the pins are right and I have 10Kohm resistors between 5V and both SCL and SDA.
Honeywell's i2c explanation attached.I2C Application Note 7-20-09[1].pdf
Where can I get one of these sensors? I'm interested.
I too am interested in these devices. I used the honewyell site inventory search to find this:
http://www.newark.com/honeywell-s-c/asdxrrx030pdaa5/silicon-pressure-sensor/dp/34R2769?CMP=AFC-HEARST
$30 each for the +/- 30psi differential I2C version.
p
Page 5 of the datasheet shows that it is looking for a 4.5V logic high, so we had to put a very hard pullup on the I2C lines.
How hard of a pull-up did y'all have to use? After rereading the specsheet I noticed that they recommend 1k pull-ups so now I have 1k pull-ups going to my 5V source...still just an ack is all I get from it....maybe I let the magic smoke out when I was fiddling with it or something.
Anyway I got mine at mouser, looks like it'd be a nice little sensor if I could ever get it talking to me...I think it has been superseded now by the ASDX-DO though.
~Bird
ASDX.spin
I'm not experienced enough with the propeller/microcontrollers in general to know exactly what you are asking. The clock rate I was running the propeller at was the full 80MHz if that answers your question.