Передача данных из множества ATtiny13A в один ATmega328P
Передача данных из множества ATtiny13A в один ATmega328P
Приветствую семейство кошачьих!
Есть такая задача по реализации smart BMS: передать данные (напряжение каждой из 24 ячеек аккумулятора LiFePO4) с помощью 24 шт. ATtiny13A в один управляющий контроллер ATmega328P. Каждая тинька имеет отдельное питание 2.5В, стабилизированное TL431 от напряжения ячейки, которое и требуется измерить и передать (2.7-3.6В). Понятно, что будет опторазвязка и передача с помощью программного UART. Вопрос в том, будут ли корректно работать 24 оптопары, запараллеленных по выходу и 24 оптопары, запараллеленных по входу (тут наверное нужно ставить транзисторный ключ, ATmega328P не вытянет по току 24 параллельных светодиода). Еще посоветуйте пожалуйста дешевые спаренные оптроны (скорость не важна, важна цена и минимальное токопотребление).
Re: Передача данных из множества ATtiny13A в один ATmega328P
Какие проблемы мультиплексирования сигналов от Тини и коммутации опросных - от меги ? Или дело - в количестве проводов ? Опрос и ответ идет по шине ?
Неконкретный вопрос подразумевает неконкретный ответ.
Неконкретный вопрос подразумевает неконкретный ответ.
Re: Передача данных из множества ATtiny13A в один ATmega328P
Я бы питал Тини13 непосредственно от аккумулятора. Можно иметь несколько передатчиков на мастере которые будут работать на группу приёмников (ведомых).
Re: Передача данных из множества ATtiny13A в один ATmega328P
Jack_A, мультиплексирование!? Речь идёт о том, когда каждая тинька запитана от своего аккума, а аккумы включены последовательно.
Где-то это уже было... Ща поищу...
Combatos, вроде бы вот это
https://radiokot.ru/forum/viewtopic.php ... 1#p2571841
Где-то это уже было... Ща поищу...
Combatos, вроде бы вот это
https://radiokot.ru/forum/viewtopic.php ... 1#p2571841
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Передача данных из множества ATtiny13A в один ATmega328P
А если применить нечто подобное последовательному пробросу данных по цепочке?
Первый датчик посылает свой пакет, второй добавляет к принятому свои данные и отсылает следующему и так до конца цепочки.
"WS2812 навыворот"...

Первый датчик посылает свой пакет, второй добавляет к принятому свои данные и отсылает следующему и так до конца цепочки.
"WS2812 навыворот"...
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Передача данных из множества ATtiny13A в один ATmega328P
последовательное соединение передатчиков и приемников каждого ATtiny13A - вполне приемлемое решение.
но добавка к предыдущим пакетам собственного пакета создает определенные трудности. каждый следующий ATtiny13A сначала должен определить, что принятые пакеты закончились, и только потом добавлять собственный.
гораздо проще каждому ATtiny13A присвоить номер в цепочке, и ведущий обращается по очереди к каждому номеру.
ATtiny13A проверяет номер в телеграмме, и если номер соответствует, отправляет свою телеграмму. а если не соответствует, то не отправляет.
но каждый ATtiny13A должен сначала передать принятую телеграмму дальше, и только потом проверить номер.
в итоге, к ведущему придет и его собственная телеграмма и ответ от запрошенного номера. собственную телеграмму можно просто игнорировать.
процесс будет гораздо длиннее, чем при параллельном соединении, примерно в 24 раза, по количеству ATtiny13A.
но и параллельно включение тоже вполне реально. и тоже требует присвоения номера каждому ATtiny13A.
но добавка к предыдущим пакетам собственного пакета создает определенные трудности. каждый следующий ATtiny13A сначала должен определить, что принятые пакеты закончились, и только потом добавлять собственный.
гораздо проще каждому ATtiny13A присвоить номер в цепочке, и ведущий обращается по очереди к каждому номеру.
ATtiny13A проверяет номер в телеграмме, и если номер соответствует, отправляет свою телеграмму. а если не соответствует, то не отправляет.
но каждый ATtiny13A должен сначала передать принятую телеграмму дальше, и только потом проверить номер.
в итоге, к ведущему придет и его собственная телеграмма и ответ от запрошенного номера. собственную телеграмму можно просто игнорировать.
процесс будет гораздо длиннее, чем при параллельном соединении, примерно в 24 раза, по количеству ATtiny13A.
но и параллельно включение тоже вполне реально. и тоже требует присвоения номера каждому ATtiny13A.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Передача данных из множества ATtiny13A в один ATmega328P
у меня в голове засела мысль, что можно цепочкой соединить без оптронов... использовать только 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, но все равно у тиньки нет аппаратного, а программно можно замутить любой...
вот в чем идея.
на рисунке показано 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, но все равно у тиньки нет аппаратного, а программно можно замутить любой...
- Вложения
-
- sch.jpg
- (124.82 КБ) 1321 скачивание
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Передача данных из множества ATtiny13A в один ATmega328P
А кито мешает те оптроны последовательно включить?
Единственно только питание"гирлянды" потребует соответственно более высокого напряжения.
И соответствующей доработки протокола обмена.

Единственно только питание"гирлянды" потребует соответственно более высокого напряжения.
И соответствующей доработки протокола обмена.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Передача данных из множества ATtiny13A в один ATmega328P
я всего лишь исхожу из габарита и цены 24 оптронов против 24 стабилитронов...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Передача данных из множества ATtiny13A в один ATmega328P
питание"гирлянды" потребует соответственно более высокого напряжения.
24 x 0,7 = 16,8 V.
C запасом (разброс параметров) надо 20 V отдельно питание тащить...
А не проще просто взять один большой МК (например ATmega128 или типа того) и подключить каждую отптопару на отдельный вывод МК ?
Не нужно тащить отдельное питание... Не нужны никакие ключи на транзисторах... Не нужны никакие специальные протоколы... и т.д.
))
Т.С. хочет всё собрать на ATmega328P... ATmega128 стоит столько же. Разница ~10 рублей..))
Re: Передача данных из множества ATtiny13A в один ATmega328P
roman.com, стоимость и габариты...
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Передача данных из множества ATtiny13A в один ATmega328P
roman.com, см. моё сообщение выше.
ARV, банки могут быть и разряжены, до 2,5 вольт например. Какой стабилитрон будем ставить?
И при последовательной передаче возможна другая неприятность. При неработоспособности одного МК будет потеряна связь со всеми...(
ARV, банки могут быть и разряжены, до 2,5 вольт например. Какой стабилитрон будем ставить?
И при последовательной передаче возможна другая неприятность. При неработоспособности одного МК будет потеряна связь со всеми...(
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Передача данных из множества ATtiny13A в один ATmega328P
я думаю, что можно поставить стабилитрон на 2,5В или меньше, главное проследить, чтобы в "отпущенном" состоянии на входе "верхнего" МК сохранялась лог.1, то есть напряжение стабилизации стабилитрона плюс 0,6 (падение на встроенном "защитном" диоде порта) было хотя бы на 0,6 вольт (точнее - надо выяснить по параметрам в даташите) выше половины питания МК.
кстати, можно еще над использованием транзистора покумекать... мне кажется, что в случае схемы с ОБ возможен вариант тоже... причем свободный от недостатка стабилитрона.
Добавлено after 32 minutes 50 seconds:
вот, покумекал:

вроде получается. R1 - имитация встроенной подтяжки, на самом деле там порядка 40-70 килоОм.
Добавлено after 11 minutes 50 seconds:
что-то для более двух ячеек не очень получается - не пойму, в чем дело...
кстати, можно еще над использованием транзистора покумекать... мне кажется, что в случае схемы с ОБ возможен вариант тоже... причем свободный от недостатка стабилитрона.
Добавлено after 32 minutes 50 seconds:
вот, покумекал:
вроде получается. R1 - имитация встроенной подтяжки, на самом деле там порядка 40-70 килоОм.
Добавлено after 11 minutes 50 seconds:
что-то для более двух ячеек не очень получается - не пойму, в чем дело...
- Вложения
-
- Screenshot_6.png
- (93.6 КБ) 1246 скачиваний
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Передача данных из множества ATtiny13A в один ATmega328P
Спасибо всем за ответы! Протокол обмена предполагается такой: управляющий контроллер посылает данные о номере ячейки, если номер ячейки совпадает, соответствующая тинька отправляет данные о напряжении ячейки. Хочется максимально упростить схему, пусть будет даже 48 оптронов, пусть даже рс817 (они работают на частоте uart до 9600 по субъективным данным
Опять же, как они будут работать при параллельном соединении?
Re: Передача данных из множества ATtiny13A в один ATmega328P
Как вариант "DALI" железо с софт.
- Вложения
-
- Схема согласования интерфейса DALI с микроконтроллером.jpg
- (17.9 КБ) 515 скачиваний
Re: Передача данных из множества ATtiny13A в один ATmega328P
На habr популярно описано https://habr.com/ru/post/321888/
Re: Передача данных из множества ATtiny13A в один ATmega328P
Опять же, как они будут работать при параллельном соединении?
На один бит порта tx по 3 оптрона. И будете вы передавать не всем, а только группе из 3х. Но можно и всем сразу - 8-битным портом. От них же и принимать на 1 rx. Проще не бывает.)
Re: Передача данных из множества ATtiny13A в один ATmega328P
Нарисовал вот схемку, что я хочу осуществить, как пример пока для 4 ячеек (будет 24). Хочется узнать мнение знатоков, что добавить/убрать на схеме и вообще имеет ли такое решение право на жизнь. Если да, как повысить безотказность, помехозащищенность? Можно ли обойтись без резисторов в базах транзюков, как на схеме?
- Вложения
-
- Схема TinyBMS.JPG
- (151.57 КБ) 525 скачиваний
Re: Передача данных из множества ATtiny13A в один ATmega328P
...Можно ли обойтись без резисторов в базах транзюков, как на схеме?
Напрямую нельзя. Вы же ставите резисторы последовательно со светиками, здесь тоже самое. Можно, поставить "цифровые". К слову, BCX53 это PNP и стрелку эмиттера нужно нарисовать как у транзистора TxD.