# Ac induction motor control algoritm



## cts_casemod (Aug 23, 2012)

Having finished my AC conversion I can now say that the AC motor isnt the holly grail in terms of efficiency or performance. It is in fact a decent system but requires a very precise control method to achieve maximun efficiency.

At the moment I am working with V/Hz and after having measured power consumption at several different conditions I can say that it is a very efficient motor at higher revs, but using the V/Hz controll algoritm I have great losses at lower speed, when working under low torque conditions

Regeneration isnt exactly getting me huge ammounts of power. In fact I have 40V sag under acceleration and only 10V using regeneration.

What I have:

A V/Hz capable VFD with throttle control

What I need:

A way to controll slip under different operating conditions.
A way to disable the motor when no or little torque is being required. This requires using an encoder to read motor position at any moment, reducing losses associated with the motor operation
Brake like type regeneration, reducing current as the revs aproach zero to make for a smooth deceleration, but keeping a constant slip. 

How to do this?

I would like to start by being able to read the slip and provide the unit with a feedback signal proportional to the speed of the motor. The control board would read the throttle and adjust this slip accordingly as torque was demanded, either positive or negative. If no considerable demand was being requested the motor would be allowed to freewheel, reducing electrical consumption to zero.










I am looking for member developing their own VFD. I seen most are doing a V/Hz control that would be perfect to interface with my circuit and replace the VFD all together.

I am also looking for some more experienced members that can provide some details or personal experiences with control of AC Induction motors and give their opinion about other ways to achieve maximun efficiency


----------



## major (Apr 4, 2008)

Use torque control with closed loop flux vector. All your problems solved.


----------



## Siwastaja (Aug 1, 2012)

major said:


> Use torque control with closed loop flux vector. All your problems solved.


This is similar to saying: "Buy a car, all your problems solved".

If I read the OP correctly, he wants to _do_ the closed loop torque control, and for that purpose, he wants to _understand_ what he is doing. He also wants to get it done.

Exactly the same thing for me. 

"Vector control" scam is funny. A lot of mathematical gibberish, but absolutely no one has been able to show a really deep understanding about the algorithm or answer difficult questions such as "well what does it do?" It seems to be too difficult even for experts.

All descriptions seem to leave the most important steps as black boxes, whereas the trivial mathematical transformations are provided in great detail.

It took weeks to figure out that "flux vector field space super hyper control" only controls voltage and frequency, so all it does is to set some slip and differ from linear V/f by some amount. The key to understand it would lie in finding out: what slip in what conditions, and adjust voltage by how much.

FOC does not, for example, create any fancy secret timings or phase differences, as claimed in some sources.

Also, the claimed open-source vector controls do not exist in usable form. The _projects_ do exist, but there is not enough finished code. Hopefully they do work some day, but before that, we are on our own.

Therefore, we want to understand what's _really_ going on behind the curtains, and for that reason, we need to experiment. It is well possible that there does exist an another algorithm, which is super simple, but at least under certain conditions, performs _exactly_ the same as more complex FOC implementations, or slightly worse, or slightly better.

For reference, see my recent implementation of slip control. This has been verified in simulation in basic test cases and will be installed in our test car as soon as possible: http://pastebin.com/6GCAfSgm . The algorithm keeps slip at a fixed setpoint by reading an encoder and changing the output frequency accordingly. Variation from linear V/f is used to drive current to the motor (give torque). When maximum V is reached, slip is increased instead, because it will be the only way to increase current in that case. It would be optimal if the pack voltage would be high enough so that there wouldn't be need for that.

So, low torque commands result in normal slip with reduced voltage to keep slip optimal, but magnetization current low and hence less losses and good power factor. Compare this to V/f, where you would drive a lot of current to the motor at practically zero slip, only to be returned to the capacitors. With zero torque, the voltage command becomes 0. No need for any separate coasting kludges. Regen simply inverts the slip direction. This is not a problem when the torque command is filtered a bit so that it will go through zero point. However, the code does include a kludge to give torque at near zero speeds. It's a simple offset value to the measured RPM.

Also, the possibility of higher slip under higher load compared to open-loop V/f is eliminated; unless really needed. High slip situation can draw a lot of current and give diminishing returns. This can easily happen with simple V/f without even noticing it. It's actually quite similar to driving a series DC motor with too low RPM and too much load; it can give a lot of torque but with lower efficiency.

The algorithm couldn't be much simpler; the pseudocode is a few lines---but the code is somewhat obfuscated because of the nature of VHDL as a language, not allowing nice one-liners. Sorry for that.


----------



## Siwastaja (Aug 1, 2012)

cts_casemod said:


>


I might be wrong, but I'm under assumption that this image really depicts a motor that is to be run from a fixed frequency, i.e. directly off the wall, or from V/f inverter. I.e., you don't want to use that "max torque slip" to generate the torque needed, if you have the option of adjusting the voltage separately.

This is why I decided to base the algorithm on increasing the voltage. As we all know, increasing voltage does indeed give increase in torque and vice versa. This is also known as "field weakening" or "field strengthening"...

So, keep slip constant: increase voltage -> more torque is produced -> motor tries to decrease the slip by speeding up -> the encoder catches this, and frequency is increased alongside, keeping the slip under tight control.

However, maybe some slight feed-forward for slip from the torque command (i.e., increase the slip a bit too, in addition to increasing voltage) would be appropriate in order to make the system response more quickly and to avoid the slight lag in slip control due to limited number of encoder slots, which could lead to the temporary decrease of the slip under heavy acceleration.


----------



## subcooledheatpump (Mar 5, 2012)

Yeah just using V/Hz will just make the motor hot at low speeds and make the inverter unhappy. Been there before. I also tried open loop vector control... that cost me an inverter. 

I wish I could be of more help but all I can tell you is that I've had the best luck with DTC. The torque produced is less, not a lot less but less, but the efficiency, control accuracy, and most important, range has increased. My motor doesn't get hot at low speeds since obviously the flux or magnetizing current is adjusted in real-time, so I'm not over or under fluxing and low speeds. 

It also pretty much works like Siwastaja suggests it should, keeping a constant speed with speed control adjusts the current down to a minimum if the vehicle is under low load, just rolling. If the accelerator is pressed it commands more voltage, higher frequency and thus more current. The same happens if say for instance the vehicle starts going up a hill at constant speed. 

If I had the time and money, I would invest in making my own DTC based controller. I'm afraid I am lacking in knowledge on the subject as well, like Siwastaja said, everything I read about DTC or vector control seems either confusing or lacking. I'll keep checking back with this thread. Thanks for posting and good luck


----------



## major (Apr 4, 2008)

Siwastaja said:


> This is similar to saying: "Buy a car, all your problems solved".


Has worked for me  Nice analogy. If your problem is getting from A to B, the car solves it. You don't have to completely understand how to build the car, just how to use it. And if you want to build the car, you need to understand it and then wouldn't you benefit from having used it?


----------



## cts_casemod (Aug 23, 2012)

Siwastaja said:


> I might be wrong, but I'm under assumption that this image really depicts a motor that is to be run from a fixed frequency, i.e. directly off the wall, or from V/f inverter. I.e., you don't want to use that "max torque slip" to generate the torque needed, if you have the option of adjusting the voltage separately.
> 
> This is why I decided to base the algorithm on increasing the voltage. As we all know, increasing voltage does indeed give increase in torque and vice versa. This is also known as "field weakening" or "field strengthening"...
> 
> ...



That image just relates torque with slip at a given percentage. This should be more or less linear during the operating range of the motor at any frequency, the more slip, the higher the torque and current, but if you increase slip too much you have a large torque at the expense of a large current AND a large decrease in speed, obviously making the motor less efficient. It is also dependent on a particular motor, thats why some controllers are linked to a particular motor.

I wish buying a drive with DTC would solve my issues. In fact for those that folowed my conversion my first drive had sensorless torque control and I didnt like it. Accuracy was not the best at lower speeds, I did sometimes lost sync and other issues the newer drive solved. Also in some dangerous circunstances where you might need all the torque you can get you are not really worried with the efficiency. Safety always comes first, so its up to the driver to decide what to have, either economy or acceleration.

