- RS-485 sērijas sakaru protokols
- RS-485 Arduino
- Nepieciešamās sastāvdaļas
- Ķēdes shēma
- Arduino UNO un Arduino Nano programmēšana RS485 sērijas sakariem
- LED spilgtuma kontrolēšana, izmantojot sērijas sakarus RS485
Sakaru protokola izvēle saziņai starp mikrokontrolleriem un perifērijas ierīcēm ir svarīga iegultās sistēmas sastāvdaļa. Tas ir svarīgi, jo jebkuras iegultās lietojumprogrammas kopējais sniegums ir atkarīgs no saziņas līdzekļiem, jo tas ir saistīts ar izmaksu samazināšanu, ātrāku datu pārsūtīšanu, tālsatiksmes pārklājumu utt.
Iepriekšējās apmācībās mēs esam uzzinājuši par I2C sakaru protokoliem un SPI komunikācijas protokoliem Arduino. Tagad ir vēl viens sērijas sakaru protokols ar nosaukumu RS-485. Šis protokols izmanto asinhrono seriālo komunikāciju. RS-485 galvenā priekšrocība ir tālsatiksmes datu pārsūtīšana starp divām ierīcēm. Un tos visbiežāk izmanto elektriski trokšņainā rūpniecības vidē.
Šajā apmācībā mēs uzzināsim par RS-485 sērijas komunikāciju starp diviem Arduinos un pēc tam parādīsim to, kontrolējot LED spilgtumu, kas savienots ar Master Arduino Slave Arduino, nosūtot ADC vērtības caur RS-485 moduli. Lai mainītu ADC vērtības Master Arduino, tiek izmantots 10k potenciometrs.
Sāksim ar izpratni par RS-485 sērijas sakaru darbību.
RS-485 sērijas sakaru protokols
RS-485 ir asinhronais sērijveida sakaru protokols, kuram nav nepieciešams pulksteņa impulss. Lai bināros datus pārsūtītu no vienas ierīces uz otru, tiek izmantota tehnika, ko sauc par diferenciālo signālu.
Kāda tad ir šī diferenciālā signāla pārsūtīšanas metode ??
Diferenciālā signāla metode darbojas, izveidojot diferenciālo spriegumu, izmantojot pozitīvu un negatīvu 5V. Izmantojot divus vadus, tas nodrošina pusdupleksu komunikāciju, un pilndupleksam ir nepieciešami 4 četrstūru vadi.
Izmantojot šo metodi
- RS-485 atbalsta lielāku datu pārraides ātrumu līdz 30Mbps.
- Tas nodrošina arī maksimālu datu pārraides attālumu, salīdzinot ar RS-232 protokolu. Tas pārsūta datus līdz maksimāli 1200 metriem.
- RS-485 galvenā priekšrocība salīdzinājumā ar RS-232 ir vairāku vergu pakāpe ar vienu Master, savukārt RS-232 atbalsta tikai vienu vergu.
- Tajā var būt ne vairāk kā 32 ierīces, kas savienotas ar RS-485 protokolu.
- Vēl viena RS-485 priekšrocība ir tā, ka tā ir imūna pret troksni, jo pārsūtīšanai izmanto diferenciālā signāla metodi.
- RS-485 ir ātrāks nekā I2C protokols.
RS-485 Arduino
Lai izmantotu RS-485 Arduino, ir nepieciešams modulis ar nosaukumu 5V MAX485 TTL līdz RS485, kura pamatā ir Maxim MAX485 IC, jo tas ļauj sērijveida sakarus veikt lielā 1200 metru attālumā un tas ir divvirzienu. Pusdupleksā režīmā tā datu pārraides ātrums ir 2. 5Mbps.
5V MAX485 TTL līdz RS485 modulim ir nepieciešams 5V spriegums, un tas izmanto 5V loģikas līmeņus, lai to varētu sasaistīt ar mikrokontrolleru, piemēram, Arduino, aparatūras sērijas portiem.
Tam ir šādas funkcijas:
- Darba spriegums: 5V
- Borta MAX485 mikroshēma
- Zems enerģijas patēriņš RS485 sakariem
- Ierobežots uztvērējs
- 5,08 mm solis 2P terminālis
- Ērta RS-485 sakaru elektroinstalācija
- Visas mikroshēmas tapas var novest, izmantojot mikrokontrolleru
- Dēļa izmērs: 44 x 14mm
RS-485 piespraude:
Piespraudes nosaukums |
Izmantot |
VCC |
5V |
A |
Neinvertējoša uztvērēja ievade Neinvertējoša draivera izeja |
B |
Uztvērēja ievades invertēšana Apgriezt draivera izvadi |
GND |
GND (0V) |
R0 |
Uztvērēja izeja (RX tapa) |
RE |
Uztvērēja izeja (LOW-Enable) |
DE |
Vadītāja izeja (HIGH-Enable) |
DI |
Vadītāja ievade (TX tapa) |
Šo RS-485 moduli var viegli sasaistīt ar Arduino. Izmantosim Arduino 0 (RX) un 1 (TX) aparatūras seriālos portus (UNO, NANO). Programmēšana ir arī vienkārša, vienkārši izmantojiet Serial.print (), lai rakstītu uz RS-485, un Serial.Read (), lai lasītu no RS-485.
Programmēšanas daļa ir sīkāk paskaidrota vēlāk, bet vispirms ļauj pārbaudīt nepieciešamos komponentus un shēmu.
Nepieciešamās sastāvdaļas
- Arduino UNO vai Arduino NANO (2)
- MAX485 TTL līdz RS485 pārveidotāja modulis - (2)
- 10K potenciometrs
- 16x2 LCD displejs
- LED
- Maizes dēlis
- Vadu savienošana
Šajā apmācībā Arduino Uno tiek izmantots kā Master, bet Arduino Nano - kā Slave. Šeit tiek izmantoti divi Arduino dēļi, tāpēc ir nepieciešami divi RS-485 moduļi.
Ķēdes shēma
Ķēdes savienojums starp pirmo RS-485 un Arduino UNO (Master):
RS-485 |
Arduino UNO |
DI |
1 (TX) |
DE RE |
8 |
R0 |
0 (RX) |
VCC |
5V |
GND |
GND |
A |
Uz vergu RS-485 A |
B |
Uz vergu RS-485 B |
Savienojums starp otro RS-485 un Arduino Nano (Slave):
RS-485 |
Arduino UNO |
DI |
D1 (TX) |
DE RE |
D8 |
R0 |
D0 (RX) |
VCC |
5V |
GND |
GND |
A |
Uz RS meistara RS-485 |
B |
Uz meistara RS-485 B |
Ķēdes savienojums starp 16x2 LCD un Arduino Nano:
16x2 LCD |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Uz potenciometra centrālo tapu LCD kontrasta kontrolei |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5V |
K |
GND |
10K potenciometrs ir savienots ar Arduino UNO analogo tapu A0, lai nodrošinātu analogo ieeju, un LED ir pievienots Arduino Nano tapai D10.
Arduino UNO un Arduino Nano programmēšana RS485 sērijas sakariem
Lai programmētu abus dēļus, tiek izmantots Arduino IDE. Bet pārliecinieties, ka esat izvēlējies atbilstošo PORT no Tools-> Port and Board no Tools-> Board.
Šīs apmācības beigās ir norādīts pilns kods ar demonstrācijas video. Šeit mēs izskaidrojam svarīgu koda daļu. Šajā apmācībā ir divas programmas, viena paredzēta Arduino UNO (Master) un otra Arduino Nano (Slave).
Maģistra koda skaidrojums: Arduino UNO
Galvenajā pusē vienkārši ņemiet analogo ievadi pie tapas A0, mainot potenciometru, un pēc tam SerialWrite šīs vērtības RS-485 kopnei caur Arduino UNO aparatūras sērijas portiem (0,1).
Lai sāktu sērijveida saziņu ar aparatūras sērijas tapām (0,1), izmantojiet:
Sērijas sākums (9600);
Lai nolasītu analogo vērtību pie Arduino UNO tapas A0 un saglabātu tos mainīgā potval lietojumā:
int potval = analogRead (pushval);
Pirms potval vērtības ierakstīšanas sērijas portā, RS-485 tapām DE & RE jābūt AUGSTĀM, kas ir savienotas ar Arduino UNO 8. tapu, lai padarītu 8. tapu HIGH:
digitalWrite (enablePin, HIGH);
Tālāk, lai šīs vērtības ievietotu sērijas portā, kas savienots ar moduli RS-485, izmantojiet šo paziņojumu
Serial.println (potval);
Vergu koda skaidrojums: Arduino NANO
Slave pusē vesels skaitlis tiek saņemts no Master RS-485, kas ir pieejams Arduino Nano aparatūras sērijas portā (Pins -0,1). Vienkārši izlasiet šo vērtību un saglabājiet mainīgajā. Vērtības ir kā (0 -1023). Tātad tas tiek pārveidots par (0–255), jo LED spilgtuma kontrolei tiek izmantota PWM tehnika.
Pēc tam AnalogWrite šīs konvertētās vērtības uz LED tapu D10 (tā ir PWM tapa). Tātad atkarībā no PWM vērtības mainās gaismas diodes spilgtums, kā arī parādīt šīs vērtības 16x2 LCD displejā.
Lai Slave Arduino RS-485 saņemtu vērtības no kapteiņa, vienkārši izveidojiet RS-485 LOW tapas DE & RE. Tātad Arduino NANO tapa D8 (enablePin) tiek izgatavota LOW.
digitalWrite (enablePin, LOW);
Un, lai lasītu sērijveida ostā pieejamos veselos skaitļus un saglabātu tos mainīgā lietojumā
int pwmval = Seriālais.parseInt ();
Nākamais konvertējiet vērtību no (0-1023 uz 0-255) un saglabājiet tos mainīgajā:
int konvertēt = karte (pwmval, 0,1023,0,255);
Pēc tam ierakstiet analogo vērtību (PWM) tapai D10, kur ir pievienots LED anods:
analogWrite (ledpin, konvertēt);
Izmantojiet šo PWM vērtību 16x2 LCD displejā
lcd.setCursor (0,0); lcd.print ("PWM NO MASTER"); lcd.setCursor (0,1); lcd.print (konvertēt);
LED spilgtuma kontrolēšana, izmantojot sērijas sakarus RS485
Kad PWM vērtība tiek iestatīta uz 0, izmantojot potenciometru, gaismas diode tiek izslēgta.
Ja, izmantojot potenciometru, PWM vērtība tiek iestatīta uz 251: LED tiek ieslēgts ar pilnu spilgtumu, kā parādīts zemāk esošajā attēlā:
Tātad šādi RS485 var izmantot sērijveida saziņai Arduino.