2011-01-31 12:15 AM
EVAL6470 operation via SPI
#l6470 #l6470 #l6470 #l6470 #l64702011-05-17 01:20 AM
Hi all
My initialization sequence is as following CONFIG = 0x1CA0 then I set all the motor parameters for my stepper like MIN_SPEED, MAX_SPEED, ACC, STEP_MODE and so on... at least I send a GetStatus to clean up the error flags in the STATUS register. After init the communication works fine but the motor do not want to turn regardless of the motor settings. I can measure the stepping pulses on the outputs but not on OUT1B. Do you see any pulses with your oscilloscope?2011-05-17 01:20 AM
Hello Harry
It seems that I have the same problem. Do you have any signals on OUT1B? I can see the PWM signal configurated by F_PWM_INT and F_PWM_DEC at pin OUT1B. The other three motor connectors work fine. Also the communication works as intended. I am able to read/write registers. But OUT1B continues pulsing even if I send a HardStop command. So far I did not find any solution for this problem. regards Flavio2011-05-17 01:20 AM
I'm actually the third one having this problem...
Tried with putting the L6470 into StepClock mode but also with no luck except the L6470 gets bloody hot after a while... Also I don't get the point in the datasheet why the nCS signal has to be raised after every byte transmitted....as defined in chapter 8. Later on in Figure 17 the SPI timing waveform shows no nCS being raised between bytes.... The application note AN3103 is totally unusable....not real application note for me (o; What do you send over SPI to initialise your L6470? Funny thing is the motor only turns a little when I put the attached PIC18F4550 into reset (o;2011-05-17 01:20 AM
Got it to turn now...sort of (o;
The reason it didn't move was that really after every byte sent you have to raise CS to a logical '1' ! But I guess I can stop now with evaluating the L6470....it states that it can handle 3A RMS...but connecting my 3A stepper motor at a low voltage of 18V the L6470 gets really hot.....no clue where the 3A RMS come from in the datasheet..... The sequence I used is: - Send a HardStop to activate the bridge - Then do a GetStatus and after that you can do either set it to StepClock Mode and pulse STCK or send the Move commands....2011-05-17 01:20 AM
BTW...what stepper motor are you using? What current specification?
Doesn't look good that the L6470 can handle a 3A, 3Nm stepper motor at all (o;2011-05-17 01:20 AM
I raise nCS after each Byte transmitted, but the motor won't turn. I use a 1.5A stepper with 1.9mH impedance and a coil resistance of 1.56ohms. What are your register settings für KVAL, ACC, MAX_SPEED, OCD_TH, STALL_TH? Perhaps I did a mistake in the calculation of these values, but I recalculated it multiple times.
If I ''try'' to turn the motor (transmit a Move command) the chip gets hot even with my 1.5A stepper and without turning at all.2011-05-17 01:20 AM
Ok, the motor turns now. I had a little mistake in the calculation of the register values ;o(
But I have the same problem as you have, Richard. The chip gets damn hot. I don't think the Chip is able to handle that high currents (24V with KVAL = 19 over 1.56 ohms = 1.14A). Perhaps the cooling on the evaluation board is not that ideal. If I have time today, I'll do some tests with additional cooling.2011-05-17 01:20 AM
Dear Mr. Perucchi, Dear Mr. Klingler,
All the issues described into this topic could be related to two causes:
- SPI communication
- BEMF compensation
The SPI interface of L6470 basically is an 8 bit shift register enabled by nCS signal. The device will interpreter the byte into shift register when the nCS line rises. This behavior allows connecting more L6470 in chain, a single SPI interface can drive mote device at a time (daisy-chaining).
The L6470 logic needs 800 ns to interpreter the received byte, so the nCS line should be kept high for at least 800 ns between one byte (or group of byte if a daisy-chain is implemented) and the next one.
The L6470 drives the motor using a voltage mode approach. It is an open loop control implementing a feed forward compensation of the motor BEMF.
A correct configuration of the BEMF compensation parameters is mandatory to make the motor run. A poor compensation can cause overcurrent events, motor stall (low current), strong vibrations and device overheating.
The best way to find the setup fitting your application is to use the dSPIN evaluation software (you can find it in L6470 page on st.com). This application includes a dedicated tool for the evaluation of the BEMF compensation parameters starting from the application characteristics.
The tool returns a good starting point: monitoring the phase current and fine tuning the setup values the optimal compensation can be achieved.
About the L6470 current limit. The output current of all power electronic devices is limited by two constrains: electrical overstress and power dissipation (thermal limit).
The L6470 circuitry can actually drive 3 Arms for each phase; this is its electrical limit.
The thermal limit depends on the ability of the application to dissipate the power generated into the device (thermal resistance junction-to-ambient). This value is related to board layout (dissipating area, number of layers, material, etc.), device package, additional cooling systems (heaters, fans, etc.), ambient temperature and humidity, …
Cause its limited size, the Rthj-a of the EVAL6470 is about 40°C/W. It is a big value, far from the one that can be obtained using an accurate thermal design.
Finally, I want to highlight that the AN3103 is not the L6470 one, it is the description of the dSPIN evaluation environment only. The official AN of the product is under development.
Anyway you can always refer to our customer support (this forum included) for any issue related to the device.
Kind Regards,
Enrico Poli
Application Engineer
Motion Control Team
2011-05-17 01:20 AM
Weird chip this is (o;
When I send a hard stop first and set the Kvl for Hold later the motor current is 0.25A with a value of 0x08....setting Kval before a HardStop the current is much lower (0.04A)... Also when I send let's say a Move command with 200 full steps it either turns slowly indefinitively....or it just hums and does the acc/decceleration noise.... Maybe the SPI communication isn't that perfect as it might not detect the commands rights (short humming sound versus indef. move)... Or it doesn't like the 5V SPI jumper settings....