New ground-up ESC - MESC_FOC_ESC

mxlemming said:
It could but it would take porting and setup. Also you'd need external op amps or current sensors since f302 i recall only has 2 and I'm not going to deal with that nonsense.
yes, only 2, give up.
mxlemming said:
Just built up the easy DIY ESC from badgineer and casainho (I've been helping badgineer a bit) and I'm trying to port MESC to the black pill f401 which is (just about) pin compatible with blue pill so that might bea better option for you!
IMG_20220512_015313297.jpgIMG_20220512_015327825_HDR.jpg
agree, after playing with easy DIY ECS board, I expect a board/chip with fpu like F3/F4 can greatly improve the performance.
 
https://www.youtube.com/watch?v=qFH7duzY3uM
[youtube]qFH7duzY3uM[/youtube]

Just ported MESC to F401CC. Been running in the Easy DIY ESC from Badgineer, Casainho, Andre. Nice piece of kit. Cute size, better ADC readings than the MESC board, but significantly down on power.

This is interesting, because 1) it can now be run from a blackpill, a 3$ breakout board and 2) it's the first time I have tried running FOC on a chip with a single ADC.

It runs fine. The single ADC doesn't really seem to impede the performance. No special conversion and sample positioning management, it just works regardless.

HFI not yet functional on the F401, I think the ADC conversions are not happening fast enough to fully populate the FOC buffers before it does the clark/park so the signal is a mess. One for another day.

Also re-implemented field weakening, Works pretty well, but needs a bit of tweaking to stabilise the id current. Thinking a hysteresis loop on the id request might work well.
 
what is the HFI performance (I mean on your F303), I asked the same question to stancecoke before... can it work as good as hall sensor under load? any harsh noise for heavy load starting?

stancecoke said:
flute2k3@hotmail.com said:
what is your feeling for Lishui sensorless performance
The sensorless branch works for an EBike with a geared hubmotor and freewheel. The firmware has no ability to start the motor under load. The rider has to give the first push by the pedal first, so the wheel spins, then the rotor can start turning in open loop without load due to the freewheel. After the observer syncronized the commutation, the motor runs flawlessly. (with some limitation in max current and temperature)
For a direct drive without freewheel, the sensorless firmware is not suited and I don't plan to implement something like HFI to make the motor start sensorless under load

regards
stancecoke
 
flute2k3@hotmail.com said:
what is the HFI performance (I mean on your F303), I asked the same question to stancecoke before... can it work as good as hall sensor under load? any harsh noise for heavy load starting?

stancecoke said:
flute2k3@hotmail.com said:
what is your feeling for Lishui sensorless performance
The sensorless branch works for an EBike with a geared hubmotor and freewheel. The firmware has no ability to start the motor under load. The rider has to give the first push by the pedal first, so the wheel spins, then the rotor can start turning in open loop without load due to the freewheel. After the observer syncronized the commutation, the motor runs flawlessly. (with some limitation in max current and temperature)
For a direct drive without freewheel, the sensorless firmware is not suited and I don't plan to implement something like HFI to make the motor start sensorless under load

regards
stancecoke

So far the HFI is only tuned manually for the motors I have. It works brilliantly on my ebike motor the at12070 and on the big CA120.

I tried it on a hub and honestly it needed a lot of fiddling. It will work eventually but it's complicated.

Benjamin Vedder implemented my HFI method on VESC and it worked really well for him as well. He also implemented some method for setting the parameters which means it works with less effort on different motors.

I just need to catch up with the auto setting parameters.
 
mxlemming said:
I just need to catch up with the auto setting parameters.
yep, if there is an autodetect algorithm suitable for generic motor application that will be perfect. looking forward to see your progress.
 
Hi all -

This is going to be my first post here - have been lurking in this thread for some time and I've decided to build one of these MESCs to test out. I think it's a pretty approachable platform to work on! I like the validated power stage layout and I think it's one of the best open source ESCs currently available. Thank you, mxlemming for the excellent open source contribution!

I made a couple of changes to the board layout based on the original schematic v0.5. For now, my fork will be called SQESC because my board is more or less square, to differentiate it from the main version. This is in no way a promise that I will maintain this fork for any amount of time, but you are welcome to contact with questions etc. In my version, I decided to add the following changes and features:

