Управление скоростью двигателя через L293D с помощью TLC5940NT

Я пытаюсь управлять двигателем постоянного тока через L293D. В конечном итоге я управляю им с помощью Arduino, но я пытаюсь использовать микросхему TLC5940NT в качестве посредника, чтобы увеличить количество выходов, которые у меня есть.

Я подключил три контакта на TLC5940 к входу 1, входу 2 и контактам включения L293D, используя подтягивающие резисторы 2,2 кОм на двух входных контактах (я попытался изобразить это на схеме ниже — извините, если непонятно. Полноразмерная версия ):

Схема подключения TLC5940NT к L293D:Схема подключения TLC5940NT к L293D

Когда я подключаю контакт включения к +5 В, двигатель работает, и я могу управлять направлением, используя входы 1 и 2. Однако я хочу контролировать скорость с помощью ШИМ. Когда я подключаю вывод Enable к TLC5940 (как на схеме), я вообще не могу заставить двигатель вращаться. Я также пытался использовать подтягивающий резистор на контакте включения, но он все еще не вращался, и когда я подключаю его к +5 В постоянного тока, используя только резистор 2,2 кОм или 560 Ом, ничего не происходит. Единственное, что заставило его вращаться до сих пор, это постоянное напряжение 5 В постоянного тока без резистора.

Может ли кто-нибудь объяснить, что не так и как я могу заставить его работать?

Изменить: я попытался добавить более полную схему

Чтобы задать очевидные вопросы: когда у вас была подтяжка от линии включения L293D к Vcc, правильно ли были настроены входы 1 и 2? И вы взяли цифровой мультиметр и проверили его выход, чтобы убедиться, что он управляет линией включения?
sherrellbc: in1 и 2 были настроены правильно при использовании подтягивания - если заменить подтягивание проводом на vcc, то работает, а вот с подтягиванием ничего не происходит. Тестирование выхода показывает, что оно составляет -5 В, поэтому я подумал, что могу использовать его с подтягивающим резистором, чтобы контакт включения приводился в действие, когда TLC5940 не управляет выходом, так же, как in1 и in2. .
Выход -5В от TLC5940? Какое напряжение питания на Vcc TLC5940?
Вы получите больше полезных ответов, если ваша схема будет более разборчивой и точной. Сейчас есть очевидные ошибки и упущения, например, чем питается L293D? К чему подключена клемма (-) аккумулятора? Неужели у TLC5940 подключено только 3 контакта?
Цзофу: Спасибо за ваш комментарий. Я попытался сделать схему более полной - надеюсь, она понятна. У меня нет большого опыта в рисовании электрических схем.

Ответы (2)

Основная проблема здесь в том, что вы неправильно поняли, как на самом деле работают выходы TLC5940NT. Они не работают так же, как двухтактные драйверы вывода Arduino, TLC5940NT использует стоки тока (называемые выходами с открытым стоком, которые на самом деле действуют больше как входы! Чудовищно, верно? Я объясню больше в конце), чтобы потянуть этот контакт «НИЗКИЙ». ". Вот почему вы подключаете к ним светодиоды, иногда с токоограничивающим резистором (в зависимости от того, являются ли они фактически управляемыми по току приемниками или нет) от VCC через светодиод, а затем к выводу TLC5940NT и подобных устройств (я использовал TLC59116F). раньше, что аналогично).

На самом деле я сделал ту же ошибку, что и вы, когда-то, так как я не знал, что такое вход с открытым стоком / стоком, и точно так же, как и вы, предполагал, что он будет работать так же, как мой Arduino. Что вам нужно сделать, чтобы заставить эту работу работать, так это инвертировать логику с помощью внешних компонентов и некоторых подтягивающих резисторов. Когда «выходы» TLC5940NT «выключены», значение на выводе становится высоким. Этот «высокий» сигнал можно легко инвертировать двумя способами: схемой логического инвертора на транзисторах NPN, инвертирующей логикой буфера/линейного драйвера или даже операционными усилителями, если необходимо. Ниже приведен краткий набросок каждого из этих методов.

Рисунок 1: Транзисторный логический инвертор с использованием дешевого NPN BJT.Транзисторный логический инвертор

Рисунок 2: Использование микросхемы инвертирующего буфера, такой как 7404 Hex (означает 8 входов/выходов). Инвертирующий буфер.шестнадцатеричный инвертирующий буфер

