TLC5940 и 2 вопроса (как взять больше 130мА с ноги, как освободить SPI).

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем uscr, 25 ноя 2013.

  1. uscr

    uscr Нерд

    Здравствуйте! Оказалось у меня микросхема TLC5940 (даташит: http://www.ti.com/lit/ds/symlink/tlc5940.pdf). С ноги у него можно взять 130мA. Как управлять большей нагрузкой? "стандартное" решение с ULN2003 не подходит потому, что драйвер управляет землёй, а ULN управляется положительным напряжением.

    Второй вопрос:
    Библиотека для микросхемы (http://playground.arduino.cc/learning/TLC5940) не позволяет переопределить пины, к которым подключена микруха. При этом, занимаются ПИНы, которые используются для SPI. А мне нужен этот самый SPI для подключения беспроводного модуля. При чтении даташита я не увидел, почему выбраны именно эти ПИНы. в библиотеки не вижу, где бы можно было их переназначить. Возможно ли запустить драйвер на других ПИНах? Возможно. существует другая библиотека для этого драфвера? Собственно, нужно просто управлять ШИМом в данном проекте, никаких "наворотов" (управление сервами, например) не потребуется.
     
  2. Unixon

    Unixon Оракул Модератор

    1) За TLC поставьте мощный P-канальный транзистор в положительное плечо.
    2) Поправьте библиотеку под себя и работайте на здоровье.
     
    sanik нравится это.
  3. uscr

    uscr Нерд

    1)P-канальный транзистор - это MOSFET? А он успеет открываться/закрываться?

    2)Нашёл каталог pinouts в архиве с библиотекой. Там файлики с описанием используемых пинов. В есть такой комментарий:

    Код (Text):
    /** SS will be set to output as to not interfere with SPI master operation.
        If you have changed the pin-outs and the library doesn't seem to work
        or works intermittently, make sure this pin is set correctly.  This pin
        will not be used by the library other than setting its direction to
        output. */
    Моего английского не хватает, что бы точно понять, что здесь написано, понял только, что это ОНО :)

    Что нужно поправить, что бы не мешать SPI?

    P.S.
    Нашёл аналогичные темы на англоязычных форумах. Народ уходит без решения :(
    Однако, нашёл ещё и вот это: http://mlab.taik.fi/paja/?p=2808 Позже попробую.
     
  4. Unixon

    Unixon Оракул Модератор

    1) Да, MOSFET. Частоты нужно считать под конкретный транзистор, а до этого определиться с параметрами нагрузки.
    2) Дословно: /** Вывод SS будет установлен в состояние <выход>, чтобы не мешать работе МК в режиме ведущего устройства SPI. Если вы изменили используемые выводы, убедитесь, что вывод SS назначен правильно. Вывод SS не будет использован библиотекой никаким иным образом, кроме установки его в состояние <выход>.*/
     
  5. uscr

    uscr Нерд

    Значит ли это, что оно и так не должно мешать работе SPI?
     
  6. Unixon

    Unixon Оракул Модератор

    Мне вообще не ясно, зачем библиотека (судя по этому комментарию в коде) сует нос не в свое дело. Исходники не смотрел. Возможно, пробемы не существует.
     
  7. uscr

    uscr Нерд

    Проблема существует, в этом и беда. NFR24L01 не работает с подключённой TLC5940. Для чистоты эксперимента попробую с UNO (хотя в данном конкретном случае ожидаю аналогичного с nano поведения) и с мегой. Возможно, дело не в пинах, собственно...
     
  8. Unixon

    Unixon Оракул Модератор

    Ага, ну тогда придется эту несуразицу из библиотеки выпиливать или перевешивать куда-нибудь.
     
  9. sanik

    sanik Гик

    Тут как то натыкался на статейку попробуйте так
    Решение проблемы с SPI
    Вариант подключения по умолчанию, рассмотренный выше — использует интерфейс SPI. Особенности библиотеки Tlc5940 не позволяют подключать к arduino одновременно с драйвером другие модули, использующие интерфейс SPI. Авторы библиотеки предлагают в качестве решения проблемы использовать другой интерфейс драйвера «bitbang». Он сравнительно медленнее SPI, но это проявляется только на действительно огромном количестве микросхем, соединённых в цепочку. Для использования интерфейса bitbang нужно в папке с библиотекой открыть файл Tlc5940/tlc_config.h и в строке 45 заменить

    1
    #define DATA_TRANSFER_MODE TLC_SPI
    на

    1
    #define DATA_TRANSFER_MODE TLC_BITBANG
    и переключить выводы драйвера:

    25 вывод соединить с 4 цифровым выводом Arduino
    26 вывод соединить с 7 цифровым выводом Arduino

    Теперь библиотека драйвера не занимает SPI интерфейс, а сам драйвер полностью сохранил свою функциональность.
     
  10. sanik

    sanik Гик

    Если не трудно можно схемку?
     
  11. Unixon

    Unixon Оракул Модератор

    Да я уже забыл, что имел ввиду, когда говорил про P-канал :)
    Вы сейчас что пытаетесь подключить?
     
  12. sanik

    sanik Гик

    Мне нужно подключить на каждый канал 20 светодиодов по 20мА каждый
     
  13. Unixon

    Unixon Оракул Модератор

    А что есть из драйверов или генераторов ШИМа?
     
  14. sanik

    sanik Гик

    Так TLC5940 читал на форумах там пытались найти решение для лент 12в но так и не нашли, мне 12в не надо.
     
  15. sanik

    sanik Гик

    Сейчас пока так работает

     
  16. sanik

    sanik Гик

    Собрано по этой схеме
    TLC5940_Arduino_circuit.jpg
     
  17. Unixon

    Unixon Оракул Модератор

    Ну смотрите, TLC5940 выполняет две функции: управляет током выходов и генерирует управляющий ШИМ, которым открывает свои выходные ключи. Если вы хотите оставить только функцию генерации ШИМа, а ключевую функцию вынести на внешний транзистор, тогда нужно преобразовать токовый выход к выходу по напряжению. Сделать это элементарно: нужно притянуть [каждый] выход TLC5940 к (+) питания через резистор 1~10k и вместо катода светодиода подавать напряжение с выхода на базу/затвор ключевого транзистора. Ток светодиодов при этом ограничиваться не будет.
     
  18. sanik

    sanik Гик

    Спасибо большое! Буду пробовать...
     
  19. sanik

    sanik Гик

    Подскажите какое ограничительное сопротивление нужно что бы взять максимальный ток с канала TLC5940 ? Мне нужно подцепить 5 светодиодов по 20 ма на каждый канал.