Съдържание:

Прост урок за CANBUS: 8 стъпки
Прост урок за CANBUS: 8 стъпки

Видео: Прост урок за CANBUS: 8 стъпки

Видео: Прост урок за CANBUS: 8 стъпки
Видео: Подключение магнитолы Андроид 2024, Юли
Anonim
Прост урок за CANBUS
Прост урок за CANBUS

Учих CAN от три седмици и сега завърших някои приложения, за да потвърдя резултатите от обучението си. В този урок ще научите как да използвате Arduino за реализиране на CANBUS комуникация. Ако имате някакви предложения, добре дошли да оставите съобщение.

Консумативи:

Хардуер:

  • Мадуино Нула КАНБУС
  • Модул за температура и влажност на DHT11
  • 1.3 "I2C OLED 128x64- син
  • DB9 към DB9 кабел (женски към женски)
  • Линия Dupont

Софтуер:

Arduino IDE

Стъпка 1: Какво е КАНБУС

Какво е КАНБУС
Какво е КАНБУС
Какво е КАНБУС
Какво е КАНБУС

Относно МОЖЕ

CAN (Controller Area Network) е серийна комуникационна мрежа, която може да реализира разпределен контрол в реално време. Той е разработен за автомобилната индустрия, за да замени сложните кабелни снопове с двужична шина.

Протоколът CAN дефинира слоя за връзка към данни и част от физическия слой в модела OSI.

CAN протоколът е ISO стандартизиран с ISO11898 и ISO11519. ISO11898 е високоскоростен стандарт за комуникация CAN със скорост на комуникация 125kbps-1Mbps. ISO11519 е стандартът за ниска скорост на комуникация CAN със скорост на комуникация по-малка от 125 kbps.

Тук се фокусираме върху високоскоростната CAN.

ISO-11898 описва как се предава информация между устройства в мрежа и съответства на модела за взаимосвързаност на отворени системи (OSI), който е дефиниран като слоеве. Действителната комуникация между устройства, свързани чрез физическия носител, се определя от физическия слой на модела

  • Всяко CAN устройство, свързано към шината, може да се нарече възел. Всички CAN устройства са свързани към шина, завършена от всеки край със 120 Ω резистори, за да образуват мрежа. Автобусът се състои от линии CAN_H и CAN_L. CAN контролерът определя нивото на шината въз основа на разликата в нивото на мощност на двата проводника. Нивата на автобусите са разделени на доминиращи и рецесивни нива, които трябва да бъдат едно от тях. Изпращачът изпраща съобщението до получателя, като прави промяна на ниво шина. Когато логическата линия "и" се изпълнява в шината, доминиращото ниво е "0", а рецесивното ниво е "1".
  • В доминиращото състояние напрежението на CAN_H е около 3.5V, а напрежението на CAN_L е около 1.5V. В рецесивно състояние напрежението на двете линии е около 2.5V.
  • Сигналът е диференциален, поради което CAN извлича своята здрава шумоизолация и устойчивост на повреди. Балансираният диференциален сигнал намалява шумовото свързване и позволява висока скорост на сигнализиране по кабел с усукана двойка. Токът във всяка сигнална линия е равен, но в обратна посока и води до ефект на премахване на полето, който е ключов за ниските емисии на шум. Използването на балансирани диференциални приемници и кабели с усукана двойка подобрява отхвърлянето в общ режим и висока устойчивост на шум на CAN шина.

CAN трансивер

CAN трансивърът е отговорен за преобразуването между логическото ниво и физическия сигнал. Преобразувайте логически сигнал в диференциално ниво или физически сигнал в логическо ниво.

CAN контролер

CAN контролерът е основният компонент на CAN, който реализира всички функции на слоя връзка към данни в CAN протокола и може автоматично да разрешава CAN протокола.

MCU

