Организация сети из AVR
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Организация сети из AVR
Всем привет.
Для LiFePo4 батареи 40S4P делаю устройство мониторинга. На atMega8 сделал 8 канальный вольтметр. выводит на 2*16 LCD 8 значений напряжений и отправляет их по UART.
1й контроллер (первая плата, измеряющая напряжение на ячейках с 1 по 8 ) отправляет в UART :
B1:3.53
B2:3.57
...
B8:3.61
2й контроллер отправляет (напряжения на ячейках с 9 по 16)
B9: 3.55
...
B16: 3.57
Планировалось, что все это пойдет по UART на компьютер, где красиво будет отображено. Или на контроллер с дисплеем 320*240
Вопрос, как сделать, чтобы мои платы с контроллерами отправляли данные по очереди, а не одновременно. Чтобы приемник получил достоверные данные последовательно ?
Или может быть использовать другой интерфейс, расскажите пожалуйста, желательно с примером реализации
Есть мысль: Главная плата опрашивает измерительные модули по очереди, отправляя в линию идентификатор измерительной платы. И в зависимости от получаемых данных коммутирует батарею/включает тревогу. На сколько будет стабильна такая работа ?
Для LiFePo4 батареи 40S4P делаю устройство мониторинга. На atMega8 сделал 8 канальный вольтметр. выводит на 2*16 LCD 8 значений напряжений и отправляет их по UART.
1й контроллер (первая плата, измеряющая напряжение на ячейках с 1 по 8 ) отправляет в UART :
B1:3.53
B2:3.57
...
B8:3.61
2й контроллер отправляет (напряжения на ячейках с 9 по 16)
B9: 3.55
...
B16: 3.57
Планировалось, что все это пойдет по UART на компьютер, где красиво будет отображено. Или на контроллер с дисплеем 320*240
Вопрос, как сделать, чтобы мои платы с контроллерами отправляли данные по очереди, а не одновременно. Чтобы приемник получил достоверные данные последовательно ?
Или может быть использовать другой интерфейс, расскажите пожалуйста, желательно с примером реализации
Есть мысль: Главная плата опрашивает измерительные модули по очереди, отправляя в линию идентификатор измерительной платы. И в зависимости от получаемых данных коммутирует батарею/включает тревогу. На сколько будет стабильна такая работа ?
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Организация сети из AVR
Это уже вопрос не интерфейса, а прикладного уровня.Symbiosis писал(а):Вопрос, как сделать, чтобы мои платы с контроллерами отправляли данные по очереди, а не одновременно. Чтобы приемник получил достоверные данные последовательно ?
Или может быть использовать другой интерфейс, расскажите пожалуйста, желательно с примером реализации
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Организация сети из AVR
Интересно как Вам удалось замерить напряжение на 8-и банках одним контроллером.
Непоятно что с физическим интерфейсом. Микроконтроллеры под разным напряжением и должны быть гальванически изолированны.
На логическом уровне всё просто. Ведущее устройство по очереди называет номер контроллера. Контроллер, услышав свой номер отвечает.
В принципе можно конечно сгородить мультимастер без ведущего устройства, но это логически сложнее и медленнее работает.
Непоятно что с физическим интерфейсом. Микроконтроллеры под разным напряжением и должны быть гальванически изолированны.
На логическом уровне всё просто. Ведущее устройство по очереди называет номер контроллера. Контроллер, услышав свой номер отвечает.
В принципе можно конечно сгородить мультимастер без ведущего устройства, но это логически сложнее и медленнее работает.
-
Pnjom-Penb
- Мучитель микросхем
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Re: Организация сети из AVR
Symbiosis писал(а):... как сделать, чтобы мои платы с контроллерами отправляли данные по очереди
На мой взгляд, проще всего двигаться в сторону единственного контроллера, занимающегося всей работой по измерению напруг и передачаче полученных измерений. Рассматривать все доступные способы коммутации с точки зрения их дешевизны. Если будет дешевле коммутировать релюшкой - пусть контроллер управляет релюшкой, если МОП-ключами, пусть контроллер управляет ими. Это будет и дешевле, и проще, с точки зрения фирмвари, и даст масштабируемость, в том смысле, что это решение будет работать и для 32 батараей, и для 64, и для ... как вы все думаете, для скольки? :о)))
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: Организация сети из AVR
первый мк отправляет массив во второй мк, а второй мк к принятому массиву добавляет свой массив и отправляет дальше...
Re: Организация сети из AVR
Применить соответствующий протокол обмена прикладного уровня.Symbiosis писал(а):Вопрос, как сделать, чтобы мои платы с контроллерами отправляли данные по очереди, а не одновременно.
Я соглашусь с ранее высказанным вариантом: мастер отсылает запрос, ведомый отвечает данными, услышав запрос на свой адрес.
Стандартно, масштабируемо, отказоустойчиво.
Использовать контроль достоверности передаваемых данных. Проверять данные, используя контрольную сумму.Symbiosis писал(а):Чтобы приемник получил достоверные данные последовательно ?
Я бы посоветовал использовать RS-485.Андрей СШ писал(а):Непоятно что с физическим интерфейсом. Микроконтроллеры под разным напряжением и должны быть гальванически изолированны.
Или применить м/с цифровых изоляторов (гальванической развязки). Мы используем ADUM****
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Организация сети из AVR
Я понял... Спасибо вам. Первый раз сделал такую схему:
первый контроллер отправляет массив данных + идентификатор следующего контроллера. Следующий контроллер отправляет свой массив + ИД контроллера №3 и т.д. В итоге если слушать интерфейс, собираешь все данные. Но Стабильность под вопросом. если затупит один элемент, откажет вся система. В итоге сделал отправку данных по запросу мастера.
Напряжение мерять на 8ми банках не проблема. Применил много контроллеров, просто потому что у меня 400шт примерно в запасе мега8, у нее 8каналов АЦП.
друг от друга модули гальванически развязаны. Питается каждый модуль от своей группы ячеек. Данные идут через оптопары. Собрал я два модуля на макетке. и остановился... Решил сделать по плотнее, так сказать, устройство...
Использовать мультиплексор на 32 канала. а вот тут встает очень острый вопрос, как мерять напряжение. если по предыдущей схеме, вычислять напряжение следующей банки отнимая от текущего значения АЦП результаты всех предыдущих, то конечно результат получится какой то. Но точность никакая. Т.к. 10 разрядную шкалу придется растягивать на 115В.
И вот тут затык, что делать дальше, все же оставаться на модульном варианте, при этом дискретность измерений 28мВ. Или как то иначе мерять напряжение на банках одним устройством.
Хоть это уже и вопросы совсем другой темы...
mas123, а вы занимаетесь похожим вопросом ?
первый контроллер отправляет массив данных + идентификатор следующего контроллера. Следующий контроллер отправляет свой массив + ИД контроллера №3 и т.д. В итоге если слушать интерфейс, собираешь все данные. Но Стабильность под вопросом. если затупит один элемент, откажет вся система. В итоге сделал отправку данных по запросу мастера.
Напряжение мерять на 8ми банках не проблема. Применил много контроллеров, просто потому что у меня 400шт примерно в запасе мега8, у нее 8каналов АЦП.
друг от друга модули гальванически развязаны. Питается каждый модуль от своей группы ячеек. Данные идут через оптопары. Собрал я два модуля на макетке. и остановился... Решил сделать по плотнее, так сказать, устройство...
Использовать мультиплексор на 32 канала. а вот тут встает очень острый вопрос, как мерять напряжение. если по предыдущей схеме, вычислять напряжение следующей банки отнимая от текущего значения АЦП результаты всех предыдущих, то конечно результат получится какой то. Но точность никакая. Т.к. 10 разрядную шкалу придется растягивать на 115В.
И вот тут затык, что делать дальше, все же оставаться на модульном варианте, при этом дискретность измерений 28мВ. Или как то иначе мерять напряжение на банках одним устройством.
Хоть это уже и вопросы совсем другой темы...
mas123, а вы занимаетесь похожим вопросом ?
Re: Организация сети из AVR
Почему мастер не комп? Или главная плата? Куда они там отправляют.. Вот он пусть сидит и тыкает их по очереди. Ткнул первого - ответ. Ткнул второго - сдох по таймауту. Ткнул третьего - ответ и т.д.
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Организация сети из AVR
Symbiosis писал(а): В итоге сделал отправку данных по запросу мастера.
Так и выполнено сейчас
Re: Организация сети из AVR
Пардон, как-то мимо прочитал 
Re: Организация сети из AVR
ADUM и иже с ним довольно фиговая микросхема в данном случае. Потребление 10 мА на одну сторону. Батарею на 15 Ач высадит за месяц всю если не отключать. А если отключать, то логика интерфейса усложняется.
RS485 сам по себе не изолированный и на высоковольтной батарее работать не будет. Хотя некоторые трансиверы допускают смещение вольт на 40.
На самом деле можно дизерингом добиться дискретности 7 мВ при той же схеме.
Тут проблема в другом. Если резисторы имеют точность 1%, то при вычитании напряжения седьмой банки из восьмой эта погрешность превращается в 8%, что для фосфата 3,65*0,08 = 0,3 В - слишком большая погрешность
mas123 писал(а):Я бы посоветовал использовать RS-485.
RS485 сам по себе не изолированный и на высоковольтной батарее работать не будет. Хотя некоторые трансиверы допускают смещение вольт на 40.
Symbiosis писал(а): дискретность измерений 28мВ
На самом деле можно дизерингом добиться дискретности 7 мВ при той же схеме.
Тут проблема в другом. Если резисторы имеют точность 1%, то при вычитании напряжения седьмой банки из восьмой эта погрешность превращается в 8%, что для фосфата 3,65*0,08 = 0,3 В - слишком большая погрешность
- Symbiosis
- Вымогатель припоя
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
- Контактная информация:
Re: Организация сети из AVR
hybroid писал(а):На самом деле можно дизерингом добиться дискретности 7 мВ при той же схеме.
Уже думал над этим, по одному контроллеру на 16 банок хотя бы сделать.
hybroid писал(а):Если резисторы имеют точность 1%, то при вычитании напряжения седьмой банки из восьмой эта погрешность превращается в 8%, что для фосфата 3,65*0,08 = 0,3 В - слишком большая погрешность
А вот об этом вообще не задумывался. Спасибо! Выходит городить более 4х банок от одного контроллера не стоит...
Re: Организация сети из AVR
Что сложного в установке одного ключа, а то и использовании штатного логического входа управления у м/с?Андрей СШ писал(а):А если отключать, то логика интерфейса усложняется.
Эмммм... Как бы промышленный стандарт для передачи данных между устройствами с разным питанием.Андрей СШ писал(а):RS485 сам по себе не изолированный
Схема ADUM + м/с интерфейса-485 с легкостью выдерживает импульсы наводки до 4 кВ.
Для идеала - существуют м/с интерфейсов RS-485 со встроенной гальванической изоляцией.
Как я понял - все замеры и математика выполняется на AVR. А там питание 3.3 или 5 вольт, от которых запитывается и RS-485.Андрей СШ писал(а):на высоковольтной батарее работать не будет.
Re: Организация сети из AVR
mas123 писал(а):Что сложного в установке одного ключа
Ну поставили вы его и что дальше? отключить ADUM и остаться без связи?
mas123 писал(а):Эмммм... Как бы промышленный стандарт для передачи данных между устройствами с разным питанием.Схема ADUM + м/с интерфейса-485 с легкостью выдерживает импульсы наводки до 4 кВ.
У меня это абзац вызывает когнитивный диссонанс. RS-485 изолированный потому что это промышленный стандарт? Но зачем тогда ADUM?. А если изоляция достигается ADUM-ом, то к чему фраза про промышленный стандарт.
А суть в том, что первая попавшаяся микросхема ADM485 имеет " –7 V to +12 V bus common-mode range", что позволяет соединять устройства с плавающими туда-сюда землями, но этого недостаточно, для соединения банок на батарее в 115 В.
mas123 писал(а):существуют м/с интерфейсов RS-485 со встроенной гальванической изоляцией
Проблема та же, что и у ADUM - гальваноизоляция потребляет очень много энергии. Так что для идеала к этому нжна ещё функция просыпания по сигналу на линии.
----------
Symbiosis писал(а):Выходит городить более 4х банок от одного контроллера не стоит
Но тут есть и плюс - 4 банки - это стандартное напряжение 12 В.
А ещё есть такой контроллер ATmega16HVB - специальный на 4 банки, но из-за специальности его купить трудновато и дороговато.
Re: Организация сети из AVR
Согласен. Для ведомого устройства это не выход.Андрей СШ писал(а):Ну поставили вы его и что дальше? отключить ADUM и остаться без связи?
Нет. Это промышленный стандарт, поэтому я сомневаюсь что вопрос гальваноразвязки так остро необходим при использовании RS-485/Андрей СШ писал(а):У меня это абзац вызывает когнитивный диссонанс. RS-485 изолированный потому что это промышленный стандарт?
Это уже наши "фишки" реализации в конкретных устройствах.Андрей СШ писал(а):Но зачем тогда ADUM?
Я таки извиняюсь, а на atMega8 и LCD тоже 115 вольт подаётся?Андрей СШ писал(а):А суть в том, что первая попавшаяся микросхема ADM485 имеет " –7 V to +12 V bus common-mode range", что позволяет соединять устройства с плавающими туда-сюда землями, но этого недостаточно, для соединения банок на батарее в 115 В.
Re: Организация сети из AVR
mas123 писал(а):я сомневаюсь что вопрос гальваноразвязки так остро необходим при использовании RS-485
Ну так в среднем в промышленности гальваноразвязка не очень нужна и потому её нет, но в этой теме как раз особый случай, в промышленности относительно редкий.
Между точками И1 и И2 напряжение 12 В. А между И1 и ИВ может быть 115 В.
ADUM в принципе можно применять, но только на банках большой мощности и наличии постоянного подзаряда (бесперебойник или солнечная электростанция). Да и стоит многовато.
Re: Организация сети из AVR
Почему?Андрей СШ писал(а):Между точками И1 и И2 напряжение 12 В.
Разве напряжение батареи подается прямо на питание контроллера? Это не факт - про это ничего не сказано. И нелогично - при низком напряжении не получим данные замеров.
А измеряемое напряжение на АЦП (тем более у AVR) классически подаётся через делитель.
Re: Организация сети из AVR
mas123 писал(а):напряжение батареи подается прямо на питание контроллера? Это не факт
Тут проблема в том, что минус питания микроконтроллера и база АЦП это одна и та же нога. Так что да - напряжение батареи (частично) подаётся на GND контроллера. Собственно на схеме, которую я нарисовал это видно.
Если нарисуете как этого избежать, то я обязательно поставлю плюсик.
Re: Организация сети из AVR
В схеме, что ты нарисовал, нету половины общих проводов. Поэтому в участках, которые ты назвал, пока что не может быть вообще никаких напряжений.
Re: Организация сети из AVR
Дажить и незнаю что сказать.
Вот какое напряжение между И1 и И2 по вашему?
Вот какое напряжение между И1 и И2 по вашему?