Мазмұны:

CANBUS үшін қарапайым оқулық: 8 қадам
CANBUS үшін қарапайым оқулық: 8 қадам

Бейне: CANBUS үшін қарапайым оқулық: 8 қадам

Бейне: CANBUS үшін қарапайым оқулық: 8 қадам
Бейне: SKR Pro v1.x - Klipper install 2024, Шілде
Anonim
CANBUS үшін қарапайым оқулық
CANBUS үшін қарапайым оқулық

Мен CAN -ды үш апта оқыдым, енді мен оқу нәтижелерін растау үшін кейбір қосымшаларды толтырдым. Бұл оқулықта сіз CANBUS байланысын іске асыру үшін Arduino -ны қолдануды үйренесіз. Егер сізде қандай да бір ұсыныстар болса, хабарлама қалдыруға қош келдіңіз.

Жабдықтар:

Жабдық:

  • Maduino Zero КАНБУС
  • DHT11 температура мен ылғалдылық модулі
  • 1.3 «I2C OLED 128x64- көк
  • DB9 - DB9 кабелі (әйелден әйелге)
  • Дюпон сызығы

Бағдарламалық қамтамасыз ету:

Arduino IDE

1 -қадам: КАНБУС дегеніміз не?

КАНБУС дегеніміз не
КАНБУС дегеніміз не
КАНБУС дегеніміз не
КАНБУС дегеніміз не

CAN туралы

CAN (Controller Area Network)-бұл нақты уақыттағы таратылған басқаруды жүзеге асыра алатын сериялық байланыс желісі. Ол автомобиль өнеркәсібі үшін күрделі сымдарды екі сымды автобусқа ауыстыру үшін жасалған.

CAN протоколы OSI үлгісіндегі деректер байланысының деңгейін және физикалық деңгейдің бөлігін анықтайды.

CAN протоколы ISO11898 және ISO11519 стандартты ISO болып табылады. ISO11898-бұл байланыс жылдамдығы 125kbps-1Mbps болатын CAN жоғары жылдамдықтағы байланыс стандарты. ISO11519-бұл байланыс жылдамдығы 125 кбит / с төмен CAN төмен жылдамдықтағы байланыс стандарты.

Мұнда біз жоғары жылдамдықтағы CAN-ге назар аударамыз.

ISO-11898 желідегі құрылғылар арасында ақпараттың қалай берілетінін және қабаттар тұрғысынан анықталған Ашық жүйелердің өзара байланыс моделіне (OSI) сәйкес келетінін сипаттайды. Физикалық ортаға қосылған құрылғылар арасындағы нақты байланыс модельдің физикалық деңгейімен анықталады

  • Автобусқа қосылған әрбір CAN қондырғысын түйін деп атауға болады. Барлық CAN қондырғылары желі құру үшін 120 Ω резисторлармен әр ұшында тоқтатылған шинаға қосылған. Автобус CAN_H және CAN_L желілерінен тұрады. CAN контроллері шинаның деңгейін екі сымның қуат деңгейінің айырмашылығына қарай анықтайды. Автобус деңгейлері доминантты және рецессивті деңгейлерге бөлінеді, ол олардың бірі болуы керек. Жіберуші хабарламаны қабылдағышқа автобус деңгейінде өзгеріс енгізу арқылы жібереді. Автобуста «және» логикалық жолы орындалғанда, басым деңгей «0», ал рецессивті деңгей «1» болады.
  • Басым күйде CAN_H кернеуі шамамен 3,5 В, ал CAN_L кернеуі шамамен 1,5 В құрайды. Рецессивті жағдайда екі желінің кернеуі шамамен 2,5 В құрайды.
  • Сигнал дифференциалды, сондықтан CAN өзінің шуылға төзімділігін және ақауларға төзімділігін алады. Теңгерімді дифференциалды сигнал шуды қосуды азайтады және бұралған жұп кабель арқылы сигнал берудің жоғары жылдамдығына мүмкіндік береді. Әрбір сигнал желісіндегі ток тең, бірақ қарама-қарсы бағытта және нәтижесінде шу шығарудың төмен болуына әсер ететін өрісті болдырмайтын әсер пайда болады. Теңдестірілген дифференциалды қабылдағыштар мен бұралған жұпты кабельдерді қолдану CAN шинасының жалпы режимнен бас тартуын және жоғары шу иммунитетін жақсартады.

Трансивер CAN

CAN трансивері логикалық деңгей мен физикалық сигнал арасындағы түрлендіруге жауап береді. Логикалық сигналды дифференциалды деңгейге немесе физикалық сигналды логикалық деңгейге түрлендіру.

CAN контроллері

CAN контроллері - CAN протоколындағы деректер байланысының деңгейінің барлық функцияларын іске асыратын және CAN протоколын автоматты түрде шеше алатын CAN негізгі компоненті.

MCU

MCU функционалды схеманы және CAN контроллерін басқаруға жауап береді. Мысалы, CAN контроллерінің параметрлері түйін басталған кезде инициализацияланады, CAN кадры CAN контроллері арқылы оқылады және жіберіледі және т.

2 -қадам: CAN байланысы туралы