1) It seems like the STM32F303CBT6 processor used in the design has hardware support for the CAN bus. Seeing as the USB code was recently removed from the software repository, I made the assumption this was no longer needed, and repurposed these pins for this purpose. I would like to use the CAN bus to connect multiple systems, such as BMS, taillight, display or dashboard controller/data recorder, cellular IoT module, etc in my intended application. I used the TJA1051T transceiver, which is available on JLCPCB assembly service. This is a little bit of an older transceiver, which consumes a few mA of quiescent current. As such, I added a P-Mosfet to shut the power to this chip down as needed. There are two pins on the CAN connector reserved for the termination, which is needed at the ends of the bus.

2) Some of the DC-DC converters on the board are no longer available. I changed the architecture of the power delivery on this board. First, the high voltage input will be stepped down to 12 V using the MPS MP9486A. This chip is widely available on AliExpress for a low cost and supports 170uA quiescent current. This 12V rail is used to derive 5V and 3.3V using the TPS54331 (x2), which also has a low quiescent current and is available on LCSC.

It is possible to back-power the board with an external 12V supply on CAN connector if the MP9486A is not installed or shut down. I didn't add a diode for Diode OR redundant power in this board, or as a way to shut down the on board converter. In my application, I will not use the on board 12V converter because the driver will be co-located with the "mid-chassis" controller hub, which will implement power cut off to the board externally in order to reduce the vampire power draw, as well as secondary power cutoff should the motor controller produce an overcurrent condition.

3) Some misc parts on the board have been replaced to better suit LCSC assembly. Due to some errors the first time ordering, some of the part selections don't match the footprints and this was manually resolved. I will try to resolve the problem in the BOM when I get some time. The three power rail LEDs are removed, as are some connectors used for presumably validation of the power layout. A "Heartbeat" LED connected to the MCU is added.

4) I changed the location of mounting holes. They are now M2 diameter, and I will make some corresponding aluminum core PCBs for both sides of the boards, to be attached with M2 round knurled standoffs and screws/insulating washers. The aluminum PCB itself has a very good isolation layer, so without any copper layer, there will be a 1500 Vrms isolation pad built in, and thermal paste can be used to attach the plate to the back side. The aluminum PCB can have holes freely added or drilled, to make mounting easier.

5) All of the connectors have been consolidated or rearranged into Hall, Digital IO, Analog IO, CAN Bus, Debug(2.54 header) JST PH 2.0MM connectors. The pinouts are not the same between the original and my version. The unused pin for the Hall connector is repurposed to connect a 10K thermistor internal to the motor. I considered whether it was worth trying to design this to multiplex multiple sensors over the hall inputs, but decided that should this be needed, one sensor plus some characterization and software modelling would be a better way to estimate the internal temperature or hot spots of the motor winding.

6) The layout of the PCB has been changed to about 87*84mm. This makes it "significantly" larger, which is acceptable in my application but might not be for yours. The purpose of this expansion is to allow for the new DC DC architecture, connectors, and CAN bus expansion. I re-routed the entire PCB with the exception of the power stage MOSFET/Power distribution layout. The layer stack up has been changed to use GND for the internal layers, with 95% of the routing on front and back. The sense resistor traces are run at 45 degree angles and/or away from the current path wherever possible. Many of the parts of the board have been spaced out more than in the original to facilitate easier automatic JLCPCB SMT assembly.

I ordered five boards for testing. The total without gate drivers, connectors, and MP9486A comes out to about 210 USD for five assembled boards. The cost of the STM32 processor used is about 10 USD now, as opposed to 2 in the documentation. When the testing is complete, I can imagine about 2-3 boards will be surplus and available to those interested.