Возможно, вам понадобится один или два подтягивающих резистора на выходе буфера, чтобы избежать плавающих контактов, но я думаю, что без них все будет в порядке. Всегда следуйте инструкциям производителя.

Обратите внимание, как на обоих рисунках я показываю «выходные» контакты TLC5940 как верхнюю часть N-канального МОП-транзистора? Этот вывод идет на «сток» полевого транзистора, который в выключенном состоянии представляет собой разомкнутую цепь, поэтому они называют его выходом «открытого стока». Несмотря на то, что он действует как выключатель приемника низкого тока... Ужасно сбивает с толку, и я понимаю, почему вы допустили эту ошибку. Важно, чтобы вы усвоили это сейчас, как можно раньше, и всегда помните в будущем, чтобы проверить эти таблицы данных и пройтись по логике, чтобы убедиться, что это не повторится.

Следующее, что нужно сделать, это подключить выходы этих инвертирующих каскадов к входам вашего драйвера двигателя, как если бы они были выходными сигналами в стиле Arduino.

Теперь ваша система должна работать, как задумано! Внешние компоненты — неизбежное зло из-за того, как работают выходы TLC5940NT. Я согласен, хотя (и почему я использовал TLC59116F), у них потрясающие функции, и использование их способности ШИМ для каждого канала и позволяет вашему микроконтроллеру делать другие вещи, стоит затраченных усилий.

Подключен ли мотор V к L293D +5V? Откуда берутся эти +5В - от Ардуино? Вы не должны (и часто не можете) помещать значительную нагрузку, такую ​​​​как двигатель, подключенный к регулятору Arduino, он рассчитан только на <400 мА, если вы используете порт USB. См. Сколько тока я могу получить от контактов Arduino? за хорошее объяснение. Кроме того, L293 — плохой выбор компонента для управления двигателем с низким напряжением из-за высокого внутреннего падения напряжения, см.:

L293D перегрев

и

Какие драйверы Н-моста предпочтительны для приложений, управляющих низковольтным двигателем?

для альтернатив.

Zuofu: Именно по этой причине я заказал Н-мосты с меньшим падением напряжения (и буду управлять двигателями от отдельного источника). Однако я не думаю, что это проблема здесь. Если EN1 подключен напрямую к +5 В или к выводу ШИМ на самой плате Arduino, он может управлять двигателем. Я даже могу управлять скоростью с помощью ШИМ прямо с Arduino. Вот только при попытке управлять им с помощью ШИМ через TLC5940 я не могу заставить его работать. Есть идеи?
О, TLC5940 не идеальная деталь для этого. Если вы посмотрите на таблицу данных, вы увидите, что это приемник постоянного тока, он не может фактически управлять логическим уровнем «привет»; он может только потреблять ток или становиться высокоимпедансным, что хорошо для светодиодов, но не очень хорошо для логики. Вы можете попробовать поднять выход TLC5940 до +5 В, используя резистор номиналом 1 кОм или больше.
Зуофу: Я пытался это сделать, но ничего не получается. На самом деле, даже если я вообще не использую TLC5940 и просто подключаю резистор (я пробовал различные значения от 560 Ом до 2,2 кОм), я не получаю никакой реакции от двигателя. Есть идеи, что происходит? Если нет, есть ли чип, который вы бы порекомендовали заменить TLC5940?
Как вы проверяете, что вы действительно разговариваете с TLC5940? У вас есть осциллограф, чтобы проверить вход L293?
У меня нет осциллографа. Однако я могу подключить светодиоды к контактам и изменить яркость, поговорив с TLC5940, и я могу включить и выключить двигатель, изменив выход на In1 и In2, поэтому я думаю, что правильно управляю TLC5940 - это просто управление En1, что я не могу решить.
Хм, трудно диагностировать точную проблему, если у вас нет доступа к осциллографу. Следует иметь в виду, что L293D — это устройство на основе BJT, поэтому, несмотря на то, что эти входы используются как логические входы, они потребляют значительный ток. В вашем случае этот подтягивающий резистор пытается подать на этот контакт высокий уровень, но, будучи всего лишь резистором, на этот вход не может протекать большой ток. Вместо заимствования некоторого тестового оборудования я рекомендую попробовать H-мост с входами на основе FET, некоторые из которых приведены в этой последней ссылке.