The other problem is the dificulty finding a drive that supports torque vector AND that I am able to interface with an encoder. Most only support sensorless vector controll. So even on this case I would benefit from having external circuitry to be able to interface to my own sensor and make my own settings. Another issue is the throttle. I can save some money by using the car throttle, but on many cases it isnt linear, so I need to define minimum and maximun and translate this into something the drive can understand.

So I do believe my drive with an attached encoder and interface citrcuitry would perform the same or better than a drive with sensorless vector and quite similar to a DTC drive with encoder input at a fraction of the price. The circuit would also benefit from external circuitry not present on other drives like analog outputs for current, voltage, custom throttle, brake lights and custom regeneration options.

As I said on another topic



cts_casemod said:


> The advice I posted was generic, not necessarily related to the issues on my build.
> 
> In fact, I can work on closed loop using V/Hz with slip control. Sensorless vector mode is just a fancy way to be in closed loop using no external encoder, by the means of two current transducers to check current and rotor speed. This is generally cheaper to implement and requires no extra wiring, but requires a unit with a powerfull processor to make changes quickly enought for the unit to be responsive.
> 
> By controlling the slip of the motor I can control the torque and acceleration, hence now having a torque mode, the point is how much harder or more expensive the controller ends up being. On my case I will require external circuitry, for those that buy an already made controller it simply means more expensive.


For many of us an electric conversion is not only a way to save money, but also fully understanding what we are doing as without this the project will end up being a failure. My conversion so far as costed about as much as a motor and controller and I can say I am happy with the results and at this point I just want to refine them, since I would like to project a controller capable of something arround 60 to 90BHP.

It is quite sad to see that most open source conversions end up being cancelled after many burnt IGBTs and other costs that make the project not viable. It is also sad that some of the sucessefull ones end up being unique due to a given unit used. The whole point in my conversion is to start with some generic interface that all units can work with regardless of brand and be able to upgrade that and use it on a different unit at a later time, if required.

I obviously have limited time and resources for this, including all the time I use to document things I do, so it would be nice if we all could make a bit and contribute to a common goal. For those that believe buying an already made unit and just using it as is please understand that me and other members have a different way of thinking things and want to be able to interact with the hardware and change settings, not just being able to use what a manufacturer has decided to use

As with the slip control, by the sound my motor produces I can calculate how much slip I am using and adjust the throttle accordingly, however due to the large difference in each step the slip does vary a bit between set point, regeneration and acceleration. Same applies to driving the motor with zero load. Theorically it would not use any current, however in real terms, since a motor is an inductor and a resistor, the resistive part would be always draining some current, proportionally to the supply voltage that is simply being lost, as the inductive currents are canceled since the slip is zero, same with a transformer operating at zero load, which is in fact how an induction motor works.


----------



## gunnarhs (Apr 24, 2012)

cts_casemod said:


> What I need:
> 
> A way to controll slip under different operating conditions.
> 
> ...


1)It seems as you have already implemented the open loop V/f.

2) The next step would be using the prevoius mentioned slip control as mentioned by members here before. This theme was disussed in prevoius threads, here is one of my post with code (look at the V/f for induction motors) http://www.diyelectriccar.com/forums/showthread.php?p=322996#post322996

The problem with the torque-control by slip is high current ripple but you can easely make it work under any voltage by adjusting the slip(-frequency) and voltage as far your system allows. 
This is usually done with (load-)speed and voltage feedback.
DTC (and other vector control) gives you a motor -model wich measures phase currents and calculates stator and rotor current as feedback for your model. One current represents torque , the other speed. meaning by keeping one component constant, you can control torque/speed seperately (the ideal model). The problem with DTC (or other vector control) is that it works usually in a limited voltage region with predefined motor paraemeters.
And case of the induction motor, the stator and rotor components are corelated and you need to keep the slip constant to make the drive efficient. This is not possible if your voltage is too low and/or the load is very high. Also fixed slip is not feasable when you want to "overspeed" for field-weakening.

3) You can extend your V/f by feedback of current like DTC (in addition to speed and V). By this you have additional control of the current and you implement the voltage by using for example a Space-Vector -Modulation (you can also use other) for switching the phase-voltages. This is shown in the code in the post in the link above. For more exact determination you could use an encoder which supplies both speed AND position.


----------



## cts_casemod (Aug 23, 2012)

I would like to avoid changing the power section for now. When I do I might create an inverter from scratch. For now I only want an interface reading driver instructions and sensor feedback and instructing the inverter on what it can do which is V/Hz, but this would obviously be closed loop.

DTC as it has been said is a closed box and each manufacturer does it in a different way with different features. Unless the motor and inverter are made for each other and there is an input from an encoder the drive can only guess and do the best to sllit out what thinks to be the best way to control the motor, so the efficiency will never be 100%, but notice that on my system i am also using encoder feedback which should at least make it equiparable to a good quality drive working in sensorless torque vector, but with custom options industrial drives dont have/need.
Also changing the voltage as required would help the performance, however that option is not available with my current hardware and even with some drives that suppoort DTC/FOC is only changed manually and not dinamically i have seen few that do more than a predefined curve for torque boost and constant/variable torque models.

As with encoder with RPM and absolute position... You are not the first one to tell me that. I am curious to know what can be done in an induction motor knowing the exact position of the rotor given that the working magnetic field is a sum of both the stator and the rotor magnetic vectors and not exactly defined as on a BLDC. 

Sure with this you would be able to have a syncronisation of the slip, but if slip is 0 torque also equals 0. Even in low RPM what the inverter can do is either increase the slip or increase the voltage to make sure the torque is enough and smooth. Since the magnetic field must be rotating in order to induce currents in the rotor I see no reason to know the absolute shaft position other than in applications where presise shaft position must be know, which is not the case a vehicle. But feel free to correct me if I am missing something obvious


----------



## Brute Force (Aug 28, 2010)

The encoder gives you a direct measurement of the motor rotational velocity. This allows your controller to calculate the necessary field rotation frequency needed to produce a given slip speed.


----------



## Arlo (Dec 27, 2009)

Subscribed.


----------



## gunnarhs (Apr 24, 2012)

Sorry I might have misunderstood your intention, I was under the impression that you had the possibility of modifying the software- algorithm. It is impossible to achieve good efficiency for a AC-induction drive without full software control (but manual gearing can help)



cts_casemod said:


> ... Also changing the voltage as required would help the performance, however that option is not available with my current hardware and even with some drives that support DTC/FOC is only changed manually and not dinamically i have seen few that do more than a predefined curve for torque boost and constant/variable torque models.


Changing the voltage is neccessary to be able to modify V/f even with quite primitve control. Most standard inverters do not have the possibilities to change that much (use constant V/f) which makes them limited for usage in the vehicle. This is usually not restricted by the hardware but the software (but hardware limits of course the currents/voltage). If you have not the full possibility of voltage setting you must use manulal gearing or some kind of ATM.



> As with encoder with RPM and absolute position... You are not the first one to tell me that. I am curious to know what can be done in an induction motor knowing the exact position of the rotor given that the working magnetic field is a sum of both the stator and the rotor magnetic vectors and not exactly defined as on a BLDC.


As another member has pointed out you can calculate the difference between the angle of your field components and the actual rotor position. But without also measuring the currents and calculating the field components this is not necessary as you point out, you can estimate it also from difference in set frequency and measured frequency of load (aka slip).



> Since the magnetic field must be rotating in order to induce currents in the rotor I see no reason to know the absolute shaft position other than in applications where presise shaft position must be know, which is not the case a vehicle. But feel free to correct me if I am missing something obvious


Well as you point out you do not want to have a situtation where 
you have no slip during load (locked rotor). Lets put it that way that you use estimation to avoid position you dont want to get into.


----------



## cts_casemod (Aug 23, 2012)

gunnarhs said:


> Sorry I might have misunderstood your intention, I was under the impression that you had the possibility of modifying the software- algorithm. It is impossible to achieve good efficiency for a AC-induction drive without full software control (but manual gearing can help).


The crude way i am achieving that now is by using aceleration delay timers to control torque and inrush current. In fact, adding 1.5 seconds to go from zero to 60 to the original 4.5 (total 6 seconds) did improve my economy a lot. The issue now is that the car is quite slow from 0 to 10mph, goes ok from 10 to 25 and from 25 on the unit starts reducing the current. It does this from 90 to 120Hz which is not desirable at all.