When the boards arrive, I will do some testing. I hope to implement some extra features in the firmware if it is feasible, such as CAN bus and variable switching frequency (Not sure if it would be possible to do this - I want the switching frequency to be changeable while the motor is turning. For example, some applications prefer the motor to produce some harmonics noise at a low speed, or the inverse - a high frequency at low current, and decreased frequency when the current is high (motor noise is greater than switching noise and efficiency is more important)

I don't currently have a way to load test this other than a 350 W geared hub motor. I might try to output a simple 60 Hz sine wave and use two large 1500VA UPS step up transformers connected in Open Delta to connect three kettles or hair driers....

If you would like to check out the changes, the repo is at https://github.com/larryqiann/MESC_FOC_ESC/tree/Change-power-supply,-add-CANBus-IC. You need to check the branch corresponding to "change power supply, add canbus IC".

I do not recommend ordering it until I can test mine and find out how many thin(?) blue wires are needed to make it work...
I do not take responsibility for any action or result taken based on the design.

Some pictures of the layout:

Screen Shot 2022-05-18 at 9.58.53 PM.png
Screen Shot 2022-05-18 at 9.59.27 PM.png
 
mxlemming said:
My concept (second concept) is as follows:

The basic idea behind the Lebowski controller is simpler:
- the phase of the voltage delivered to the motor (so the voltage at the output of the controller) must be equal to the phase of the current delivered by the controller. In this way positive power is delivered to the motor. What the motor does with this positive power, the controller does not care (but it makes the motor spin). This is basically Stator Oriented Control.
- A correction is applied to the imaginary part of the outputted voltage to account for the motor inductance. This effectively modifies the algorithm from SOC to FOC.

The controller knows its own outputted voltage, and measures the outputted current. Phase control is very easy, it calculates the imaginary (or blind) power and tries to keep this 0. No need to know motor resistance, inductance or BEMF for the SOC part of the algorithm. To make FOC you only need the motor inductance (you dont need the Kv or resistance).
 
liminalsunset said:
Hi all -

This is going to be my first post here - have been lurking in this thread for some time and I've decided to build one of these MESCs to test out. I think it's a pretty approachable platform to work on! I like the validated power stage layout and I think it's one of the best open source ESCs currently available. Thank you, mxlemming for the excellent open source contribution!
....

Very exciting to wake up to this! I hope it works as well for you as it has for me. I've had really good results from my 4 layer board with the f3 and TOLL FETs, and though I haven't used the ones with 2 layer and d2pak for a very long time, I recall they easily handled 50A and behaved well enough. I think my main recommendation (to late now?) Is that you should use 4 layer since the ground plane did wonders for the switching. Hopefully you did.

All your changes seem sensible, the semiconductor shortage is killing us all, and the price of stm32 is :confused: . The different DCDC is one I've been considering because of the fragility of the ti parts but I really don't need any more boards in my life right now!

USB... I removed it from the code base because it just never really worked properly on f3 (I had better luck with f4 and l4 but still not great). Endless enumeration problems and code hanging. One day I might revisit but for now I'm recommending the ch340 chips you can buy for very little money. I've never tried CAN atall.

I'm currently making a lot of code changes so the active branch is prototype. Sensorless is my default at the moment, I think hall sensors still work but I haven't used them for months. The other thing that's currently problematic is that my friend wrote a fairly complex layer for the profiles used and com port handling. This means the previously incredibly simple but working single letter command line is now... Obsolete... And replaced with the complicated one which isn't yet working properly. Will try to get on that. It seems like it will be pretty nice once it's integrated properly.


Lebowski said:
mxlemming said:
My concept (second concept) is as follows:

The basic idea behind the Lebowski controller is simpler:
- the phase of the voltage delivered to the motor (so the voltage at the output of the controller) must be equal to the phase of the current delivered by the controller. In this way positive power is delivered to the motor. What the motor does with this positive power, the controller does not care (but it makes the motor spin). This is basically Stator Oriented Control.

One day I'll try to implement this. It makes perfect sense. I'm a long way down the FOC rabbit hole right now but I'm certainly feeling like FOC isn't the be all and end all of motor control.

One of the really nice things about the observer I created is that it requires absolutely no startup code, provided load torque is low and the resistance term is fairly close. How well does the Lebowski controller achieve initial phase lock?

I'll take this opportunity to say thanks for all your contributions to knowledge over the years. I've learnt a huge amount from your posts... And come to expect that in any sea of babble and discussion, the Lebowski post contains the objectively correct answer :lol:
 
Quick update, since there have been a lot of changes over the last month or two.

  1. MTPA added
  2. Different circle limitation added
  3. Optional features and cleanup of settings
  4. Various options for observer, including non linear, flux linkage tracking, and the MESC observer is now the default option in VESC firmware for the Beta/develop branches
  5. Configurable PWM frequency (tested from 2kHz to 60kHz on F405 targets)
  6. PLL for speed measurement
  7. Capable of running two phase sensors

The firmware is now actually useful for everyday DIYer people. You could easily wire an F303, F405 or Black pill chip into your own power stage and configure it in a short time, and then get fully functional FOC with good performance. It has now been run on 5 different F405 targets, with various current sensors (phase inductive sensors, resistive phase shunts, low side)...

It's strange how some things sound so complicated but are so trivial and vice versa. MTPA for example... I sat down early one evening with a strong coffee expecting a long hard night... barely half an hour later and I swapped the coffee for beer with it seeming to work fine. Two phase sensor compatibility was another 10 minute change.

On the other hand, detection has become a right faff and lots of things that used to work fine got broken when I implemented top and bottom PWM updates, and the speed PLL took hours and hours for what ended up as one line of code.

The most important change was the creation of the new circle limitation algorithm. This is a part that is rarely considered in FOC, it's just assumed by the end user that it is there and works. Previously, the algorithm I used was that Vq was allowed 95% of the max voltage and Vd was allowed 30%.
Code:
sqrt(0.3^2+0.95^2) = 0.996; close enough to 100%.
This takes minimal computation to implement and is good for 95% of cases. However, it falls over for cases with very high current or very high inductance where the cross coupling terms Vq+=jwLid and Vd+=jwLiq become large. At this point, higher Vd is needed to suppress D axis current, and hitting this point rapidly results in a trip.

Since I have no setup where this is the case, I await someone with an overdriven Surron, QS138 at 400A or similar to test the new algorithm.

Working on a better UI (Web Serial based) and serial command line. And by "working on" I mean a friend is working on it. He's a much better programmer than me, but tying his nicely written code into my changing spaghetti mess is taking a while.
MESC Tool.png

Well that's all for now.
 
Woly said:
Excellent, any hardware changes as well?

No. The original hardware with the TOLL FETs just keeps on giving. The project is also ported to other hardware (compatible with most VESC boards and the boards badgineer has been making).

If I did update the hardware it would probably just be to improve the current measurement, since the opamps are not differential which limits their accuracy (they're good enough though).

There are also perhaps stylistic changes, minor optimisations to get more ADC inputs etc but these are really application specific to the end user.
 
so nice! At the current rate, this project will some day become beginner friendly, which makes me happy :)
 
Vbruun said:
so nice! At the current rate, this project will some day become beginner friendly, which makes me happy :)

