M0117 ESC rough control
-
@Aaky , Please see below answers to your questions
- Whenever you are using any of the VOXL ESCs in PX4, they are always doing closed-loop RPM control. The ESCs themselves are capable of operating on "open loop" mode, similar to traditional ESCs and that can be tested using
voxl-esc
tools (we refer to it aspower
control as opposed torpm control
. The RPM closed loop control is always active in flight. We do not support telemetry using VOXL2 IO board - if you want detailed telemetry from ESCs, you should use ModalAI ESCs, which provide, voltage, current, rpm, esc temperature, applied % power, each at 200Hz (while flight control loop is running at 800hz). This data is already available and being logged to px4 logs (although not at such a high rate, which could be modified on the px4 side). The ESC information is published viaesc_status
topic.
Closed loop control, when tuned properly, provides superior (over open loop) behavior and that is why we use it. Not only the control is accurate, it is also generally faster (depending on your PI gains in ESC params). The speed of ESC response becomes more important as vehicle gets smaller - this is because smaller vehicles have faster dynamics and can benefit more from faster motor response. With large vehicles, their large moment of inertia may prevent fast ESCs from providing any benefit. I already shared some plots above in this thread that show you how much difference in response time the proportional control can make.
-
I am not sure about PX4 features that track "harmonic notches improving overall tuning results". However, the ModalAI ESC does RPM control and provides RPM feedback, so this information can be used for filtering out vibrations (I believe that this is what you are referring to). Beyond this, I cannot provide any more guidance as we have not used such features in PX4.
-
In all flight modes, if you use ModalAI ESC with PX4, closed loop RPM control is used.
If I were to summarize the benefit of closed loop ESC control vs closed loop RPM control in one statement, it would be something like this.. For small vehicles, in absence of excessive vibrations, the faster closed loop RPM control should allow you to increase your attitude control (roll, pitch, yaw) gains in your flight controller (PX4), which means you can achieve more accurate flight.
If you have more questions, please let me know.
Alex
- Whenever you are using any of the VOXL ESCs in PX4, they are always doing closed-loop RPM control. The ESCs themselves are capable of operating on "open loop" mode, similar to traditional ESCs and that can be tested using
-
@Alex-Kushleyev Thanks for detailed response Alex. I am currently using this ESC from Tmotor. This ESC is running with BLHeli32 firmware. Any idea if this has closed loop RPM control? Since this ESC provides telemetry feedback I am guessing it has some closed loop control but I dont know if I can tune its response with any PI parameters as that of VOXL ESC. Let me know if you have any information.
Reason behind all these queries is I have custom drone with VOXL2 IO and above shown Tmotor ESC. I have tried manual and Autotuning the aircraft, well it flies but while I fly it in indoors it dosent seem to be accurately holding its posiiton and keeps moving around 10-15 cms in horizontal axis. Also the yaw control is not very stable and aircraft wobbles in the interim mildly and again becomes stable. I am just checking is improving ESC going to solve my problems.
-
@Aaky , as far as I know, BLHeli32 does not do closed loop RPM control, however it can report the RPM feedback (similar to how VOXL ESC is doing). the DShot protocol supports requesting telemetry, which is sent back to the flight controller via UART. In this configuration, there are 4 Dshot signals going from the flight controller and 1 UART TX coming back from the ESC into the Flight controller.
There is also a different telemetry option, where the ESC sends back telemetry sign the dedicated PWM / Dshot wires (same wires used to send Dshot commands from FC to ESC are used by ESC to send telemetry back to FC). The latter is called "dshot telemetry" and it can be sent at a much higher rate because each ESC has a dedicated signal line.
I believe Betaflight and maybe Arducopter can the Dshot telemetry for tracking what RPMs the motors are spinning and apply dynamic notch filters to try to filter out vibrations that are coming from all 4 motors.
You can find more information about dshot and telemetry here : https://brushlesswhoop.com/dshot-and-bidirectional-dshot/
What I would recommend, if it is possible for you, keep the current drone with VOXL2 IO and tmotor ESC and build another (identical) drone with the ModalAI ESC. Then you can test them side by side and compare flight performance with similar FC tuning and everything else being the same. It will be faster than swapping ESCs between the tests.
Alex
-
@Alex-Kushleyev Thanks Alex for alll the details. I will look into the test setup. What is the maximum continous current limit for this VOXL ESC? We have this ESC but not sure if it can replace Tmotor ESC specified in above link. Also what is maximum continuous current supported by this voxl esc? It is written 10A but upto what limits it is tested in miminal airflow conditions?
-
@Alex-Kushleyev Additionally,
Few stats from our motor : Our motor at hover time consumes 7.6 Amp and motor's peak current is at 18A. Current eventually increases as battery voltage decreases pushing hover current to 11A per motor.
Can this requirements be met with VOXL ESC 4-in-1 as linked above?
-
@Aaky , what is the voltage? 4S or 6S?
M0117 s M0134 escs can handle more than 10A continuous but with proper cooling. It has to be tested in your conditions to be sure. Monitor the esc temperature and stop the test immediately if esc temp gets above 100-110 C. Ideally, esc should be in the 50-80C range.
If you have an M01117 already, you could use that for testing if voltage is 4s or lower.
Also it seems your motor power may be a bit insufficient, if at hover you could have 11A at low battery, but absolute max current is 18A (i assume charged battery). The motor may be operating with little margin (low thrust to weight ratio of the drone). Please check!
-
Honestly, if you are building an fast quadrotor (fpv or similar) i would suggest using our FPV ESC, but if you want to give your M0117 a try, i can help you evaluate it and make sure it does not overheat during flight (the ESC temperature is reported from each ESC channel to PX4 and we also have optional warnings you can set if ESC temperature is too high / close to overheating).
-
@Alex-Kushleyev Our voltage is 4S, compatible with M0117 but the challenge is in our design its extremely difficult to provide direct airflow to the ESC. So my worry is for 10+ Amp of continous current needs will ESC be able to provide that much. Also we are building a aircraft which is under 3 kg category and not an FPV for sure but at the same time we want it to fly in outdoor and indoor situations. We are using 10-11 inch propeller and aircraft diameter is around 55 cms. We want it to fly fast for sure due to customer needs.
-
@Aaky , If there is any doubt, you should just go with the FPV ESC, which is currently our highest performing ESC (in terms of current capacity). The FPV ESC also includes power regulator for VOXL2, so you would not need the APM.
I actually have a plot from a test we did using the FPV ESC. The test was run 4 motors about 9-10A each (39A total) for 90 seconds with ZERO cooling. What I mean by zero cooling, the ESC was placed 1 meter away from the motors behind a closed door to ensure there was absolutely no airflow coming from the propellers. So the ESC could only sink heat via motor wires and by radiation. This is a very tough test condition for the ESC. Ambient temperature was about 20C, which is not too high.
Please note in temperature plot, there are two sets of temperature (bands). This is because two of the reported temperatures are coming from temperature sensors inside MCU (which show higher temp) and two temperatures are measured by dedicated temperature sensors next to mosfets (which show lower temp). MCU runs a little bit hotter because it generates internal heat by itself inside its package.
90 sec, 39A, no cooling. temperature reached 91-98C
another test: 120 sec, 23A total, no cooling. Temperature reached 66-72C
So the first test is actually very close to your scenario, except it is using 6S battery. With 4S, the amount of heat will be much lower, because the heat in ESC is not linear with voltage (but worse, maybe quadratic). You can understand, that if you do not provide any cooling, the heat has nowhere to go and temperature will rise. The FPV ESC also has a larger PCB and more copper (compared to other ESCs), so it will take longer for temperature to rise.
Even in the worse case scenario that you still need to cool down the ESC, you could make a heat spreader, which should help.
One final note, i should add that the FPV ESC only has total current sensing, not individual ESC channel, like M0117 or M0134.
Alex
-
@Alex-Kushleyev Noted Alex. Thanks for all the details. I have time constraints at the moment to procure and then deploy FPV ESC on our UAV so was trying to see if anything which is available with me can suffice the needs.
-
@Alex-Kushleyev One quick query on VOXL2 IO board, According to this diagram is there a inverter present on VOXL2 IO board for S.BUS port? Say I have non inverted S.BUS packets coming to input of VOXL2 IO J3, will they be inverted by VOXL2 IO board?
-
More details about my setup, I am trying to send S.BUS signals from my Transmitter via Doodle labs serial port and on UAV side, receiving the serial packets from Doodle labs modem and then feeding them into VOXL2 IO board. I do not have inverter for converting inverted UART to normal UART on Doodle labs with GCS side which I am planning to insert but will I need inverter for back converting normal UART to inverted UART on UAV side before feeding into VOXL2 IO or not is the question.
-
@Aaky, as the diagram shows, there is a hardware buffer/inverter present in voxl2_io board on the sbus input port.
J2 port (designated as spektrum input) on voxl2_io does not have the inverter and is currently unused. I could set up this port as non-inverted sbus input that will work just like the inverted one.
If you want to use the current sbus input port, you will need to invert the signal and also use parity bit in each byte (sbus standard)
-
@Alex-Kushleyev Thanks for the inputs.
Can you set J2 as non inverted please? Can I use it directly with my non inverted Sbus packets then? -
@Aaky , yes it should work with non-inverted uart. You would need to send the following uart format in order to be compatible with sbus : Even parity, 2 stop bits, 100,000 baud. Are you able to do that from your doodle labs device?
-
Also, if you are sending standard uart RC data from doodle labs, you could just feed that directly into voxl2 J18 or J19 and use standard px4 sbus rc driver. That may be the best option and you bypass voxl2_io for more flexibility.
-
@Alex-Kushleyev Integrating on J18/J19 seems to be viable option to me. I will try the same and let you know.
-
@Alex-Kushleyev One more query. Do you have experience with this, say I need to send S.BUS via UART, would only using a inverter circuit in between would work to send S.BUS via UART port of Doodle labs? Considering I set even parity and 2 stop bits on UART settings of Doodle modem.
Another query, Can SBUS RC driver on J18/J19 work other then 100000 baud rate? Like UART standard 115200?
-
@Aaky , I just checked, if you use VOXL2 J18 or J19, the UART ports on these connectors are connected to the DSP and it does not currently support baud rate 100,000.
So, if you wanted to send the data in SBUS format directly to VOXL2 J18, J19, the requirements would be:
- use standard baud rate, such as 9600, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 2000000 (all of these are supported by the DSP). Additionally, non-standard supported baud rates are : 250,000, 420,000.
- use 1N8 serial port frame type (1 stop bit, 8 data bits, no parity)
- non-inverted (standard) signal levels (idle = high, 1 =high, 0 = low)
However, i just checked, there is no SBUS RC driver that is currently supported to run on the VOXL2 DSP. This is because the SBUS is typically inverted signal and it is not possible to handle that in VOXL2 directly.
If you are flexible and able to send the data in the format of Ghost RC or Spektrum, they are both supported directly on the DSP : https://github.com/modalai/px4-firmware/tree/voxl-dev/boards/modalai/voxl2-slpi/src/drivers and you can enable them using
/etc/modalai/voxl-px4.conf
and/usr/bin/voxl-px4-start
(check both files for details)Alex
-
@Alex-Kushleyev Got it thanks for the information. So it seems unlikely for me to use J18/J19 for RC input since I dont have much flexibility to convert SBUS into Ghost RC or spektrum format right now.
Say I want to use J2 on VOXL2 IO for non-inverted SBUS packets as you mentioned earlier, is that readily possible or we have to do any changes in SW configuration/firmware of VOXL2 IO?