For the regeneration I am forced to use a low value like 3 seconds, which makes stoping quite abrupt, however anything else and the unit slows down too slowly and I end up fighting the motor when I try to do an emergency stop.

So yes, I may in fact replace the VFD control unit with a custom made "brain" 



gunnarhs said:


> Changing the voltage is neccessary to be able to modify V/f even with quite primitve control. Most standard inverters do not have the possibilities to change that much (use constant V/f) which makes them limited for usage in the vehicle. This is usually not restricted by the hardware but the software (but hardware limits of course the currents/voltage). If you have not the full possibility of voltage setting you must use manulal gearing or some kind of ATM.


Not really, but it does help to a large extent on both fuel economy and performance to be able to boost the voltage for aceleration and reduce to keep speed, reducing resistive losses on the motor.

Due to the timers I use for aceleration its quite impossible to change gears. 6 seconds aceleration on first gear looks like someone is pushing the car from behind and on last gears uses too much inrush current. Changing gears without coasting is also a bit hard. The point is to concentrate on the traffic not on syncing the motor, hence the need for an encoder feedback - reduce the acceleration/coast times to 0 and control the torque/slip as you would naturally do on a petrol engine. Further improvements related to voltage will come later.



gunnarhs said:


> As another member has pointed out you can calculate the difference between the angle of your field components and the actual rotor position. But without also measuring the currents and calculating the field components this is not necessary as you point out, you can estimate it also from difference in set frequency and measured frequency of load (aka slip).


First things first. Unless I am looking into make a sensorless aproach I believe the encoder and ONE current sensor will provide all the data I need, so why "guess"? Below 3% slip there is no usefull torque and above 20% the motor is out of sync not doing any usefull work. I want to stay inside these values and also know the rotor speed to be able to coast and resume. The only thing I may need to calculate is a efficiency chart at slip versus current to know whenever it is more efficient to increase the slip or increase the voltage/current at any particular situation. Again, from here further improvements will be decided later.



gunnarhs said:


> Well as you point out you do not want to have a situtation where
> you have no slip during load (locked rotor). Lets put it that way that you use estimation to avoid position you dont want to get into.


Its not possible to have a zero slip during load. It will either be positive or negative, otherwise no work will be produced as the rotor will not be magnetized. This is the diference between synchronous and asynchronous motors. Same reason I said there is no point in having an absolute position encoder. I would only use one in a synchronous motor or in cases where I need to achieve a very high presision, altough Induction motors would not be prefered for this (you could however inject a DC current at a particular position to lock the rotor) and this is certainly not what we need in our cars


----------



## gunnarhs (Apr 24, 2012)

cts_casemod said:


> First things first. Unless I am looking into make a sensorless aproach I believe the encoder and ONE current sensor will provide all the data I need, so why "guess"?


I do not understand how one current sensor is helping you here as you already measure the DC-Bus Voltage and load frequency, I assume you are using a three phase AC motor?
To be able to calculate (you can call it guessing) stator and rotor current which gives you something to build on, you need current from at least 2 phases. In the ABB-inverter for example I have used, you can use "sensorless" FOC (only current feedback) and FOC with speed sensor (current, encoder and speed feedback). Using both gives the best result.



cts_casemod said:


> Below 3% slip there is no usefull torque and above 20% the motor is out of sync not doing any usefull work. I want to stay inside these values and also know the rotor speed to be able to coast and resume.


If you want to drive effcient you have to do better than that. 
In high speed situation little torque is needed so slip can be less than 3%. Under normal circumstances slip should not exceed 5%. When starting motor with high load this can be exceeded but this should not be often.



cts_casemod said:


> The only thing I may need to calculate is a efficiency chart at slip versus current to know whenever it is more efficient to increase the slip or increase the voltage/current at any particular situation.


Well the only ways I know is the previous mentioned method of calculating stator and rotor current from current feedback (2 phases at least), the other method is mapping the complete motor - curve under different voltage/speed situation. I have done both but I prefer the first one.



cts_casemod said:


> Its not possible to have a zero slip during load. It will either be positive or negative, otherwise no work will be produced as the rotor will not be magnetized.


Well, looking at the situation I was refering to as locked rotor, slip would be 1 by definition , that is right (slip = (f - n)/ f , n=0 -> slip = 1). 
In the case of a ideal high speed situation (low load) slip would be near 0 (f ~ n). 
I do not understand negative slip but that would be regen I assume?



cts_casemod said:


> This is the diference between synchronous and asynchronous motors. Same reason I said there is no point in having an absolute position encoder. I would only use one in a synchronous motor or in cases where I need to achieve a very high presision, altough Induction motors would not be prefered for this (you could however inject at a particular position to lock the rotor) and this is certainly not what we need in our cars


Now we are again on the starting point. We do not need an encoder , neither for synchronous nor induction motor, to make it work but we can use it to improve precision which leads to better efficiency


----------



## cts_casemod (Aug 23, 2012)

gunnarhs said:


> I do not understand how one current sensor is helping you here as you already measure the DC-Bus Voltage and load frequency, I assume you are using a three phase AC motor?
> To be able to calculate (you can call it guessing) stator and rotor current which gives you something to build on, you need current from at least 2 phases. In the ABB-inverter for example I have used, you can use "sensorless" FOC (only current feedback) and FOC with speed sensor (current, encoder and speed feedback). Using both gives the best result.


First let me define I measure the DC-BUS average current.

Your drive uses two current sensors on each phase output and does not directly measure the DC BUS voltage. This is used to calculate the current going into the motor, calculate phase imbalance (in case the load is single phase or one phase wire comes loose) and also to calculate the position of the rotor in an sensorless FOC aproach.

As soon as you attach an encoder (not all drives can) the same sensors are no longer used for FOC, they are now used just to protect the drive and motor (electronic overload relay).

What I am doing is measuring the DC Current from the DC BUS and not from the output to the motor. The drive then calculates the average current and acts spits out a higher or lower frequency depending on how much current you are using. I can not do sensorless vector with this aproach, but I can work in the exact same way as your drive with an encoder attached.



gunnarhs said:


> If you want to drive effcient you have to do better than that.
> In high speed situation little torque is needed so slip can be less than 3%. Under normal circumstances slip should not exceed 5%. When starting motor with high load this can be exceeded but this should not be often.


You do know that a Petrol engine enriches the mixture from 14.7;1 to 12 or even 10 parts of air per part of fuel. Same with our motor. Yes 5% is the ammount you should use, given you have enought voltage. After that slip needs to be increased (field weakening region).

I obviously want to drive as efficient as I can, however If i need to do a quick manouvre that would otherwise put myself in a dangerous condition I dont care at all how much energy I use, I want that torque to be there, even at 20% efficiency. I just want to make sure that *I know* (not the VFD decides) how much torque I am demanding and when I am going to trade economy by performance. Again with petrol cars its quite hard to know this because the ECU Decides, not the driver. I used to drive carburator cars and my mileages were spot on tank after tank. I cant do that with with a normal fuel injected car, or at least not with the same economy as a carburator car would (I drove a diesel because of this) This is why I dont want an out of the box solution, because I want to be in control of what happens.



gunnarhs said:


> Well the only ways I know is the previous mentioned method of calculating stator and rotor current from current feedback (2 phases at least), the other method is mapping the complete motor - curve under different voltage/speed situation. I have done both but I prefer the first one.


You are likelly comparing V/Hz with average current feedback to a sensorless vector. The difference is almost as obvious as when you compare sensorless vector to encoder feedback. 

Sensorless vector has several limitations to how quick you can accelerate/decellerate before loosing sync. If you do you'll have to stop the car before you can resume your journey as the VFD will not be able to re-sync. This also means you need to keep the motor powered even when not doing any work to keep the rotor magnetized and read the current feedback. With an encoder setup you can stop and resume, saving energy. All manufactures use encoders on their motors, they obviously dont go with sensorless for some reason.



gunnarhs said:


