- RS-485-sarjaliikenneprotokolla
- RS-485 Arduinossa
- Tarvittavat komponentit
- Piirikaavio
- Arduino UNO: n ja Arduino Nano -ohjelmointi RS485-sarjaliikenteeseen
- LED-kirkkauden hallinta sarjaliikenteellä RS485
Viestintäprotokollan valinta mikro-ohjainten ja oheislaitteiden välistä viestintää varten on tärkeä osa sulautettua järjestelmää. Se on tärkeää, koska minkä tahansa sulautetun sovelluksen yleinen suorituskyky riippuu viestintävälineistä, koska se liittyy kustannusten alentamiseen, nopeampaan tiedonsiirtoon, pitkän matkan kattavuuteen jne
Aiemmissa opetusohjelmissa olemme oppineet I2C-yhteyskäytännöstä ja SPI-yhteyskäytännöistä Arduinossa. Nyt on olemassa toinen sarjaliikenneprotokolla nimeltä RS-485. Tämä protokolla käyttää asynkronista sarjaliikennettä. RS-485: n tärkein etu on pitkän matkan tiedonsiirto kahden laitteen välillä. Ja niitä käytetään yleisimmin sähköisesti meluisissa teollisuusympäristöissä.
Tässä opetusohjelmassa opit RS-485-sarjaliikenteestä kahden Arduinon välillä ja osoitamme sen sitten säätämällä Master Arduinon Slave Arduinoon kytketyn LEDin kirkkautta lähettämällä ADC-arvoja RS-485-moduulin kautta. 10 k: n potentiometriä käytetään vaihtamaan ADC-arvoja Master Arduinossa.
Aloitetaan ymmärtämällä RS-485-sarjaliikenteen toiminta.
RS-485-sarjaliikenneprotokolla
RS-485 on asynkroninen sarjaliikenneprotokolla, joka ei vaadi kellopulssia. Se käyttää tekniikkaa, jota kutsutaan differentiaalisignaaliksi, binääridatan siirtämiseksi laitteesta toiseen.
Joten mikä tämä differentiaalinen signaalinsiirtomenetelmä on?
Differentiaalisignaalimenetelmä toimii luomalla differentiaalijännite käyttämällä positiivista ja negatiivista 5V. Se tarjoaa Half-Duplex- tiedonsiirron, kun käytetään kahta johtoa, ja Full-Duplex vaatii neljä neljä johtoa.
Käyttämällä tätä menetelmää
- RS-485 tukee suurempaa tiedonsiirtonopeutta, enintään 30 Mbps.
- Se tarjoaa myös maksimaalisen tiedonsiirtoetäisyyden RS-232-protokollaan verrattuna. Se siirtää dataa enintään 1200 metriä.
- RS-485: n tärkein etu RS-232: een nähden on useita orjia yhden isännän kanssa, kun taas RS-232 tukee vain yhtä orjaa.
- Siinä voi olla enintään 32 RS-485-protokollaan kytkettyä laitetta.
- RS-485: n toinen etu on, että se on immuuni kohinalle, kun he käyttävät differentiaalisignaalimenetelmää siirtämiseen.
- RS-485 on nopeampi kuin I2C-protokolla.
RS-485 Arduinossa
RS-485: n käyttämiseksi Arduinossa tarvitaan moduuli nimeltä 5V MAX485 TTL - RS485, joka perustuu Maxim MAX485 IC: hen, koska se sallii sarjaliikenteen 1200 metrin pitkällä etäisyydellä ja on kaksisuuntainen. Puoliduplex-tilassa sen tiedonsiirtonopeus on 2. 5Mbps.
5 V MAX485 TTL - RS485 -moduuli vaatii 5 V: n jännitteen ja käyttää 5 V: n logiikkatasoja, jotta se voidaan liittää mikrokontrollerien, kuten Arduinon, laitteistosarjaportteihin.
Siinä on seuraavat ominaisuudet:
- Käyttöjännite: 5V
- Sisäänrakennettu MAX485-siru
- Pieni virrankulutus RS485-tiedonsiirtoa varten
- Käännetty nopeus rajoitettu lähetin
- 5,08 mm: n 2P-liitäntä
- Kätevä RS-485-tiedonsiirtoyhteys
- Kaikkia sirunastoja on johdettu, ja niitä voidaan ohjata mikro-ohjaimen kautta
- Levyn koko: 44 x 14 mm
RS-485: n kiinnitys:
PIN-nimi |
Käyttää |
VCC |
5 V |
A |
Ei-invertoiva vastaanottimen tulo Ei-käänteinen ohjaimen lähtö |
B |
Vastaanottimen tulon kääntäminen Käänteinen ohjaimen lähtö |
GND |
GND (0 V) |
R0 |
Vastaanotin ulos (RX-tappi) |
RE |
Vastaanottimen lähtö (LOW-Enable) |
DE |
Ohjaimen lähtö (HIGH-Enable) |
DI |
Ohjaimen tulo (TX-nasta) |
Tämä RS-485-moduuli voidaan helposti liittää Arduinoon. Käytetään laitteiden sarjaportteja Arduino 0 (RX) ja 1 (TX) (UNO: ssa, NANO). Ohjelmointi on myös yksinkertaista, käytä vain Serial.print (): ää kirjoittaaksesi RS-485: een ja Serial.Read () lukeaksesi RS-485: stä.
Ohjelmointiosa selitetään myöhemmin yksityiskohtaisesti, mutta ensin tarkistetaan tarvittavat komponentit ja kytkentäkaavio.
Tarvittavat komponentit
- Arduino UNO tai Arduino NANO (2)
- MAX485 TTL - RS485 -muunninmoduuli - (2)
- 10K-potentiometri
- 16x2 LCD-näyttö
- LED
- Leipälauta
- Johtojen liittäminen
Tässä opetusohjelmassa Arduino Unoa käytetään isäntänä ja Arduino Nanoa orjana. Tässä käytetään kahta Arduino-korttia, joten tarvitaan kaksi RS-485-moduulia.
Piirikaavio
Piiriliitäntä ensimmäisen RS-485: n ja Arduino UNO: n (Master) välillä:
RS-485 |
Arduino UNO |
DI |
1 (TX) |
DE RE |
8 |
R0 |
0 (RX) |
VCC |
5 V |
GND |
GND |
A |
Orjan RS-485 A: lle |
B |
Orjan RS-485 B: lle |
Yhteys toisen RS-485: n ja Arduino Nano (Slave) välillä:
RS-485 |
Arduino UNO |
DI |
D1 (TX) |
DE RE |
D8 |
R0 |
D0 (RX) |
VCC |
5 V |
GND |
GND |
A |
Master RS-485: n A: lle |
B |
Master RS-485: n B: lle |
Piiriliitäntä 16x2 LCD: n ja Arduino Nano: n välillä:
16x2 LCD |
Arduino Nano |
VSS |
GND |
VDD |
+ 5 V |
V0 |
Potentiometrin keskitappiin nestekidenäytön kontrastin hallintaa varten |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5 V |
K |
GND |
10K-potentiometri on kytketty Arduino UNO: n analogiseen tapiin A0 analogisen tulon tuottamiseksi ja LED on kytketty Arduino Nanon tapiin D10.
Arduino UNO: n ja Arduino Nano -ohjelmointi RS485-sarjaliikenteeseen
Molempien levyjen ohjelmointiin käytetään Arduino IDE: tä. Mutta varmista, että olet valinnut vastaavan PORTIN kohdasta Työkalut-> Portti ja alusta kohdasta Työkalut-> Lauta.
Täydellinen koodi esittelyvideolla annetaan tämän opetusohjelman lopussa. Tässä selitämme koodin tärkeän osan. Tässä opetusohjelmassa on kaksi ohjelmaa, yksi Arduino UNO: lle (Master) ja toinen Arduino Nano: lle (Slave).
Koodin selitys päällikölle: Arduino UNO
Ota Master-puolella vain analoginen tulo napaan A0 vaihtelemalla potentiometriä ja sitten SerialWrite nämä arvot RS-485-väylälle Arduino UNO: n laitteistosarjaporttien (0,1) kautta.
Sarjaviestinnän aloittaminen laitteiston sarjaliittimillä (0,1):
Sarjan alku (9600);
Voit lukea analogiarvon Arduino UNO: n tappi A0: sta ja tallentaa ne muuttuvaan potval- käyttöön:
int potval = analogRead (pushval);
Ennen kirjoittamalla potval arvo sarjaportti, nastat DE & RE RS-485 olisi HIGH joka on liitetty tappiin 8 Arduino UNO niin Aseta nasta 8 HIGH:
digitalWrite (enablePin, HIGH);
Laita nämä arvot seuraavaksi RS-485-moduuliin liitettyyn sarjaporttiin käyttämällä seuraavaa lausetta
Sarja.println (potval);
Koodin selitys orjalle: Arduino NANO
Orjapuolella saadaan kokonaislukuarvo Master RS-485: ltä, joka on saatavana Arduino Nanon laitteistosarjaportissa (nastat -0,1). Yksinkertaisesti lue nämä arvot ja tallenna muuttujaan. Arvot ovat muodossa (0-1023). Joten se muunnetaan (0-255): ksi, kun PWM-tekniikkaa käytetään LED-kirkkauden säätämiseen.
Sitten AnalogWrite muunnettu arvo LED- nastaksi D10 (se on PWM-tappi). Joten PWM-arvosta riippuen LEDin kirkkaus muuttuu ja näyttää nämä arvot myös 16x2 LCD-näytössä.
Jotta Slave Arduinon RS-485 saisi arvot päälliköltä, tee vain RS-485: n nastat LOW. Joten Arduino NANO: n tappi D8 (enablePin) tehdään MATALALLE.
digitalWrite (enablePin, LOW);
Ja lukea sarjaportissa saatavilla olevat kokonaislukutiedot ja tallentaa ne muuttuvaan käyttöön
int pwmval = Sarja.parseInt ();
Muunna seuraavaksi arvo välillä (0-1023 arvoksi 0-255) ja tallenna ne muuttujaan:
int muuntaa = kartta (pwmval, 0,1023,0255);
Kirjoita seuraavaksi analoginen arvo (PWM) napaan D10, johon LED-anodi on kytketty:
analogWrite (ledpin, muuntaa);
Tulosta nämä PWM-arvot 16x2 LCD-näytöllä
lcd.setCursor (0,0); lcd.print ("PWM MASTERISTA"); lcd.setCursor (0,1); lcd.print (muuntaa);
LED-kirkkauden hallinta sarjaliikenteellä RS485
Kun PWM-arvoksi asetetaan 0 potentiometrillä, LED sammuu.
Ja kun PWM-arvoksi asetetaan 251 potentiometrillä: LED palaa täydellä kirkkaudella kuvan alla olevan kuvan mukaisesti:
Joten RS485: tä voidaan käyttää sarjaliikenteeseen Arduinossa.