Автобус бос тұрғанда, барлық түйіндер хабар жіберуді бастай алады (көп мастерлік басқару). Автобусқа бірінші кіретін түйін жіберу құқығын алады (CSMA/CA режимі). Бір уақытта бірнеше түйіндер жіберіле бастағанда, идентификаторы жоғары хабарламаны жіберетін түйін жіберу құқығына ие болады.

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-Бұл кадрдың соңы (EOF), 7 биттік өріс CAN жақтауының (хабардың) аяқталуын белгілейді және доменантты толтыруды қате көрсететін бит толтыруды өшіреді. Қалыпты жұмыс кезінде логикалық деңгейдің 5 биті бірінен соң бірі пайда болған кезде, мәліметтерге керісінше логикалық деңгейдің бір бөлігі толтырылады.
  • IFS-Бұл 7-биттік фреймаралық кеңістік (IFS) дұрыс қабылданған кадрды хабарлама аралық аймағындағы тиісті орнына жылжыту үшін қажетті уақытты қамтиды.

Төрелік

Автобустың бос күйінде хабарды жіберуді бастаған құрылғы алдымен жіберу құқығын алады. Бір уақытта бірнеше бірлік жібере бастағанда, әрбір жіберуші блок арбитраж сегментінің бірінші нүктесінен басталады. Ең көп үздіксіз шығыс деңгейі бар қондырғы жіберуді жалғастыра алады.

4 -қадам: жылдамдық пен қашықтық

Жылдамдық пен қашықтық
Жылдамдық пен қашықтық

CAN шинасы - бұл бір уақытта бірнеше блокты қосатын автобус. Жалғауға болатын бірліктердің жалпы санына теориялық шектеу жоқ. Бірақ іс жүзінде қосуға болатын қондырғылар саны автобустағы уақыттың кешігуімен және электр жүктемесімен шектеледі. Байланыс жылдамдығын азайтыңыз, қосылатын қондырғылар санын көбейтіңіз және байланыс жылдамдығын арттырыңыз, қосылуға болатын қондырғылар саны азаяды.

Байланыс қашықтығы байланыс жылдамдығына кері байланысты, ал байланыс қашықтығы неғұрлым алыс болса, байланыс жылдамдығы соғұрлым аз болады. Ұзынырақ қашықтық 1 км немесе одан да көп болуы мүмкін, бірақ жылдамдығы 40кпс -тен аз.

5 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал

Maduino Zero CAN-BUS модулі-бұл CANbus байланысы үшін Makerfabs әзірлеген құрал, ол Arduino-ға негізделген, CAN контроллері мен CAN трансивері бар, пайдалануға дайын CAN-автобус портын жасау үшін.

  • MCP2515-бұл CAN спецификациясын жүзеге асыратын автономды CAN контроллері. Ол стандартты және кеңейтілген деректерді де, қашықтағы кадрларды да жіберуге және қабылдауға қабілетті.
  • MAX3051 интерфейстері CAN протокол контроллері мен контроллерлік аймақтық желідегі автобус желілерінің физикалық сымдары (CAN). MAX3051 автобусқа дифференциалды жіберу мүмкіндігін және CAN контроллеріне дифференциалды қабылдау мүмкіндігін қамтамасыз етеді.

6 -қадам: Қосылу

Қосылу
Қосылу

DHT11 модулін CAN байланысын қолдау құралы ретінде қолданылатын сымдармен Maduino Zero CAN-BUS модуліне қосыңыз. Дәл осылай, мәліметтерді алу және көрсету үшін дисплейді модульге қосыңыз.

Maduino Zero CANBUS пен DHT11 арасындағы байланыс:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ДЕРЕКТЕР

Maduino Zero CANBUS пен OLED арасындағы байланыс:

Maduino Zero КАНБУС - OLED

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

Maduino Zero CANBUS екі модулін қосу үшін DB9 кабелін пайдаланыңыз.

7 -қадам: код

MAX3051 дифференциалды деңгейлерді логикалық сигналдарға түрлендіруді аяқтайды. MCP2515 деректерді кодтау және декодтау сияқты CAN функциясын аяқтайды. MCU тек контроллерді инициализациялауға және деректерді жіберуге және алуға қажет.

  • Github:
  • Arduino орнатылғаннан кейін, орнатуға қажет тақтаны (Arduino zero) қолдайтын пакет жоқ.
  • Құралдарды таңдаңыз -> Board -> Board Manager, «Arduino zero» іздеп, «Arduino SAMD тақталарын» орнатыңыз.
  • Tools -> Board -> Arduino Zero (Native USB Port) тармағын таңдаңыз, Tools -> Port -> com… таңдаңыз.
  • GitHub бағдарламасын алғаннан кейін, барлық файлдар CANBUS қолдайтын кітапхана файлдары бар жоба каталогында екеніне көз жеткізу керек.
  • DHT11 температурасы мен ылғалдылығын алу үшін DHA сенсорлық кітапханасын орнатыңыз.
  • 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 -қадам: көрсету

Көрсету
Көрсету
Көрсету
Көрсету

Екі модульді қосу, температура мен ылғалдылық дисплейде көрсетіледі.

Ұсынылған: