MOTIX™ MCU Forum Discussions
I have one project for BLDC and plan to use TLE9879. i meet two question about the chip:
1. p2.0,p2.2 is crystal interface , if have the TLE9879 internal crystal to used for clock,then i can use p2.0 and p2.2 pin for other function ??
2. the power is +24V Battery , does a LDO need to convert 24V to 5V to supply power to the chip? Can I supply power to the chip directly with +24V？？
best regard!Show Less
1. I want to Control my motor RPM w.r.t PWM coming from PWM+LIN pin( internal LIN Trx)
2. I am able to control my motor RPM w.r.t .PWM coming from P1.2 (external control input) but I want to use only internal LIN Trx as PWM input.
3. any other Configuration needed from config Wizard.
please guide me.
I have spent many hours working on a single BLDCSHIELDTLE9879TOBO1 evaluation board mated to an Arduino Uno R3, trying to run the setParameter() function to change the parameters of the control algorithm within the TLE9879 device.
The TLE9879 device was programmed at the factory, I haven't changed it, and I have no desire to do so....
I tried running the "BLDC Single motor test" example, and then adding "shields->setParameter(FOC_START_ACCEL,1);" at various points after "shields->setMode(FOC);" is called. I have tried adding "BOARD1" to the setParameter command but this has no affect either..
I get an acknowledgement in the serial data coming back to my PC stating that the parameter has changed, but there is no difference in the way that the evaluation board behaves.
I have tried this approach of changing multiple different parameters, within both the BEMF and FOC modes, but nothing seems to affect the behaviour of the shield...
I hope that someone can help... 😀
My application is spinning a small Maxon BLDC motor in a high temperature environment, downhole, 150 deg C ish. That's why I'm considering the TLE9879. Also because of its promise for high integration, fewer wires, less glue ICs around it.
The TLE9879 should be a slave connected to a master CPU. I'm neutral if that would be serial UART, SPI or CAN. LIN is too slow I think. The module with the TLE9879 should behave like an industry standard VFD 'drive' with, say a Profibus or CANopen type of fieldbus. With that I mean I'd like to cyclically (~500 updates per second) interrogate it: every two millisecond it receives ~10 PZD values and returns 10 PZD values. Those values typically being Control Word, Setpoint RPM, Torque Limits to to unit, and Status Word, Actual RPM, Actual Torque, Actual orientation/position back from it. The sub milliseconds deterministic motor control for the TLE9879. The less real time critical supervisory control tasks for the host CPU.
The unit to support SSI encoder, A/B encoder, maybe a TLE5012, and tripple Hall as feedback for the BLDC motor. The unit to support sensor and sensorless modes, Hall and/or encoder. The unit to support three control modes: just torque mode, speed mode, and position mode. Mode selection over the same 'fieldbus'.
So I got both the Infineon '12V Motor Control Kit', the 'TLE9879 EVALKIT', and two 'TLE9879 BLDC Shields'. Hardware wise that all looks as capable to do some prototyping. But I've now spent 2 weeks digging through uVision for/backwards incompatibility issues and Example Codes that all have issues and bugs slowing we down badly. And I have seen no example that gives me a running start with the 'fieldbus' type of cyclic read/write interface for writing ControlWord, StatusWord, SetpointRPM/Position/Torque, and reading StatusWord plus actual values, once every ms ish.
Question now is: do I start from scratch rewriting a project for what looks to me as the most common use case for such TLE9879 hardware? Has anyone done this already? And would anyone be willing to share? The Arduino examples are the closest I could find, but they lack the cyclic fieldbus style interface. And they have bugs, bugs and...Show Less
I've just received the arduino shield and seems to work fine in FOC mode (in my case for a 3 phase brushless dc without sensors)
However I am unable to make it work in BEMF mode, I've tried some variations in the parameters without luck, however, In my attempt to read the current values it uses it seems that the arduino libraries and the board firmware are out of sync, the following sequence gives me an error:
shields = new TLE9879_Group(1);
In the arduino serial monitor the following message appears:
"WARNING: Board; Action[read dataset]; checksum does not match -> calc: 63; recv: 125 "
Doing some debugging I've figured that the board sends a response of 29 messages, while arduino library expects one of 30 messages as defined by:
Any chances of downloading the "correct" arduino library files for the "mysterious firmware version" I have in the shield?
We are using Infineon controllers and other parts for our product development.
Can you anyone connect me to your FAE team from Gurugram, India to streamline the product development process.
We would require the following from firmware perspective:
- Firmware used in the TLE9879 BLDC Arduino Shield.
- Firmware flashing procedure during production.
Anzo Controls Pvt. Ltd.
Absolutely disappointed. The glossy https://www.infineon.com/cms/en/product/evaluation-boards/motorcontrolkit_12v/#!documents advertises:
"The motor control kit comes with example code which is pre-flashed, so the motor will run instantly after plugged in. The source code is available for the user to analyze, understand and adapt different motor control schemes."
"Rapid Prototyping due to pre-assembled kit including example software"
"Hardware and Software both in one pack"
"The best way to reach out to our Applications Engineers is through our Developer Community https://community.infineon.com"
Not true. OK, I did get from forum moderator Raj_JC a .zip with the source code for what probably goes into these units before they ship. However, this code has serious bugs and bad practices. Only one control scheme example is provided. And even that one does not work properly on my kit. I think that's because my BLDC motor is aligned just a little different to its TLE5012B sensor so that the 1st of its 6 electrical steps is at a different TLE5012 orientation. The auto-calibrate in the example code does not pick that up (...). It is also old code from earlier packs and incompatible libraries and config tools. And BTW the now default ARM compiler 6 must first be downgraded to v5...
The SSC1 interface to the TLE5012 chip: not properly tri-stated, outputs always wired together and both active... Clear signs in the 'example source code' that the programmer was fighting with this but failed to properly resolve...
And then after notifying here that this is pissing off customers, the forum moderator simply says 'We do not provide support for the code.' WTF? There is no serious code provided by Infineon, despite the promise as advertised.
No application notes for THIS kit specifically. No hints on HOW things should be wired up for different motor control modes like with/without which Halls. No hints on how to make a basic UART -> USB -> PC serial link for just a basic printf stdio for traditional old style code debugging that I would be comfortable with (not everyone has LIN masters at hand...).
Unbelievable that Infineon think they can get away with this.
No, this post is not asking for help. It is a warning to others that are thinking about buying the "12V Motor Control Kit" for the purpose of ''accelerating the learning curve and doing rapid prototyping or proof on concepts". For me, it was not.
I bought the BLDC_SHIELD_TLE9879 for Arduino Uno, connected it to a BLDC motor (5000-25000 rpm), 20V, using FOC and tried out the demoprogram "bldc_shield_single...". The motor starts, but the problem is now, that the real rpm does not match to the setMotorSpeed(5000), means with 5000 the motor runs with maximum (in my case around 25000). After some measurement of the real speed I found out, that the value in setMotorSpeed() must be 630 in order to drive the motor with 5000rpm, that means a factor of round about 8.
Now I implement the setParameter() (see below) for the pole pairs to correct this, but nothing changed. I tried out some value for the pole pairs, but no success. What is wrong? I also have to change some other parameters (KI, KP...), but also these modifications have no effect to the behavior of the motor.
I hope that someone can help me.
Here the code:
shields = new TLE9879_Group(1);
//shields->setMotorSpeed(5000); // real Speed around 25000
shields->setMotorSpeed(630); // real Speed 5000
// For a real rpm of 5000 I must insert in setMotorSpeed(630), means factor 8 (or 0,125)
setParameter(FOC_POLE_PAIRS,2, BOARD1); // Does not change anything
// It doesn't matter how many pole pairs I set, the real rpm is for every value the same!
// Why ???
// Picture shows my setupShow Less