Using MatekL431 adapters for PWM and DShot

yes, quite a few people are using it successfully.
At this point I would normally attach a Saleae logic analyser to trace through the signals, but if you don’t have that, then I’d suggest trying different uarts on the L431 for the telem feedback.
The ESC_TELEM_PORT setting is as follows:
0 : USART1
1: USART2
2: USART3

try attaching to the RX port of the other uarts with the right ESC_TELEM_PORT and see how it goes. Note that you need to restart the node on that change.

Thank you. Changing UART does not resolve the issue.

Seems to be an issue with using PWM 5 as DSHOT - Telemetry works if I move from PWM 5 to PWM 4.
A semi solution but does not help my use case.

I have 4 servos connected to PWM 1-4
I have 1 dshot ESC connected to PWM 5

If I leave the telem connected to serial 0 (RX1) and simply move the DShot connector from PWM 5 to PWM 4 the telemetry starts working.

I am aware that due to timing issues I need to seperate PWM servos and Dshot as described above so I need to use PWM 5.

Any idea why plugging DSHOT into PWM 5 causes the telemetry stream to stop working, is there any fix?

thanks! I’ve reproduced and found the bug. The fix is here:

I’ve put a build for the MatekL431 with the fix here:
http://uav.tridgell.net/tmp/AP_Periph-MatekL431-offset-fix.bin
Setup I used for verifying the fix:
on periph node, set

  • OUT_BLH_MASK=16
  • OUT5_FUNCTION=33

on flight controller set

  • CAN_D1_UC_ESC_OF=4
  • CAN_D1_UC_ESC_BM=16
  • SERVO5_FUNCTION=33
1 Like

Incredible thanks.

I can confirm that your fix does now allow telemetry to work with a single ESC connected to PWM5 using your default settings.

However…
Telemetry subsequently fails when I set the ESC_BM as below to enable a servo output on PWM1.

I have three nodes with ESC and servos connected.

In Arduplane I have set:
Servo8 - ESC1
Servo9 - ESC2
Servo10 -ESC4
Can_D1_UC_ESC_OF=7
CAN_D1_UC_ESC_BM = 896

Node setting for ESC8
OUT1_FUNCTION=56 (servo)
OUT5_FUNCTION = 33 (Can confirm ESC works correctly)
OUT_BLH_MASK = 128 (does not work with 896 either)

Telemetry DOES work when OUT_BLH_MASK is left at default =31. Consequence of this is the servo on PWM1 does not function.

Am I misunderstanding the BLH_MASK settings or is there a bug here?

can the node mirror a relay gpio output?

@tridge Were you able to replicate the issue above where, after your patch telemetry still doesn’t work correctly.
Am I miss understanding the bitmask settings?

you need to set the SRV_BM for servos, quite separately from the ESC_BM for ESCs. The DroneCAN protocol for servos and ESCs is totally different, so both need to be set separately

@tridge BINGO - Thanks The problem was a misunderstanding of what OUT_BLH_MASK was supposed to be.

I have the ESC connected to PWM5 on the L431 node. Therefore the OUT_BLH_MASK needed to be set to 16.

I now have an ESC & Servo connected to a node with telemetry working.

2 Likes

Matek have now introduced a new variant of this adapter board with up to 10 actuators (4 ESC and 6 servos):


It is setup in the same way as the existing MatekL431-DShot described above.
The big advantage is it makes wiring easier. The 6 servo connectors have a common power rail on the middle pin, and the ESCs middle pin is setup to go to USART1 RX, ready for DShot telemetry.
More details here: https://www.mateksys.com/?portfolio=can-l4-pwm
thanks @Sampson !

3 Likes

@tridge can the can node run a relay output?

Thanks Tridge, very interesting post.Only just stumbled across it.

Given that some new FC’s come with digital inputs for data like battery voltage and current, could this unit easily be setup to use an conventional MP for example and then send digital signal (converted by Matek-board) to an CAN input as found like on a Pixhawk 6x ?
…or is this not supported yet on the firmware side?

I’ve been trying to setup a PWM ESC to run off the L431 node for some time but I can’t seem to get it to work. If anyone has any ideas on what I could change i’d be grateful!!

The current autopilot settings i have are:
CAN_D1_UC_ESC_BM 15
CAN_D1_PROTOCOL 1
CAN_P1_DRIVER 1

The current node settings are:
OUT2_FUNCTION 33
OUT5_FUNCTION 34
ESC_PWM_TYPE 1

I’m currently running the Default firmware, the MatekL431-Periph so I don’t seem to have the OUT_BLH_MASK that I’ve seen mentioned, is this a problem for using a PWM ESC? I’ve managed to get several pwm servos working fine but I’m a bit lost here

Thanks!

you need to update to this firmware:
https://firmware.ardupilot.org/AP_Periph/latest/MatekL431-DShot/

hello, is there by any chance that i can get the position value of servos using the MATEKSYS CAN-L431( CAN-L4-PWM)? @tridge

1 Like

only if the servos have some position feedback protocol. PWM servos don’t generally have that. Most CAN servos do
What type of servo?

2 Likes

i will be using CAN servo which has 4 pins, but the MATEKSYS CAN-L431( CAN-L4-PWM) is only 3 pins (signal,Vin, gnd). Is there a way to connect the feedback cables to CANBUS or this module is not compatible with feedbacks? Any suggestion would be appreciated.

1 Like

If you are using a CAN servo, you do not need the MATEKSYS CAN-L431 board.
Just connect the CAN servo to the CAN bus of the Autopilot (4 wires)

3 Likes

Thanks for the help!

1 Like

Hi,

I’m trying to get ESC telemetry data from Hobbywing X8 motors. I have a few questions about this topic. I think X8 Dshot is not supported, but it has ESC telemetry feature in it. How should I proceed in this case? I would be glad if you help. I’m going to do 3 motors tests. All 3 have them according to their individual RPM and power consumption values.

@khancyr is doing a device driver for ArduPilot that maybe also supports the Hobbywing.
Stay tuned, testing should start soon.

1 Like