- РС-485 протокол за серијску комуникацију
- РС-485 у Ардуину
- Компоненте потребне
- Кружни дијаграм
- Програмирање Ардуино УНО и Ардуино Нано за серијску комуникацију РС485
- Контрола осветљености ЛЕД-а помоћу серијске комуникације РС485
Избор комуникационог протокола за комуникацију између микроконтролера и периферних уређаја важан је део уграђеног система. Важно је јер укупне перформансе било које уграђене апликације зависе од комуникационих средстава, јер су повезане са смањењем трошкова, бржим преносом података, покривањем на велике удаљености итд.
У претходним водичима сазнали смо о И2Ц комуникацијском протоколу и СПИ комуникацијским протоколима у Ардуину. Сада постоји још један протокол за серијску комуникацију који се зове РС-485. Овај протокол користи асинхрону серијску комуникацију. Главна предност РС-485 је пренос података на велика удаљеност између два уређаја. А најчешће се користе у електрично бучном индустријском окружењу.
У овом упутству научићемо о РС-485 серијској комуникацији између два Ардуиноа, а затим ћемо је демонстрирати контролишући осветљеност ЛЕД диоде повезане на славе Ардуино од Мастер Ардуина слањем АДЦ вредности кроз РС-485 модул. Потенциометар од 10 к користи се за варирање вредности АДЦ у Мастер Ардуину.
Почнимо са разумевањем рада серијске комуникације РС-485.
РС-485 протокол за серијску комуникацију
РС-485 је асинхрони серијски комуникациони протокол који не захтева импулс такта. Користи технику која се назива диференцијални сигнал за пренос бинарних података са једног уређаја на други.
Па шта је овај диференцијални начин преноса сигнала ??
Метода диференцијалног сигнала делује тако што ствара диференцијални напон коришћењем позитивних и негативних 5В. Омогућава Халф-Дуплек комуникацију када се користе две жице, а Фулл-Дуплек захтева 4 четворожичне жице.
Коришћењем ове методе
- РС-485 подржава већу брзину преноса података од максимално 30Мбпс.
- Такође пружа максималну удаљеност преноса података у поређењу са РС-232 протоколом. Преноси податке до максимално 1200 метара.
- Главна предност РС-485 у односу на РС-232 је вишеструки славе са једним Мастер док РС-232 подржава само једног славе.
- Може да има највише 32 уређаја повезана на РС-485 протокол.
- Још једна предност РС-485 је што је имун на буку јер за пренос користе метод диференцијалног сигнала.
- РС-485 је бржи у поређењу са И2Ц протоколом.
РС-485 у Ардуину
За употребу РС-485 у Ардуину потребан је модул назван 5В МАКС485 ТТЛ до РС485 који се заснива на Маким МАКС485 ИЦ, јер омогућава серијску комуникацију на великим удаљеностима од 1200 метара и двосмеран је. У полудуплексном режиму има брзину преноса података од 2,5 Мб / с.
Модул од 5 В МАКС485 ТТЛ до РС485 захтева напон од 5 В и користи логичке нивое од 5 В како би могао да се повеже са хардверским серијским портовима микроконтролера попут Ардуина.
Има следеће карактеристике:
- Радни напон: 5В
- Уграђени чип МАКС485
- Ниска потрошња енергије за РС485 комуникацију
- Примопредајник са ограниченом брзином пораста
- 2П терминал са кораком од 5,08 мм
- Погодно РС-485 ожичење за комуникацију
- Сви пинови чипа до којих се може довести могу се контролисати преко микроконтролера
- Величина плоче: 44 к 14 мм
Пин-Оут РС-485:
Пин Наме |
Користите |
ВЦЦ |
5В |
А. |
Неинвертујући улаз пријемника Неинвертујући излаз возача |
Б. |
Инвертовање улаза пријемника Инвертовање излаза управљачког програма |
ГНД |
ГНД (0 В) |
Р0 |
Пријемник излаз (РКС пин) |
РЕ |
Излаз пријемника (ЛОВ-Енабле) |
ДЕ |
Излаз за возача (ХИГХ-Енабле) |
ДИ |
Улаз за возача (ТКС пин) |
Овај РС-485 модул може се лако повезати са Ардуином. Користимо хардверске серијске портове Ардуино 0 (РКС) и 1 (ТКС) (У УНО, НАНО). Програмирање је такође једноставно, само користите Сериал.принт () за писање у РС-485 и Сериал.Реад () за читање из РС-485.
Програмски део је касније детаљно објашњен, али прво омогућава проверу потребних компоненти и шеме кола.
Компоненте потребне
- Ардуино УНО или Ардуино НАНО (2)
- Конвертерски модул МАКС485 ТТЛ у РС485 - (2)
- 10К потенциометар
- ЛЦД екран од 16к2
- ЛЕД
- Бреадбоард
- Повезивање жица
У овом упутству Ардуино Уно се користи као Мастер, а Ардуино Нано као Славе. Овде се користе две плоче Ардуино, па су потребна два РС-485 модула.
Кружни дијаграм
Кружна веза између првог РС-485 и Ардуино УНО (мастер):
РС-485 |
Ардуино УНО |
ДИ |
1 (ТКС) |
ДЕ РЕ |
8 |
Р0 |
0 (РКС) |
ВЦЦ |
5В |
ГНД |
ГНД |
А. |
До А славе-РС-485 |
Б. |
До Б Славе РС-485 |
Веза између другог РС-485 и Ардуино Нано (славе):
РС-485 |
Ардуино УНО |
ДИ |
Д1 (ТКС) |
ДЕ РЕ |
Д8 |
Р0 |
Д0 (РКС) |
ВЦЦ |
5В |
ГНД |
ГНД |
А. |
До А мастер РС-485 |
Б. |
До Б мастер РС-485 |
Кружна веза између ЛЦД екрана 16к2 и Ардуино Нано:
ЛЦД 16к2 |
Ардуино Нано |
ВСС |
ГНД |
ВДД |
+ 5В |
В0 |
На средишњи пин потенциометра за контролу контраста ЛЦД-а |
РС |
Д2 |
РВ |
ГНД |
Е. |
Д3 |
Д4 |
Д4 |
Д5 |
Д5 |
Д6 |
Д6 |
Д7 |
Д7 |
А. |
+ 5В |
К. |
ГНД |
Потенциометар од 10К повезан је на аналогни пин А0 Ардуино УНО за пружање аналогног улаза, а ЛЕД диода је повезана на пин Д10 Ардуино Нано-а.
Програмирање Ардуино УНО и Ардуино Нано за серијску комуникацију РС485
За програмирање обе плоче користи се Ардуино ИДЕ. Али проверите да ли сте изабрали одговарајући ПОРТ из Тоолс-> Порт анд Боард из Тоолс-> Боард.
Комплетни код са демо видео записом дат је на крају овог водича. Овде објашњавамо важан део кода. У овом упутству постоје два програма, један за Ардуино УНО (Мастер) и други за Ардуино Нано (Славе).
Објашњење кода за Мастер: Ардуино УНО
На главној страни, једноставно узмите аналогни улаз на пину А0 променом потенциометра, а затим СериалВрите те вредности на РС-485 магистралу кроз хардверске серијске портове (0,1) Ардуино УНО.
За започињање серијске комуникације на хардверским серијским пиновима (0,1) користите:
Сериал.бегин (9600);
Да бисте очитали аналогну вредност на пину А0 Ардуино УНО и ускладиштили их у променљивој потвалној употреби:
инт потвал = аналогРеад (пусхвал);
Пре писања потвал вредност на серијски порт, игле ДЕ и Ре РС-485 треба да буде ВИСОКАА који је повезан са пин 8 Ардуино Уно тако направити Пин 8 хигх:
дигиталВрите (енаблеПин, ХИГХ);
Следеће да бисте те вредности ставили у серијски порт повезан са РС-485 модулом, користите следећу изјаву
Сериал.принтлн (потвал);
Објашњење кода за славе: Ардуино НАНО
На подређеној страни прима се целобројна вредност од главног РС-485 који је доступан на серијском прикључку хардвера Ардуино Нано (пинови -0,1). Једноставно прочитајте те вредности и сачувајте их у променљивој. Вредности су у облику (0 -1023). Дакле, претвара се у (0-255) јер се ПВМ техника користи за контролу осветљености ЛЕД диода.
Затим претворите вредност АналогВрите у ЛЕД пин Д10 (то је ПВМ пин). Дакле, у зависности од вредности ПВМ-а, осветљеност ЛЕД-а се мења и такође приказује те вредности на ЛЦД дисплеју 16к2.
Да би РС-485 Славе Ардуино-а примио вредности од Мастер-а, само направите пинове ДЕ & РЕ на РС-485 ЛОВ. Дакле, пин Д8 (енаблеПин) Ардуина НАНО направљен је НИСКО.
дигиталВрите (енаблеПин, ЛОВ);
И читати целобројне податке доступне на серијском порту и чувати их у променљивој употреби
инт пвмвал = Сериал.парсеИнт ();
Следеће претворите вредност из (0-1023 у 0-255) и сачувајте их у променљивој:
инт цонверт = мап (пвмвал, 0,1023,0,255);
Следеће упишите аналогну вредност (ПВМ) на пин Д10 где је ЛЕД анода повезана:
аналогВрите (ледпин, претвори);
Да бисте одштампали те вредности ПВМ-а на 16к2 ЛЦД дисплеју, користите
лцд.сетЦурсор (0,0); лцд.принт ("ПВМ ФРОМ МАСТЕР"); лцд.сетЦурсор (0,1); лцд.принт (претворити);
Контрола осветљености ЛЕД-а помоћу серијске комуникације РС485
Када се ПВМ вредност постави на 0 помоћу потенциометра, ЛЕД се искључује.
А када је вредност ПВМ постављена на 251 помоћу потенциометра: ЛЕД се укључује са пуном осветљеношћу као што је приказано на доњој слици:
Дакле, овако се РС485 може користити за серијску комуникацију у Ардуину.