MCU отговаря за управлението на функционалната верига и CAN контролера. Например параметрите на CAN контролера се инициализират, когато възелът стартира, CAN рамката се чете и изпраща през CAN контролера и т.н.

Стъпка 2: За CAN Communications

Когато шината е бездействаща, всички възли могат да започнат да изпращат съобщения (управление с няколко главни). Възелът, който първо осъществява достъп до шината, получава правото да изпраща (режим CSMA/CA). Когато няколко възли започнат да изпращат едновременно, възелът, който изпраща ID съобщение с висок приоритет, получава правото да изпраща.

В протокола CAN всички съобщения се изпращат във фиксиран формат. Когато шината не работи, всички устройства, свързани към шината, могат да започнат да изпращат нови съобщения. Когато повече от две клетки започват да изпращат съобщения едновременно, приоритетът се определя въз основа на идентификатора. Идентификаторът не представлява адреса на местоназначението на изпращането, а по -скоро приоритета на съобщението за достъп до шината. Когато повече от две клетки започват да изпращат съобщения едновременно, всеки бит от безлихвения идентификатор се арбитрира един по един. Единицата, която спечели арбитража, може да продължи да изпраща съобщения, а единицата, която губи арбитража, незабавно спира да изпраща и получава работата.

CAN шината е излъчващ тип шина. Това означава, че всички възли могат да „чуят“всички предавания. всички възли неизменно ще вземат целия трафик. Хардуерът на CAN осигурява локално филтриране, така че всеки възел да реагира само на интересните съобщения.

Стъпка 3: Рамки

Рамки
Рамки

CAN устройствата изпращат данни през CAN мрежата в пакети, наречени рамки. CAN има четири типа рамки:

  • Рамка от данни: рамка, съдържаща данни за възли за предаване
  • Отдалечен кадър: кадър, изискващ предаването на конкретен идентификатор
  • Рамка за грешка: рамка, предадена от всеки възел, откриваща грешка
  • Рамка за претоварване: рамка за инжектиране на закъснение между данни или отдалечен кадър

Рамка за данни

Има два типа рамки за данни, стандартни и разширени.

Значението на битовите полета на фигурата са:

  • SOF - Единичният доминиращ бит за начало на кадър (SOF) маркира началото на съобщението и се използва за синхронизиране на възлите в шината, след като е празен.
  • Идентификатор-Стандартният CAN 11-битов идентификатор установява приоритета на съобщението. Колкото по -ниска е двоичната стойност, толкова по -висок е нейният приоритет.
  • RTR - Битът за единична заявка за отдалечено предаване (RTR)
  • IDE - Доминиращ бит с разширение за един идентификатор (IDE) означава, че се предава стандартен CAN идентификатор без разширение.
  • R0 - Запазен бит (за възможно използване при бъдещи стандартни изменения).
  • DLC-4-битовият код за дължина на данните (DLC) съдържа броя байтове предавани данни.
  • Данни - Могат да се предават до 64 бита данни от приложението.
  • CRC-16-битовата (15 бита плюс разделител) проверка на циклична излишност (CRC) съдържа контролната сума (брой предадени битове) на предходните данни от приложението за откриване на грешки.
  • ACK – ACK е 2 бита, единият е битът за потвърждение, а вторият е разделител.
  • EOF-Това 7-битово поле за край на кадър (EOF) маркира края на CAN кадър (съобщение) и деактивира битовото въвеждане, което показва грешка при запълване, когато е доминираща. Когато 5 бита от едно и също логическо ниво се появят последователно по време на нормална работа, малко от обратното логическо ниво се вмъква в данните.
  • IFS-Това 7-битово междукадрово пространство (IFS) съдържа времето, необходимо на контролера за преместване на правилно получен кадър до правилното му положение в областта на буфера за съобщения.

Арбитраж

В състояние на празен ход на шината, устройството, което започва да изпраща съобщението първо, получава правото на изпращане. Когато няколко блока започват да изпращат едновременно, всяко изпращащо устройство започва от първия бит на арбитражния сегмент. Устройството с най -голям брой непрекъснати доминиращи нива на изход може да продължи да изпраща.

Стъпка 4: Скорост и разстояние

Скорост и разстояние
Скорост и разстояние

CAN шината е шина, която свързва няколко блока едновременно. Теоретично няма ограничение за общия брой единици, които могат да бъдат свързани. На практика обаче броят на устройствата, които могат да бъдат свързани, е ограничен от закъснението във времето на шината и електрическото натоварване. Намалете скоростта на комуникация, увеличете броя на устройствата, които могат да бъдат свързани, и увеличете скоростта на комуникация, броят на единиците, които могат да бъдат свързани, намалява.

Комуникационното разстояние е обратно свързано със скоростта на комуникация и колкото по -далечно е комуникационното разстояние, толкова по -малка е скоростта на комуникация. По -голямото разстояние може да бъде 1 км или повече, но скоростта е по -малка от 40 км / сек.

Стъпка 5: Хардуер

Хардуер
Хардуер

Модулът Maduino Zero CAN-BUS е инструмент, разработен от Makerfabs за комуникация по CANbus-той е базиран на Arduino, с CAN контролер и CAN трансивер, за създаване на готов за използване порт за CAN-шина.

  • MCP2515 е самостоятелен CAN контролер, който изпълнява CAN спецификацията. Той е в състояние да предава и приема както стандартни, така и разширени данни и отдалечени кадри.
  • Интерфейсите MAX3051 между контролера на протокола CAN и физическите проводници на шинните линии в мрежата на контролера (CAN). MAX3051 осигурява възможност за диференциално предаване към шината и възможност за диференциално приемане към CAN контролера.

Стъпка 6: Свързване

Връзка
Връзка

Свържете модула DHT11 към модула Maduino Zero CAN-BUS с проводници, които да се използват като инструмент за поддържане на CAN комуникация. По същия начин свържете дисплея към модула, за да получите данните и да ги покажете.

Връзката между Maduino Zero CANBUS и DHT11:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ДАННИ

Връзката между Maduino Zero CANBUS и OLED:

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Използвайте кабел DB9, за да свържете двата модула Maduino Zero CANBUS.

Стъпка 7: Код

MAX3051 завършва преобразуването на диференциалните нива в логически сигнали. MCP2515 завършва CAN функция като кодиране и декодиране на данни. MCU трябва само да инициализира контролера и да изпраща и получава данни.

  • Github:
  • След инсталирането на Arduino няма пакет за поддържане на платката (Arduino нула), който е необходим за инсталиране.
  • Изберете инструменти -> Board -> Board Manager, потърсете „Arduino zero“и инсталирайте „Arduino SAMD Boards“.
  • Изберете Инструменти -> Board -> Arduino Zero (Native USB Port), изберете Tools -> Port -> com…
  • След като получите програмата от GitHub, трябва да се уверите, че всички файлове са в директорията на проекта, която съдържа библиотечни файлове, които поддържат CANBUS.
  • Инсталирайте DHT сензорната библиотека от Adafruit, която се използва за задвижване на DHT11 за получаване на температура и влажност.
  • Използвайте различни адреси, за да изпращате температурата и влажността отделно в кода Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

забавяне (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); забавяне (500);

„0x10“е средният идентификатор на съобщението, „0“е средният стандартен кадър, „stmp1.length ()“е средната дължина на съобщението, „stmp_send1“са изпратените данни.

  • В кода Test_OLED.ino всички съобщения в CANBUS се получават чрез заявка и необходимата информация се показва на OLED.
  • Качете програмата Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino в модула, свързан със сензора, и качете програмата Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino в друг модул, свързан към OLED.

Стъпка 8: Покажете

Покажи
Покажи
Покажи
Покажи

Включете двата модула, температурата и влажността ще се покажат на дисплея.

Препоръчано: