Jump to content
    

монтаж CAN шины в доме

Всем привет!

 

принимайте новичка :)

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

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

 

Поскольку опыта в этом деле нет пока никакого, посвятил неделю активному гуглению. Выкурил кучу инфы на русском и английском языке. Остановил свой выбор на CAN шине и микроконтроллерах STM32F103/105/107 или STM8a(s)207/208 + L9615/9616 в качестве трансивера.

 

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

 

Вобщем вопросы у меня такие:

1. Архитектура.

Например, взять этаж - 4 помещения, одна гребенка с четырьмя контурами теплого пола. Соотв. 4 датчика температуры, возможно 4 LCD с парой кнопок для отображения температуры и задания желаемой. Мне пока не ясно что из этого будет являтся узлом CAN-шины. Или на каждый датчик вешать контроллер и трансивер. Получится узел шины, котоорый будет пулять свои данные (и)или отвечать на запросы. Или один контроллер, который будет обслуживать несколько датчиков и сам же крутить сервопривода. Тогда вопрос как это все правильно соединить (1-Wire для датчиков)

 

2. Монтаж.

Далее, в зависимости от архитектуры, как все правильно расположить физически в стене и как и чем между собой соединить.

 

Понятно, что для такой простенькой задачи вроде как CAN и не нужен, но хочется развития, добавления новых сенсоров, контроллеров, и т.д. Да и просто интересно.

 

Если есть где-нибудь инфа, в которой можно найти ответы на эти вопросы - буду благодарен.

Share this post


Link to post
Share on other sites

Если есть где-нибудь инфа, в которой можно найти ответы на эти вопросы - буду благодарен.

 

Здесь все проще чем может показаться.

Берете обычный UTP или STP кабель, каким Ethernet прокладывают, или просто витую пару (сечение не критично) и соединяете по цепочке от одного контроллера к другому последовательно все обходя.

Можно и не по цепочке и делать отростки звездой по несколько метров.

Главное не забыть терминаторный резистор 120 ом на одном из концов. Достаточно только на одном конце для такой короткой сети. Но надежнее будет чтобы стояло на обоих концах по резистору.

 

Скорость настроить не слишком высокую, напримет 100 кбит/c.

 

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

 

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

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

 

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

Советую не делать такую ошибку и сразу проектировать мелкие узлы с одной двумя функциями. Впоследствии благодаря этому ваша система будет легко недорого наращиваемой и масштабируемой.

 

Например в нашей системе управления лифтом в отдельные CAN узлы превращены замки, модули подвсетки, контроллеры клавиатуры, считыватели iButton, контроллеры двигателя, контроллеры питания, контроллеры заряда аккумуляторов и т.д.

 

В вашем случае можно было бы сделать узел для 1-wire шины на который вешать по нескольку датчиков температуры и узел с LCD и кнопками. Для нескольких LCD применитить несколько узлов с LCD.

Кстати имеем контроллеры 1-Wire в CAN как раз сделаны на STM32

post-2050-1414069566_thumb.jpg

 

 

 

 

 

Share this post


Link to post
Share on other sites

Здесь все проще чем может показаться.

Берете обычный UTP или STP кабель, каким Ethernet прокладывают, или просто витую пару (сечение не критично) и соединяете по цепочке от одного контроллера к другому последовательно все обходя.

Можно и не по цепочке и делать отростки звездой по несколько метров.

Главное не забыть терминаторный резистор 120 ом на одном из концов. Достаточно только на одном конце для такой короткой сети. Но надежнее будет чтобы стояло на обоих концах по резистору.

 

большое спасибо за ответ!

т.е. если я правильно понял Вашу мысль, то на одном этаже получается

- узел 1-Wire, на котором висят 4 температурных датчика (ну или больше, те что на этаже)

- по одному узлу на каждый LCD с кнопками

- узел, обслуживающий сервоприводы гребенки

 

тут у меня все равно остались вопросы по монтажу

1. получается что на каждом этаже будет своя 1-Wire сеть, кроме того одна общая CAN шина. Как это правильно делать? Витая пара для 1-Wire, обходящая все датчики + витая пара для CAN на весь дом?

 

2. Вы говорите, что CAN шину можно тянуть звездой с отростками. Тут имеется ввиду 4 провода из витой пары в сторону отростка и 4 оставшихся обратно или?

 

3. как уложить провода чтобы потом можно было сеть наращивать?

