Control de velocidad del motor a través de L293D usando TLC5940NT

Estoy tratando de controlar un motor de CC a través de un L293D. En última instancia, lo estoy controlando con un Arduino, pero estoy tratando de usar un chip TLC5940NT como intermediario para aumentar la cantidad de salidas que tengo.

Conecté tres de los pines en el TLC5940 a la entrada 1, entrada 2 y pines habilitados del L293D, usando resistencias pull-up de 2.2k ohm en los dos pines de entrada (he intentado diagramarlo a continuación, disculpas si no está claro. Versión de tamaño completo ):

Diagrama de TLC5940NT conectado a L293D:Diagrama de TLC5940NT conectado a L293D

Cuando conecto el pin de habilitación a +5v, el motor funciona y puedo controlar la dirección usando In 1 e In 2. Sin embargo, quiero controlar la velocidad por PWM. Cuando conecto el pin Habilitar al TLC5940 (como en el diagrama) no puedo hacer que el motor gire en absoluto. Intenté usar una resistencia pull-up también en el pin de habilitación, pero aún no giraba, y cuando lo conecto a +5v DC usando solo una resistencia de 2.2k ohm o 560 ohm, no sucede nada. Lo único que lo ha hecho girar hasta ahora es una CC constante de 5 V sin resistencia.

¿Alguien puede explicar qué está mal y cómo puedo hacer que funcione?

Editar: he intentado agregar un esquema más completo

Para hacer las preguntas obvias: cuando tuvo el pull-up de la línea de habilitación del L293D a Vcc, ¿también tenía in1 e in2 configurados correctamente? ¿Y tomó un DMM y probó la salida para asegurarse de que está impulsando la línea de habilitación?
sherrellbc: in1 y 2 se configuraron correctamente al usar el pull-up: si reemplazo el pull-up con un cable a vcc, funciona, pero con el pull-up no pasa nada. Probar la salida muestra que está a -5v, por lo que pensé que podría usarlo con una resistencia pull-up para que el pin de habilitación se active cuando el TLC5940 no esté activando la salida, de la misma manera que in1 e in2 .
-5V de salida del TLC5940? ¿Cuál es el voltaje de la fuente de alimentación en Vcc del TLC5940?
Obtendrá respuestas más útiles si su esquema es más legible y preciso. Hay algunos errores y omisiones obvios en este momento, por ejemplo, ¿con qué funciona el L293D? ¿A qué está conectado el terminal (-) de la batería? ¿Hay realmente solo 3 pines del TLC5940 conectados?
Zuofu: Gracias por tu comentario. He tratado de hacer el esquema más completo - espero que sea claro. No tengo mucha experiencia en dibujar diagramas de circuitos.

Respuestas (2)

El problema central aquí es que no entendió cómo funcionan realmente las salidas TLC5940NT. No funcionan de la misma manera que los controladores de salida push-pull de Arduino, el TLC5940NT usa sumideros de corriente (llamados salidas de drenaje abiertas, ¡que realmente actúan más como entradas! ¿Extraño, verdad? Explico más al final) para tirar de ese pin "BAJO ". Es por eso que les conecta los LED, a veces con una resistencia limitadora de corriente (dependiendo de si en realidad son sumideros controlados por corriente o no) desde VCC a través del LED y luego en el pin del TLC5940NT y dispositivos similares (utilicé el TLC59116F antes, que es similar).

De hecho, cometí el mismo error que tú en el pasado, ya que no sabía qué era una entrada abierta de drenaje/fregadero, y asumí exactamente como lo hiciste, que funcionaría de manera similar a como lo hizo mi Arduino. Lo que debe hacer para que esto funcione es invertir la lógica con componentes externos y algunas resistencias de extracción. Cuando las "salidas" del TLC5940NT están "apagadas", el valor en el pin se eleva. Esta señal "alta" se puede invertir fácilmente con cualquiera de los dos métodos: un circuito inversor de lógica de transistor NPN, o un circuito integrado de lógica de controlador de línea/búfer de inversión o incluso amplificadores operacionales si es necesario. A continuación se muestra un bosquejo rápido de cada uno de estos métodos.

Figura 1: Inversor lógico de transistores que utiliza un BJT NPN económico.Inversor lógico de transistores

Figura 2: Uso de un IC de búfer de inversión, como un 7404 Hex (significa 8 entradas/salidas) Búfer de inversión.búfer de inversión hexadecimal

Es posible que desee una o dos resistencias desplegables en la salida del búfer para evitar los pines flotantes, pero creo que estará bien sin ellos. Siga siempre las instrucciones de la hoja de datos del fabricante.

Observe cómo en ambas imágenes muestro los pines de "salida" del TLC5940 como en realidad el lado superior de un MOSFET de canal N. Este pin va al "drenaje" del FET, que cuando se apaga es básicamente un circuito abierto, por lo que lo llaman salida de "drenaje abierto". A pesar de que actúa como un interruptor de sumidero de corriente del lado bajo... Terriblemente confuso, y entiendo por qué cometió este error. Es importante que aprenda esto ahora, tan pronto como pueda, y siempre recuerde en el futuro revisar estas hojas de datos y seguir la lógica para asegurarse de que esto no vuelva a suceder.

Lo siguiente que debe hacer es conectar las salidas de estas etapas inversoras a las entradas de su controlador de motor, como si fueran señales de salida estilo Arduino.

¡Su sistema debería funcionar según lo previsto ahora! Los componentes externos son un mal necesario por la forma en que funcionan las salidas del TLC5940NT. Sin embargo, estoy de acuerdo (y por qué usé el TLC59116F) tienen características increíbles y vale la pena usar su capacidad para PWM en cada canal y dejar que su microcontrolador haga otras cosas.

¿Es el motor V para el L293D +5V? ¿De dónde viene ese +5V, el Arduino? No debe (ya menudo no puede) colocar una carga significativa, como un motor acoplado al regulador del Arduino, solo tiene una clasificación de <400 mA si está utilizando un puerto USB. Consulte ¿Cuánta corriente puedo extraer de los pines de Arduino? para una buena explicación. Además, el L293 es una mala elección de componente para el control de motores de bajo voltaje, debido a la alta caída de voltaje interno, consulte:

L293D sobrecalentamiento

y

¿Qué controladores de puente H se prefieren para aplicaciones que controlan un motor de bajo voltaje?

para alternativas.

Zuofu: De hecho, tengo pedidos de puentes H con caída de voltaje más baja exactamente por esta razón (y conduciré los motores desde un suministro separado). Sin embargo, no creo que este sea el problema aquí. Si EN1 está conectado directamente a +5v, o a un pin PWM en el propio Arduino, puede impulsar el motor. Incluso puedo controlar la velocidad usando PWM directamente desde el Arduino. Es solo cuando trato de controlarlo por PWM a través del TLC5940 que no puedo hacerlo funcionar. ¿Algunas ideas?
Oh, el TLC5940 no es la parte ideal para esto. Si observa la hoja de datos, verá que es un sumidero de corriente constante, en realidad no puede conducir un nivel lógico 'alto'; solo puede absorber corriente o convertirse en alta impedancia, lo cual está bien para los LED, pero no tanto para la lógica. Puede intentar subir la salida del TLC5940 a +5V usando una resistencia de 1K o más grande.
Zuofu: eso es lo que traté de hacer, pero no pasa nada. De hecho, incluso si no uso el TLC5940 en absoluto y solo conecto una resistencia (he probado una variedad de valores de 560 ohmios a 2,2 k ohmios), no obtengo respuesta del motor. ¿Tienes idea de lo que está pasando? Si no, ¿hay algún chip que recomendaría para reemplazar el TLC5940?
¿Cómo verifica que realmente está hablando con el TLC5940? ¿Tiene un osciloscopio para sondear la entrada al L293?
No tengo osciloscopio. Sin embargo, puedo conectar los LED a los pines y variar el brillo hablando con el TLC5940, y puedo encender y apagar el motor cambiando la salida a In1 e In2, así que creo que estoy controlando el TLC5940 correctamente, solo está controlando En1 que no puedo hacer ejercicio.
Hmm, es difícil diagnosticar el problema exacto si no tienes acceso a un osciloscopio. Una cosa a tener en cuenta es que el L293D es un dispositivo basado en BJT, por lo que aunque esas entradas se dibujan como entradas lógicas, realmente consumen una corriente significativa. En su caso, esa resistencia pull-up está tratando de llevar ese pin alto, pero al ser solo una resistencia, no puede fluir mucha corriente en esa entrada. En lugar de pedir prestado algún equipo de prueba, recomiendo probar un puente H con entradas basadas en FET, algunas de las cuales se proporcionan en el último enlace.