It might be more beginner friendly than you think. Just download/install stm32cube ide, clone/download this project from github, double click the project file for your choice of chip... And you're ready to start coding, or skip coding and just program a board with the defaults.

Then wire up the SWD to an stlink or jlink (AliExpress 5$) and hit the bug icon...

The effort to setup and flash this project as it is right now is not really any harder than VESC, or any of the other ESCs, it's just you use cubeIDE instead of VESC tool.

Perhaps I should do a YouTube video of how to get started with MESC.

One day there will be the webtool and a single image for each MCU type, but until then... The cubeIDE route really isn't so bad :mrgreen:
 
Vbruun said:
so nice! At the current rate, this project will some day become beginner friendly, which makes me happy :)

https://youtu.be/Tf3uwAzrEbk

[youtube]Tf3uwAzrEbk[/youtube]
Made a video on how to go about programming/running MESC.
 
KAUDIO said:
Great project, can MESC Tool be used? :bigthumb: :bigthumb:

Unfortunately, at this moment it is not integrated properly, the current way of setting it up involves hard coding the parameters in the config header files. Netzpfuscher is now working on this with me and we have some substantial serial terminal improvements, so it's now possible to set it up through serial again, but the MESC tool remains elusive.

One other recent development is that the L431RC has been added to the list of compatible MCUs, some cool stuff related to dead time compensation which dramatically improves sensorless startup, and 2x per pwm period updates which enables ludicrous ERPM... I've hit 250kerpm with it in sensorless mode...

I also have a new hardware I've built:
IMG_20221016_140015932.jpgIMG_20221015_162235413.jpg
I'm quite pleased with it. Only one bodge wire required. Been running it with the L431 and f405.

