Как управлять 74HC595 без Arduino
- Войдите на сайт для отправки комментариев
Здравствуйте, я собрал себе простейшую схему на 74HC595 для изучения Регистра с помощью Arduino.
Пользуясь описанием функции shiftOut() я наглядно увидел работу 74HC595 а прочитав вот эту статью я понял что регистрам можно управлять и без контроллера.
Так вот мой вопрос в том, как можно спомощью обычных кнопок управлять регистром?
Такой вот у меня ход мысли:
Выжные Pin's дла меня это DATA IN, LATCH и CLK.
С помощью DATA IN я сообщаю какой бит должен быть передан, при + двигаю 1 а при - двигаю 0.
С помощью CLK даю знать что я начинаю двигать бит, при + двигаю а при - нет.
С помощью LATCH я сообщаю что всё готово и передаю данный на "паралелльный порт", при + выдаю данные на паралельные Pin's.
Я пробывал с помощью 6-ти кнопок это дело обмануть, т.е на каждый из входов по две кнопки, для + и -.
При тесте я ставил LATCH на -,затем CLK на + (наченаю двигать), затем DATA IN на + (чтобы двинуть 1) после чего CLK на - (больше не двигаю), LATCH на + (вывожу на паралельные выходы).
По моим рассуждениям должен гореть первый светодиод. Но ничего не происходит.
Пожалуйста подкажите как можно управлять регистром с помощью кнопок и без контроллера.
Для управления регистром помимо 3 кнопок вам необходимо 3 резистора (на 5 - 10 кОм) и 3 конденсатора (10 - 50 кмФ). Все это нужно для того, что бы исключить дребезг кнопок.
а вашу схему подключения кнопк к сдвигомому регисру можно увидеть ?
у вас учтено что (LE)' выдает содержимое регистров на выходы при логическом "0"?
то есть пока вы тыкаете по кнопкам входов(DS-Data In,SHCP- CLK),положение кнопки (LE )' - (LATCH ENABLE)' должно быть,как следует из даташита, нажатым - вположении '+',а при "отжимании"(закарачивании на Gnd),то есть после перехода из пложения '+' -> '-' она даст "добро" на вывод содержимого регистров.
к тому же как мне кажеться желательно все входы подключить через подтягивающие резисторы(1k-10k) для избежания дребезгов кнопок
Подключить можно так
maksim
напишите плз номиналы кондеров и резисторов для устранения дребезга, а то плохо видно
Выше написано. На схеме резисторы по 10 кОм, а конденсаторы по 10 кмФ.
Спасибо всем огромное за быстрый ответ.
Я думаю главной моей проблемой всётаки было то, что я думал для вывода регистра надо LE перевести с "-" на "+" а не наоборот.
Плюс ко всему по моей схеме видно, что переключение с "+" на "-" и обратно соправаждается " не определённым сосоянием" т.е. когда кнопка и не на "+" и не на "-". На схеме от maksim ,благодоря резистарам, достаточно одной кнопки, чтобы переключится с "+" на "-", что конечно избавляет схему от "не определённого состояния" и переключения проходит непосредственно с "+" к "-". Гениально !!!
П.С. Я извеняюсь за такие выражения как ("не определённое состояние"), я не знаю как это состояние называется правельно ;-). И примитивность моей схемы связанно с тем что я Хобби-самоделкин и увлёкся электроникой совсем недавно. Практически ничего ещё не знаю :-D
Хочу в догонку утачнить пару деталей.
Для чего конкретно нужен Конденсатор. С сопротивлениями вроде всё понятно, но вот Конденсаторы. И ещё, это елекролитические коденсаторы по 10 микрофарад или что значит "к" перед "мф"? Может всёже "мкФ"?
Конденсаторы нужны для устранения дребезга контактов, без них за одно нажатие на кнопку вы будете получать несколько срабатываний. Тип конденсаторов любой. А кмФ - это очепятка мкФ (микрофарад).
Можно и меньшей емкости, в данном случае (10 кОм и 10 кмФ) конденсатор заряжается - разряжается примерно за пол секунды. В принципе это очень долго, но гарантировано исключен дребезг.
главная инрига,заработало или нет?))
главная инрига,заработало или нет?))
Держу интригу дальше. Пока нет времени проверить, надеюсь на выходных получится попробывать. Отпешусь обязательно.
Значит так. Всё как в схеме от maksim'а наминалы те же 10мкФ и 10кОм.
При отправки единицы всё работает идеально, тоесть если я отправляю друг за другом только еденици то видно как светодеоды зажигаются друг за другом. После того как все выходы стоят на 1, эфекта уже ни кокого не видно, всё деоды просто горят, так как регистр просто двигает дальше.
Примерно выглядит так (при первом старте все деоды на 0, я двигаю только 1)
А: 00000000 (старт, ни чего не двигал)
Б: 00000001 (двигаю 1)
В: 00000011 (...)
Г: 00000111 (...)
Д: 00001111 (...)
Е: 00011111 (...)
Ё: 00111111 (...)
Ж:01111111 (...)
З: 11111111 (...) (конец, так как у меня тольно один регистр дальше ничё не меняется, некуда двигать)
Но вот стоит послать 0, все выходы устанавливаются на 0 и деоды гаснут.
А: 11111111 (старт все диоды на 1)
Б: 00000000 (двигаю 0) всё погасло, а хотелось 11111110 -> 11111100 -> 11111000 и так далее
И еще, я делаю эту схемку для наглядного пособия, чтобы разобраться по подробнее. По этому от управления контролером я тоже не отказался, т.е. хочу чтобы ввод был и кнопками и контроллером. Для того чтобы кнопки случайно не нажать во время работы контроллера, я установил выключатель на плюс кнопок.
Синими проводками это моя отсебячена, так вот выглядит моя схема. МК- это Микроконтроллер
Но вот проблема в том, что теперь контроллер тоже не может двигать я пологаю что это из за кондёров. Микроконтроллер очень коротко отправляет сигнал на CLK и из за зарядки кондёра сигнал просто не успевает дойти.
Дла этого я переписал функцию shiftOut и встроил паузу, чтобы успевал зарядится кондёр, но это тоже ничего не изменило.
Стоит только отпаять кондёры от ног регистра, сразу всё начинает работать.
Вот скеч которым я играюсь:
Может вообще убрать кондёры, и надеятся что дребезга не будит?
Для RC цепи 10 кОм и 10 мкФ задержки в 100 миллисекунд мало, как минимум 500, а лучше 1000 и где задержка задвижки и задержка данных??? По поводу "все светодиоды тухнут" подробнее опишите, что в какой момент нажимаете...
Для начало хочу извениться за не правельную информацию. Я дал ссылку на не правельное описание регистра. Вот тут правельное.
К счастью разницы почти нет.
Теперь обратно к проблеме: Я добавил задержку на задвижку и данные. Везде задержка 1000.
После этого регистр стал себя васти (при управлении МК) точно так же как и кнопками. Т.е. единицы записываются, а при отправки нуля весь регистр сбрасывается на 0. После того как я убрал Конденсатор с CLK, контроллер начал правельно писать в регистр. К тому же управление кнопками стало возможным (еденицы и нули можно записывать кнопками) с одним НО.
Теперь про но. Дребезг кнопки CLK иногда приводит к тому, что за место одного такта срабатывают два и более. Пробывал ставить кондёр на 1мкф эфект такойже как и с 10мкф.
Может мне лучше резистор поменьше выбрать, если да то каой?
Попробуйте, уменьшить сопративление до 1 кОм.
Постоянную времени R1C1 - выбираем миллисекунд 50.....100. А цепочка R2C1 - дребезг не уберёт....
Всё это уже опробованно, путём вырешевания и подбора. Не что это от дребезга не освобождает. Пробовал даже катушку подключать. Тоже не помогло.
Две веши каторые помогли решить проблемму: либо "тригер шмитта" либо "негаторы".