Tartalomjegyzék:
- 1. lépés: Mi a CANBUS
- 2. lépés: A CAN kommunikációról
- 3. lépés: Keretek
- 4. lépés: Sebesség és távolság
- 5. lépés: Hardver
- 6. lépés: Csatlakozás
- 7. lépés: Kód
- 8. lépés: Mutasd meg
Videó: Egyszerű bemutató a CANBUS -hoz: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Három hétig tanultam a CAN -t, és most befejeztem néhány alkalmazást a tanulási eredményeim érvényesítésére. Ebben az oktatóanyagban megtudhatja, hogyan kell használni az Arduino -t a CANBUS kommunikáció megvalósításához. Ha bármilyen javaslata van, nyugodtan hagyjon üzenetet.
Kellékek:
Hardver:
- Maduino Zero CANBUS
- DHT11 hőmérséklet és páratartalom modul
- 1,3 "I2C OLED 128x64- kék
- DB9 -DB9 kábel (hüvely -nő)
- Dupont vonal
Szoftver:
Arduino IDE
1. lépés: Mi a CANBUS
A CAN -ról
A CAN (Controller Area Network) egy soros kommunikációs hálózat, amely valós idejű elosztott vezérlést képes megvalósítani. Az autóipar számára fejlesztették ki, hogy kicseréljék a komplex kábelköteget egy kétvezetékes buszra.
A CAN protokoll határozza meg az adatkapcsolati réteget és a fizikai réteg részét az OSI modellben.
A CAN protokoll ISO szabvány szerint ISO11898 és ISO11519. Az ISO11898 a CAN nagysebességű kommunikációs szabvány, 125kbps-1Mbps kommunikációs sebességgel. Az ISO11519 a CAN alacsony sebességű kommunikációs szabványa, amelynek kommunikációs sebessége kisebb, mint 125 kbps.
Itt a nagy sebességű CAN-ra összpontosítunk.
Az ISO-11898 leírja, hogyan történik az információk továbbítása a hálózaton lévő eszközök között, és hogyan felel meg a rétegekben meghatározott nyílt rendszerek összekapcsolási modelljének (OSI). A fizikai közeggel csatlakoztatott eszközök közötti tényleges kommunikációt a modell fizikai rétege határozza meg
- A buszhoz csatlakoztatott minden CAN egység csomópontnak nevezhető. Valamennyi CAN -egység 120 Ω -os ellenállású, mindkét végén egy buszra van kötve, hogy hálózatot alkosson. A busz CAN_H és CAN_L vonalakból áll. A CAN vezérlő a busz szintjét a két vezeték teljesítményszintjének különbsége alapján határozza meg. Az autóbusz -szintek domináns és recesszív szintekre oszlanak, amelyeknek egyike kell, hogy legyen. A feladó a busz szintjén történő változtatással elküldi az üzenetet a vevőnek. Amikor az "és" logikai sort végrehajtják a buszon, a domináns szint "0", a recesszív szint pedig "1".
- A domináns állapotban a CAN_H feszültsége körülbelül 3,5 V, a CAN_L feszültsége pedig körülbelül 1,5 V. Recesszív állapotban mindkét vezeték feszültsége 2,5 V körül van.
- A jel differenciál, ezért a CAN biztosítja a robosztus zajállóságot és hibatűrést. A kiegyensúlyozott differenciáljel csökkenti a zajcsatlakozást, és lehetővé teszi a nagy jelátviteli sebességet a sodrott érpáron. Az egyes jelvezetékeken az áram egyenlő, de az ellenkező irányba, és mezőszűrő hatást eredményez, amely kulcsfontosságú az alacsony zajkibocsátáshoz. A kiegyensúlyozott differenciál-vevőkészülékek és a csavart érpárú kábelezés használata fokozza a CAN-busz közös módú elutasítását és magas zajállóságát.
CAN adó -vevő
A CAN adó -vevő felelős a logikai szint és a fizikai jel közötti konverzióért. Alakítsa át a logikai jelet differenciál szintre, vagy a fizikai jelet logikai szintre.
CAN vezérlő
A CAN vezérlő a CAN alapvető összetevője, amely megvalósítja az adatkapcsolati réteg összes funkcióját a CAN protokollban, és automatikusan fel tudja oldani a CAN protokollt.
MCU
Az MCU felelős a funkcióáramkör és a CAN vezérlő vezérléséért. Például a CAN vezérlő paraméterei inicializálódnak, amikor a csomópont elindul, a CAN keret kiolvasásra kerül, és elküldésre kerül a CAN vezérlőn stb.
2. lépés: A CAN kommunikációról
Amikor a busz tétlen, minden csomópont elkezdheti az üzenetek küldését (multi-master vezérlés). A buszhoz először hozzáférő csomópont jogosult küldésre (CSMA/CA mód). Ha egyszerre több csomópont kezd el küldeni, akkor a magas prioritású azonosító üzenetet küldő csomópont jogosult a küldésre.
A CAN protokollban minden üzenet rögzített formátumban kerül elküldésre. Amikor a busz tétlen, a buszra csatlakoztatott összes egység elkezdhet új üzeneteket küldeni. Ha egyszerre több mint két cella kezd üzeneteket küldeni, a prioritás az azonosító alapján kerül meghatározásra. Az azonosító nem a küldés célcímét képviseli, hanem a buszt elérő üzenet prioritását. Amikor egyszerre több mint két cella kezd üzeneteket küldeni, a kamatmentes azonosító minden bitjét egyenként választják ki. A választottbíróságon győztes egység folytathatja az üzenetek küldését, és a választottbíróságot elveszítő egység azonnal leállítja a küldést, és megkapja a munkát.
A CAN busz egy sugárzott típusú busz. Ez azt jelenti, hogy minden csomópont „hallja” az összes adást. minden csomópont változatlanul felveszi az összes forgalmat. A CAN hardver helyi szűrést biztosít, így minden csomópont csak az érdekes üzenetekre reagálhat.
3. lépés: Keretek
A CAN -eszközök kereteknek nevezett csomagokban küldik az adatokat a CAN -hálózaton keresztül. A CAN négy kerettípussal rendelkezik:
- Adatkeret: csomópontadatokat tartalmazó keret az átvitelhez
- Távoli keret: egy keret, amely egy adott azonosító továbbítását kéri
- Hibakeret: bármely csomópont által továbbított keret, amely hibát észlel
- Túlterhelési keret: keret, amely késleltetést ad az adatok vagy a távoli keret között
Adatkeret
Kétféle adatkeret létezik, standard és kiterjesztett.
Az ábra bitmezőinek jelentése:
- SOF - Az egyetlen domináns keretkezdet (SOF) bit jelzi az üzenet kezdetét, és tétlenség után szinkronizálja a buszon lévő csomópontokat.
- Azonosító-A standard CAN 11 bites azonosító határozza meg az üzenet prioritását. Minél alacsonyabb a bináris érték, annál nagyobb a prioritása.
- RTR - Az egyetlen távoli átviteli kérés (RTR) bit
- IDE - A domináns egyazonosító -kiterjesztés (IDE) bit azt jelenti, hogy egy szabványos, kiterjesztés nélküli CAN -azonosító kerül továbbításra.
- R0 - Fenntartott bit (a későbbi szabványmódosítás esetleges felhasználására).
- DLC-A 4 bites adathossz kód (DLC) tartalmazza az átvitt adatok bájtjainak számát.
- Adatok - Legfeljebb 64 bites alkalmazásadat továbbítható.
- CRC-A 16 bites (15 bit plusz elválasztó) ciklikus redundancia-ellenőrzés (CRC) tartalmazza az előző alkalmazásadatok ellenőrző összegét (továbbított bitek száma) a hiba észlelése érdekében.
- Az ACK – ACK 2 bites, az egyik a nyugtázó bit, a második egy határoló.
- EOF-Ez a keretvégi (EOF), 7 bites mező jelzi a CAN keret (üzenet) végét, és letiltja a bitkitöltést, jelezve a töltési hibát, amikor domináns. Ha normál működés közben 5 bit azonos logikai szint fordul elő egymás után, akkor az ellentétes logikai szint egy bitje kerül az adatokba.
- IFS-Ez a 7 bites interframe tér (IFS) tartalmazza azt az időt, amelyre a vezérlőnek szüksége van ahhoz, hogy egy megfelelően fogadott keretet a megfelelő pozícióba helyezzen egy üzenetpuffer területen.
Választottbíróság
Busz tétlen állapotban az az egység, amelyik először kezdi el az üzenet küldését, megkapja a küldési jogot. Ha egyszerre több egység kezdi a küldést, minden küldő egység a választottbírósági szegmens első bitjéről indul. A legnagyobb számú folyamatos kimeneti domináns szinttel rendelkező egység továbbra is küldhet.
4. lépés: Sebesség és távolság
A CAN busz egy busz, amely egyszerre több egységet is összeköt. Elméletileg nincs korlátozás a csatlakoztatható egységek teljes számára. A gyakorlatban azonban a csatlakoztatható egységek számát korlátozza a buszon lévő késleltetés és az elektromos terhelés. Csökkentse a kommunikáció sebességét, növelje a csatlakoztatható egységek számát, és növelje a kommunikáció sebességét, a csatlakoztatható egységek száma csökken.
A kommunikációs távolság fordítottan függ a kommunikációs sebességtől, és minél távolabb van a kommunikációs távolság, annál kisebb a kommunikációs sebesség. A hosszabb távolság 1 km vagy több lehet, de a sebesség kevesebb, mint 40 kps.
5. lépés: Hardver
A Maduino Zero CAN-BUS modul a Makerfabs által a CANbus kommunikációra kifejlesztett eszköz-Arduino-n alapul, a CAN vezérlővel és a CAN adó-vevővel, hogy készen álljon a használatra kész CAN-busz portra.
- Az MCP2515 egy önálló CAN vezérlő, amely megvalósítja a CAN specifikációt. Képes szabványos és kiterjesztett adatok és távoli keretek továbbítására és fogadására.
- A MAX3051 interfészek a CAN protokollvezérlő és a buszvonalak fizikai vezetékei között egy vezérlőterületi hálózatban (CAN). A MAX3051 differenciális átviteli képességet biztosít a buszhoz, és differenciális vételi lehetőséget a CAN vezérlőhöz.
6. lépés: Csatlakozás
Csatlakoztassa a DHT11 modult a Maduino Zero CAN-BUS modulhoz a CAN kommunikációt támogató vezetékekkel ellátott vezetékekkel. Hasonlóképpen csatlakoztassa a kijelzőt a modulhoz az adatok fogadásához és megjelenítéséhez.
A kapcsolat a Maduino Zero CANBUS és a DHT11 között
Maduino Zero CANBUS - DHT11
3v3 ------ VCC GND ------ GND D10 ------ ADATOK
A kapcsolat a Maduino Zero CANBUS és az OLED között
Maduino Zero CANBUS - OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
DB9 kábellel csatlakoztassa a két Maduino Zero CANBUS modult.
7. lépés: Kód
A MAX3051 befejezi a differenciálszintek logikai jelekké alakítását. Az MCP2515 elvégzi a CAN funkciót, például az adatok kódolását és dekódolását. Az MCU -nak csak inicializálnia kell a vezérlőt, és adatokat kell küldenie és fogadnia.
- Github:
- Az Arduino telepítése után nincs olyan csomag, amely támogatja a táblát (Arduino zero), amelyet telepíteni kell.
- Válassza ki az eszközöket -> Tábla -> Fórumkezelő, keresse meg az "Arduino zero" -t, és telepítse az "Arduino SAMD Boards" -t.
- Válassza az Eszközök -> Tábla -> Arduino Zero (natív USB -port) lehetőséget, majd válassza az Eszközök -> Port -> com…
- Miután megszerezte a programot a GitHub -ról, meg kell győződnie arról, hogy minden fájl a projektkönyvtárban található, amely a CANBUS -t támogató könyvtári fájlokat tartalmazza.
- Telepítse az Adafruit DHT szenzortárát, amely a DHT11 hajtására szolgál a hőmérséklet és a páratartalom eléréséhez.
- Különféle címek használatával küldje el külön a hőmérsékletet és a páratartalmat a Test_DHT11.ino kódban.
CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);
késleltetés (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); késleltetés (500);
A „0x10” az üzenet azonosítóját jelenti, a „0” az átlagos szabványos keretet, az „stmp1.length ()” az üzenet hosszát jelenti, az „stmp_send1” az elküldött adatokat.
- A Test_OLED.ino kódban a CANBUS -on lévő összes üzenet lekérdezéssel érkezik, és a szükséges információk megjelennek az OLED -en.
- Töltse fel a Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino programot az érzékelőhöz csatlakozó modulba, és töltse fel a Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino programot egy másik, OLED-hez csatlakozó modulba.
8. lépés: Mutasd meg
Kapcsolja be a két modult, a hőmérséklet és a páratartalom megjelenik a kijelzőn.
Ajánlott:
Űrállomás létrehozása a TinkerCad Codeblockban -- Egyszerű bemutató: 7 lépés (képekkel)
Hozzon létre Űrállomást a TinkerCad Codeblockban || Egyszerű bemutató: Bár az űrben való élet gondolata tudományos fantasztikumnak tűnhet, ezt olvasva a Nemzetközi Űrállomás másodpercenként öt mérföldes sebességgel kerüli meg a Földet, és egyszer kering a Föld körül. 90 percenként. Ebben a projektben megtanulhatja
Erőérzékelő ellenállás (FSR) Arduino Egyszerű bemutató: 8 lépés
Erőérzékelő ellenállás (FSR) Arduino Egyszerű bemutató: Ebben az oktatóanyagban megtanuljuk, hogyan lehet felismerni az erőérzékelő ellenállásra (FSR) kifejtett erőt, és megjeleníteni azt az OLED kijelzőn .Nézzen meg egy bemutató videót
Egyszerű bemutató: Flex érzékelők Arduino -val: 4 lépés
Egyszerű bemutató: Flex érzékelők az Arduino -val: A flex érzékelők klasszak! A Robotics projektjeim során folyamatosan használom őket, és úgy gondoltam, hogy készítek egy egyszerű kis oktatóanyagot, hogy megismerjék ezeket a hajlékony kis csíkokat. Beszéljünk arról, hogy mi a flex érzékelő és hogyan működik, hogyan lehet
MakeyMakey - Egyszerű bemutató és hogyan működik! Zongora készítése!: 6 lépés
MakeyMakey - Egyszerű bemutató és hogyan működik! Zongorázás !: * Előre figyelmeztető . Zongora készítése
7805 szabályozó (5V) modul: Egyszerű bemutató: 5 lépés (képekkel)
7805 szabályozó (5V) modul: Egyszerű bemutató: Üdvözlök mindenkit! Ez a legegyszerűbb oktatható, amelyben megosztom Önnel a 7805 feszültségszabályozó alapjait. Szinte minden projektemben, beleértve a kenyeretábla projekteket, az Arduino projekteket és a PCB -alapú elektronikai projekteket, különböző tápegységek