TLE6209, control sencillo de un motor DC
Una de las principales misiones encomendas a los micros ha sido siempre el control preciso de motores… control de velocidad, sentido de giro, incluso potencia,par,…
Habitualmente la forma tradicional es usar un puente en H wiki aunque ello implica los cuatro transistores el driver, el código para la activación correcta de la secuencia…
Hace algún tiempo que he comenzado a sustituir ese control por un chip de Infineon, el TLE6209 (me costó encontrarlos, pero merecen la pena) datasheet Básicamente es capar de controlar un motor de 6A de consumo continuo y de ofrecer monitorización y configuración de algunos parámetros de operación vía SPI.


Lo interesante es que se obtiene información detallada caso de fallo del motor: sobretemperatura, lazo abierto, sobretensión,… esto junto con el bajo consumo en modo stand-by lo hace perfecto para aplicaciones remotas..
Puesto que el TLE es capaz de controlar picos de 7A hay que tener en cuenta el dimensionar correctamente las pistas por la que va a circular tal intensidad.
Aunque se podría controlar directamente desde el microcontrolador, en este montaje se usa una puerta AND a modo de buffer y driver


Para la correcta disipación del calor es necesario usar toda la superficie disponible.
Con un TLE y un PIC18LF2550 se puede controlar un motor por USB
En cuanto al código para leer/escribir por SPI puede ser algo así:
//se define una unión para la estructura de datos que se lee/escribe (facilita las cosas)
typedef union __TLE
{
unsigned char DATOS[2];
struct{
//escritura
unsigned char STATUS_REGISTER_RESET:1;
unsigned char OVLO:1;
unsigned char NOTUSEW:1;
unsigned char CHOPPEROFFTIME:2;
unsigned char PWMMODE:1;
unsigned char CHOPPERCURRENTLIMIT:2;
//lectura
unsigned char POWERFAIL:1;
unsigned char NOTUSER:1;
unsigned char SHORTTOVS:1;
unsigned char SHORTTOGND:1;
unsigned char OPENLOAD:1;
unsigned char TEMP:2;
unsigned char ERRORFLAG:1;
}bits;
}_TLE;
//Se define la variable….
_TLE TLE;
// una función básica para leer/escribir el TLE, esta configuración del SPI es en concreto para un 33Fxx de Microchip, pero se migra sin mayor dificultad.
void ReadTLE()
{
unsigned int SPICON1Save;
IFS2bits.SPI2IF=0;
SPICON1Save = SPI2CON1;
SPI2STATbits.SPIEN=0;
Nop();
SPI2CON1 = 0×22A;
SPI2STATbits.SPIEN=1;
Nop();
Nop();
TLE.bits.CHOPPERCURRENTLIMIT=LIMITE_MOTOR; //aqui ponemos el valor deseado de limite (un vistazo al datasheet…)
//el reseteo del error se hace aqui, se debe decidir cuando se resetea el error
//lo habitual es resetearlo cuando desaparezca la orden de marcha..
TLE.bits.STATUS_REGISTER_RESET=0;
unsigned char n;
_TLE_CS = 0;
for(n=0;n<50;n++);
TLE.DATOS[1] = ReadSPI2(TLE.DATOS[0]);
_TLE_CS = 1;
IFS2bits.SPI2IF=0;
SPI2STATbits.SPIEN=0;
Nop();
SPI2CON1=SPICON1Save;
Nop();
SPI2STATbits.SPIEN=1;
}
En fin, que os parece??
Agosto 18th, 2009 at 9:36 am
Hola felix
quisiera saber si es posible obtener el material que tenías en la página pacalaconcurso, me interesa particularmente el referente a modbus-tcp
si es así porfavor envíame un mail a olivarescroc@gmail.com
muchas gracias
Enero 11th, 2011 at 3:48 pm
…
[…]We Like to Honor it by Linking to it from Our Blog. Here is a Quality Page You Might Find Interesting that we Encourage You to Check[…]…
Enero 19th, 2012 at 1:21 pm
Hola estoy tratando de hacer una librería modbus para el PIC32, aunque existen algunas son demasiado complejas, yo recuerdo en el sitio pacalaconcurso existía
una muy sencilla y que funcionaba muy bien, si la tuvieras me la envías la convierto a pic32 usando el mplabx y el c32 y te la envio para que la publiques, estaría muy agradecido.
Atte.
Osbox68
Enero 19th, 2012 at 2:29 pm
la tienes en esta misma web:
http://blog.sasian.es/2010/01/08/modbus-tcp-para-pic-parte-i/
saludos