> Well, looking at the situation I was refering to as locked rotor, slip would be 1 by definition , that is right (slip = (f - n)/ f , n=0 -> slip = 1).
> In the case of a ideal high speed situation (low load) slip would be near 0 (f ~ n).
> I do not understand negative slip but that would be regen I assume?


When the rotor is locked the slip is *always* positive in order for the motor to have a torque output. I dont understand what you mean with slip = 1, slip is the difference between the rotor speed and the magnetic field on the stator expresssed in percent. If the rotor is locked and the magnetic field is spinning at 1Hz you have a certain ammount of torque, if you increase the stator to 2Hz you'll have more torque yet, but above a certain point your magnetic losses will increase just like a magnet trying to stick to a piece of iron and the magnetic material reaches saturation, increasing current and copper losses, but no usefull work.

When you have a slip of 3% you can either have:

Magnetic field at 3000RPM and the rotor at 2910.
Magnetic field at 6000RPM and the rotor at 5820.
Magnetic field at 10RPM and the rotor at 9.97RPM.
....

or you can have 
Magnetic field at 3000RPM and the rotor at 3090RPM.

In the later case you are regenerating, because the motor is being commanded to spin at a lower frequency that it is actually, so it will recover energy from the load and convert it back to electric energy.



gunnarhs said:


> Now we are again on the starting point. We do not need an encoder , neither for synchronous nor induction motor, to make it work but we can use it to improve precision which leads to better efficiency


Kind of. You can have a sensorless induction motor just by splitting a given frequency like the mains does. You can not do the same with a syncronous motor. It will stall.

There are sensorless aproaches for both types that measure the currents to determine the rotor position, however they are limited. You can not do a sensorless aproach if the rotor is locked or spinning too slowly because the current sensors wont be able to pick up this, hence the low torque at low revs issue is one of the problems. 

Think of it like having your eyes closed and having someone telling you how to make a puzzle. Much better than gessing. This is the sensorless mode. But it would be much easier if you could see it with your own eyes, where you have all the data available and know exactly what to do.

I am just not exactly sure what you are trying to point out. Everything being the same the encoder will give me the most accurate data over any sensorless aproach


----------



## PStechPaul (May 1, 2012)

I found an informative article on motor slip:
http://www.plantservices.com/articles/2002/48.html?page=full

It shows that smaller motors have a larger percentage slip. I think this may be related to the higher number of slots on large motors. There are also various motor designs with different values of locked rotor and breakaway torque, and this is also likely related to slip.

These may be helpful as well:
http://www.yaskawa.com/site/dmdrive...30069e43286256cc30069a2c3/$FILE/AR.AFD.01.pdf
http://www.electricmotors.machinedesign.com/guiEdits/Content/bdeee11/bdeee11_7.aspx

The second article says that slip is a percentage of synchronous speed, so I wonder if it may be a constant RPM. Thus, in your example, a motor with 3% slip at 3000 RPM drive runs at 2910 RPM, but it would take 90 RPM magnetic field before it would develop normal starting torque. I can't believe that 0.03 RPM (10-9.97) slip would provide any useful induced field in the rotor. It is essentially DC. 

Here is a graph showing the four ACIM designs:










I also wonder what these curves look like for an ACIM that is rewound and driven at higher frequency with similar V/F.


----------



## cts_casemod (Aug 23, 2012)

PStechPaul said:


> I found an informative article on motor slip:
> http://www.plantservices.com/articles/2002/48.html?page=full
> 
> It shows that smaller motors have a larger percentage slip. I think this may be related to the higher number of slots on large motors. There are also various motor designs with different values of locked rotor and breakaway torque, and this is also likely related to slip.


Quite true. But smaller motors are normally either over rated or forced air cooled or even rated to operate with a C20 duty cycle, so they are allowed to cool of.
Also there are a few different types of induction motor with diferent slip rates. Some are optimized to have a higher slip. This does not mean the motor is not efficient, it only means the rotor has a higher impedance and as such it will not saturate with large ammounts of slip. This also makes them more efficient starting loads that are torque dependent. If you try to do that on a low slip motor it will draw an excessive ammount of power and will not provide much usefull work. For that reason they are star connected to start, so that the field is weaker and they are allowed to get up to speed before being switched to normal operation.
Capacitor run motors as used on single phase supply also have a poor regulation because outside the operating range the capacitor was calculated for.



PStechPaul said:


> The second article says that slip is a percentage of synchronous speed, so I wonder if it may be a constant RPM. Thus, in your example, a motor with 3% slip at 3000 RPM drive runs at 2910 RPM, but it would take 90 RPM magnetic field before it would develop normal starting torque. I can't believe that 0.03 RPM (10-9.97) slip would provide any useful induced field in the rotor. It is essentially DC.


Let me explain,
Slip is a percentage given in respect of the name plate values. So in fact the manufacturer has built a motor to operate at a mains frequency of either 50 or 60Hz and the charts provided are related to this frequency. They dont usually care too much if you use them outside these values because thats what they have been designed for. For more "refined" aplications you should really be using an inverter rated induction motor. These have better efficiency as they are built with different quality components, specially designed to operate at a wide range of operating frequencies, so the manufacturer should provide you with some different charts.

Also if you want to go a bit more technical, 3% slip is only the slip at the rated output, say 7.5KW on my case. If I drive it with 20KW peak as I do now I can expect that slip to be close to 10%, the same way as if you power the motor and let it run without a load the slip will be 0.x %. Just enought to provide the required torque to overcome friction losses.

With a frequency of 10Hz and a slip of 3%, again you have a speed of 9.7Hz (If I wrote 9,97 it was a mistake) at rated power, which for a 7,5KW operating at a fixed V/Hz ration means an output of 1.5KW. The story, however does not finish here because again if I can feed 4.5KW into this same motor for aceleration I can have 9Hz. I could continue this but the magnetic losses would make any usefull work very small behind this point. This is the purpose of this topic. Monitor slip to keep a peak efficiency. You can also "torque boost" this same motor, which will, in fact reduce the slip again, in turn improving torque and efficiency because at 10Hz you'll have "spare" voltage you can use. Its a trade off between voltage and current for the same power.

The oposite happens past (above) nameplate speed, as since you've run out of voltage the only way to increase torque is to increase slip and in turn current. Efficiency will decrease a bit, but usually at higher revs you dont need a lot of torque so its a trade off. By rewiring the motor you change this and can keep increasing the voltage and the slip will be at an optimun level, so the efficiency is about the same. What happens now is that at increased frequencies the eddy currents on the laminations create extra losses. Inverter rated motors usually have better quality laminations and can reduce this by some extent. 



PStechPaul said:


> Here is a graph showing the four ACIM designs:
> 
> 
> 
> ...


 
Again these are different classes of induction motors as I explained earlier. The manufacturer should specify wich tipe is which on the technical paper with the motor specs.


----------



## PStechPaul (May 1, 2012)

I think I can see what you are saying, but IMHO it applies only to no load conditions or perhaps where torque is proportional to speed. But for automotive use, torque is relatively constant from 0 to target RPM when accelerating, and will often be close to locked rotor or pull-in torque when trying to get maximum performance. So under these more common real world conditions, I maintain that the nominal slip is a constant percentage of design speed, so in the case of a 3600 RPM motor with 3% slip, this will be 108 Hz. Thus you would apply an excitation frequency of 108 Hz at locked rotor start-up to produce rated torque, and perhaps 2-3 times that for maximum torque. Without a VFD, full line frequency is applied which gives a lesser amount of torque (breakdown torque), and I think soft-start non-VFD drives reduce the starting voltage because the additional locked rotor current does not contribute to torque.

Here is a paper that seems to state that, for a given value of T, the slip is a fixed frequency at all speeds. 
http://www.waset.org/journals/waset/v18/v18-122.pdf

Now, there is a table where it shows the motor speed to be absolutely proportional to frequency with a ratio of 29 for a 4 pole 60 Hz motor with slip of 60/1800, or 3.3%. But this appears to be for no load operation, and in fact I do not see any mention of a speed sensor. Moreover, the drive waveform appears to be a "modified sine wave" or "trapezoidal", and not the usual PWM with 4-20 kHz carrier. I may need to perform some testing with one of my 3 phase motors and the VFD. It seems logical that an unloaded motor would require a torque that is approximately proportional to speed, due to windage and friction, ut there will also be an additional start-up torque, as well as inertial torque related to acceleration.