I'm not planning on open sourcing the be hardware since no one ever built the original one... The reality send to be that people consider a few hundred dollars for an of the shelf controller a good value investment on their time, and those who want to build one tend to want to design their own.
 
Added a series of features in then last 2 weeks, it now has:

1) Salient observer. This is only really relevant to big inrunners, even if your outrunner seems salient, it is only so because of back iron saturation, and this saliency is not useful. This is a new technique I have not seen in any papers anywhere, it would be nice if anyone was able to test this on a large motor in anger. It seems stable and functional as best I can tell with my available motors.
2) 100% modulation supported through new PWM switching scheme as an option. This allows some 7% extra max speed compared to traditional 95% (the extra 2% is due to elimination of dead time losses.
3) Self teaching hall start with transition to sensorless, which seems really effective and smooth. Need other to test on different motors.
4) Stable field weakening allowing up to 100% modulation and tested to 50A on my 70kV 8080 outrunner (becomes unstable above saturation... the motor is not really capable of higher than 50A).
5) Vd favouring circle limiter implementation that may be useful for some situations, extreme speed x current x inductance or extreme field weakening.
6) Support for TLE5012b absolute encoder in synchronous PWM mode (up to 20kHz PWM).

Depending on then options compiled, PWM frequency runs up to approximately:
90-100kHz on F405 targets
40kHz on F401 and L431 targets
Not tested recently above 25kHz on F303, probably still runs mid 30s...

Preferred uC chips are now F405, L431 and F401. F303 became quite unavailable, and external opamps became very available and cheap, so there is no longer much motivation to use the F303.
STM targets now support single ADC, with no noticeable loss of performance; while synchronous ADC readings are great, in reality the F4 and L4 ADCs run at 2MHz+so 3 current readings are all sampled within 1us of each other, so the difference is negligible.

This definitely now qualifies as high performance motor control. Work continues, hopefully with contributions from Netzpfuscher on the serial interface being merged soon, at which point this is a preferable option for traction applications.
 
mxlemming said:
KAUDIO said:
Great project, can MESC Tool be used? :bigthumb: :bigthumb:


I'm not planning on open sourcing the be hardware since no one ever built the original one... The reality send to be that people consider a few hundred dollars for an of the shelf controller a good value investment on their time, and those who want to build one tend to want to design their own.

its sad that you decided against open sourcing the hardware especially the power board. Even if people did not build the board because lack of funds or semiconductor shortage , Later someone will sure build it or use the ideas in their own designs. It has been a pleasure reading through this post and see the progress since V0.5. the new board with 12 mosfets look impressive. my main interest is academic since i have never been able to make gate drive signals look this nice with to-247 and after reading this post i am convinced to move into Surface mount devices.

if you will not share the pcb . would you share some of your experience ?
1. the 4-layer stack up ? middle layers are GND ? there are many opinions about putting GND planes under the switching node . Some app notes claim you shouldn't since it will inject noise into GND . others say it acts as shield and reduce noise.

2. when more mosfets lets say 2 or 3 per leg are used, the loop is no longer tight, does the gate drive signals still look and behave the same as 1 mosfet per leg?

3.did you measure or deduce the thermal resistance from mosfet to sink ? the bottom layer is covered with solder mask or bare copper ? how do provide isolation between board and sink will still moving heat . this is a topic on its own but it is very interesting to see in real life how many watts continuous can the mosfet dissipate in this configuration.

4. from the picture you seem to have made the bulk caps on separate PCB right ? why ? how did you connect it to pcb ?

5. you seem to have put gate drivers on separate board, does this have a penalty in terms on layout, noise and performance ?

The only input I have is in one of the posts you were taking about putting a copper inlay under mosfet but JLCpcb doesnot support this kind of via . however there are other types of vias like plugged via ( epoxy or thermally conductive resin) this is mainly used for via in pad with BGA ic's . did you consider this kind of via , it must have better thermals and the advantage of not letting solder enter the via and make bulges on the other bottom side. hope this helps
cheers
 
SammyMc said:
mxlemming said:
I'm not planning on open sourcing the be hardware since no one ever built the original one... The reality send to be that people consider a few hundred dollars for an of the shelf controller a good value investment on their time, and those who want to build one tend to want to design their own.

