ESC Flycolor X Cross HV3 settings on BlHeli 32

I don’t think pre-potting with silicone is needed (if i understand what your goal is)
Heat sink can be protected with anything that epoxy doesn’t adhere to: plastic tape/plasticine clay (if you need some thickness)/waxing etc.

1 Like

I see the 160A version at 78€ with VAT (10% off until 31st March 2024 = 70€), how much did you pay all inclusive (shipping, custom, …) ?
The rebranded BlHeli by Flipsky with 25% more Amps (200A instead of 160A) is at 99$+VAT+shipping+custom

1 Like

I ordered one, £61 for everything.

I ordered one for 62 € (with all the promotion codes)

$60.72 using link above, no promo codes used

I’ve read that the current sensor on the blheli32 esc measures on the motor side, so it isn’t very helpful to protect your battery.

Has anyone figured an easy way to access telemetry, without a flight controller?

For the one-wire telemetry (when autotelemetry is on) you can use an arduino or similar with a pull-up resistor (1k internal or solder-on). The telemetry is of low quality and not very useful in my testing so far but still working on it. The protocol is called KISS24a there is a pdf spec online.

2 Likes

Hi everyone, xcross seems to have very small capacitors, is it a problem do you guys added some ?

can we not make the assumption that the current from the battery is the same as going to the motor minus some heat loss?

/*
Author: cdl Dec 2023
Read BLHeli ESC telemetry port. Assumes the ESC is configured with auto-telemetry=on using the BLHeli Suite app

Connections:

  • ESC telemetry wired to Seeeduino XAIO to pin 7 (hardware UART aka Serial1)
  • ESC ground to XIAO pin 2
  • ESC powered as appropriate (eg. 12v-40v batt or power source)

*/

#define mySerial Serial2

#define TELEMETRY_FRAME_SIZE 10
static uint8_t telemetryBuffer[TELEMETRY_FRAME_SIZE] = {
0,
};

struct telemetryValues { uint16_t temperature,
voltage,
current,
consumption,
rawrpm; };

uint8_t update_crc8(uint8_t crc, uint8_t crc_seed) {
uint8_t crc_u, i;
crc_u = crc;
crc_u ^= crc_seed;
for (i = 0; i < 8; i++) crc_u = (crc_u & 0x80) ? 0x7 ^ (crc_u << 1) : (crc_u << 1);
return (crc_u);
}
uint8_t get_crc8(uint8_t *Buf, uint8_t BufLen) {
uint8_t crc = 0, i;
for (i = 0; i < BufLen; i++) crc = update_crc8(Buf[i], crc);
return (crc);
}

void setup() {
// Open serial communications and wait for ports to open
Serial.begin(115200); // for output to use the Serial Monitor or equivalent
mySerial.begin(115200); // Connect to the designated UART port on the arduino (eg. for Seeeduino XIAO it is on pin 7)

Serial.print( “BLHeli ESC telemetry\n” );
}

void loop() // run over and over//
{
uint8_t crc, txcrc;
telemetryValues tv;
uint32_t erpm, rpm;

// always keep the most recent 10 bytes in buffer
if (mySerial.available()) {

// shift buffer contents back one char position
telemetryBuffer[0] = telemetryBuffer[1];
telemetryBuffer[1] = telemetryBuffer[2];
telemetryBuffer[2] = telemetryBuffer[3];
telemetryBuffer[3] = telemetryBuffer[4];
telemetryBuffer[4] = telemetryBuffer[5];
telemetryBuffer[5] = telemetryBuffer[6];
telemetryBuffer[6] = telemetryBuffer[7];
telemetryBuffer[7] = telemetryBuffer[8];
telemetryBuffer[8] = telemetryBuffer[9];

// read the next byte from the telemetry port
telemetryBuffer[TELEMETRY_FRAME_SIZE - 1] = mySerial.read();

// compute crc
crc = get_crc8(telemetryBuffer, TELEMETRY_FRAME_SIZE - 1);
// if crc matches last byte in buffer then frame is valid, else ignore and go to next byte
txcrc = telemetryBuffer[TELEMETRY_FRAME_SIZE - 1]; 
if ( crc == txcrc )
{
  tv.temperature = telemetryBuffer[0];
  tv.voltage = telemetryBuffer[1] << 8 | telemetryBuffer[2];
  tv.current = telemetryBuffer[3] << 8 | telemetryBuffer[4];
  tv.consumption = telemetryBuffer[5] << 8 | telemetryBuffer[6];
  tv.rawrpm = telemetryBuffer[7] << 8 | telemetryBuffer[8];
  erpm = tv.rawrpm * 100;
  rpm = erpm / 7; // assumes 14 magnet pole motor
  Serial.printf("Temp: %d\n", tv.temperature);
  Serial.printf("Voltage: %d\n", tv.voltage);
  Serial.printf("Current: %d\n", tv.current);
  Serial.printf("Consumption: %d\n", tv.consumption);
  Serial.printf("eRPM: %d\n", erpm );
  Serial.printf("RPM (14 poles): %d\n", rpm );
  Serial.printf("CRC: %d %s %d\n\n", crc, ( crc==txcrc ? "=" : "!=" ), txcrc );
}

}
}

3 Likes

Motor current and battery current are different and scaled to the PWM duty cycle.

12v1A in battery at duty 0.5 is 6V2A out to motor

I just cooked a new flycolor x-cross hv3 120A during setup and config with a 12s-3p :frowning:
Might be me thought, I’m a noob and the lessons are getting expensive

Which mistake did you do?

I have now both 80A and 160A.
80A is neat little guy. Only one heatsink, no capacitors. Fun.
I want to remove the heatsink, suspecting it has the same transistors , just half the amount.

Did you not set the overtemp?

Hi,

Where did you read that BLHELI32 measures current on motor side ?
some people said the opposite, it will be great to know as it is pretty different.

Based on the location of the shunt resistor on my X-Cross ESC. It is right next to the positive battery terminal, so I think (although not an expert) that it logically implies this is measured on the battery side.

Oscar liang mentions that the ESCs measure current on the motor side, but it would be good for someone to confirm/test it.

I think Oskar just means that the current measured is only the current used by the motors. Ie. it does not include all current used by the quadcopter/aircraft etc. additional current is used by the other devices. Eg. Flight controller, radio receiver, camera etc

Good Question. Actually I thought I copied your settings one by one (although there were more options) thought I worked it out correctly.

Hi everyone,

Thanks to someone on the french DIY community,
here is a reply from flycolor.

It means the MAXIMUM value you can set on the X Cross 160 amp is (160/3 phases) = 53 amp " Current protection setting " on Blheli.

It handles a foil assist perfectly. But on a tow boogie, we are just around the limits. It’s possible to take off with a big board (5’6 60 liters) but not on a small (4’6 34 liters).

For info, I tried with 70 amp on my tow boogie and blew an ESC. Be careful

Hi Dany,

Thanks for reaching to us.

It was the ampere on the single phase 120A.

Kind regards!
James

sales@fyjl.net
0086-13928491250

From: Dany
Date: 2024-05-02 01:03
To: sales
Subject: Output max Amps on x-cross hv3
Hi,

I am using a flycolor x-cross hv3 and was wondering how much intensity I will get on the output phases per phase if I reach the limit of 120A that I have set in the config.

Rgdd
Dany

2 Likes