----------



## cts_casemod (Aug 23, 2012)

Paul, I trust you have a prototype up and running. Stop reading papers designed for AC operation and play with it. You will learn a lot about what is going on and how you get there. The outputs, currents, efficiency, etc.

First things first, *induction motors are not constant torque motors.* They are constant speed just as PM and shunt DC motors.

Series DC are constant torque motors. 

If I want to start mooving the car I have to spit out all values between 0 and whatever frequency i want the motor to stay at. If I simply feed it with 60Hz the torque is quite limited and the inrush current will be huge causing damage to both the motor and controller. 
I can move the car with 0,50Hz, the minimum my VFD will output. I dont need 10Hz to do so. If I do the drive will simply show an output fault due to overcurrent.

The reason you increase slip and reduce current on the mains is because you have no way to change the frequency. With a VFD you have.

Unlike DC motors, induction motors are not constant torque motors, but constant speed. And that is driving in V/Hz. If you command a higher frequency just by a few herts the motor will make a huge aceleration to get there (assuming you have enought current) and will keep the car at wathever speed you set it to unless you keep compensating manually, which is exactly what do when I am driving my car to to both accelerate and stop using the motor

In order to have constant torque output you set a fixed ammount of slip proportional to the nm output you want (say 3% for 100nm, 6% for 200nm, etc) and you feed the stator with the rotor frequency *plus* the slip *for aceleration* or *minus* the slip *for regeneration* to create a constant torque instead of a constant speed. So in this case what the driver does is set either the slip of the voltage boost. The drive should be able to choose which one for any particular point in order to obtain maximun efficiency.

So the unit reads the shaft and malkes the necessary calculations to have a constant torque output as you require on a car.

But I would say this is a bit off-topic for the controller setup I am designing, maybe we should open a new topic to discuss operation of induction motors.


----------



## PStechPaul (May 1, 2012)

Perhaps we should start a new thread. But I want to show a motor curve that is from the wiki on induction motors:









Notice that 10 Hz produces 250 RPM at maximum torque, while 50 Hz produces 2700 RPM at maximum torque. This shows a slip of 10% (300 RPM) at 3000 RPM sync speed, and 58% (350 RPM) at 600 RPM sync speed. It's really more of a constant RPM:

Freq__Sync__Actual_Slip_Pct
50 Hz_3000___2700__300__10%
40 Hz_2400___2100__300__13%
30 Hz_1800___1450__350__19%
20 Hz_1200____800__400__33%
10 Hz__600____250__350__58%

I'm estimating the values from the graph, which may not be totally accurate, but I think this shows that you would need about 5 Hz to get full torque from the motor at startup from 0. An ACIM (as well as other motors) can be driven on the basis of speed or torque, depending on whether you regulate the voltage or the current. The details can be taken into account by the V/F ratio and torque is proportional to current while speed is proportional to voltage. But for EV use, the throttle may be most intuitively set to control torque, whereas for such vehicles as a tractor, the throttle may be better as a speed control similar to a governer.


----------



## cts_casemod (Aug 23, 2012)

PStechPaul said:


> Perhaps we should start a new thread. But I want to show a motor curve that is from the wiki on induction motors:
> 
> 
> Notice that 10 Hz produces 250 RPM at maximum torque, while 50 Hz produces 2700 RPM at maximum torque. This shows a slip of 10% (300 RPM) at 3000 RPM sync speed, and 58% (350 RPM) at 600 RPM sync speed. It's really more of a constant RPM:
> ...


I'll agree with you up to a certain extent.

In a real life application you need to be able to accelerate much faster at 0-20 miles than say 20 to 40. So the torque here will be quite high, and the lower your speed, the higher the torque will be, so the slip will be higher as well. If you were to have a constant aceleration at the manufacturer rated power (the only one we have is continuous power, not peak) the slip would be constant, dependent on torque but during this aceleration period you are in fact using a much greater torque, hence slip.

Now, if you use a constant V/Hz the resistive losses on the motor will be quite high at low voltages, so the slip would be much higher than 3%. Thats the reason to use torque boost, again you trade some voltage to account for those losses and keep the slip at an optimun level and have the same torque levels at the wheels.

An ACIM is a naturally speed regulated motor. It can be regulated to operate in torque mode but that would require some calculations to be made efficient working as such. Simply dumping a frequency will result in a large ammount of current.

My motor is extremelly powerfull if operated this way. Its just not efficient. On a tractor as you say it can be governated as long as you dont want to tow extremely heavy loads. On that case, again, you need toque control to be able to keep a hold of the current. You want to regulate the frequency in function of current, not current in funcion of frequency to archieve maximum efficiency.

Say at a torque of 100nm the motor uses 50Amps
At 200nm the same motor uses 100Amps
At 300nm the same motor now uses 500Amps

The above motor can be rated at 100nm nominal and be able to operate at 200nm peak if the temperature is kept constant, but if you push it above that point you current will not be proportional anymore. Same with the slip: if for a motor operating at 10Hz with a given torque the slip is, say, 5Hz the net efficiency will be quite poor. The better way to do this is by increasing the voltage to bring the slip back down and make the motor operate at its peak efficiency.

The other thing you need to take into account is reactive power. Although this power is returned to the battery it is an excess power flowing from the motor to the battery causing losses on each component it passes trough. You loose on the motor, the switch capacity is decreased and you give it back to the battery as a charge which is, again, a loss and causes overheating on the components.

What I would sugest: I know you have some experience in programming and so do have some other members. If someone could buid something that could measure:

DC Current
Vehicle Speed
Stator magnetic field frequency
Rotor speed 
Driver input

and would plot this or would sent that to a computer it would be amazing. From here we could retrieve some interesting results and see where that would lead us to.


----------



## gunnarhs (Apr 24, 2012)

Ok first to eliminate any misunderstanding I would never use "sensorless" control for induction motor in a vehicle. When I am refering to current feedback I always do also speed an encoder feedback too.
(I have though tried that in a chinese vehicle we got and I have compared FOC with and wthout encoder feedback with the ABB - inverter)

I have always used DC-BUS voltage and speed feedback at least
For the more advanced version ,current feedback AND encoder position feedback is added to the prevoius one.



cts_casemod said:


> First let me define I measure the DC-BUS average current...


Ok, this is interesting , I have never tried it this way, it could possibly give a better indication than just measuring the DC-Bus voltage for V/f with speed/encoder feedback. The limitation in this case is though that you are reacting and not precalculating the situation as i see it, I have never done it that way, so I do not know how fast your control reacts.



> I am just not exactly sure what you are trying to point out. Everything being the same the encoder will give me the most accurate data over any sensorless aproach


Again I am not using sensorless aproach, I am measuring the current phases in addition to other components and calculating the rotor and stator components. 
This gives me a motor model similar to a sepex - motor where speed and torque can be controlled "seperately". 
This helps me to control the torque with (low 2-5%) slip as far as i have the voltage to back it up. Here the current feedback is used to optimize efficiency.

When I get into field weakening, voltage is held constant (according to battery status) at this point only frequency is increased and slip is kept minimal. 
That means the ratio V/f is decreased,and that means the field is weakened. The frequency is held just above the rolling load. In that situation there is no need for the current feedback info as just for safety as you point out.
In low speed situation when motor is running with full load, again V/f control is used instead of FOC (current imeasuring serves protection instead of efficiency) . 
Here I could easely use full voltage to produce massive torque but I do not .
I step gradually upp the voltage and frequency (increasing slowly the V/f proportion and therefore slowly the torque) to achieve the necessary torque.
You can look at it this way. 
I have a cascade - loop where the outer loop is a U/f speed control and the inner loop is a torque control with current feedback. 
Both outer and inner use the encoder position feedback too. The inner control calculates the current-vektor position, the outer the actual slip. 

By the way as by definition, slip in my example was calcualted in percentage of generated frequency so in my case when slip was 1, this means slip is 100%, no movement of rotor. 
In that case as you point out it makes no sense to make a stator/rotor current model. 
The FOC solution to this is "100% torque by zero rpm", in practical terms that violtates the motor by applying full voltage resulting full current in stator first and then in the inducting rotor.
So in most inverters I know, FOC is only applied after certain voltage/rpm is achieved.

By the way to measure the total efficiency of the system the benchmark is to achieve 10km/kWh per 1000 kg and average speed of 70 km/h ( at about 10 C temeprature) . 
So far we have achieved 8 km for sepex-motor and 9 km for (standard) induction motor . Sepex uses direct drive, induction motor ATM.


----------



## cts_casemod (Aug 23, 2012)

gunnarhs said:


> Ok first to eliminate any misunderstanding I would never use "sensorless" control for induction motor in a vehicle. When I am refering to current feedback I always do also speed an encoder feedback too.
> (I have though tried that in a chinese vehicle we got and I have compared FOC with and wthout encoder feedback with the ABB - inverter)
> 
> I have always used DC-BUS voltage and speed feedback at least
> ...





gunnarhs said:


> The FOC solution to this is "100% torque by zero rpm", in practical terms that violtates the motor by applying full voltage resulting full current in stator first and then in the inducting rotor.
> So in most inverters I know, FOC is only applied after certain voltage/rpm is achieved.


 
Makes sense. the only think I would say is that FOC does not use full voltage to get full torque. Just as I was discussing with paul, full torque is reached with the nominal slip for full torque which is prety constant + resistive loads at full speed. So for a locked rotor, if your slip for full toque is 10Hz, the inverter comands the drive to operate at 10Hz or comands it to output at just a litle above the rotor speed (2,3Hz) but boosts the voltage

If you look at this from a FOC point of view what happens in reality is that FOC only trades of slip and compensates with voltage or viceversa it does not necessarily do one or other. It chooses upon a set of parameters. And there there is the all sensorless aproach, also part of FOC.

My unit measures the average DC current to calculate and adjusts the current speed. If the inverter is overloaded it will not rev past a certain pointor will reduce the motor speed or if it is coasting it will reduce speed a bit slower so its not on overload. Just controls speed based on current to avoid overloading the machine. However it does not take into account if the motor is working in saturation. If the slip is 20% but the current is low, like in cases of overdrive it wont do anything. Its up to the driver to ease up the throttle. On your setup this is taken into account.


----------



## PStechPaul (May 1, 2012)

I really need to do some testing to verify my premises, although I think it is agreed that rated torque will be produced at any RPM with a constant slip frequency (3.3 Hz) and maximum torque will be at some multiple of that (2x-4x) depending on motor design. I'm not sure you can use the NEMA torque/rpm curves for a VFD, however, as they were established for fixed frequency drives. I think the torque/slip curve applies at all RPMs, at least within the normal range, and it appears that it also applies at locked rotor conditions:










So at any RPM, you should be able to apply the full V/F that corresponds to the value of slip corresponding to the torque you want to get. And then you may increase voltage to the point where you get the current expected at that maximum torque value. The losses should be just about the same whether you are accelerating from a locked rotor or near maximum speed, as they are predominantly resistive. At maximum torque boost there is probably already some saturation, which should appear as harmonic distortion (peaking) of the current waveform. If you increase the voltage above this point, you do not get much more torque.

But there are also magnetic core losses, which increase with frequency, so they should be less when you are pulling maximum torque at start-up. Efficiency is measured as a power ratio, which is related to speed, so of course you will have 0% efficiency with locked rotor, since no work is being done. But if you plot (input power-output power) vs torque, at various speeds, it will probably rise from the value at zero RPM, and it will probably have a square function based on percentage of rated torque, and then exponentially increase with saturation.

I really need to build a VFD and observe the operation and take good measurements, but I don't have the time or energy right now. It also really needs an accurate dynamometer, although that can be made with a set of pulleys and a DC generator with a resistive load. At locked rotor, which is where I see the most difference of opinion, it should be easier to observe the waveforms, and the torque can be read with a spring scale attached to a cable and a pulley.


----------



## cts_casemod (Aug 23, 2012)

PStechPaul said:


> I really need to do some testing to verify my premises, although I think it is agreed that rated torque will be produced at any RPM with a constant slip frequency (3.3 Hz) and maximum torque will be at some multiple of that (2x-4x) depending on motor design. I'm not sure you can use the NEMA torque/rpm curves for a VFD, however, as they were established for fixed frequency drives. I think the torque/slip curve applies at all RPMs, at least within the normal range, and it appears that it also applies at locked rotor conditions:
> 
> 
> 
> ...


 
My experience, I set the drive to 1Hz the car either pulls or the motor just goes back and foward (lost sync). To solve I increase the voltage (torque boost). To save power I also tried to keep a linear V/Hz without boost and apply more slip and the motor eventually goes. Problem with this is the large inrush current. If i had to stop on a hill I couldnt get the motor to run. The drive would shut of on over current and I have to restart the circuit which takes 15 seconds (Off, discharge capacitors, precharge, start).

Increasing the voltage the thing pulls as much as I want, even starting on 5th gear, but with a low slip and take more time to acelerate as the drive is keeping the current constant.

Other thing that happens often, I am regenerating at say 5hz slip and take off without going to zero on an intersection. The drive regenerates at maximun current so when it gets to zero the rotor may actualy be still spining at 2 or 3Hz. When I apply the acelerator it tries to start from zero with the rotor at 2 or 3Hz. The drive imediattely shuts down on over current. Super annoying. So the anwser to your question is on my system you can not command the motor huge ammounts of slip as the motor will short circuit the drive.

With an encoder the drive would know themotor was spining and would restart at 2 or 3Hz instead of doing it from zero, so the current would be much smaller and this problem would not occur.

The only situation i can commad huge ammounts of slip is on the constant horse power area were there is no more voltage as the current is pretty much fixed. The problem with that is that for the same current the larger the slip the less work is being done


----------



## cts_casemod (Aug 23, 2012)

This item I found on ebay shows a photo ot the actual speed sensor on a Solectria AC55 motor

http://www.ebay.com/itm/Used-Solect...577?pt=LH_DefaultDomain_0&hash=item27cd360af9

This is pretty much what I am looking to do on mine. I just down know where to start. The front is covered with the gearbox and I dont have much space on the back, plus would likely had to take the motor out to machine a part to secure it.

This leaves me with the flywheel to play arround using a pickup magnetic sensor such as those used to read a vehicle cranckshaft position. Also the higher the teeth count the better the precision at low speeds will be.


----------



## PStechPaul (May 1, 2012)

I don't think you really need very much precision at low speeds, and having that many teeth will make for a rather high frequency at maximum RPM. That looks like as many as 100 teeth, and at 8,000 RPM that would be 13 kHz and 75 uSec between pulses. It would be OK for a dedicated counter which could be read and reset several times a second, but if you have the processor read each pulse it will put a strain on its resources. It may be better to use a shaft collar with two machined flats so it gives two pulses per revolution.

My VFD (Fuji/GE AF-300 E11) has settings for start and stop frequency, which I would think should be set to something like the slip frequency of a few hertz. If you use a constant V/F down to this limit, there should not be very much current flow, whereas if you do not have a lower limit, you will approach a DC level where the current is limited by the windings and wiring resistance. There will also be a point where the motor inductance predominates and the voltage and current will be near 90 degrees and there will be very little power or torque. It should be rare to run the motor at speeds less than about 5% of rated RPM, except when starting or coming to a stop, and at that point you are mostly concerned with torque, while speed may be zero to that determined by the slip frequency at maximum locked rotor torque.


----------



## cts_casemod (Aug 23, 2012)

PStechPaul said:


> I don't think you really need very much precision at low speeds, and having that many teeth will make for a rather high frequency at maximum RPM. That looks like as many as 100 teeth, and at 8,000 RPM that would be 13 kHz and 75 uSec between pulses. It would be OK for a dedicated counter which could be read and reset several times a second, but if you have the processor read each pulse it will put a strain on its resources. It may be better to use a shaft collar with two machined flats so it gives two pulses per revolution.
> 
> My VFD (Fuji/GE AF-300 E11) has settings for start and stop frequency, which I would think should be set to something like the slip frequency of a few hertz. If you use a constant V/F down to this limit, there should not be very much current flow, whereas if you do not have a lower limit, you will approach a DC level where the current is limited by the windings and wiring resistance. There will also be a point where the motor inductance predominates and the voltage and current will be near 90 degrees and there will be very little power or torque. It should be rare to run the motor at speeds less than about 5% of rated RPM, except when starting or coming to a stop, and at that point you are mostly concerned with torque, while speed may be zero to that determined by the slip frequency at maximum locked rotor torque.


