ESC Tech: Field Oriented Control

Поделиться
HTML-код

Комментарии • 47

  • @MantisRay861
    @MantisRay861 4 года назад

    I have to subscribe just because you said ‘if there’s a difference, my equipment is not sensitive enough to pick it up’. A reminder to look at everything that could be a variable in a test, equipment being a big one!

  • @oadka
    @oadka 4 года назад

    One of the few detailed videos on FOC on youtube!Subscribed!

  • @99395985h
    @99395985h 7 лет назад +1

    Beautiful explanation ! This is perfect. I've been raving about this since I found out and this is definitely the future of escs.
    I too feel bad that you don't have more subs and views. Keep it up ! You'll definitely get a bigger following soon.

  • @ThanhTran-dq8on
    @ThanhTran-dq8on 4 года назад

    Thanks for the vid. Have been always wondering why these FOC controllers are more expensive than those RC ESCs, and now I have the answer

  • @DaveDDD
    @DaveDDD 7 лет назад +1

    So awesome! I love learning about this kind of stuff. Thank you so much for making this, I look forward to learning more from you in the future. Subbed

  • @qcsupport2594
    @qcsupport2594 7 лет назад +4

    Wow cutting edge! Really cool results too with the smooth startup and no torque ripple noise, and impervious to desync when stalled. I *have* to believe there's measurable efficiency gains to be had, given that FOC applies force at the optimal angle all the time. If it's in the literature for other AC motor applications and it's even 5%, I hope you'll keep chasing those PIDs.
    Gotta say it makes me cry to see you drop gems like this that only 50 people watch and maybe 2 even begin to understand. But keep it up!

    • @PuttingOnTheFoil
      @PuttingOnTheFoil 7 лет назад

      Do you think this sort of controller can be implemented on a small enough space for quadcopters?

    • @99395985h
      @99395985h 7 лет назад

      Definitely. the Kiss32 already does it. Blheli_32 might follow

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      Kiss does? I thought that might be something they were preparing for in their new upcoming hardware generation, but I don't remember the current one having more than one current shunt. I don't follow them super closely. And if BL32 is going to support it it's going to require all new hardware as well for the same reason, it's not something you can just drop on as a software update on a trapezoidal hardware design. Only ones on the market that I know about are a DJI one and an XRotor HV esc. Both are meant to be paired with one specific motor. The TI reference design is a quad ESC form factor, but on like a 450 or 650 sized machine.

    • @99395985h
      @99395985h 7 лет назад

      The new Kiss 32a esc does sinusoidal and trapezoidal both, like some sort of hybrid design.
      I looked at pictures of the new ESC and I can't seem to find the two shunts either ? :P
      kiss.flyduino.net/the-kiss-experience/kiss-esc32a-32bit-electronic-speed-controller/
      I understand blheli_32 will have to make new hardware but that doesn't seem too hard.

    • @SiieeFPV
      @SiieeFPV  7 лет назад +1

      ahh, you can do sinusoidal control without FOC, that's probably what they've got going on.

  • @Capturing-Memories
    @Capturing-Memories 4 года назад

    How can I use this with a 30cm diameter out-runner pancake motor with 120 poles that is going to be designed to run in the range of 40-80 RPM, The goal here is to achieve a very steady angular/linear speed once selected, The application is a turntable record player. What method of angle tracking and speed adjustment is better for this application? a hi resolution encoder or back EMF circuit? I would very appreciate your help on the electrical part.

  • @sudhansumtripathy
    @sudhansumtripathy 6 лет назад

    hi , can we use sprc 128 or 179 and if i want to put the equation which part of the program to put

  • @franklinbrown7389
    @franklinbrown7389 6 лет назад

    I would like to use small BLDC motor for fans in my house. The problem is they are very noisy. I would like to use FOC for very efficient low power (3-4 watts) low noise fans. How did you get this esc from Ti? They are not for sale. Also how did you tune the motor to work best with FOC?

    • @SiieeFPV
      @SiieeFPV  6 лет назад

      There isn't a ready made ESC, from TI, you want something like a BOOSTXL-DRV8323RS development board. You'll have to write your own firmware as well. Best place to start is the TI InstaSpin documentation, they step through the development and tuning process. If you're looking for an esc that's ready to go you probably want something more like a VESC

  • @antecboy
    @antecboy 6 лет назад

    Is the motor sensored? I can't quite figure it out from the clip with the motor due it being attached to your load cell for static thrust measurements.
    I mean, if it's sensorless, then it is desyncing if you stop the rotor, because it can't read any BEMF voltage if the rotor isn't moving. It just reverts to simple startup logic to try get the rotor moving again (as evident with the jerking when you stopped the rotor). With the load being a propeller, it's load to the motor is pretty non-existential at low speeds so you can try get the rotor back moving with low currents and then start tracking it's position again, so it works in the flying RC use. But anything needing more torque to get moving might result in some jerkiness from a zero speed start-up.
    I'm just asking because I want to know I understood the video correctly.
    As a clarification. I have a RC and embedded systems background and more recently I have moved into electric skateboards with the aforementioned problem with sensorless FOC and zero-speed startups. The de facto in the esk8 community at the moment is the VESC, which is an open source FOC capable motor controller developed by Benjamin Vedder (www.vesc-project.com/).

    • @SiieeFPV
      @SiieeFPV  6 лет назад +1

      it's not sensored, just a regular off the shelf MT2204. This control doesn't use zero crossing at all, in fact all 3 phases are driven during all stages of commutation so sensing BEMF zero crossing is impossible. It works by sensing the phase current and using that to estimate the BEMF voltage directly. I've seen demos of similar escs not only providing zero speed torque but position control on regular hobby motors as well. The Ti system relies on it's FAST estimator to track rotor position, and I think it only needs to go through a startup sequence on it's first zero speed startup. Their default startup is forceAngle, which assumes a zero rotor angle and attempts to move a pre-determined delta, the FAST estimator is able to begin sensing the actual rotor position within one electrical cycle.
      When you're in control of the motor and coming to a stop you can park the rotor and the estimator won't need to go through a startup again. The jerking you're seeing from me stopping it is probably just it failing to complete it's forceAngle mode and trying again. It's also really likely that I just had a module completely misconfigured.
      I know of the VESC, but I'm not really familiar with its firmware, you're probably in a better position to answer technical questions than I am.

    • @antecboy
      @antecboy 6 лет назад

      I have tested the TI's piccolo InstaSPIN-FOC development boards, so I have also done some testing with their firmware. The FAST could track/estimate the rotor position pretty well, if you were doing a direction change with short enough time crossing the zero-speed area, but if you slowed the transition enough it would had to resort back to calling forceAngle() to try to get the rotor moving again.
      It also samples both phase currents and voltages (depending on configuration) every PWM cycle in the non-driven part of the center-aligned pulses, so it is still measuring phase voltages in the code and using those to estimate the rotor position, it then corrects the next PWM cycles current PWMs to try to get them to 90 degree electrical angle to the rotor position.
      "When you're in control of the motor and coming to a stop you can park the rotor and the estimator won't need to go through a startup again. The jerking you're seeing from me stopping it is probably just it failing to complete it's forceAngle mode and trying again"
      I believe my point is still correct. The motor was running when you stopped it and it then reverted back to forceAngle, hence I would call it a desync for that. If it still knew the angle of the rotor it wouldn't jerk, it would provide steady torque.
      I'm not personally too familiar with the VESC's firmware myself either, but I do believe it's using Vedder's own rotor position estimator code. I guess I personally am a bit more of a hardware designer person, but I do write my own code for simpler applications.

    • @SiieeFPV
      @SiieeFPV  6 лет назад

      I found the demo I was thinking of, wish I could remember the context
      ruclips.net/video/1u1OoLLYefY/видео.html
      I suppose even then he never really sits at 0 rpm for any length of time.
      probably some of the jerking isn't just that it's stalled, the startup is moving the rotor but my hand is also moving it back, so even as the estimator gets to a point where it knows its position I'm breaking that relationship right away again, maybe it would have behaved better if it was a more fixed load that was being applied and not cyclic. If it's still able to sense the rotor position with low current you can avoid a big lurch with a low power startup as long as you can then control the rotor position right away. I'm not really sure how that would work.

    • @antecboy
      @antecboy 6 лет назад

      In the linked demo, he is using a separate observer for low/zero speed operation, which is doing some "magic" (AKA, I don't know) to track the motor position even at zero speed, because there is no jerking when he is moving the propeller by hand to another position, it's seems to be pretty evenly applying torque against his hand. He seems/might be driving the motor even at zero speed, as you can hear a lot of whining sound, which -might- indicate the motor windings being energized and he is measuring some kind of feedback from the phases with a certain stimulus signal to them, which would help the observer figure out the rotor position.
      I looked around for forceAngle questions in the TI forum in relation to bigger loads and zero-speed startups and the following came up.
      e2e.ti.com/support/microcontrollers/c2000/f/902/p/437542/1571080
      "in your skateboard are you trying to control a single motor, or two motors in // ?
      both will be tough sensorless, the // is extremely challenging. for a single motor it can be done, but you won't be able to apply full torque smoothly at start. for this type of application I would suggest hall sensors or an encoder."
      forceAngle() is called if I remember correctly, when the rotor is deemed stalled or below certain rotation speed. And it is just a simple "brute-force" way to try to get the motor rotating again.
      It would seem that there is a limit to the ability of the FAST observer to track the rotor position in the very-low/zero-speed range. But in the multirotor application, as it is in this case, this might not pose lot of problems, due to the propellers being light loads at zero speeds, so the forceAngle can get the rotor moving again easily with low currents.

    • @SiieeFPV
      @SiieeFPV  6 лет назад

      Ya, stalling in a multirotor isn't a big problem, and the extra torque at very low speeds with FOC would really eliminate the big source of idle stalling that we have in the first place.
      Do you know what ESC is used in the Meepo board? I would have thought it some VESC derivative. It seems quite happy to sit at zero speed on the brakes (just sitting in regenerative mode I'm sure, the motor is stiff but far from locked) and does give a nice smooth start from there as long as you're gentle on the throttle. Though I suppose it's possible they're using sensored motors too.

  • @emiledestructeur
    @emiledestructeur 5 лет назад +1

    Hey, I've been reading about FOC a lot lately and I would like to experiment it for myself. I'm currently hoovering TI's page with all the info about their launchpads and motor drives. So here's my question, say I would buy their motor control microprocessor, what motor should I get? Does it matter? I mean, should I just get some cheap 3 phase bldc from aliexpress and experiment with the kit on it or are there some motors that are not compatible with texas instrument's kit like the one you used? For what its worth, my end goal here is to control the motor of an ebike without having to buy bullshit 800$ controllers. TY if you awnser :)

  • @WarmPudgy
    @WarmPudgy 7 лет назад

    Do the stators only ever pull the magnets? Is there a method that can push and pull at the same time?
    I'm assuming this will require a specially wound stator and special controller as well

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      I don't think so, you only have 3 phases, in order to have different poles on adjacent coils the center tap would need to be both + and - voltage at the same time. Closest I can think of is a thing called field weakening in FOC where you dump current into the motor that counteracts the magnetic flux in the airgap from the rotor to allow it to run at even higher speeds.

    • @WarmPudgy
      @WarmPudgy 7 лет назад

      say we have a stator with 4 poles, and 4 magnets on the bell. couldnt we theoretically make that work?

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      a 3 phase motor will always have 3 phases, and the number of stator coils would be a multiple of 3. You could do a different number of phases but then you can't drive it with a 3 phase controller.

  • @vijayrajgohil7463
    @vijayrajgohil7463 6 лет назад

    @SiieeFPV hii...I wanted to know which launch pad you have used for the FOC control of The Motor..
    Please do reply...

    • @SiieeFPV
      @SiieeFPV  6 лет назад

      I used a 595-LAUNCHXL-F28069M, but there are several picolo dev boards in the line that will work the same

  • @Rohmatnurbai
    @Rohmatnurbai 5 лет назад

    can i ask the code ?

  • @chrisdrake4692
    @chrisdrake4692 4 года назад

    @2:30 - you're talking backwards I think? magnets are stronger the *closer* they are, so you get MORE (not less) torque as something approaches the thing pulling it. You're also neglecting to point out that the other active phase is repelling at the same time, which semi-cancels that out - so the midpoint is actually the lowest torque (assuming the power is turned off before the magnet fully passes the coil midpoint.)

    • @chaitanyasindagi1237
      @chaitanyasindagi1237 4 года назад

      Well, yes, but not really. we also have angles and vectors involved. When the angle is 90deg the torque is maximum because sin(90) is maximum. If you go through and do the dot product of the force vectors you'll see where that's coming from. A simple way to understand this is to think about the extreme case when the magnetic field and rotor line up perfectly. Now there's no force on the rotor at all, it just stays where it is because its fully aligned, the more its misaligned, the harder it'll try and re-align

    • @chrisdrake4692
      @chrisdrake4692 4 года назад

      @@chaitanyasindagi1237 sin(90) is only "maximum" if you ignore the distance between the coil and magnets and the exponential increase in that force as they get closer. Imagine you try to stretch a huge rubber band (e.g. bungee cord) that's connected to the ground by lifting your arm from straight-down, up through 90 degrees, then continue up above your head. As you go past 90 degrees (e.g. 135 degrees), your shoulder will experiences *more* torque than it did at 90 degrees any time the bungee force is 50% or more than it was with less stretch in it (1.5 times sin(45) is > sin(90)) - magnetic strength is *exponential* - depending on your geometry, the force could easily exceed 50%

  • @ZombieSS77
    @ZombieSS77 7 лет назад

    Have you gotten to the later labs and enabled over modulation and field weakening and compared those results? I develop with Instaspin myself and have a small controller for large quadcopters I'm working on. Got R/C and analog throttle sorted out which was a battle for me for a while since I'm not use to this level of C coding. Designing a good power stage is the tricky part of motor controller design. Power electronics is not an easy game.

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      Ya, this is with full overmodulation. Field weakening seems like a really bad choice for our application, dumping extra current in for a little more overspeed doesn't seem like a good tradeoff. And the rated flux for this motor at least is so small to begin with.

    • @ZombieSS77
      @ZombieSS77 7 лет назад

      I'm not sure if FW would be worth it or not. Always fun to experiment and prove it.

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      I may have another look at it once I get my motor dyno sorted out, that would be a better demonstration of it anyway I think.

  • @chrisdrake4692
    @chrisdrake4692 4 года назад

    @3:31 - I'm pretty sure that's wrong - an ESC doesn't supply different voltages, it is nothing more than an ON/OFF switch, which (by using PWM) can vary the amount of time in the "on" state to effectively limit the current.

    • @chaitanyasindagi1237
      @chaitanyasindagi1237 4 года назад

      Yes, technically that is incorrect, it is switching between high and low only, but its doing it very very fast(~20kHz) compared to the output frequency(100Hz). This lets it control the current through motor to be a fairly smooth sinusoidal curve and current after all is what generates the magnetic field

  • @izzatsd7882
    @izzatsd7882 6 лет назад

    Where can I download source code ?

    • @SiieeFPV
      @SiieeFPV  6 лет назад +2

      www.ti.com/tool/motorware

  • @franklinbrown7389
    @franklinbrown7389 6 лет назад +1

    Great video. I’m so much smarter now.

  • @microdronetech8453
    @microdronetech8453 7 лет назад

    I'm not sure how many ESCs are digitally integrating the zero crossing now. TI might even have a patent. I'm not sure. The advantage is much quicker response to changes in load. ruclips.net/user/texasinstruments

    • @SiieeFPV
      @SiieeFPV  7 лет назад

      I'm not exactly sure what you mean. Detecting the zero crossing is fundamental in trapezoidal control, which almost all hobby ESCs use. Do you mean in FOC?