Каскад сдвиговых регистров 595

pix_l
Offline
Зарегистрирован: 19.02.2017

Приветствую.

Вчера схемку собрал, а сегодня всю бошку сломал, как передавать биты в последующие регистры. Примеры смотрел, но что то не догоняю. С одним регистром проблем нет, но как дальше? Если таких регистров штук 10 будет?

JasKo
Offline
Зарегистрирован: 21.11.2015

Работать с 10 также как с одним, надо сделать вызов shiftout 10 раз и все.

pix_l
Offline
Зарегистрирован: 19.02.2017

т.е. при первом вызове шифта 8 бит влетает в первый регистр, при втором, первые перелетают во второй регистр, а биты из второго вызова влетают в первый, так что ли? а хранить то все эти биты в чем лучше?

negavoid
Offline
Зарегистрирован: 09.07.2016

Точно смотрели примеры? Вот, с двумя, с десятью будет то же самое http://arduino.ru/Tutorial/registr_74HC595

pix_l
Offline
Зарегистрирован: 19.02.2017

его и смотрел, просто не понятно про старшие и младшие биты

b707
Offline
Зарегистрирован: 26.05.2017

pix_l пишет:

его и смотрел, просто не понятно про старшие и младшие биты

Статья на нашем сайте - не оригинал, а кривой неполный перевод, в котором этот вопрос, действительно, как-то скомкан. Если нормально с английским - вот ознакомтесь с оригиналом, тут понятнее.

https://www.arduino.cc/en/Tutorial/ShiftOut

Идея в том, что если до включения "защелки" вы пихаете в регистр все новые и новые байты - эти байты пропихивают предыдущие состояния в следующие регистры.

pix_l
Offline
Зарегистрирован: 19.02.2017

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

например, сейчас пыжусь вот с этим:

   shiftOut(dataPin, clockPin, MSBFIRST, 0b01111111);      
   shiftOut(dataPin, clockPin, MSBFIRST, 0b11110111);
на первый регистр заведены 8 светодиодов, на второй только на восьмом контакте, в итоге горит только 4-й пин на первом регистре, а на втором тишина. если строки поменять местами, то будут гореть оба 8-х. в чем прикол?
b707
Offline
Зарегистрирован: 26.05.2017

pix_l пишет:

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

Там нет ничего "бегущего", такое же  "точечное включение определенных выводов", только в цикле.

Не забывайте только, что даже если вы меняете состояние только одного вывода - нужно каждый раз выставлять значения ВСЕХ выводов ВО ВСЕХ регистрах

pix_l
Offline
Зарегистрирован: 19.02.2017

да это понятно, не ясно почему у меня во втором регистре не горит восьмой контакт

b707
Offline
Зарегистрирован: 26.05.2017

pix_l пишет:

 чем прикол?

ну чудес-то не бывает... либо неверно соединили, либо ошибка в скетче.

pix_l
Offline
Зарегистрирован: 19.02.2017

я дебил! на первом регистре то реле, там выключение = 1, а на втором регистре стоит обычный светодиод - у него то выключение = 0. В общем вроде работает. Но все таки как более удобнее хранить биты в случае если используется несколько регистром? Массив байт?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pix_l пишет:

я дебил! на первом регистре то реле, там выключение = 1, а на втором регистре стоит обычный светодиод - у него то выключение = 0. В общем вроде работает. Но все таки как более удобнее хранить биты в случае если используется несколько регистром? Массив байт?

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

pix_l
Offline
Зарегистрирован: 19.02.2017

что за куча и зачем SPI? Имеестя в виду библиотека?

pix_l
Offline
Зарегистрирован: 19.02.2017

кстати, как записать в регистр данные понятно, а можно ли как то снять какие в данный момент данные в регистре?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, можно-то, оно можно, другое дело зачем и какие ресурсы допустимо на это потратить.

pix_l
Offline
Зарегистрирован: 19.02.2017

ну например узнать включен ли определенный пин и на основании этого решить, выключать его или нет

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если его надо включить, то его можно просто включить, совершенно неважно включён он уже или нет.

Ну, а так. вообще, Вам нужен один конкретный пин регистра или прям сразу все?

pix_l
Offline
Зарегистрирован: 19.02.2017

в принципе и так и так интересно было бы узнать

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pix_l пишет:

ну например узнать включен ли определенный пин и на основании этого решить, выключать его или нет

Похоже у вас маразм. Если вы делаете и не знаете что вы делаете, и как узнать, что вы делаете.

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

pix_l
Offline
Зарегистрирован: 19.02.2017

этот вариант мне то же в голову пришел, но вдруг что то еще интересное подскажут - пригодится

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А, а так Вам вообще ничего не нужно, Вы теоретизируете? Ну, давайте потеретизируем. Есть 100500 способов.

1. Подключите нужный пин регистра к пину ардуино и читайте его digitalRead'ом
2. Поставьте рядом с 595 регистром 165-ый и соедините все пины двух регистров (первый с первым, второй со вторым и т.д.). Со 165 спокойно читайте состояние пинов 595-ого. Он как раз для этого. В смысле 595-ый для размножения выходов, а 165-ый - входов.

и так ещё 100498 способов.

А теперь перестаньте страдать фигнёй и поймите, что никто, кроме Вас не поменяет состояние пина 595 регистра. Если он поменялся, значит поменяли его Вы. Воэтому Вам вовсе не надо читать что там прямо с пина. Прочитайте из того массива, который Вы в регистр запихивали - оно и будет.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pix_l пишет:

этот вариант мне то же в голову пришел, но вдруг что то еще интересное подскажут - пригодится

Открываете это http://cpp.com.ru/ и читаете. Там много чего интересного. И главное очень нужного.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

Кто пихает данные на регистр. Вы или зеленые человечки.

А вдруг запрещённый в России ИГИЛ или русские хакеры? Как быть? Куда бежать?

pix_l
Offline
Зарегистрирован: 19.02.2017

ЕвгенийП пишет:

В смысле 595-ый для размножения выходов, а 165-ый - входов.

как раз 165 у меня следующие на очереди. но не для этой цели.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
А вдруг запрещённый в России ИГИЛ или русские хакеры? Как быть? Куда бежать?

Так ясно куда : к Путину или от Путина. И вообще, если вавка в голове надо пить зеленку.

pix_l
Offline
Зарегистрирован: 19.02.2017

кстати, заметил какую то фигню. включил я значит этот светодиод и сел кино смотреть, а потом глянул, на ардуине что то поморгало и светодиод выключился (он у меня включается по кнопке). я нажал кнопку и он опять зажегся. Так что там есть какой то временной порог?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, вот, писал писал про 165-ый, оказалось никому не нужно.

А временной порог. Да, есть, только не в ардуине, а в голове разработчика. Что-то Вы там напарили. Например, кнопку не подтянули или ещё чего, кто ж Вас знает-то.

pix_l
Offline
Зарегистрирован: 19.02.2017

ЕвгенийП пишет:

Ну, вот, писал писал про 165-ый, оказалось никому не нужно.

А временной порог. Да, есть, только не в ардуине, а в голове разработчика. Что-то Вы там напарили. Например, кнопку не подтянули или ещё чего, кто ж Вас знает-то.

кнопка вот такая, ее что еще и подтягивать надо что ли?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Насчёт ложных срабатываний такого сенсора недавно тем была, ищите. А Вам никто не поможет, пока не выложите схему и скетч..

strarbit
Offline
Зарегистрирован: 12.06.2016

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

strarbit пишет:
Написала библиотеку для управления выходами сдвиговых регистров. Можно включать, выключать отдельно выбранный выход или несколько выходов одновременно, не изменяя другие выходы регистров. Продам за дорого.

Сумма прописью? И условия продажи?

strarbit
Offline
Зарегистрирован: 12.06.2016

ЕвгенийП пишет:

strarbit пишет:
Написала библиотеку для управления выходами сдвиговых регистров. Можно включать, выключать отдельно выбранный выход или несколько выходов одновременно, не изменяя другие выходы регистров. Продам за дорого.

Сумма прописью? И условия продажи?


Уважаемый Евгений! Шутите? Вас знаю, как отличного профессионала!

pix_l
Offline
Зарегистрирован: 19.02.2017

Подскажите еще, плиз, вот реле

которым я хочу управлять через регистр (реле не одно, а то начнут сейчас, что у регистра 8 пинов а тут только 4). Гтде то говорили, что через такие реле нельзя подключать лампы дневного света (стартеры), вроде как залипают контакты. А что еще нельзя подключать через такие реле? Например, у меня в подсобке включается свет в гараже, в сарае, насосная станция на 1,6 кВт и питание газового котла (через стабилизатор). Могу я использовать данный модуль для запитки через него этих потребителей?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Можно, если с умом.

Чтобы набраться ума, изучаем

http://www.mzta.ru/images/304/iskrogasyashchiyetsepi.pdf

https://geektimes.ru/company/unwds/blog/271090/

pix_l
Offline
Зарегистрирован: 19.02.2017

ну а в принципе, если запитана насосная станция, ведь она включается буквально на 20 секунд, что бы нагнать давление, а потом отключается. соответственно, если она выключена, значит реле моет быть выключено без проблем - нагрузки же не будет.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

pix_l,Проблема не в нагрузках. Про нагрузку и ее мощность народ "продвинутый" . А про переходные процессы. Это как разгон и торможение машины. Чем больше "сарай", тем дольше  он разгоняется и дольше тормозит. Если у активных нагрузках сколько мощности втекло, столько и осталось. У реактивной же идет назад и дает искру на контактах. Вот из-за этого они липнут.

pix_l
Offline
Зарегистрирован: 19.02.2017

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

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

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вот по этой причине, я и привел автомобиль. Ведь мощность мотора тратится не только на трение, но и на инерцию . Если на разгоне энергия идет "в тело", то при торможении энергия из тела идет на "стирание шин" и "тормозных колодок". Такова цена безопасного движения.  А по теме : всего не учтете, все надо пощупать. А значит что то сгорит, включая и реле. Но за ранее дуть на воду тоже не стоит. Учение стоит денег, а значит и расходов на испорчение элементы. И не надо делать хорошо сразу, тренируйтесь на "кошках" (на макетках и всякой херне).

pix_l
Offline
Зарегистрирован: 19.02.2017

на макетке то работает, хочу платку сделать, что б уже в доме установить для дела.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pix_l пишет:

 начал подумывать про твердотельные, 

Если про серию SSR, то ему категорически противопоказана индуктивная нагрузка. Производитель пише, что электромоторы подключать нельзя. Если подключать, то 1) восьмикратный запас по току; 2) обязательный радиатор и 3) производитель аннулирует всякую гарантию. 

pix_l
Offline
Зарегистрирован: 19.02.2017

да что ж за ёжик то?

vvadim
Offline
Зарегистрирован: 23.05.2012

ЕвгенийП пишет:

pix_l пишет:

 начал подумывать про твердотельные, 

Если про серию SSR, то ему категорически противопоказана индуктивная нагрузка. Производитель пише, что электромоторы подключать нельзя. Если подключать, то 1) восьмикратный запас по току; 2) обязательный радиатор и 3) производитель аннулирует всякую гарантию. 

если честно - не читал

но в ванной у меня вентилятор уже год через него работает

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vvadim пишет:

но в ванной у меня вентилятор уже год через него работает

Так там у Вас поди сорокакратный запас по току :) А у ТС вон на 1,6 киловатт двигло.

Дот инструкция. То, о чём я говорю на стр. 4 внизу.

vvadim
Offline
Зарегистрирован: 23.05.2012

ЕвгенийП пишет:

vvadim пишет:

но в ванной у меня вентилятор уже год через него работает

Так там у Вас поди сорокакратный запас по току :) А у ТС вон на 1,6 киловатт двигло.

Дот инструкция. То, о чём я говорю на стр. 4 внизу.

спасибки

да, запасец у меня там хороший)))

pix_l
Offline
Зарегистрирован: 19.02.2017

Вот, весь вечер мучался. Подскажите. пойдет ли так? В общем, слева по центру ввод (- +), оранжевый цвет это верхний слой текстолита, зеленый - нижний слой. регистры 595 - 4 штуки. Первый снизу слева - и против часовой (блин, кондер забыл)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Так выложу старый скетч для ознакомления Пакет програмы здесь https://yadi.sk/d/WaW7iUgj3GPUvp

головной файл на обозрение.

/*Wire_74HC595.ino 
*/
const int Latch_pin = 3;
const int CLK_pin  = 4;
const int Data_pin = 2;
const int max_device = 4;
bool stat = 0;
#include "Out_74HC595.h"
Out_74HC595 Out(Latch_pin, CLK_pin, Data_pin, max_device);
#include "Cl_led.h"
Cl_led led[] = {
  Cl_led(&Out, 0, 1, 0),  // шина-Out,1 горит,1-я 74HC595,D0
  Cl_led(&Out, 0, 1, 1),  // шина-Out,1 горит,1-я 74HC595,D1
  Cl_led(&Out, 0, 1, 2),  // шина-Out,1 горит,1-я 74HC595,D2
  Cl_led(&Out, 0, 1, 3)   // шина-Out,1 горит,1-я 74HC595,D3
};
void setup() {
  Out.setup();
  for (byte i = 0; i < 4; i++)  led[i].setup();
  led[0].blink(100);
  led[1].blink(150);
  led[2].blink(500);
  led[3].blink(1000);
}

void loop() {
  for (byte i = 0; i < 4; i++)  led[i].loop();
}

 

pix_l
Offline
Зарегистрирован: 19.02.2017

ну до такого кода мне точно как до пекина раком (я про тот что на ядиске)

bwn
Offline
Зарегистрирован: 25.08.2014

pix_l пишет:

Подскажите еще, плиз, вот реле

Гтде то говорили, что через такие реле нельзя подключать лампы дневного света (стартеры), вроде как залипают контакты. А что еще нельзя подключать через такие реле? Например, у меня в подсобке включается свет в гараже, в сарае, насосная станция на 1,6 кВт и питание газового котла (через стабилизатор). Могу я использовать данный модуль для запитки через него этих потребителей?

Для станции и стабилизатора, самое оптимальное контакторы на DIN-рейку. А ими уже управляете через эту релюшку, можно и через симистор (со снаббером).
Схема SSR в даташите на MOC30**.

pix_l
Offline
Зарегистрирован: 19.02.2017

bwn пишет:

Для станции и стабилизатора, самое оптимальное контакторы на DIN-рейку. А ими уже управляете через эту релюшку, можно и через симистор (со снаббером).
Схема SSR в даташите на MOC30**.


Т.е. вместо твердотелок можно использовать связку обычных реле с контакторами?

bwn
Offline
Зарегистрирован: 25.08.2014

Да, искрогасящую цепь лучше поставить. Китай-реле, такой Китай.