Мазмуну:

КАНБУС үчүн жөнөкөй үйрөткүч: 8 кадам
КАНБУС үчүн жөнөкөй үйрөткүч: 8 кадам

Video: КАНБУС үчүн жөнөкөй үйрөткүч: 8 кадам

Video: КАНБУС үчүн жөнөкөй үйрөткүч: 8 кадам
Video: Жөнөкөй математикалык түшүнүктөрдү калыптандыруу 2024, Июль
Anonim
КАНБУС үчүн жөнөкөй үйрөткүч
КАНБУС үчүн жөнөкөй үйрөткүч

Мен CANды үч жумадан бери окуп келе жатам, эми мен окуу жыйынтыктарымды ырастоо үчүн кээ бир тиркемелерди толтурдум. Бул үйрөткүчтө сиз CANBUS байланышын ишке ашыруу үчүн Arduino колдонууну үйрөнөсүз. Эгер кандайдыр бир сунуштарыңыз болсо, билдирүү калтырууга кош келиңиз.

Берилиштер:

Аппараттык:

  • Maduino Zero КАНБУС
  • DHT11 Температура жана нымдуулук модулу
  • 1.3 "I2C OLED 128x64- Көк
  • DB9 - DB9 кабели (аялдан аялга)
  • Dupont Line

Программалык камсыздоо:

Arduino IDE

1 -кадам: КАНБУС деген эмне?

КАНБУС деген эмне
КАНБУС деген эмне
КАНБУС деген эмне
КАНБУС деген эмне

CAN жөнүндө

CAN (Controller Area Network)-реалдуу убакытта бөлүштүрүлгөн башкарууну ишке ашыра турган сериялык байланыш тармагы. Бул унаа тармагы үчүн комплекстүү зымдарды эки зымдуу автобуска алмаштыруу үчүн иштелип чыккан.

CAN протоколу OSI моделиндеги маалыматтар шилтемесинин катмарын жана физикалык катмарынын бир бөлүгүн аныктайт.

CAN протоколу ISO ISO11898 жана ISO11519 менен стандартташтырылган. ISO11898-бул 125kbps-1Mbps байланыш ылдамдыгы бар CAN жогорку ылдамдыктагы байланыш стандарты. ISO11519-бул ылдамдыгы 125kbpsтен ашпаган 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 Transceiver

CAN Transceiver логикалык деңгээл менен физикалык сигналдын ортосундагы конверсия үчүн жооптуу. Логикалык сигналды дифференциалдык деңгээлге же физикалык сигналды логикалык деңгээлге которуңуз.

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

CAN контроллери CAN протоколундагы маалымат шилтемесинин бардык функцияларын ишке ашыруучу жана CAN протоколун автоматтык түрдө чече ала турган CANдын негизги компоненти болуп саналат.

MCU

MCU функционалдык схеманы жана CAN контроллерин көзөмөлдөө үчүн жооптуу. Мисалы, CAN контроллеринин параметрлери түйүн башталганда инициализацияланат, CAN кадры CAN контролери аркылуу окулат жана жөнөтүлөт ж.

2 -кадам: CAN байланыштары жөнүндө

Автобус бош турганда, бардык түйүндөр билдирүүлөрдү жөнөтө баштайт (көп мастердик башкаруу). Автобуска биринчи келген түйүн жөнөтүү укугун алат (CSMA/CA режими). Бир эле учурда бир нече түйүн жөнөтө баштаганда, жогорку потенциалдуу ID билдирүүсүн жөнөткөн түйүн жөнөтүү укугуна ээ болот.

CAN протоколунда бардык билдирүүлөр белгиленген форматта жөнөтүлөт. Автобус бош турганда, автобуска туташкан бардык бирдиктер жаңы билдирүүлөрдү жөнөтө баштайт. Качан экиден ашык ячейка билдирүүлөрдү жөнөтө баштаганда, приоритет идентификатордун негизинде аныкталат. ID жөнөтүүнүн баруучу дарегин билдирбейт, тескерисинче автобуска кирүүчү билдирүүнүн артыкчылыгын билдирет. Качан экиден ашык ячейка билдирүүлөрдү жөнөтө баштаганда, пайызсыз идентификатордун ар бир битине бирден арбитраждык чечим чыгарылат. Арбитражды утуп алган бирдик билдирүүлөрдү жөнөтүүнү уланта алат, ал эми арбитражды жоготкон бөлүм дароо жөнөтүүнү токтотуп, ишти алат.

CAN автобус - бул автобустун эфир түрү. Бул бардык түйүндөр бардык берүүлөрдү "уга алат" дегенди билдирет. бардык түйүндөр дайыма бардык трафикти алат. CAN жабдуулары жергиликтүү чыпкалоону камсыз кылат, ошондуктан ар бир түйүн кызыктуу билдирүүлөргө гана жооп бере алат.

3 -кадам: Рамкалар

Кадрлар
Кадрлар

CAN түзмөктөрү CAN тармагы боюнча маалыматтарды кадр деп аталган пакеттерге жөнөтөт. CAN төрт алкак түрүнө ээ:

  • Маалымат алкагы: берүү үчүн түйүн маалыматын камтыган кадр
  • Алыскы кадр: белгилүү бир идентификатордун берилишин талап кылган кадр
  • Error Frame: катаны аныктаган ар кандай түйүн тарабынан берилген кадр
  • Ашыкча кадр: маалыматтын же алыскы кадрдын ортосуна кечигүүнү киргизүү үчүн кадр

Маалымат алкагы

Берилиштердин эки түрү бар, стандарттык жана кеңейтилген.

Фигуранын бит талааларынын мааниси:

  • 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 модулун Maduino Zero CAN-BUS модулуна CAN байланышын колдоо үчүн инструмент катары колдонула турган зымдар менен туташтырыңыз. Ошо сыяктуу эле, маалыматтарды алуу жана көрсөтүү үчүн дисплейди модулга туташтырыңыз.

Maduino Zero CANBUS менен DHT11 ортосундагы байланыш:

Maduino Zero КАНБУСУ - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DATA

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 нөл) колдоо үчүн эч кандай пакет жок.
  • Куралдарды тандаңыз -> Board -> Board Manager, "Arduino zero" издеп, "Arduino SAMD Boards" орнотуңуз.
  • Tools -> Board -> Arduino Zero (Native USB Port) тандап, Tools -> Port -> com… тандаңыз.
  • GitHubдан программаны алгандан кийин, бардык файлдар CANBUSту колдогон китепкана файлдарын камтыган проект каталогунда экенине ынанууңуз керек.
  • DHT11 температурасын жана нымдуулугун алуу үчүн DHT11ди айдоо үчүн колдонулган Adafruit тарабынан DHT сенсор китепканасын орнотуңуз.
  • 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 -кадам: Көрсөтүү

Show
Show
Show
Show

Эки модулду күйгүзүү, температура жана нымдуулук дисплейде көрсөтүлөт.

Сунушталууда: