I have a custom board with TMS320F28069 controller. I want to do a closed loop BLDC control using an absolute encoder. Does instaspin support that?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
I have a custom board with TMS320F28069 controller. I want to do a closed loop BLDC control using an absolute encoder. Does instaspin support that?
InstaSPIN-MOTION supports encoder based velocity (proj_lab12) and position+velocity (proj_lab13) both feeding an FOC torque controller that features sinewave and space vector modulation (with the ability to go into trapezoidal over-modulation at highest speeds). There is not a sensored example for continuous BLDC commutation / modulation (2 legs on, 1 off, trapezoidal currents) at this point, but it's on our "possibly to do list" as it does seem the majority of sensored 3-ph synchronous controllers do this today (although there are excellent advantages to the FOC approach which we feel most should use).
Thank you!!
1)What if I use an absolute rotary encoder instead of a Quadrature encoder. Do I still change the predefined symbols to QEP from FAST ROM? Is there anymore configurations that are needed for using an absolute RLS encoder?
2)What does the variable gMotorVars.Flag_enableUserParams, signify? Does it have to be '0' for regular motor run operation?
3)Does the variable gMotorVars.SpeedQEPkrpm denote the encoder feedback speed?
4)Where can I find a manuable on coding in Instaspin and general c2000 coding?
1. yes. yes. you just have to insure that your encoder is producing an angle in the format required by the SpinTAC library
2. This is discussed in proj_lab3. it loads values from the variables accessed in user.h and bypasses motor identification.
3. Yes, it is the speed - in KRPM - deduced from the mechanical feedback
4. You should start by working through the Project & Lab UG
Install MotorWare, run MotorWare.exe, and view the resources that are available
Thank you so much.
I have a 48 V , 2 kW motor , run in a custom board using TMS320F28069 processor.
I have an RLS encoder set up on it http://www.rls.si/en/aksim-off-axis-rotary-absolute-encoder--17584.Can you identify the proper number of encoder lines?
The motor starts to rotate, does 2 rev.s and gets struck and keeps vibrating and the Flag_run_Identity becomes Low by itself.(or) It growls with a heavy noise and draws lot of current.
Any ideas on this?
Thank you!!
which proj_lab## are you using? I recommend starting encoderless with the InstaSPIN-FOC sensorless labs, even if you plan to use an encoder in the end.
The InstaSPIN-MOTION labs with encoder feedback: while you eventually don't have to use the sensorless FAST observer, all the labs do use the observer and the control system for the torque loop, rotor alignement, etc. So it's important to have things set-up correctly regarding scaling etc. in user.h and in your hardware.
Sidharth Rajamohan said:board using TMS320F28069 processor.
Can you confirm this is an F28069M version of the chip?
I have updated the scaling values and other paramters reg. the Board and Motor on user.h to the best of my knowledge and yes its F28069M version.
Seems to show the same problem for the sensorless operation too.
Thank you!
1. let's please just make sure you can ID your motor using proj_lab02 and then do some basic running with proj_lab05b
2. which "Effective Compiler" is being used when you build the MotorWare projects? Right Click and look at properties.
3. Attach the user.h you are using with the instaspin_foc project
4. Confirm you made all the changes required to use your own custom HW (I recommend using a known inverter hardware like the DRV8301-69M-KIT for initial motor bring-up, until you have verified your own inverter operation).
The properties say "C2000 compiler" in general, should I look somewhere else?
I was using a DRV8312 Kit, but the motor rating was very high and so had to design a custom board.
I am attaching the user.h.
Thank you!!6215.user.h
In looking at the encoder datasheet that you provided, it doesn't look like that encoder has A/B/I outputs. You would need to write some software that would communicate with the encoder over the communication interface. You would then need to format the electrical angle information to go from 0 to 1 in Q24 to provide that information to the FOC and to SpinTAC.
Does this motor also have an A/B/I encoder?
Sidharth,
Right click on the project, select Properties, then look here:
Regarding user.h
#define USER_SYSTEM_FREQ_MHz (95.0) // you can't run the clock faster, 90.0 is maximum
Clocking is poort
#define USER_PWM_FREQ_kHz (12.0) // also, with the low inductance motor you have 12 KHz is not fast enough. I recommend using 45 KHz to start, /3 with ISR_TICK, run, /1 for the CTRL, CURRENT, and EST ticks, and /15 for the speed and trajectory
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (3) // this sets your core interrupt too low at 12 KHz / 3 = 4 KHz
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (1) //
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (1) // and you are trying to run your speed and position loops at the same 4 KHz rate. This is sometimes done for precise servo control applications, but very likely unnecessary in your case and you certainly shouldn't use this just to start out.
#define USER_VOLTAGE_FILTER_POLE_Hz (1118.83)
This is too high if you want to use FAST. This is partly due to documenation issues in SPRUHJ1 (that I believe are being updated for next revision), Set this value at 200 Hz < value < IQ_FULL_SCALE_FREQUENCY_Hz / 4
#define USER_MOTOR_MAX_CURRENT (4)
This is clearly much too low for your system, especially when you have a design for +/- 200A! You are going to get very poor current resolution with this board if these are the types of motors you are trying to run. You ned HW that matches up better with your motors.
You really need to take a systematic approach. Don't change everythign at once. Change one thing at a time while you bring up a motor. And you should really verify with a working kit first - I recommend DRV8301-69M-KIT for these types of motors.
Adam,
Its not an A,B,Z encoder. It is a RS422 abosolute encoder with RX+RX-,TX+,TX- pins. We are using this encoder due to some technical issues in the incremental one.