You're using a fuji? Good choice, I've started with one and has lots of settings to make your life easy. I cracked the pinouts for the IGBT if you ever need them let me know.

I use a dedicated pulse to voltage converter to read the pulses, which can read up to 100KHz, as long as the pickup sensor is able to read such high frequencies i should be ready to go. I need a newer one based on hall effect as the older ones were mechanical and were quite limited on maximun switching speed. My drive only goes to 3600 and even with the newer one I wont go much above 4000.

Well you are somehow right, the cranckshaft is a bit overkill, but is there already, so I might use it. I might change to something different if I ever go clutchless. On the other hand the problem with a low frequency is the riple caused at say 2Hz. At 12Rev per Volt even 0.1V would be enought to give me a bit over 1Hz ripple high ripple at low frequencies when I drive very slowly (parking, etc) since I canty use the clutch so the motor acts both as acelerator and brake. At the moment I often loose sync at such low frequencies when I am using a large ammount of slip, say to regenerate BUT do not come to a complete stop before going back. Industrial encoders are often 120 too 400PPR (pulse per rev), so I believe at least I should have 100PPR, but again this will be tested.

I could also use a filter to remove the riple at low frequencies but this would also cause delay to response in higher revs, which would be undesirable. 
What my circuit will do is command the drive to operate at watever frequency the motor is spinning and the accelerator will add or take slip. So If I wanted 50nm I would add 2Hz slip (example) and the frequency would increase, limited by my current. Some controlers do the oposite they add a pre slip and control the current in a way that it takes more or less time to reach the desired speed. The problem is that regeneration in this mode is only controlled by an external switch and on my case I want to have 0 at half travel to be able to use both methods with one pedal. Obviously the regeneration would be limited by the maximun current, however if i pressed the brake the drive would know the motor was slowing down and reduce the speed faster, currently the drive does the oposite, it powers the motor against the brakes which is quite a crap and its the only thing i really complain. On the fuji I would set a brake torque and the sensorless vector would reduce accordingly (or loose sync as well ).

This will have to be tested to find the best compromise between slip and current, some charts need to be created for when the motor is operating above nameplate speed and using torque boost and I need to set up the frequency converter chip and see exactly what frequency I need to keep the ripple at an aceptable level, but for the moment I am trying to work with what i've got


----------



## cts_casemod (Aug 23, 2012)

Hi Paul,

Just been reading the topic with a fresh head after some sleep and I might not have expressed myself in the most correct way:

I regards to our discussion just wanted to make clear that your are 100% right in regards to a constant slip for a given torque. What I want to add here is that increasing the slip is like creating an inneficiency, so what i am doing is boosting the voltage instead, when possible, instead of increasing the slip. Obviously this is not possible near or above nameplate speed and in this conditions we are forced to increase slip anyway, however on the operating range above nameplate the motor is working in the constant horsepower area and it will consume the same ammount of current with 10% slip or with 50% slip. In this area the torque will suffer.

I find that its quite hard on my drive to keep it at an optimun level and I need to reduce the throttle, because since the current is constant the drive can no longer use it to provide feedack, and having no other means of reading shaft speed it simply keeps feeding the motor with watherver I am requesting, resulting in poor torque output.

So I am not saying you are wrong, simply that I am using a different way of controlling the torque, in this case saturating the magnetic field by increasing the voltage to keep the slip at a given percentage and here torque will be the inverse of the slip (more slip, less torque, more rpm = constant power) of the motor speed and once I've run out of voltage, then I start to increase the slip. The point here is that below nameplate speed I can always boost the voltage, so it makes sense to speak about the slip as a percentage of the nameplate value


----------



## Siwastaja (Aug 1, 2012)

First test with the very simple encoder-feedback constant-slip voltage-adjusted algorithm with a small test motor.

The algorithm is:
- Measure the rpm
- Output corresponding frequency * fixed slip%
- Output corresponding voltage from the linear V/f curve, multiplied with the torque command
- If voltage is at max and more torque is requested, increase slip linearly (within limits)

It gives a nice torque control and a good DC-motor like response if DC link voltage or physical load is changed. Seems to work just fine without torque dropping under too much load (like in V/Hz), and it is giving a quick response to the torque command and load variations.

The only minus is that response when regenerating and stopping at low speeds (below 300 rpm) is a bit slow. This is clearly a consequence of relative (percentage) slip combined with low number of encoder slots (3 per turn); the new frequency can only be calculated when the encoder hits the next slot, and the motor quickly hits the synchronous speed while the drive hasn't calculated the new frequency yet.

It's pretty straightforward to add a kludge to fall back to non-relative slip when the slips falls below certain threshold to help the slow-speed response. I actually have it on the acceleration side, but had disabled it from regen for some reason. Also, having 8 encoder slots in the final drive should help a lot. Actually, having the precise encoder is a must in any drive algorithm to get good low-speed response.


----------



## cts_casemod (Aug 23, 2012)

Siwastaja said:


> First test with the very simple encoder-feedback constant-slip voltage-adjusted algorithm with a small test motor.
> 
> The algorithm is:
> - Measure the rpm
> ...


True, if you are using a micro to measure dead time between pulses, with an analogue setup as I am using the higher the sampling the better the precision and I happen to have one just there only requiring a sesnor to be positioned.

At 300RPM my motor is putting out 1/3th of its rated power as currently have maximun power at 1500RPM. This is the reason I need higher precision at lower revs, because my torque is inverse to speed as I boost the voltage at lower revs, I need way more torque acelerating after a stop that i will ever need while driving.

If I simply folow a constant V/Hz my aceleration times will double as I am not using the motor to its full potential, if I increase the slip as I was doing in early stages, the extra current, at lower voltage, will create efficiency losses on both the motor and controller both due to increased resistive losses and poor power factor (Current out of phase with voltage).


----------



## cts_casemod (Aug 23, 2012)

Siwastaja said:


> First test with the very simple encoder-feedback constant-slip voltage-adjusted algorithm with a small test motor.
> 
> The algorithm is:
> - Measure the rpm
> ...


True, if you are using a micro to measure dead time between pulses, with an analogue setup as I am using the higher the sampling the better the precision and I happen to have one just there only requiring a sesnor to be positioned. Imaggine break down torque at locked rotor, I dont know what the drive would do if it happened to be just about reading the sesnor. The same signal back and foward could make the drive think the motor was spining at any other rate. I know on a tacho being driven at very low frequency the needle just gives a rubish output and I am looking at a very smooth start and stop where the motor will be outputing a considerable ammount of torque. 

My motor maximun power is developed at only 1500RPM, so at 300RPM I may be using as much as as 30% of the rated power and may have up to 300% stall torque if the drive is set up properly. For this I need a good encoder feedback. From here torque will be inverse to rpm, making use of voltage boost to achieve maximun torque at any RPM as flux vector does. I need a higher aceleration starting to roll after a stop that i will need after I am driving at say 20mph. This is just to say my setup only has 30BHP peak, so if I can have them with a decent efficiency at 1000RPM it would be prefered to have them at nominal motor nameplate RPM of 1500RPM and allows me to use only one gear, further improving aceleration times.

The other reason is that althought increasing the voltage ALWAYS results in more power available that what I would have using a constant V/Hz (I can use the same slip at higher voltage for a higher net output) if I am using a higher voltage at reduced slip the motor power factor will be higher that using an increased value of slip and hence better efficiency and increased capacity for my IGBT pack as altought I may only be using 10Amps from the battery, the motor current may be as high as 100Amps, reducing the output capability of the inverter and increasing resistive losses on the motor. I've been there before, the higher the weight and or aceleration the worse my efficiency because I started with a reduced voltage at high slip as the literature sugests.