все таки для тупых, как узел соединяется с шиной? Где то видел вариант с RJ45 проходной розеткой, в которую патчкордом можно присоединять узлы. Т.е. получается разбрасываем равномерно по этажу розетки, потом по мере развития подключаемся или если возникла необходимость врезаться в шину, режем ее, вставляем тройник?

 

4. где обычно размещаются контроллеры? на одной плате с трансивером? на сколько далеко от шины?

Share this post


Link to post
Share on other sites

т.е. если я правильно понял Вашу мысль, то на одном этаже получается

- узел 1-Wire, на котором висят 4 температурных датчика (ну или больше, те что на этаже)

- по одному узлу на каждый LCD с кнопками

- узел, обслуживающий сервоприводы гребенки

 

Да все правильно.

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

 

На шину 1-Wire витая пара не нужна, там любым проводм можно класть, только отвести на сантиметр или больше от сетевых кабелей.

CAN шина общая на все этажи.

Отросток это то, что на схеме у меня изображено от тройника до контроллера LCD

Разъемы для CAN могут быть какие угодно. Могут быть и тройники.

Трансивер это такая маленькая 8-и ножная микросхемка она всегда рядом с процессором стоит, так как ее линии связи с процессором должны быть короткими.

А до разъемов шины от трансивера уже ведите хоть полметра.

Share this post


Link to post
Share on other sites

Да все правильно.

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

 

На шину 1-Wire витая пара не нужна, там любым проводм можно класть, только отвести на сантиметр или больше от сетевых кабелей.

CAN шина общая на все этажи.

Отросток это то, что на схеме у меня изображено от тройника до контроллера LCD

Разъемы для CAN могут быть какие угодно. Могут быть и тройники.

нарядно :)

тут у меня тоже был вопрос из области общих знаний. Куплю какую-нить отладочную плату, все запрограммирую. А как потом принято делать. Рисовать и заказывать плату или брать какую-нить дешевую отладочную?

Я правда из того что видел, все отладочные платы с поддержкой CAN выглядят как CAN-шилд. Т.е. трансивер не впаян, как это у Вас.

 

Трансивер это такая маленькая 8-и ножная микросхемка она всегда рядом с процессором стоит, так как ее линии связи с процессором должны быть короткими.

А до разъемов шины от трансивера уже ведите хоть полметра.

ага, увидел его. Но раз хоть полметра, значит два-три метра это уже много. Т.е. сама плата должна располагаться где-то рядом с CAN шиной.

Share this post


Link to post
Share on other sites

нарядно :)

тут у меня тоже был вопрос из области общих знаний. Куплю какую-нить отладочную плату, все запрограммирую. А как потом принято делать. Рисовать и заказывать плату или брать какую-нить дешевую отладочную?

Я правда из того что видел, все отладочные платы с поддержкой CAN выглядят как CAN-шилд. Т.е. трансивер не впаян, как это у Вас.

 

 

ага, увидел его. Но раз хоть полметра, значит два-три метра это уже много. Т.е. сама плата должна располагаться где-то рядом с CAN шиной.

 

Я бы конечно плату спроектировал сам на вашем месте. Зачем ограничиваить свой полет фантазии дешевой отладкой единственная цель которой - быть дешевой?

 

И немного странный ваш вопрос по расстоянию до шины. Шина это просто два проводка в экране, куда хотите туда их и проведите, это же не железная дорога.

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

Но лучше всегда смотреть осциллографом на сигналы в шине.

Когда у прямоугольных сигналов в шине серьезные искажения занимают более 1/15 длинны самого короткого сигнального импульса то с экспериментами с проводами надо завязывать и делать все по уму.

 

 

Share this post


Link to post
Share on other sites

И немного странный ваш вопрос по расстоянию до шины. Шина это просто два проводка в экране, куда хотите туда их и проведите, это же не железная дорога.

ну да, чего то я тупанул...

 

у меня еще вопрос по CAN трансиверам. Их у каждого производителя есть. Если я использую микропроцессор STM32, то и трансивер брать от ST, например L9615 ?

Смотрю они существенно дороже тех же MCP2551.

 

Share this post


Link to post
Share on other sites

у меня еще вопрос по CAN трансиверам. Их у каждого производителя есть. Если я использую микропроцессор STM32, то и трансивер брать от ST, например L9615 ?

Смотрю они существенно дороже тех же MCP2551.

Трансивер ставьте тот что больше нравится, только с учетом питания процессора (совсем старые трансиверы типа PCA82*** несовместимы с 3-х вольтовой логикой).

MCP2551 применяем наравне с TJA1050 совместно с lpc11c14 - пока без проблем.

Share this post


Link to post
Share on other sites

сейчас пытаюсь найти подходящую отладочную плату для STM32F103/105/107

Странно, но трансиверы всегда идут шилдами. Почему бы его сразу не впаять рядом с MCU, так как оно будет уже в конечном варианте?

Или может не там ищу...

Share this post


Link to post
Share on other sites

сейчас пытаюсь найти подходящую отладочную плату для STM32F103/105/107

Странно, но трансиверы всегда идут шилдами. Почему бы его сразу не впаять рядом с MCU, так как оно будет уже в конечном варианте?

Или может не там ищу...

 

CAN мультиплексируется у STM32 всегда с другими интерфейсами.

Если они впаяют туда трансивер они потеряют пару других функций у тех же пинов.

В результате плата станет дороже, а декларируемых интерфейсов меньше. А это никому не надо.

Share this post


Link to post
Share on other sites

CAN мультиплексируется у STM32 всегда с другими интерфейсами.

Если они впаяют туда трансивер они потеряют пару других функций у тех же пинов.

В результате плата станет дороже, а декларируемых интерфейсов меньше. А это никому не надо.

спасибо за грамотный ответ! Вы опять все толково объяснили :)

Share this post


Link to post
Share on other sites

по ходу дела возникли еще вопросы по монтажу.

Если взять витую пару, то три провода понятно - CAN_L, CAN_H и GND

осталось еще пять. Для STM32F103xx согласно даташиту надо 2-3,6V.

Если смотреть на блоки питания на DIN-рейку, то там есть 5, 12, 15, 24 и 48V.

- какое питание подавать на плату с контроллером?

- как его понизить до нужных 2-3,6V? Вопрос тупой, интересует типичное решение.

- чем задействовать оставшиеся 4 провода?

- на какую максимальную мощность можно рассчитывать ?

- сервопривод, который надо крутить 3W, есть на 24V и на 230V. Что из опыта лучше поставить между ним и контроллером?

 

Я прекрасно понимаю, что вопросы в большинстве своем у профессионалов вызовут улыбку, просьба сильно не пинать, можно ткнуть носом в интернет.

Share this post


Link to post
Share on other sites

по ходу дела возникли еще вопросы по монтажу.

Если взять витую пару, то три провода понятно - CAN_L, CAN_H и GND

осталось еще пять. Для STM32F103xx согласно даташиту надо 2-3,6V.

Если смотреть на блоки питания на DIN-рейку, то там есть 5, 12, 15, 24 и 48V.

- какое питание подавать на плату с контроллером?

- как его понизить до нужных 2-3,6V? Вопрос тупой, интересует типичное решение.

- чем задействовать оставшиеся 4 провода?

- на какую максимальную мощность можно рассчитывать ?

- сервопривод, который надо крутить 3W, есть на 24V и на 230V. Что из опыта лучше поставить между ним и контроллером?

 

Я прекрасно понимаю, что вопросы в большинстве своем у профессионалов вызовут улыбку, просьба сильно не пинать, можно ткнуть носом в интернет.

 

Можете оставшиеся использовать для 1-Wire, или подать какие нибудь сигналы не очень мощные, можете оставить незадействованными.

Мы обычно в своих системах используем 26V. (блок питания 24 В с подстройкой на 26 В)

Это обосновывается несколькими причинами:

- это еще низкое напряжение,

- но токи в два раза меньше чем при 12В,

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

- это напряжение Stanby для типовых 2-х 12 В аккумуляторов,

 

Сервопривод естественно тогда тоже питать от 24 В.

 

Чтобы было яснее я вам сразу всю схему нашего 1Wire-CAN контроллера привожу :

post-2050-1414349009_thumb.png

Share this post


Link to post
Share on other sites

это ничего, что на SMAJ28A может быть 45,4 В, а LM22672 допускает по входу мах 43 В?

да и на CAN-шине никакой защиты не видно.

Share this post


Link to post
Share on other sites

это ничего, что на SMAJ28A может быть 45,4 В, а LM22672 допускает по входу мах 43 В?

да и на CAN-шине никакой защиты не видно.

 

Ничего умного сказать об этой защите нельзя не проанализировав систему подвода питания.

Обратите только внимание на конденсаторы и энергию импульса.

 

В драйвере CAN-а есть "ESD Protection Exceeds 2000 V Per MIL-STD-883, Method 3015; Exceeds 200 V Using Machine Model (C = 200 pF, R = 0)"

Машинная модель это именно то с чем мы имеем дело.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...