Kübler Sendix F3653 encoder

Hi!
I want to read data from Kübler Sendix F3653 absolute encoder.
Have anyone worked with it or similiar ones and could share a useable code?

Thank you!

How do you interface the SSI to the Arduino? Are you using RS-485 driver chips (MAX485 et al.)? Do you interface to the SPI pins or do you just use a bit-bang interface?

I use bit-bang method. My data reading function works fine however the encoder gives false values at random times. Is it possible to get rid of those? Did anyone experienced the same?

Post a wiring diagram and the code you use.

My data reading function works fine however the encoder gives false values at random times.

So we have a different definition of "works fine". If there are randomly false values a component is not working fine in my opinion.

const int CLOCK_PIN1 = 8; // PB0 8
const int DATA_PIN1 = 14; // PC0 14
const int SET_PIN1 = 15; // PC1 15 in HIGH encoder sets to 0 (needs 200ms)
const int DIR_PIN1 = 16; // PC2 16
const int STAT_PIN1 = 17; // PC3 17

const int BIT_COUNT = 13;

void setup() {

pinMode(PD2, OUTPUT); // Turn LOW PD2 to enable the encoders
digitalWrite(PD2, LOW); // Encoder On

pinMode(DATA_PIN1, INPUT); // Encoder 1 LOWER
pinMode(CLOCK_PIN1, OUTPUT);

digitalWrite(CLOCK_PIN1, HIGH); // Give some default values

Serial.begin(115200);
Serial.println(“Started”);
delay(150); // Encoder needs 150ms to startup
}

void loop() {

float reading1 = readPosition1();

if (reading1 >= -0.5) {
Serial.print("1: ");
Serial.println(reading1, 2);
}
}

float readPosition1() { // Read the current angular position
unsigned long sample1 = shiftIn(DATA_PIN1, CLOCK_PIN1, BIT_COUNT);
delayMicroseconds(15);

return sample1;
}

unsigned long shiftIn(const int data_pin, const int clock_pin, const int bit_count) { // Read in a byte of data from the digital input of the board.
unsigned long data = 0;

for (int i=0; i<bit_count; i++) {
data <<= 1;
digitalWrite(clock_pin,LOW);
delayMicroseconds(1);
digitalWrite(clock_pin,HIGH);
delayMicroseconds(1);

data |= digitalRead(data_pin);
}
return data;
}

Here you can find the encoder's datasheet:

Provide the exact type of encoder you have. Most of them use SSI interface which uses differential signals so you need additional hardware to decode that signal. Post the schematics or at least a wiring diagram of your setup.

I have SSI, BiSS / 5 V DC with SSI, binary, 13 bit encoder.
Differential signals only needed if you have long cables, in my case i use very short ones.
You can see wiring at the begining of the provided code.

Differential signals only needed if you have long cables, in my case i use very short ones.

In my interpretation of the data sheet there is no version which doesn't use differential signaling. SSI is only defined as differential (based on RS422) and I cannot find any Kübler document that describes a proprietary SSI variant without differential signaling.

In my interpretation of your type specification you're using interface type 5, which also has C+ and C- and D+/D- signals but no STAT signal. Provide the type code as described on page 180/181 of the posted document.

You can see wiring at the begining of the provided code.

As described above I guess this wiring is wrong. You need a driver chip.