Страница 1 из 10
Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Пт фев 15, 2019 11:45:49
Combatos
Приветствую семейство кошачьих!

Есть такая задача по реализации smart BMS: передать данные (напряжение каждой из 24 ячеек аккумулятора LiFePO4) с помощью 24 шт. ATtiny13A в один управляющий контроллер ATmega328P. Каждая тинька имеет отдельное питание 2.5В, стабилизированное TL431 от напряжения ячейки, которое и требуется измерить и передать (2.7-3.6В). Понятно, что будет опторазвязка и передача с помощью программного UART. Вопрос в том, будут ли корректно работать 24 оптопары, запараллеленных по выходу и 24 оптопары, запараллеленных по входу (тут наверное нужно ставить транзисторный ключ, ATmega328P не вытянет по току 24 параллельных светодиода). Еще посоветуйте пожалуйста дешевые спаренные оптроны (скорость не важна, важна цена и минимальное токопотребление).
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Пт фев 15, 2019 15:06:59
Jack_A
Какие проблемы мультиплексирования сигналов от Тини и коммутации опросных - от меги ? Или дело - в количестве проводов ? Опрос и ответ идет по шине ?
Неконкретный вопрос подразумевает неконкретный ответ.
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Пт фев 15, 2019 19:55:05
OKF
Я бы питал Тини13 непосредственно от аккумулятора. Можно иметь несколько передатчиков на мастере которые будут работать на группу приёмников (ведомых).
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Пт фев 15, 2019 21:08:39
Kavka
Jack_A, мультиплексирование!? Речь идёт о том, когда каждая тинька запитана от своего аккума, а аккумы включены последовательно.
Где-то это уже было... Ща поищу...
Combatos, вроде бы вот это
https://radiokot.ru/forum/viewtopic.php ... 1#p2571841
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Пт фев 15, 2019 22:10:01
BOB51
А если применить нечто подобное последовательному пробросу данных по цепочке?
Первый датчик посылает свой пакет, второй добавляет к принятому свои данные и отсылает следующему и так до конца цепочки.
"WS2812 навыворот"...

Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 08:11:28
Starichok51
последовательное соединение передатчиков и приемников каждого ATtiny13A - вполне приемлемое решение.
но добавка к предыдущим пакетам собственного пакета создает определенные трудности. каждый следующий ATtiny13A сначала должен определить, что принятые пакеты закончились, и только потом добавлять собственный.
гораздо проще каждому ATtiny13A присвоить номер в цепочке, и ведущий обращается по очереди к каждому номеру.
ATtiny13A проверяет номер в телеграмме, и если номер соответствует, отправляет свою телеграмму. а если не соответствует, то не отправляет.
но каждый ATtiny13A должен сначала передать принятую телеграмму дальше, и только потом проверить номер.
в итоге, к ведущему придет и его собственная телеграмма и ответ от запрошенного номера. собственную телеграмму можно просто игнорировать.
процесс будет гораздо длиннее, чем при параллельном соединении, примерно в 24 раза, по количеству ATtiny13A.
но и параллельно включение тоже вполне реально. и тоже требует присвоения номера каждому ATtiny13A.
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 09:15:06
ARV
у меня в голове засела мысль, что можно цепочкой соединить без оптронов... использовать только 1 - с самого высокопотенциального МК.

вот в чем идея.
на рисунке показано 2 ячейки аккумов и 2 МК - MCU1 и MCU2, внутри которых показаны встроенные зепи защитных диодов.
если выход OUT выдает 0, то стабилитрон оказывается включен анодом к минусу "нижнего" аккумулятора. вход IN MCU1 при этом включен с подтяжкой, т.е. катод стабилитрона оказывается включенным через внутреннюю подтяжку к плюсу верхнего аккумултора. это означает, что стабилитрон откроется, на нем будет 3,6В, а это означает, что на IN MCU1 будет логический 0. итак,
на OUT MCU2 лог 0 --> на IN MCU1 лог. 0.
если OUT MCU2 перевести в Z-состояние или выдать на него лог.1, стабилитрон запрется, и в этом случае на IN MCU1 возникнет лог.1. итак,
на OUT MCU2 лог 1 --> на IN MCU1 лог. 1.
таким образом сигнал от "нижнего" МК к "верхнему" можно передавать без всяких оптронов. а с самого верхнего уже придется передать на "главный" МК через оптрон. сам "главный" МК соединить "землей" с самым нижним минусом аккумуляторов, и тогда на IN самого нижнего MCU можно подавать сигнал напрямую без оптрона.
как вам такая идея?
возможно, стабилитрон надо будет на 3,3В взять... и добавить небольшой резистор последоватльно... это надо еще подумать, пожалуй.
Добавлено after 3 minutes 26 seconds:
сам протокол передачи, вероятно, будет немного отличаться от чистого USART, но все равно у тиньки нет аппаратного, а программно можно замутить любой...
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 10:41:35
BOB51
А кито мешает те оптроны последовательно включить?
Единственно только питание"гирлянды" потребует соответственно более высокого напряжения.
И соответствующей доработки протокола обмена.

Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 11:05:54
ARV
я всего лишь исхожу из габарита и цены 24 оптронов против 24 стабилитронов...
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 11:51:37
roman.com
[uquote="BOB51",url="/forum/viewtopic.php?p=3571233#p3571233"]питание"гирлянды" потребует соответственно более высокого напряжения.[/uquote]
24 x 0,7 = 16,8 V.
C запасом (разброс параметров) надо 20 V отдельно питание тащить...
А не проще просто взять один большой МК (например ATmega128 или типа того) и подключить каждую отптопару на отдельный вывод МК ?
Не нужно тащить отдельное питание... Не нужны никакие ключи на транзисторах... Не нужны никакие специальные протоколы... и т.д.
))
Т.С. хочет всё собрать на ATmega328P... ATmega128 стоит столько же. Разница ~10 рублей..))
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 13:20:34
Kavka
roman.com, стоимость и габариты...
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 13:42:40
OKF
roman.com, см. моё сообщение выше.
ARV, банки могут быть и разряжены, до 2,5 вольт например. Какой стабилитрон будем ставить?
И при последовательной передаче возможна другая неприятность. При неработоспособности одного МК будет потеряна связь со всеми...(
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 14:35:44
ARV
я думаю, что можно поставить стабилитрон на 2,5В или меньше, главное проследить, чтобы в "отпущенном" состоянии на входе "верхнего" МК сохранялась лог.1, то есть напряжение стабилизации стабилитрона плюс 0,6 (падение на встроенном "защитном" диоде порта) было хотя бы на 0,6 вольт (точнее - надо выяснить по параметрам в даташите) выше половины питания МК.
кстати, можно еще над использованием транзистора покумекать... мне кажется, что в случае схемы с ОБ возможен вариант тоже... причем свободный от недостатка стабилитрона.
Добавлено after 32 minutes 50 seconds:
вот, покумекал:

вроде получается. R1 - имитация встроенной подтяжки, на самом деле там порядка 40-70 килоОм.
Добавлено after 11 minutes 50 seconds:
что-то для более двух ячеек не очень получается - не пойму, в чем дело...
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Сб фев 16, 2019 22:28:32
Combatos
Спасибо всем за ответы! Протокол обмена предполагается такой: управляющий контроллер посылает данные о номере ячейки, если номер ячейки совпадает, соответствующая тинька отправляет данные о напряжении ячейки. Хочется максимально упростить схему, пусть будет даже 48 оптронов, пусть даже рс817 (они работают на частоте uart до 9600 по субъективным данным

Опять же, как они будут работать при параллельном соединении?
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Вс фев 17, 2019 11:49:01
findermy
Как вариант "DALI" железо с софт.
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Вс фев 17, 2019 12:11:50
Combatos
[uquote="findermy",url="/forum/viewtopic.php?p=3571915#p3571915"]Как вариант "DALI" железо с софт.[/uquote]
Не понял, как это работает?
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Вс фев 17, 2019 12:43:52
findermy
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Вс фев 17, 2019 14:28:27
OKF
[uquote="Combatos",url="/forum/viewtopic.php?p=3571733#p3571733"]Опять же, как они будут работать при параллельном соединении?[/uquote]
На один бит порта tx по 3 оптрона. И будете вы передавать не всем, а только группе из 3х. Но можно и всем сразу - 8-битным портом. От них же и принимать на 1 rx. Проще не бывает.)
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Вт фев 19, 2019 23:54:22
Combatos
Нарисовал вот схемку, что я хочу осуществить, как пример пока для 4 ячеек (будет 24). Хочется узнать мнение знатоков, что добавить/убрать на схеме и вообще имеет ли такое решение право на жизнь. Если да, как повысить безотказность, помехозащищенность? Можно ли обойтись без резисторов в базах транзюков, как на схеме?
Re: Передача данных из множества ATtiny13A в один ATmega328P
Добавлено: Ср фев 20, 2019 00:50:52
akl
[uquote="Combatos",url="/forum/viewtopic.php?p=3573886#p3573886"]...Можно ли обойтись без резисторов в базах транзюков, как на схеме?[/uquote]Напрямую нельзя. Вы же ставите резисторы последовательно со светиками, здесь тоже самое. Можно, поставить "цифровые". К слову, BCX53 это PNP и стрелку эмиттера нужно нарисовать как у транзистора TxD.