its sad that you decided against open sourcing the hardware especially the power board. Even if people did not build the board because lack of funds or semiconductor shortage , Later someone will sure build it or use the ideas in their own designs. It has been a pleasure reading through this post and see the progress since V0.5. the new board with 12 mosfets look impressive. my main interest is academic since i have never been able to make gate drive signals look this nice with to-247 and after reading this post i am convinced to move into Surface mount devices.

if you will not share the pcb . would you share some of your experience ?
1. the 4-layer stack up ? middle layers are GND ? there are many opinions about putting GND planes under the switching node . Some app notes claim you shouldn't since it will inject noise into GND . others say it acts as shield and reduce noise.

2. when more mosfets lets say 2 or 3 per leg are used, the loop is no longer tight, does the gate drive signals still look and behave the same as 1 mosfet per leg?

3.did you measure or deduce the thermal resistance from mosfet to sink ? the bottom layer is covered with solder mask or bare copper ? how do provide isolation between board and sink will still moving heat . this is a topic on its own but it is very interesting to see in real life how many watts continuous can the mosfet dissipate in this configuration.

4. from the picture you seem to have made the bulk caps on separate PCB right ? why ? how did you connect it to pcb ?

5. you seem to have put gate drivers on separate board, does this have a penalty in terms on layout, noise and performance ?

The only input I have is in one of the posts you were taking about putting a copper inlay under MOSFET but JLCpcb doesnot support this kind of via . however there are other types of vias like plugged via ( epoxy or thermally conductive resin) this is mainly used for via in pad with BGA ic's . did you consider this kind of via , it must have better thermals and the advantage of not letting solder enter the via and make bulges on the other bottom side. hope this helps
cheers

I am not hugely averse to sharing this design, there are just a few things that have been putting me off, in particular other "open source" projects that are open source in name only on this forum. I have shared an awful lot of stuff which has gone from "how do I do this at the start of this project" to really quite state of the art stuff I have not seen published open source elsewhere, like the observers, HFI, overmodulation etc. I will do a more detailed write up on this board and another GaN board I am working on in the near future, but to your questions...

I always use the stackup on logic boards:
Signal
Ground
Power (3v3/12/whatever I need as planes)
Signal.

This is not the only viable way, but you need to understand how inductances are actually created and how they are overcome, that is, there is a magnetic field around the trace. If you have a ground plane under it, that plane creates equal and opposite eddie currents that counteract said field. If you have a 3V3 plane... the same thing happens. A ground plane is slightly better since it allows the return current to flow through it, but if that ground plane is simple the next plane... the improvement is very marginal. It probably matter for hundreds of MHz data buses, but for this is is not important. Some prefer two inner ground planes, and in terms of return traces, they are probably right, but this comes at the expense of less robust power planes and an increased requirement for local decoupling of every. single. chip.

On the single board power board, I used
signal/switchnode/ground,
ground,
power,
switchnode+power +signal.

It is important to keep a plane underneath the switch node since this blocks the magnetic field with counteracting eddie currents, and absorbs the high frequency switching energy. It is a very powerful damper, and I did not understand this phenomena until quite a lot later in the project.

The IMS board is a single layer. The aluminium is isolated, but it still blocks all eddie currents so the switching performance is surprisingly good. Far far better than a through hole stage. Will post shots later.

The 4 layer board on switching far outperforms the IMS. The IMS far outperforms on thermals.

I have not experienced problems with noise on either of these schemes. I think the injection of noise might be an issue, but my experience so far has been that ground loops are usually to blame where there is an issue, that is, you have arranged your stage in such a way that the high current causes substantial resistive/inductive bounce under your analog/logic.

2) With multiple FETs, you lose something in the tightness of the loop, but gain in the width of traces and paralelling of FET inherent inductance, so overall it's much the same.

3) I have not done much work on the max power with this board on a thermal basis, honestly I don't push them very hard thermally. I loaded it onto my bike and ran it at 120A for the single board and 200 for the double. I reach voltage limited max speed in such a time that they never really get hot, even with just 0.5mm thermal interface material and a small heatsink. The 12 FET board barely gets warm to touch.