My wh/m have been reduced from a worse case of 360 with DC-DC to an average of 250 with best at 220 driving at night and worse at 270 with lots of slow traffic and I intend to improve those figures by having higher efficiency when using regeneration and improving both low speed efficiency (dynamic torque boost) and high speed efficiency (slip control at higher revs).

Also dynamic acelerating times will alow me to have even better aceleration times, and the possibility to coast the motor when no torque is being required will further improve these figures, but will rely on a precise encoder input to be able to quicly and effectivelly sync the motor whatever the speed


----------



## broadcastcentral (Jul 6, 2008)

REGENERATIVE BRAKING in squirrel cage induction motor

That's my question. How can we implement this into the controller to provide power charging back to the batteries (lithium ion) in an efficient way??

The tesla motor company has done it and I think we can do it too. Here is a link to some information about it:
http://www.teslamotors.com/forum/forums/regenerative-braking

I have read about using capacitors in parallel with the motors stator windings to get it to work as a generator... But I'm thinking to get it to work and provide braking on a 0% - 100% mode depending on how far you press down the brake pedal.. We would have to do it by controlling the inverter in order to make the generated stator RPM slightly lower than the actual rotor speed. (negative slip, rotor turning faster than synchronous speed.)

I plan to use an encoder on the motor to accurately measure rotor RPM. When the brake is pressed, I want to decelerate the vehicle and feed electricity back into the battery bank. I need to develop a circuit that will allow this excess power to be fed back into the battery bank, and add in over current / voltage protection so the batteries don't receive more current than they can handle and if the batteries are full the excess energy is dissipated through resistors or other means.

Have any of you done this? It would be awesome if someone could post a schematic showing how we can set this type of regen system up. Thanks


----------



## cts_casemod (Aug 23, 2012)

broadcastcentral said:


> REGENERATIVE BRAKING in squirrel cage induction motor
> 
> That's my question. How can we implement this into the controller to provide power charging back to the batteries (lithium ion) in an efficient way??
> 
> ...


Apparently you know how it's done, so your question is how to actually get a variable frequency drive built to control the motor. 
If so have a look at the forums there is someone selling a kit to make your own (open source) and many others have done it with a number of other ways.

Bare in mind this is a topic to discuss control algorithms (FOC, V/Hz, Slip control ) implementation, use the search bottom for general questions.


----------



## broadcastcentral (Jul 6, 2008)

That's not true.. I know how to build the VFD to drive the motor and am done the majority of designing it.. I just am stuck as to how to implement the regenerative portion of it.

If I'm using a lithium ion battery bank, then the recharging has to be done in a way that balances the battery pack and does not provide too much current or too much voltage all at once, and also provides a high enough voltage so that the batteries can actually absorb the energy.

I've done a lot of searching on this topic but am still struggling to find a solution that I find suitable for me.

When in regen mode, how is the control algorithm handling the IGBT's during that mode?? Are they switching on and off the same as they do during normal operation, but set to produce a stator RPM slightly less than the actual RPM of the rotor instead of higher? If this is the case, do the batteries actually end up automatically absorbing more energy than they are putting out without any extra code to handle the regen situation? If so, that would make things easier than I thought it would be..

The only added code and hardware I could see being needed is that of an over voltage / current protection for when the dc bus power gets too high for the batteries to handle..

Please let me know what the general consensus has become on this issue, or a link to someone that's already been through the problem would be awesome. As I've said, I've already searched for it on my own and haven't been able to find it.

Thanks!


----------



## dcb (Dec 5, 2009)

Actually a recent discussion on this is in this thread post 383.

Since slip (the rotor turning slower than the magnetic field) creates torque in the rotor, setting the slip such that the rotor is turning faster than the magnetic field turns it into a generator, taking torque from the rotor. That is about it (plus v/hz and stuff).


----------



## sergiu tofanel (Jan 13, 2014)

I may be waaaay of the mark here, but has someone ever considered an adaptive control approach? Consider the standard electronic fuel injection for an ICE:

The PCM reads all relevant sensors (engine RPM, air temperature, pressure, etc) and accesses a lookup table that provides among other things the fuel injector pulse width and ignition timing. Further refinement of fuel delivery and timing is achieved through oxygen sensor and knock sensor feedback. Given the new information, the PCM then updates the lookup tables accordingly.

Is it possible to implement such a strategy for an AC motor? Why nor start with a V/f approach to populate a basic lookup table (inputs are throttle position, motor speed, motor current, and outputs are AC voltage amplitude and frequency). A refinement algorithm would refine the V and f outputs by trying to minimize current consumption for a given throttle (torque) command. The adaptive part of the programming would eventually find the most efficient parameters for any AC motor given enough running time.

Is this approach feasible for EV applications?


----------



## dcb (Dec 5, 2009)

torque is gonna be a guess unless you measure it, either directly or by inferring it from known vehicle weight and coastdown/rolling resistance testing vs acceleration (on a flat surface with no wind). If you have clutch springs, and an encoder and a vehicle speed sensor, I *think* you can measure torque, or at least get a relative value.


----------



## dcb (Dec 5, 2009)

Also regen is less of a concern, unless you recharge completely from the wall at the top of a large hill or mountain. Motoring is not 100% efficient, nor is generating, so once you start depleting the pack via driving, you cannot get back to full charge with regen IMHO) though it would be nice to have an upper voltage/current limit on regen just in case.


----------



## broadcastcentral (Jul 6, 2008)

DCB...

It IS possible to get the battery bank back up to 100% charge through regen.

Imagine your fully charged and you drive on a flat surface for 100 meters. Now the battery is something like 97% charged. Now you reach a downward slope, and it continues downhill for 5 kilometers. That's a big hill!! If you used regen on the downhill slope, you would probably get the batteries back up to 100%. This isnt a normal situation, and usually you travel equal amounts of uphill and downhill. Nevertheless, in certain circumstances it is possible to fully recharge with regen. Even if the regen mode is only 5% efficient, if the hill is big enough, eventually the battery bank will reach 100% again.

sergiu tofanel...

People have already been trying to do this. Basically, if you look at a current / torque / slip % curve (graph) of your motor, there will be a point on that curve that offers the most power output for power consumed. Somebody correct me if I'm wrong, but I think this is labelled as the full load torque (FLT). This area of the motor curve is the most efficient area to run in. At different speeds, the curve basically shifts either right or left but the shape remains the same. 
There is a problem trying to always operate in this region of the curve on an electric vehicle. Any time you need to quickly speed up or slow down, you will increase torque to accelerate, and this will move you away from the sweet spot and be running at a less efficient spot along the curve. When driving, you need the ability to accelerate quickly if needed. Unfortunately, the more often you do this, the more time you will be running at a lower efficiency.

When you maintain a constant speed, it is easier to calculate and stay inside of the most efficient range, although it needs to be constantly recalculated and adjusted because of the changing terrain you are driving on. 

cts casernod.. I'd love if you could post a schematic of your motor's regenerative charging circuitry or explain how to program the IGBT's to run in regen mode.

Thanks all for time.


----------



## dcb (Dec 5, 2009)

broadcastcentral said:


> DCB...
> 
> It IS possible to get the battery bank back up to 100% charge through regen.


Yah, that is what I meant by:


dcb said:


> Also regen is less of a concern, unless you recharge completely from the wall at the top of a large hill or mountain.





broadcastcentral said:


> cts casernod.. I'd love if you could post a schematic of your motor's regenerative charging circuitry or explain how to program the IGBT's to run in regen mode.


Look at the link, it is happening live. You don't need special circuitry, if you have a slip algorithm you set up the sinewaves to be at a slower rotational speed than the rotor and you get regen.


----------



## broadcastcentral (Jul 6, 2008)

dcb said:


> You don't need special circuitry, if you have a slip algorithm you set up the sinewaves to be at a slower rotational speed than the rotor and you get regen.


So what about balancing the battery bank while regening?

Also.. what voltage should I be using when in regen mode? For the motor mode, to choose the voltage, I use the V / hz ratio and as the gas pedal is pushed further the v / hz ratio increases.. meaning more voltage for same hz. I use PWM on a 8khz carrier wave to produce the desired voltage.

For regen, should I still use the same pwm v/hz ratio approach? Or should the IGBT's be openned to full voltage at all speeds of regen? That's the bit that's confusing me mostly.


----------

