Go Down

Topic: AS5600 with Adafruit Multiplexer (Read 63 times) previous topic - next topic

MrDoggss

 I am trying to get 5x  AS5600 encoders to work on an Adafruit TCA9548A Multiplexer that is attached to an Arduino Mega.   So far, I have been able to use the examples to read one sensor connected directly to the Mega.  Using the multiplexer, I can use the code on Adafruit's website to read the sensor type, but beyond that, I am having zero luck.

I think my issue is setting up the multiplexer code. *Standard disclaimer -  I am no coder, so I am trying to piece things together, which usually doesn't work.*     I can't seem to get a simple reading from the encoder through the multiplexer.  Is there a sample using the multiplexer just to read an AS5600 sensor?

If anyone wants to see what example sketch's I am working with I can post them.  My modified code is garbage, so I want to start from scratch.


MarkT

Post code, circuit and datasheet links please...
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

MrDoggss

Ok, here are the datasheet links


TCA9548A.pdf

AS5600 chip datasheet



I will post a pic of my wiring, soon. But it is almost identical to this pic on the Adafruit multiplexer page.





This is Adafruit's code to scan the multiplexer to see what is connected. This will show the AS5600's as address  0x36 if I connect them.

Code: [Select]
/**
 * TCA9548 I2CScanner.pde -- I2C bus scanner for Arduino
 *
 * Based on code c. 2009, Tod E. Kurt, http://todbot.com/blog/
 *
 */

#include "Wire.h"
extern "C" {
#include "utility/twi.h"  // from Wire library, so we can do bus scanning
}

#define TCAADDR 0x70

void tcaselect(uint8_t i) {
  if (i > 7) return;
 
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();  
}


// standard Arduino setup()
void setup()
{
    while (!Serial);
    delay(1000);

    Wire.begin();
    
    Serial.begin(115200);
    Serial.println("nTCAScanner ready!");
    
    for (uint8_t t=0; t<8; t++) {
      tcaselect(t);
      Serial.print("TCA Port #"); Serial.println(t);

      for (uint8_t addr = 0; addr<=127; addr++) {
        if (addr == TCAADDR) continue;
      
        uint8_t data;
        if (! twi_writeTo(addr, &data, 0, 1, 1)) {
           Serial.print("Found I2C 0x");  Serial.println(addr,HEX);
        }
      }
    }
    Serial.println("ndone");
}

void loop()
{
}  

Go Up