Shop OBEX P1 Docs P2 Docs Learn Events
TPA81 troubles — Parallax Forums

TPA81 troubles

legoman132legoman132 Posts: 87
edited 2010-03-20 00:58 in Accessories
I am having trouble with a TPA81 and my BS2p. The TPA81 is a sensor that can read ambient temperature and 8 pixels of infrared non-contact temperature. Communication is done through an I2C interface. The BS2p can read registers 0 and 1 of the TPA81 (firmware revision and ambient temperature). However, registers 2 through 9 (the infrared temperature pixels of the sensor) read as 0.
Code:

' {$STAMP BS2p}
' {$PBASIC 2.5}

temp VAR Byte
cnt VAR Byte

'DEBUG "hello" , CR
I2COUT 0, $D0, 1, [noparse][[/noparse]80]
DO
cnt = cnt + 1 'increment cnt
DEBUG HOME, DEC cnt, CR
I2CIN 0, $D0, 0, [noparse][[/noparse]temp] 'read register 0
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 1, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 2, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 3, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 4, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 5, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 6, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 7, [noparse][[/noparse]temp]
PAUSE 125
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 8, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2CIN 0, $D0, 9, [noparse][[/noparse]temp]
DEBUG DEC temp, CR
PAUSE 125
I2COUT 0, $D0, 0, [noparse][[/noparse]cnt]
LOOP




This code reads all nine registers and writes to the first, which sets the position of a servo connected to the TPA81's servo port (meant for a panning head). You cannot read the position of the servo back.
Instruction manual:
www.robot-electronics.co.uk/htm/tpa81tech.htm
sample code:
www.robot-electronics.co.uk/acatalog/tpa81bs2p.htm

I tried using 4 1K resistors (the closest i had to 2 1.8k, in groups of 2 in series, recommended in TPA81 manual) and 2 4.7K resistors (as recommended in help files in PBASIC editor) to the +5v on my boe with servo power off and good batteries for pull up resistors.

Post Edited (legoman132) : 3/20/2010 1:01:01 AM GMT

Comments

  • Larry~Larry~ Posts: 242
    edited 2010-03-19 23:24
    I have never used this chip, but have questions

    1 how does the chip know what regester you are trying to read ?
    2 you don't need to write to a location first asking for info from a register?
    3 with your program how do you expect to get the correct data into your variable
  • legoman132legoman132 Posts: 87
    edited 2010-03-20 00:58
    Thanks Larry,

    The I2CIN command handles I2c communication.
    No, the processor on the TPA81 writes the data to them (temperature and firmware revision)
    The I2CIN command copies the register value into the variable

    The TPA81 has a built in temp sensor and we get valid readings from that. If you heat it up with your breath it increases the value read just like you'd expect. However, we get nothing but 0 back from any of the pixel registers. If we remove the data line the values all go to 255, also like you'd expect for a floating bus pin.

    I guess I am looking for someone who has used the TPA81 before and maybe had this same problem and solved it????

    Post Edited (legoman132) : 3/20/2010 1:12:47 AM GMT
Sign In or Register to comment.