Вопрос по сдвиговым регистрам
- Войдите на сайт для отправки комментариев
Втр, 22/07/2014 - 20:49
Попался мне в руки девятиразрядный семисегментный LED индикатор, решила его подключить. Погуглив на тему подключения, я поняла, что надо использовать два сдвиговых регистра. Но проблема в том, что популярные сдвиговые регистры это 74HC595, о которых пишут в статьях, а у меня есть только 74HC165.
Собственно вопрос: Сильно ли отличается подключение между этими регистрами? И где можно почитать про подключение 74HC165, желательно с самого нуля, чтобы можно было разобраться?
Собственно вопрос: Сильно ли отличается подключение между этими регистрами? И где можно почитать про подключение 74HC165, желательно с самого нуля, чтобы можно было разобраться?
Имеется ввиду подключение простых устройств к регистру, таких как светодиоды, кнопки, и т.д. А если у кого-то найдется схема подключения девятиразрядного индикатора к регистрам, то будет просто отлично:)
почитать можно здесь
http://www.nxp.com/documents/data_sheet/74HC_HCT165.pdf
Этот региср вам не подойдет для индикатора, потому что он для приема паралельных данных и вывода последовательных. Во вторых надо указать тип дисплея или ссылку на него.
Этот региср вам не подойдет для индикатора, потому что он для приема паралельных данных и вывода последовательных. Во вторых надо указать тип дисплея или ссылку на него.
Все верно. Это регистры прямо противоположного назначения.
Если грубо, то один это "данные пришли по одному проводку, а вышли по многим", а другой наоборот "пришли по многим, упаковались и вышли по одному". Один служит для увеличесния "количества входов", другой "для увеличения количество выходов". Так что 74hc165 вам покатить если вы захотите много кнопок подключить. Но не для экрана.
Если 595 не можете найти, то "зеркальным отражением" 165-той, будет 164-тая :) 73HCT164. Она, как и 74HC595 тоже "serial-in (один вход)/parellel-out (много выходов).
Только я бы искал именно 73HCT164, а не 74HC164.
Если где-то написанно что входы/выходы TTL Level, или "TTL Tolerance" - можно брать и не переживать что "что-то сгорит или не хватит напряжения".
А как подключать 165 можете тут почитать
http://robocraft.ru/blog/arduino/618.html
NeiroN, спасибо за ответ. А какие отечественные аналоги есть для 74HC595? И если я правильно понимаю, то 74HC374N тоже не подойдет?
Тип индикатора ktl e90361-l-f http://www.bright-leds.ru/page-led_displays.html
Все верно. Это регистры прямо противоположного назначения.
Если грубо, то один это "данные пришли по одному проводку, а вышли по многим", а другой наоборот "пришли по многим, упаковались и вышли по одному". Один служит для увеличесния "количества входов", другой "для увеличения количество выходов". Так что 74hc165 вам покатить если вы захотите много кнопок подключить. Но не для экрана.
Если 595 не можете найти, то "зеркальным отражением" 165-той, будет 164-тая :) 73HCT164. Она, как и 74HC595 тоже "serial-in (один вход)/parellel-out (много выходов).
Только я бы искал именно 73HCT164, а не 74HC164.
Если где-то написанно что входы/выходы TTL Level, или "TTL Tolerance" - можно брать и не переживать что "что-то сгорит или не хватит напряжения".
Спасибо за развернутый ответ, теперь буду знать что искать.
А как подключать 165 можете тут почитать
http://robocraft.ru/blog/arduino/618.html
Спасибо, почитаю.
Спасибо за развернутый ответ, теперь буду знать что искать.
Прежде чем искать, вы внимательно почитайте даташит на нее (всегда с этого начинайте). Возьмите статью про 595-тый. Возьмите его даташит. Поймите, по даташиту, почему в статье "именно так делают" (в конечном итоге все эти статьи "вольный пересказ даташита").
Потом даташит 164-того... посмотрите "какие отличия" (если есть). Сожете ли вы применить статью 595 к 164-тому....
Можно еще и в эмуляторе поробовать поиграться.... и с одним, и сдругим... что-бы понять принципы.
Вам все 9 разрядов нужны? Если достаточно не более 8 я бы рекомендовал max7219 вместо сдвиговых регистров, это готовый драйвер 8 х 8 со встроенной динамической индикациец и ШИМ драйвером светодиодов
Вам все 9 разрядов нужны? Если достаточно не более 8 я бы рекомендовал max7219 вместо сдвиговых регистров, это готовый драйвер 8 х 8 со встроенной динамической индикациец и ШИМ драйвером светодиодов
Вообще, была задумка сделать индикатор громкости, получать по аналоговому входу значения громкости и зажигать диоды F B E C. Можно ли так сделать с max7219 на все 9 разрядов?
Если не все сегменты использовать, то можно. Пару цифр соединить вместе, получим восемь линий, а нужные сегменты индикатора развести на разные выводы сегментов драйвера. Тогда с точки зрения драйвера эти две цифры будут как одна, но подсвечивая разные виртуальные сегменты драйвера будем иметь управление обеими цифрами
одно НО, яркуость этих цифр будет несколько меньше скорее всего
Вообще, была задумка сделать индикатор громкости, получать по аналоговому входу значения громкости и зажигать диоды F B E C.
Так сколько у вас диодов? Может вам сдвиговые вообще не нужны? Обычных ног хватит?
Если не все сегменты использовать, то можно. Пару цифр соединить вместе, получим восемь линий, а нужные сегменты индикатора развести на разные выводы сегментов драйвера. Тогда с точки зрения драйвера эти две цифры будут как одна, но подсвечивая разные виртуальные сегменты драйвера будем иметь управление обеими цифрами
одно НО, яркуость этих цифр будет несколько меньше скорее всего
Спасибо. Если найду такой драйвер, то попробую.
Так сколько у вас диодов? Может вам сдвиговые вообще не нужны? Обычных ног хватит?
Общее количество диодов 72. Тех, которые мне нужны 36. Количество пинов 17.
Может обычных пинов и хватит, но знать бы как их подключить?
Не, на таком количестве, все-таки "регистры" это более правильно. Можно конечно в сторону меги посмотреть, но.... регистры правильней будет :)
А начинать думать нужно даже не "как подключить", а с "как вы все это питать будете".
Стандартный светик у нас жрет 15-20 ma. Берем верхнюю цифру. 20*72=1440ma или 1.4A - не кисло. А еще сама дуинка, что-нибудь да кушает. При этом помним, что по стандарту USB порт он у нас имеет полное моральное право "испустить дым", уже на 500ma. А если китайцы постарались, то это может случится и раньше.
Так что как минимум "внешний блок питания" нужен будет. И не "самый дешевый от мобилки", а что-то посерьезней.
"Что там дальше" уже зависит именно от того как какой вольтаж блок найдете.... от этого и "как подключать" и т.п.
А начинать думать нужно даже не "как подключить", а с "как вы все это питать будете".
Стандартный светик у нас жрет 15-20 ma. Берем верхнюю цифру. 20*72=1440ma или 1.4A - не кисло. А еще сама дуинка, что-нибудь да кушает.
Есть блок на 9 вольт, есть блок на 12(от того же телефона, на котором этот индикатор стоял).
А разве нельзя динамическую индикацию сделать - зажигать не все сразу, а по отдельности? На телефоне помоему так и было сделанно - при уменьшении яркости было видно как диоды маргают.
А разве нельзя динамическую индикацию сделать - зажигать не все сразу, а по отдельности? На телефоне помоему так и было сделанно - при уменьшении яркости было видно как диоды маргают.
Почему нельзя, можно? Как прикидывать какой ток пойдет - вы уже знаете :) Кто же знал сколько вам одновременно нужно? Может вы все сразу хотели :)
Ну и, если физически можно будет зажечь сразу все, то вам нужно уже програмно следить за тем что-бы случайно не врубить все....
А вообще, погуглите, много проектов было "матрицы светодиодов", "динамическая индикация" (в том числе и тут на форуме), светодиодны куб.... много вопросов отпадет сами собой.
Можете еще сторону специальных микрух LED драйверов посмотреть. Они еще и следить за стабильным током на светитики будут. Есть которые по I2c рулятся, есть которые "по своему протоколу". Я вот имел пользовал TLC5940, но ее найти немного проблемновато... зато она сама PWM умеет (мне нужно было именно регулировать яркость каждого).
А что скажите про TLC5940NT драйвер? Он лучше, чем max7219? Или на 74HC595 всеже лучше будет?
Всем добрый вечер!
Все таки решила использовать сдвиговые регистры, и для примера сделала схему с двумя регистрами, как в этой стаье http://robocraft.ru/blog/arduino/519.html
Вроде бы все работает, огнек по светодиодам бегает, но почему-то один диод, который подключен к пину QA второго регистра, всегда светится? Подскажите, в чем может быть дело?
Разобралась)) Оказывается надо было в void setup() поставить setDataMode(SPI_MODE1);
А можно как-нибудь управлять отдельными светодиодами через SPI?
Ибо этот код у меня не хочет работать, диоды все вместе мигают, причем очень тускло
У Вас получилась очень маленькая скважность сигнала на каждый отдельный LED. Скважность - это отношение длительности "горения" LED к периоду сигнала. Попросту говоря - ШИМ, то, о чем Вы сами упоминали выше. Это неизбежное зло, которое победить при таком способе коммутации вряд ли удастся. Уменьшая средний ток на светик, Вы выигрываете по потреблению мощности, но ВСЕГДА проигрываете по яркости свечения. Кстати, большинство стандартных LED начинают светиться при токе порядка 1 мА. 20 мА - это близко к предельному значению, на грани выжигания LEDa. Конечно, если это не сверхяркие диоды.
Можно попробовать уменьшить паузу между итерациями (строка 40 Вашего кода, delay (250)). Яркость свечения субъективно несколько увеличится, да и общее свечение индикатора станет более "слитным". Ну, или просто уменьшить номинал балластных резисторов между драйвером и LEDами.
Посмотрел схему по Вашей ссылке на робокрафт. ИМХО - там допущена очень грубая ошибка. Интегральные устройства, в большинстве своем, имеют разные выходные токи в состоянии "0" и "1". Не редко втекающий ток "0" в разы превышает вытекающий ток "1". По даташиту на микросхему 595 выходной ток может принимать значения +/-35 мА. Но мне это кажется маловероятным. Тем более, что общий ток потребления мелкосхемы, и входные токи нормируются почти точно так же, что уже - нонсенс. Попробуйте изменить полярность всех LODов, и их общую точку подключить не к земле, а к плюсу питания. При этом, возможно, придется инвертировать и логику управления.
Есть специализированные драйверы управления светодиодными линейками, например - HCF4094. У него, наряду с выходной дешифрацией на сдвигах, есть еще общий канал управления яркостью. 4094 - 8-разрядный, но вроде есть аналогичные 16-разрядные чипы. Так же есть драйверы 2х4 разряда (иногда бывает нужно, а коммутировать их можно как угодно), например - SN54LS240 (-241, -244), посмотрите и в эту сторону.
20 мА - это близко к предельному значению, на грани выжигания LEDa. Конечно, если это не сверхяркие диоды.
Видимо у меня какие-то неправильные светики. Годами светят на 15A-20A. И даже на 40-ковке не на долго (уже чувсвтуется нагрев, и цвет явно выглядит "не здоровым"). Кратковременно даже 80-тку ошибочно вталкивал.
Можно попробовать уменьшить паузу между итерациями (строка 40 Вашего кода, delay (250)).
Все верно. Только с точностью "до наоборот". Увеличить. Это время горения одного светодиода.
Хотя и 250ms IMHO вполне достаточно что-бы визуально увидеть нормальный "бегающий огонек".
Посмотрел схему по Вашей ссылке на робокрафт. ИМХО - там допущена очень грубая ошибка.
Угу. только наверное уже ни одно поколение ардуинщиков по ней училось....
Да. Нонсенс. Который встречается чуть-ли не всегда. Когда отдельно оговорен "предельный ток на одну ногу" и "предельный суммарный на один порт" и "предельный суммарный на всю микруху".
Откройте даташит на ATMEGA328 посмотрите сколько можно пропустить через одну ногу, умножте на количество ног и посмотрите сколько допускается суммарно на всю микруху. Опять удивитесь. C ULN-ками похожая история.
Это как с автомобилем. Допустимая нагрузка на одну ось в 2Т совсем не означает, что грузоподъемность двух-осного автомобиля 4T.
Впрочем это лирика. В этом скетче одонвременно зажигается только один светик. Так что "выпрыгнуть за границы" - шансов не очень много.
2Fekla:
>А можно как-нибудь управлять отдельными светодиодами через SPI?
Смысл вопроса не очень ясен. Ваш скетч из №18 это и есть пример "как управлять отдельным светодиодом".
Функция registerWrite() и зажигает вам "отедльный светодиод". А остальные "гасит".
Поэтому, кстати
Является излишеством.
>но почему-то один диод, который подключен к пину QA второго регистра
Нет. это "не нормально".
Скорее всего где-то напутали с подключении перепроверяйте. Или сами регистры "дохлые".
Можете еще погуглить статьи (помню что было, не находится что-то сходу), где не через SPI, а обыкновенными digitalWrite-тами дергаеют все ноги. Все програмно.... более медленно и печально.
А что скажите про TLC5940NT драйвер? Он лучше, чем max7219? Или на 74HC595 всеже лучше будет?
За max7219 не скажу... не пользовал. А вот TLC-шка... сам вопрос немного "не корректен". Это как спросить "что лучше ВАЗ или КАМАЗ"?
Смотря для чего, смотря для каких ситуаций.
TLC.
Плюсы:
- в два раза больше выходов
- контроль температуры, подключенны ли светики и т.п. (но там нужно по даташиту расчехлятся, библиотека кажись не поддерживает чтение состояния)
- главное: поддержка PWM-ма (то есть не только "влючить/выключить", но я "яркость" устанавливать можно).
- можно задавать "коррекцию яркости" (если от рождения светики имеют разную яркость, то это можно "выровнять", на уровне микрухи). Правда у меня "заставить это работать на меге", с стандартной ее библиотекой - не получилось. Глючит на всю голову (подозреваю что "из-за меги", но не сильно было нужно, поэтому "плюнул на это").
- сама занимается ограничением тока. вместо 16-ти токоограничивающих резисторов (которые Valentinych обозвал "балластными") потребуется все-го один. Причем его еще и менять не нужно если питание светков поменятся, скажем с 12v на 5 v. Он использует собственное опорное напряжение
- теоретически может больший ток через себя гнать. Кажись 120ma на канал. Но.... у меня уже при 80ma грелась что дурная. Вообщем-то 85 градусов это для нее "нормально" (предел 160). Но я такое, в закрытую коробку без вентиляции... уже пострёмался ставить. Снизил ток.
Минусы:
- НАМНОГО трудней достать (у нас).
- Цена
- больше линий для подключения нужно
- Намного сложней в управлении. То есть если взять "библиотеку", то конечно "все просто", но.... просто сложность спряталась в библиотеку. Расплата память, занимаются таймеры, которые могут пригодится для других целей и т.п.
- Опять-таки с ней уже "все програмно". Процессор грузится сильней. Аппаратный SPI - уже не заюзаешь.
- Намного чувствительней к "таймингам". Уже "запрещать прерывания", если где-то потребовалось - нужно с оглядкой.
- Намного чувствительней к шуму в питании и земле (хотя возможно это уже мои слабые знания схемотехники и просто не смог грамотно сделать).
Вообщем "Грубо говоря". 595 это увеличения digitalWrite-та, а TLC-шка, это увеличения количества analogWrite-та. Но за это "приходится расплачиваться". Так что, если PWM не нужен, то я бы выбирал 595-тые.
leshak, Вы же не хотели общаться со мной неделю?! :) Но раз Вы добровольно сложили с себя обет молчания, то продолжим...
По паузе - согласен. С точностью до наоборот. Но частота моргания 4 герца быстро утомит глаза.
По токам - не согласен. В большинстве случаев для "видимости" свечения LEDa достаточно подать на него 2-3 мА. Многие зажигаются от 0,3-0,5 мА, и уже видны даже при дневном свете. 5-10 мА - это довольно яркое свечение. Не знаю, что Вы там освещаете 20-40 миллиамперами. А главное - зачем Вы это делаете? Если нужна бОльшая яркость - для этого есть другие решения и устройства.
Теперь откройте нормальные даташиты, и увидите, что чаще отдельно нормируются токи "втекающий" и "вытекающий". При том - в разных строках таблицы параметров. И токи эти, как правило разные. В обсуждаемом даташите указано так: входной ток: +/-20 мА, выходной ток: -/+35 мА. Можете это как-то прокомментировать? Если да, то второй вопрос: ток потребления: +/-75 мА. Это что, в режиме условной паузы мелкосхема начинает регенерировать запасенную в ней энергию? :) Вот это я и назвал нонсенсом.
И последнее. Многие поколения ардуинщиков (в т.ч. - и Вы сами, по Вашим же словам), учились на описании с этого сайта, и не видели там ошибок. Я же впервые день назад заглянул на первую страницу сайта, и сразу увидел там многочисленные ляпы. Вы, кстати, это признали. Так что на будущее давайте договоримся не апеллировать к конструкциям типа "а все так делают". Вы же считаете себя профессионалом...
leshak, Вы же не хотели общаться со мной неделю?! :) Но раз Вы добровольно сложили с себя обет молчания, то продолжим...
Да я вообщем-то не столько вам писал, сколько топик-стартеру. Что же мне молча смотреть как вы режим "иван-сусанина включили"? Частнично истину пишите, частично "спорно", но предлагаете путь где новичок с большой вероятностью "утонет". Тут простое заработать не может, а вы уже про инверсию управляющей логики....
По паузе - согласен. С точностью до наоборот. Но частота моргания 4 герца быстро утомит глаза.
А давайте вы сначала разберетесь что тот скетч вообще делает?
По токам - не согласен. В большинстве случаев для "видимости" свечения LEDa достаточно подать на него 2-3 мА.
Вы хорошо воспринимаете написаное (хотя, блин, кого я спрашиваю?)? Я где-то оспорил ваше что 2-3ma хватит что-бы начать светится?
Вы упомянули что 20mA это уже близко к "выгоранию". хотя везде пишут что 15-20 это и есть "их нормальный ток". И мой опыт говорит на 15-20ma все хорошо и нормально работает.
А 40-к, я привер как пример "уже греется и светит нездорово". Или мы опять прочитали это как "нужно питать 40ma-шками?"
Могу (и уже сделал): данный скетч, зажигает один светик. Которому нужно 15-20 ma. Что не выходит за границу ни одной цифры.
И последнее. Многие поколения ардуинщиков (в т.ч. - и Вы сами, по Вашим же словам), учились на описании с этого сайта, и не видели там ошибок.
Знаете почему? Потому что я, перед тем как зарегистрироваться на форуме, одновременно читал и то что тут, и даташит, и easyeletronics.ru (где типа объясняются известные вам AVR-ки), и курс avr123 бегло просмотрел, и на Оригинальный сайт arduino.cc заглядываю регулярно (первоисточник-то - он). Поэтому у меня, в отличие от вас, никаких проблем с терминологией не возникало. "Суть" - это не помешало мне понять. И других, раз никто до вас такой чехарды не делал, - тоже не мешало. Банальный "здравый смысл" - позволял понять, из контекста, о чем тут говориться.
Перед тем как взять ардуино в руки и ни с железом в общем, ни с микроконтроллерами в частности вообще никогда не имел дело. И даже C/C++ "осваивал" одновременно с ним.
И тем-не менее... таких диких проблемм как вы - я не испытывал.
Я же впервые день назад заглянул на первую страницу сайта, и сразу увидел там многочисленные ляпы. Вы, кстати, это признали. Так что на будущее давайте договоримся не апеллировать к конструкциям типа "а все так делают". Вы же считаете себя профессионалом...
Вообще-то это мое хобби. Попытка уйти от "проф. работы". И когда тут регистрировался, то честно говоря, ожидал что я буду "дилетантом". Так что я вполне очетливо отдаю себе отчет, что это просто я "по сравнению с местным фоном..." (средним фоном - "грамотные спецы" тут все-таки бывают. но не часто).
И, в конце концов, с чего вы решили что я вообще буду о чем-то с вами договариватся? Простите, но пока вы не сложили впечатление "договоропригодного человека". Который из двух строчек кода, не может взять выбрать "которая ему нужна" (хотя в комментариях к ним написанно четко), имеет подтверждение что "это оно", но продолжает ждать пока ему "разжуют и рот положат", сам не способен внятно и однозначно выразить свою мысль-вопрос, но.... уже поехал другим объяснять причину их проблем (причем явно не понимая что этот пример вообще должен делать).
Так что... флудити-ка в своих ветках. Я увидел что вы дали "советы сомнительные", высказал альтернативную точку.. что-бы ТС имел из чего выбирать.
А что-то коментировать "для вас", в чем-то вас убеждать, объяснять вам как формируется контент в открытых сообществах, как разбиратся с каким-то незнакомым вопросом - это мне уже не интерестно.
Я с самого начала заметил, что некоторые завсегдатаи этого форума (впрочем - так происходит почти на любом форуме русского инета) имеют двойственную модель поведения. Любое несогласие с их точкой зрения по обсуждаемой теме воспринимают чуть ли не как личное оскорбление. И все бы ничего, но они тут же переходят в атаку со штыками на перевес, но уже не на точку зрения оппонента, а на его личностные качества. Увы, Вы тоже не исключение из этого воинста, что довольно прискорбно. Позволяя себе личностные встречные оскорбления, и навешивание ярлыков по каждому "бесповоду", напрочь игнорируете приводимые аргументы по сути обсуждаемого, а чаще просто намеренно искажаете их первоначальный смысл.
Пожалуй, я тоже перестану отвечать Вам. Недельку, по крайней мере... :) Но это не значит, что перестану критиковать Ваши, не всегда верные сентенции.
2Fekla:
>А можно как-нибудь управлять отдельными светодиодами через SPI?
Смысл вопроса не очень ясен. Ваш скетч из №18 это и есть пример "как управлять отдельным светодиодом".
Этот скетч у меня почему-то не хочет работать. Да, я кое-что в этом скетче пробовала комментировать и выставлять делеи в функции луп, и вроде-бы счет заработал - огонек стал бегать, но почему-то ярко свитились всегда два соседних диода, а не один, или так и надо?
>Скорее всего где-то напутали с подключении перепроверяйте. Или сами регистры "дохлые".
Вот через SPI все работает. Я научилась управлять конкретыми светодиодами. Но работает опять таки плохо - диоды, которые по логике не должны светится, все же светятся, не ярко, а очень тускло. Например: если я посылаю такой набор байт 0000000011111111, то те светодиоды, которым отправляются нули, они тускло светят, а которам еденички - ярко.
>где не через SPI, а обыкновенными digitalWrite-тами дергаеют все ноги
Так вроде бы скетч в 18 посте также работает через digitalWrite, а не SPI
И правильно ли я понимаю, что яркотью через SPI нельзя управлять?
А схему можно?
Конечно можно светики и через резисторы прямо к регистру, но максимальный ток выхода - до 20 мА, и максимальный ток через выводы Vcc, GND, т. о. максимальный суммарный ток - 70 мА.
Короче, если светодиодов много, желательно использовать ключи на транзисторах, или сборки uln2003.
А схему можно?
Конечно можно светики и через резисторы прямо к регистру, но максимальный ток выхода - до 20 мА, и максимальный ток через выводы Vcc, GND, т. о. максимальный суммарный ток - 70 мА.
Короче, если светодиодов много, желательно использовать ключи на транзисторах, или сборки uln2003.
Собирала по схеме как тут http://arduino.ru/Tutorial/registr_74HC595
Правда, светодиоды у меня не стандартные, а маленькие 0805 smd, может из за этого так? И их не много всего 14.
А можно по подробней, или ссылку где почитать?
И объясните кто знает, зачем конденцатор нужен в этой схеме?
И объясните кто знает, зачем конденцатор нужен в этой схеме?
Аммммм цитирую..
Обратите внимание на конденсатор 0.1 микрофарада на latchPin, он минимизирует шум в схеме при подаче "защелкивающего" импульса.
Если светики 0805 то предположу что корпус sot23 не вызовет особых проблем, так что можно через маленькие транзисторы, скажем IRLML0040. Но ULN2003 достаточно, и тем более один корпус - 7 выходов, проще паять.
Подключается так (от 2803 отличается только тем что 8 выходов):
Только помним что там открытые npn коллекторы, так что светики таки смотрят в другую сторону, и общий у них плюс а не GND.
Про транзисторы, если совсем ничего неизвестно: http://techhouse.brown.edu/~dmorris/projects/tutorials/transistor.switches.pdf (русского пока не нашёл), да и здешний народ знает. Вкратце транзистор - это выключатель, который подключает к нагрузке (светодиоду, двигателю и т. п.) либо плюс (p-канальный полевой, иначе называется p-FET, либо PNP биполярный), либо землю (n-FET или NPN). Причём биполярным для этого требуется некий ток, а полевым - некое напряжение.
FET - более чувствительные транзисторы, реагирующие скажем на то что на затвор попали сетевые наводки от пальца (т. е. если взяться рукой - он будет открываться с частотой 50 Гц). Поэтому полезен резистор 100 кОм между истоком и затвором. Но не обязателен.
У каждого типа транзисторов свои фичи. Полевики более удобны в управлении и в целом обеспечивают меньшие потери. Например, есть со сверхнизким сопротивлением в открытом состоянии, вплоть до того что могут коммутировать 5 метров светодиодной ленты без радиатора. Но они же имеют ёмкий затвор, то есть ограничены в рабочей частоте. Биполярные - больше едят, слабее усиливают, но и быстрее переключаются.
1) Если нагрузка по каждому каналу - только один LED, то драйвер (2003, 2803... и т.д.) просто не нужен. Драйверы применяются при мощной токовой нагрузке, до 500 мА. Один LED можно подключить непосредственно к выходу регистра.
2) Приведенная в предыдущем сообщении схема работать не будет, т.к. выходные каскады и 2003 и 2803 - это npn транзисторы с открытым коллектором, нагрузка (LED'ы) к ним подключается между шиной питания и выходами микросхемы. Об этом, кстати, сам std написал, но схему нарисовал не правильно:
Я её не рисовал, в сети нашёл. Ищо посмотрел - чото не то блин, помню же что 2003 на свои трёхзначные индюки по другому разводил. Так что да, полярность светодиодов в этой схеме - должна быть наоборот.
И не только полярность, но и общая точка подключения - не к Gnd, а к Vcc.
Это понятно, не понятно что за шум, и как он влияет.
Ну вот типа открываешь кран, а там сначало шумит, а потом только вода :)
Никакого шума со входа LATCH нет, и быть не может. Это просто разрешающий сигнал.
Емкость, показанная на схеме, нужна для затягивания фронта сигнала LATCH CLOCK, и формирования интервала tsu (15-20 нс). Подробнее смотрите Fig.6 в даташит на мелкосхему от ON Semiconductor. Но (ИМХО), номинал этой емкости не должен быть таким большим (1 мкф) в любом случае. Даже при одновременной подаче фронтов SHIFT CLOCK и LATCH CLOCK от управляющего микроконтроллера, для формирования интервала tsu = 20 нс, более чем достаточно емкости порядка нескольких нанофарад. Но проще, все-таки, ввести программную задержку, а не городить лишние элементы на плату.
Это понятно, не понятно что за шум, и как он влияет.
"....Емкость, показанная на схеме, нужна для затягивания фронта сигнала LATCH CLOCK...." - тем самым и фильтруя помехи ! нет ?
> Никакого шума со входа LATCH нет, и быть не может. Это просто разрешающий сигнал.
....ЕСТЬ ! на любом входе МОЖЕТ БЫТЬ сигнал + НАВОДКА/ПОМЕХА :( Сурка не видно - но он ЕСТЬ !
Это понятно, не понятно что за шум, и как он влияет.
как влияет шум ? меняет временно/пространственное положение фронтов сигналов !
вам отправил Мальчик SMS в 23:10 - ЖДУ ЧЕРЕЗ 10 МИН НА МЕТРО "НАГУРСКОЕ"
...сбой сети/фронтовСигнала - вы получаете SMS в 04:07.... в 04:17 вы там будете/успеете... а где в это время будет Мальчик ?
как влияет шум ? меняет временно/пространственное положение фронтов сигналов !
Т.е. плюс с минусом может поменятся?
Вообщем, дело сдвинулось с мертвой точки, проблема оказалась в проводе +5в, от сюда и были проблемы, о которых писала раньше. Пример 2.1 от сюда http://arduino.ru/Tutorial/registr_74HC595 стал работать как надо, только задержку поставила после зажигания светодиода.
На радостях добавила еще 16 светодиодов, и тут возникла еще одна проблема: как отправить бит на свиговый регистр, если их, регистров, не 2, а 4?
Попробовала изменить функкцию из примера
Огонек бегает, но бегает не в одну линию, а синхронно крест накрест, т.е. если горит первый диод на первом регистре, то так же горит на третьем регистре, а если на втором, то и на четвертом. Причем, что странно, огонек начинает бежать не с первого регистра, а со второго регистра и четвертого, и заканчивает уже на первом и третьем регистре.
Подскажите, как исправить?
> Т.е. плюс с минусом может поменятся?
не может ! ( не могЕт ) !
посмотрите представление byte и int... и измените....
8 СД зажигать - байт. 16 - это будет 2 байт - это не byte
....вот крестом по модулю 2 и бегают огоньки...... ПОВТОР !
byte
registerTwo
... надо
int
registerTwo
....дальше - не анализировал :(
посмотрите представление byte и int... и измените....
Заменить byte на int?
Это вы про это
Заменила, но все осталось как прежде.
давайте сюда итоговый код....
> На радостях добавила еще 16 светодиодов, и тут возникла еще одна проблема: как отправить бит на свиговый регистр, если их, регистров, не 2, а 4?
...на свиговый регистр можно отправить БАЙТ, А НЕ бит