Например TDA7294

Форум РадиоКот :: Просмотр темы - Прошу помощи с ардуино и моим проектом
Форум РадиоКот
https://radiokot.ru/forum/

Прошу помощи с ардуино и моим проектом
https://radiokot.ru/forum/viewtopic.php?f=57&t=167270
Страница 3 из 3

Автор:  Alex-DJ [ Пт дек 06, 2019 09:58:58 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Короче, предыдущий код работать так и не стал, сделал по своему:

Спойлер#define DATA_PIN 13 // пин данных (англ. data)
#define LATCH_PIN 12 // пин строба (англ. latch)
#define CLOCK_PIN 11 // пин такта (англ. clock)
#define BUTTON_PIN 10

int clicks = 0;
boolean buttonWasUp = true;

byte H_byte[18] = {
0b01001100, 0b01000101, 0b00000001, 0b11001100, 0b01010101, 0b10000111, 0b01000101, 0b00101100, 0b00010000, 0b11110000, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};
byte L_byte[18] = {
0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111, 0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};
byte D_byte[18] = {
0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b10000000, 0b00000000, 0b11111111, 0b00000000, 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000 , 0b00000000
};

void setup()
{
pinMode(DATA_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop()
{
if (buttonWasUp && !digitalRead(BUTTON_PIN)) {
delay(10);
if (!digitalRead(BUTTON_PIN))
clicks = (clicks + 1) % 18;
}
buttonWasUp = digitalRead(BUTTON_PIN);
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, H_byte[clicks]);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, L_byte[clicks]);
shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, D_byte[clicks]);
digitalWrite(LATCH_PIN, HIGH);
}


На три регистра сдвига и 24 светодиода. Всё работает на макетке, можно травить плату.

Автор:  BOB51 [ Пт дек 06, 2019 10:42:51 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Ну уж тут добавить нечего - у меня на "сборном ужастике" прекрасно работает.
Правда добавлена линия сброса (ибо выведена на разъем и ею управлять нужно).
Чуток попозже скину сборную схему и прожку в комплекте.
8)

Автор:  Alex-DJ [ Пт дек 06, 2019 10:58:25 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Ну уж тут добавить нечего - у меня на "сборном ужастике" прекрасно работает.
Правда добавлена линия сброса (ибо выведена на разъем и ею управлять нужно).
Чуток попозже скину сборную схему и прожку в комплекте.
8)


а как она может у вас работать если в коде неправильно указана подача сигналов защёлки регистров сдвига ?
У вас в скетче сначала идёт
Код:
digitalWrite(LATCH_PIN, HIGH);


А потом
Код:
digitalWrite(LATCH_PIN, LOW);


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

Автор:  BOB51 [ Пт дек 06, 2019 12:35:04 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Собственно по тем регистрам.
Сигнал ST_CP вообще-то работает по фронту - там даже импульса особо не требуется.
А тем более непрерывного удержания высокого уровня - смотрим ДАТАШИТ на регистр
Вложение:
74AHC_AHCT595.pdf [120.11 KiB]
Скачиваний: 200

Вложение:
74HC_HCT595.pdf [140.7 KiB]
Скачиваний: 110

и пишем соответственно программу.
Сделано это для удобства скоростной перезагрузки.
Пока текущие данные стоят на отображении можно вести следующую загрузку.
Момент смены состояния определяется импульсом перезаписи из последовательного регистра в параллельный.
А будет чего на выходе параллельного регистра (и собственно на лапках) - определяет сигнал разрешения выхода/перевода в Z-состояние (/OE).
Вот его - то (/OE) и садим на GND в минимальной конфигурации (как и /MR к логической единице (что я в первой схемке да и в своей прожке позабыл поставить с последующими парой часов "трахотни с воспоминаниями")).
8)
А кому взбрело во голаву на вывод строба перезаписи подавать фиксированный уровень - то уж....
:music:

Автор:  Alex-DJ [ Пт дек 06, 2019 12:40:09 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Собственно по тем регистрам.
А кому взбрело во голаву на вывод строба перезаписи подавать фиксированный уровень - то уж....
:music:


Посмотрите внимательно тут, собственно отсюда я и отталкивался
http://codius.ru/articles/Arduino_%D0%A ... 1%82%D1%8B

Автор:  BOB51 [ Пт дек 06, 2019 13:07:31 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Даже и вникать не буду - единственный доверенный документ, которым необходимо руководствоваться, - даташит производителя.
Другое дело, что иногда разные производители свои дополнения вносят - тогда ищем даташит соответствующего производителя
(Вы же к сожалению эти документы игнорируете).
НО такие изделия обычно весьма быстро "снимаются с конкуренции" из-за отличий от общепринятых стандартов.
Разновидностей же того "595"го весьма много.
Вот к примеру "совмещенки" :
Вложение:
TPIC6B595.pdf [325.91 KiB]
Скачиваний: 117

или еще понавороченнее
Вложение:
MBI5038-Macroblock.pdf [950.08 KiB]
Скачиваний: 251

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

Автор:  oleg110592 [ Пт дек 06, 2019 14:00:00 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Цитата:
сигнал ST_CP вообще-то работает по фронту - там даже импульса особо не требуется.

на всякий описание на русском:
Сдвиговый регистр 74HC595 с интерфейсом SPI
http://www.gaw.ru/html.cgi/txt/doc/74hc595/start.htm
Цитата:
STCP – вход «защёлкивающий» данные

Что бы данные появились на выходах Q0…Q7 нужно подать логическую единицу на вход STCP. Данные поступают в параллельный регистр который сохряняет их до следующего импульса STCP.

Автор:  BOB51 [ Пт дек 06, 2019 16:54:41 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Защелкивание по фронту положительного импульса.
Практически на всех диаграммах и согласно значку на данной линии в большинстве даташитов.
Дальше сама единица уже особо роли не играет - главное чтобы не короче указанного в документации.
Главная суть - удержание логической единицы длительное время там без надобности.
8)
Возможно, когда в первоисточниках топикстартера говорилось про УРОВЕНЬ имелась какая-то аналогия с "прозрачными регистрами" вида 1533ИР22/ИР33 - там действительно пока удерживается уровень данные с входов проходят на выход.
Но то уже совершенно иная область применения.
:dont_know:

Автор:  Alex-DJ [ Пт дек 06, 2019 22:59:37 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

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

Автор:  Самсусамыч [ Пт дек 06, 2019 23:12:04 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Всё просто… вход «ОЕ» (нога 13) подтягивается через резистор 4,7 кОм к плюсу питания. А так же этот вывод подсоединяешь к свободной ноге МК. Как только первые байты закинешь в регистр, то конфигурируешь вывод МК на выход и тем самым получаешь низкий логический уровень на ноге 13, а значит выхода регистра перейдут из Z состояния в рабочий режим. :)

Автор:  BOB51 [ Сб дек 07, 2019 11:55:41 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Похоже таки у топикстартера и у меня весьма разное представление о прожках и реализации схемок...
Что вполне понятно - кому такие "замигайки" уже просто поднадоели (и по сему внимание к "мелочам" ослаблено иногда), а для начинайки это все... "в диковинку"... и хочется чего "крутого" замутить да обломсы от популяризаторов приследуют.
Вобчемс... доставуче оказалось - пришлось таки старые тест-платы вытянуть да полноценну макетину собрать.
Чего в результате садомазохизма получилось (и понимание как позиционирование точно установить) смотрим тут:
https://radiokot.ru/forum/viewtopic.php ... 8#p3750868
:tea:

Автор:  Alex-DJ [ Сб дек 07, 2019 20:01:57 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

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

Коротко для чего мне вся эта система, у меня на домашней студии есть 32 канальный микшерский пульт, ползунки регуляторов громкости имеют моторчики, то есть выставив уровень громкости канала микшера на определённую отметку, и опустив потом вниз до нуля, можно подав на этот моторчик через его контролер уровень логической 1, вернуть его на то место где он стоял до этого. Надеюсь суть ясна? Предположим подключены к пульту две гитары, барабаны пара синтезаторов, два микрофона для беквокалисток, и один для солистки. Пульт запомнил положение ползунков громкости. Потом если опять движки перестроить в другое положение, и подать на нужные линейки ползунков единицы, они опять встанут на свои первоначальные места. Именно для этого пульта и собирается моя схема. Пульт очень старый, но цифровым управлением, именно эта функция в нём приказала долго жить, пришлось вот так кустарно временно заменить моим костылём. Сначала хотел автоматику делать на 16 каналов, но добавил третий сдвиговый регистр. Сейчас вся система на микшере 24 канальная, 8 остальных каналов, так и остались в ручном управлении, то есть автоматом на ранее настроенное место вернуть можно подвинув пальцем, но ничего не мешает ведь мне добавить 4 -ый сдвиговый регистр. сейчас у меня выходит что есть 18 запрограммрованных сетов настроек ползунков... Каждое нажатие на кнопку новый сет на микшере. Только вот проводов много выходит.

Автор:  Самсусамыч [ Сб дек 07, 2019 22:40:45 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Для меня тоже программирование является типа хобби... :)
С микшером и его принципом работы всё понятно… понятно даже, что необходимо использовать в таком устройстве 4 регистра сдвига (32 канала)… непонятно по какой логике происходит программирование так называемых сетов… одной кнопкой? Описать поподробней (как про микшер) возможно?

Автор:  Alex-DJ [ Вс дек 08, 2019 00:07:26 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Для меня тоже программирование является типа хобби... :)
С микшером и его принципом работы всё понятно… понятно даже, что необходимо использовать в таком устройстве 4 регистра сдвига (32 канала)… непонятно по какой логике происходит программирование так называемых сетов… одной кнопкой? Описать поподробней (как про микшер) возможно?


Сейчас будете смеяться, но всё дедовьим способом ))) Например на микшере на первом канале, голос солистки, на втором гитара, третий не трогаем он стоит в на минимальной нулевой громкости, то есть опущен вниз до упора, четвёртый бас гитара. пятый синтезатор, 6 и 7 опять не задействованы, на восьмом ревер. Байт для того чтоб включить моторчики на этом сете такой 11011001, записываю все комбинации за день на отработавших групп и исполнителей, вечером заношу в прошивку ) Пока всё так колхозным способом. Можно конечно и процессор собрать и запрограммировать, но на это нет времени, людей сейчас много приходит на запись, на новый год пишутся в основном.

В работе больше 13 - 14 каналов использую редко, регистры сдвига на 24 и 32 канала это так на резерв, типа чтоб было, эти 595 регистры копейки ведь стоят )))

Сейчас например вот одно нажатие кнопки, на регистрах комбинация как выше написал для восьми каналов, 11011001, и все ползунки на своих местах )) Правда есть одно но. Например на втором нажатии например вторая комбинация из байтов на регистрах, это детская группа матрёшки, на третьем нажатии певица Наташа, на 14 нажатии комбинация для трио мальчиков, на бумажке написано всё ))) Например пришли эти три пацана дописываться, смотрю на бумажку, ага надо нажать на заветную кнопочку 14 раз ))) нажимаю и считаю сколько раз нажал))) Хотя можно прикрутить и семисегментные индикаторы и пару счётчиков типа 155ие2 но нет времени и лень этим возиться ))) Так что пока всё так )

Автор:  BOB51 [ Вс дек 08, 2019 09:32:48 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

ПРОБЛЕМА ЯСНОВИДЕНИЯ.
8)
Основные ошибки на которые при постановке задачи не обратили внимание:
1. в качестве конечного потребителя - электропривод
Следовательно должен быть не только запуск, но и сигнал останова. Причем у каждого из приводов в свое время.
Хорошо, ежли этот сигнал формируется в устройстве и допускается "бесконечное повисание" текущей управляющей комбинации на выводах нашей самоделки.
Можно также ПРЕДПОЛОЖИТЬ, что устройство после окончания позиционирования ВСЕХ приводов формирует специальный сигнал-квитанцию для нашего устройства управления "позиционирование завершено! можно управляющий сигнал снять"
2. исходное состояние шины нашей самоделки - ЛОГИЧЕСКИЙ НУЛЬ...
Поэтому имеющееся в распоряжении /OE ситуации не спасает (в общепринятом что Z что 1 часто одно и то же - конкретика "потребляющего устройства" в данном случае неизвестна...) - требуется дополнительная логика...
3. перебор комбинаций должен происходить БЕЗ ИЗМЕНЕНИЯ состояния линий управления.
(иначе "промежуточный мусор" во время перебора всех имеющихся в памяти комбинаций может возыметь непредсказуемое воздействие по включению приводов)
Активация линий управления должна иметь место ТОЛЬКО при правильно выбранной комбинации.
Из пунктов 2 и 3 вытекает:
либо отдельный индикатор выбранной комбинации (что не снимает необходимость во внешней аппаратной схеме), либо индикация светиками на выводах регистров при практически той же дополнительной обвязке и трех кнопах -
выбро+/выбор- и выполнить.
(Как кстати и отперативная смена комбинаций...
Но... тогда уж полная клавиатура и ЕЕПРОМка для хранения.
:wink: )
Ну посикоку устройство уже работает все вышесказанное лишь как рекомендации на будущие модернизации.
:beer:

Автор:  Alex-DJ [ Вс дек 08, 2019 12:12:47 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Код:
Основные ошибки на которые при постановке задачи не обратили внимание:
1. в качестве конечного потребителя - электропривод
Следовательно должен быть не только запуск, но и сигнал останова.


Уважаемый, хватит уже искать в тёмной комнате чёрную кошку, тем более если её там нет. Никакого сигнала останова не нужно, на ползунках с приводами, есть концевые выключатели на оптопарах. Движкам надо только подать ноль если не надо двигать ползунок к указанному месту, или единицу чтоб запустить его чтоб дошёл до указанного места, ГДЕ САМ ОСТАНОВИТСЯ.

Всё уже работает, сегодня утром девочку записывал, всё работает так как мне нужно. Тему можно закрыть. Всем спасибо !!!

Автор:  Самсусамыч [ Вс дек 08, 2019 12:44:11 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

записываю все комбинации за день на отработавших групп и исполнителей, вечером заношу в прошивку ) Пока всё так колхозным способом.

Может стоит подумать над программой, чтобы необходимую конфигурацию байтов можно было заносить не в алгоритм прошивки, а чтобы от внешних устройств можно было бы устанавливать непосредственно любую конфигурацию при необходимости? Есть мысли на этот счёт?

Добавлено after 8 minutes 15 seconds:
ЗЫ. Прочитал последний пост и понял, что уже всё устраивает и тема закрыта для ТС. Значит вышеизложенный вопрос уже неактуален… раз у ТС нет более желания что-то менять.

Автор:  Alex-DJ [ Вс дек 08, 2019 12:47:26 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

записываю все комбинации за день на отработавших групп и исполнителей, вечером заношу в прошивку ) Пока всё так колхозным способом.

Может стоит подумать над программой, чтобы необходимую конфигурацию байтов можно было заносить не в алгоритм прошивки, а чтобы от внешних устройств можно было бы устанавливать непосредственно любую конфигурацию при необходимости? Есть мысли на этот счёт?


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

Кстати по поводу высказывания BOB51

Цитата:
имеющееся в распоряжении /OE ситуации не спасает (в общепринятом что Z что 1 часто одно и то же - конкретика "потребляющего устройства" в данном случае неизвестна...) - требуется дополнительная логика...


Это у сдвиговых регистров в отключённом состоянии выводы в Z состоянии, но входы контроллеров приводов куда я подключаю свою платку находятся в нормальном состоянии, там входной каскад имеет устойчивое состояние, притянут резистором толи к 0, толи к 1. Так что всё нормально работает.

Автор:  BOB51 [ Вс дек 08, 2019 20:33:47 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

:facepalm:
НО... если "устраивает" полученный результат... почему бы и нет...
8)

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/