4) Seperate PCB for the bulk caps on the IMS because SMT caps tend to be small and expensive. PCBs from JLC are virtually free. They are connected with dirty cheap aliexpress 2.54mm mitch SMT pin headers.

5) No. Gate drivers on a seperate board are fine. I route all the gate driver lines as differential pairs, which keeps the inductance of them low. The other key point is that the gate traces are leaving the power board perpendicular to it within 1cm of the MOS gates. This way, the inductive coupling is kept very low.


Your other ideas are very valid, but to date,I have been making sure all my designs are incredibly cheap to produce. Plugged vias, filled vias, copper inlay... are currently all expensive so I am not using them for now. I made a variant of the original board with 8.2mm holes under the FET drains which I could put copper washers in, but have not had a need for it yet... I personally think that a well designed copper inlay board is probably the ultimate you could possibly have for overall performance with currently available silicon MOS.

You will struggle to get great switching on through hole parts, they have innate large inductance, and the manufacturers are not progressing the silicon inside them as much because the world has moved on from through hole FETs over the last 5 years or so. There are a lot of old designs that are still made that use them, and people still like them because they are easy to DIY and cheap, but SMT is simply better. TO247 FETs are especially high inductance. They are great at handling high power because you can strap them to large lumps of metal easily, but for the same space for two TO247, you could have 3 TO220 (similar power and significantly lower inductance) or 3 TOLL (would probably crush the TO247).

That said, check out the MP2 ESC (CCC?) Badgineer designed, which has pretty good switching but requires some tuning and snubbers (TBC how it fairs with VESC and actual use, but there a bunch of people in europe that are having a go right now) and Mihai's 18 FET board for his light aircraft. He made an extraordinary effort on that and got very good results and published all the knowledge and learning.
 
thanks for taking the time to answer. I do understand your point about not opening the project i hope it will turn out some profit for you if you start selling these . you have shared quite a lot of info

I didnot know that the new boards are IMS . which is why my question about bulk caps is stupid :mrgreen:
its good to know that using standard 2.54mm headers for the bulk capacitor boards works fine (inducance wise)

I am surprised that you test the boards by feeling if they got warm, I am sure you know you add a 0805 temp sensor and make the maximum current limit change according to board temperature. Just my 2 cents

best regards
 
SammyMc said:
thanks for taking the time to answer. I do understand your point about not opening the project i hope it will turn out some profit for you if you start selling these . you have shared quite a lot of info

I didnot know that the new boards are IMS . which is why my question about bulk caps is stupid :mrgreen:
its good to know that using standard 2.54mm headers for the bulk capacitor boards works fine (inducance wise)

I am surprised that you test the boards by feeling if they got warm, I am sure you know you add a 0805 temp sensor and make the maximum current limit change according to board temperature. Just my 2 cents

best regards

I have started another thread to document the new control stages, you can ask questions there.
https://endless-sphere.com/forums/viewtopic.php?f=30&t=118614&p=1742892#p1742892
 
This evening, I thought I would have a go at an old method... sensorless BLDC.
https://github.com/davidmolony/MESC_Firmware/blob/2a8c663dac63299263cf08f193d1c42a6509dd8d/MESC_Common/Src/MESCfoc.c#L2669

I struggled with this in the past, but now I am a lot better at code and electronics and so on... so tonight it went better.

The concept for this is quite different to most BLDC which uses phase sensing and threshold on the undriven phase, instead it uses the driven phase only.

I integrate the V-RI (similar to in FOC) and when a threshold is reached, commute to the next BLDC step.

This has the disadvantage that if the threshold is too high it loses synch, but if the threshold is correct, it commutes nicely. It also means that bi-directional rotation is very easy, I simply tell it to commute the other direction.

I do not plan on taking this any further, it is less good than FOC. Even though it is commuting exactly correctly, it is noisy and screechy by comparison.
https://youtube.com/shorts/SSSD_56PhzU
[youtube]SSSD_56PhzU[/youtube]

With the correct settings and a sensible motor (like the one in the video) it can push pretty big torque. Doesn't lose synch or step out. Free run current a tiny bit (2-3% or so) higher than FOC, and the same max speed for the same modulation.
 
Back
Top