AnsweredAssumed Answered

Controlling two coherent motors using ST project and libraries

Question asked by Lisi.Marco on Jul 16, 2015
Latest reply on Sep 7, 2015 by Gigi
Hello everyone,
It's about a month that I work on a project of motor control, and I have some issues that I was not able to solve untill now.

I'm working on a ST microcontroller version STM32F207ZC, I explain the situation of my work:
I have a two wheel drive cart: each of these wheels is drvien by a brushless motor. There is no phisical axile between the two wheels, so their movement is not joint.

My goal is to simulate an axile between the wheels, so that the cart can move properly (the two drive wheels going at the same speed).

With the firmware downloaded on ST website and the precompiled librieries (MC Workbench and example project STM32F2xx_Workspace for Keil uVision) I am able to control both motors individually, and using the serial interface provided I can set to both motors the same reference speed, but what will happend if one of the 2 motors find an obstacle? One will sllow down while the other will continue running at the reference speed, and this will lead the cart to move in a wrong way (and, in extreme cases, also rotating on itself).

So what I would like to do is to set the two motors in such a way that if one slows down, the other follows, or otherwise I would like to introduce a position feedback control in the system (based on the optical encoder inside the motors), so that if one motors slows down, in a short amount of time it will recover the position by increasing it's speed above the reference speed (this could not be done with a speed control, because if the motor slows down and than returns running at its reference speed, the lost space with respect to the other motor will not be recovered, and the cart will continue to move in a wrong way).

How can I implement such idea with the firmware provided by ST?
Do you have any solution on how this could be done using the functions of the precompiled libraries?
Thank you
Marco
---------

Buongiorno a tutti
E' da circa un mese che lavoro su un progetto di controllo motore, e ho alcuni problemi che non sono stato in grado di risolvere fino ad ora.

Sto lavorando su un microcontrollore STM32F207ZC, questa è la situazione del mio lavoro:
Ho un carrello a due ruote motrici: ciascuna di queste è mossa da un motore brushless. Non c'è alcun assile fisico tra le due ruote, quindi il loro movimento è "slegato".

Il mio obiettivo è di simulare un assile tra le ruote, in modo che il carrello possa muoversi correttamente (le due ruote motrici che ruotano concordi alla stessa velocità).

Con il firmware scaricato sul sito ST e le librerie precompilate (MC Workbench e progetto di esempio STM32F2xx_Workspace per Keil uVision) sono in grado di controllare entrambi i motori singolarmente, e utilizzando l'interfaccia seriale fornita posso impostare a entrambi i motori la stessa velocità di riferimento, ma cosa  succede se uno dei 2 motori trova un ostacolo? Uno rallenterà, mentre l'altro continuerà a ruotare alla velocità di riferimento, e questo porterà il carro a muoversi male e "storto" (e in un caso estremo anche a ruotare su se stesso).

Quindi, quello che vorrei fare è impostare i due motori in modo tale che se uno rallenta, l'altra segue, o altrimenti vorrei introdurre un controllo di retroazione sulla posizione nel sistema (basato sull'encoder ottico presente all'interno dei motori ), in modo che se uno motori rallenta, in un breve lasso di tempo recupera la posizione persa rispetto all'altro aumentando la sua velocità al di sopra della velocità di riferimento (cosa che non si potrebbe fare con un controllo solo sulla velocità, perché se il motore rallenta e ritorna in seguito alla velocità di riferimento, lo spazio perso non verrà recuperato, e il carrello continuerà a viaggiare storto).

Come posso metter in pratica questa idea con il firmware fornito da ST?
Avete qualche soluzione su come questo potrebbe essere svolto utilizzando le funzioni delle librerie precompilate?
Grazie
Marco

Outcomes