Damba with RS485 module and long-distance DS18B20 sensors

Customer:

After reading about RS485, I’m considering combining it with Damba. I compiled the transmitter example with Damba configuration and the IDE reported no errors, unlike with I2C LCD. Does this mean the module is compatible with Damba?

Can I connect more than two RS485 modules through terminals A and B? I could set one as master and others as slaves. Since they’re all connected in parallel, I’d need to assign IDs to the slaves so the master knows which one to address.

My main concern is the wire length for DS18B20 sensors. I’ve read on various forums that anything over 1m usually causes problems, with some people reporting 3-5m working. I don’t see anything in the datasheet about maximum wire length, but I need 15-20m, so direct connection seems impractical. With Damba and RS485, I’ve solved this. I’ve already connected DS18B20 and Damba together and it works without errors. I’m building a notebook cooler and once everything is wrapped up I plan to share it on the forum.

Original message (Croatian)

[name removed] bok!
Nakon članka o RS485 razmišljam o kombinaciji Dambe i tog modula. Napravio sam test na način da sam pod Damba konfiguracijom napravio compile transmiter primjera i IDE okolina mi nije prijavila nikakvu grešku (kao npr. kod I2C LCD-a). Po tome bi zaključio da taj modul mogu koristiti s Dambom. Jesam li u pravu?
I još jedno pitanje. Kako komunikacija ide preko klema A i B, mogu li spojiti više od dva RS485 modula? Prema KKM tekstu rekao bi da mogu ali nisam siguran. Jedan kao master a ostali kao slave. Naravno, u toj situaciji bi morao nekako numerirati slave jer su svi spojeni paralelno pa da se zna na koga se poziv mastera odnosi.
Pravi razlog ove teme je potencijalni problem s duljinom žice DS18B20 senzora. Vidim po raznim forumima da sve preko 1m uglavnom radi probleme, a ljudi pričaju o cca 3-5m. U datasheetu nisam ništa našao o duljini žice, a meni treba 15-20m, pa pretpostavljam da direktno spajanje senzora pada u vodu. S Dambom i RS485 sam riješio problem. Inače sam DS18B20 i Dambu povezao i to radi bez greške. Napravio sam hlađenje notebooka pa kad sve zamotam u celofan mogu objaviti na forumu.

P.S. Jesi li kod zamišljanja foruma mislio da i ovakva pitanja idu preko njega ili putem maila?

Originally submitted via email support on 30 June 2018. Migrated to the forum for community visibility.

Soldered Support:

If it compiles without errors in the IDE, the library is compatible with Damba and you’ll be able to upload it, with a 99% chance it will work.

RS485 can work with 20m DS18B20 wire runs, but you’ll need smarter code because it won’t always work on the first try. We did a similar project where we had many DS18B20 sensors in a flower nursery with very long wires going to a central box. We added temperature verification in the code so the sensor would retry until it succeeded. Usually it worked on the first try, sometimes the second or third. Always add a maximum retry limit so your code doesn’t get stuck in an infinite loop. Experiment if you find it interesting.

For RS485 with multiple slaves: yes, it will work. You need to handle this well in software—define the start and end of packets clearly (with a special character, for example), and put an ID or identification variable at the beginning of the packet so the slave can immediately stop receiving if the data isn’t meant for it but for another slave.

Technical content belongs on the forum rather than hidden in emails. It can help others with similar projects or questions.

Original message (Croatian)

Hej [name removed]!

Super je čuti da si još uvijek tu s nama i elektronikom.. jako puno ljudi se ohladi nakon nekoliko mjeseci intezivnog rada :slight_smile:
za Dambu, tako je, ako ga compile-a u IDE-u, znači da je library kompatibilan s Dambom i da ćeš ga moći uploadati, a onda i 99% da će to raditi.

20m na DS18B20 će čak i raditi, ali trebat ćeš malo pametniji kod jer neće raditi uvijek :slight_smile: mi smo radili sličan projekt prilično davno gdje smo imali mnoštvo DS18B20 senzora u nekakvom rasadniku cvijeća i sve žice su bile vrlo dugačke i išle do središnje kutije. U kodu smo napravili verifikaciju temperature, tako a je senzor pokušavao ponovno dok nije uspio dohvatiti. Obično je radilo iz prve, ponekad iz druge ili treće. Svakako moraš dodati i neki maksimalni broj pokušaja da ti kod ne bi ostao vječno u nekakvom while koji ovo radi. Poigraj se ako ti je zanimljivo :slight_smile:

Za RS485 i više slave-ova: naravno, to će funkcionirati. Ovdje opet softwareski to moraš dobro napraviti, recimo lijepo i točno definirati početak i kraj paketa (npr. nekakvim posebnim znakom), a odmah na početak paketa staviš ID ili nekakvu drugu identifikacijsku varijablu, tako da slave odmah može prestati s primanjem podataka ako nisu namjenjeni njemu, nego nekom drugom slave-u.

– sa mog gledišta, sve što može pomoći nekome drugome(recimo da u njegovom projektu ili njegovoj znatiželji), bolje je da bude na forumu. Ovako držimo potencijano interesantne stvari skrivene :slight_smile:

Customer:

I haven’t cooled down on electronics at all. I think my enthusiasm is just starting to heat up. Error correction algorithms have always been interesting, but for this specific case I’d prioritize reliability. That said, I’m very drawn to communication algorithms too, so this combination of Damba and RS485 seems like the best choice.

I’m definitely for sharing information with others. My only concern is that sporadic questions could get lost in a traditional discussion. I plan to publish each project in the “Show your project” section anyway, so all the problems and solutions would be in one place where others could see exactly what I struggled with and why the final solution is what it is.

I have another RS485 question. The Fritzing diagram in the article shows two Croduinos with their GND connected. The text mentions only two wires for communication (differential transmission), but this diagram shows a third wire—the GND. This isn’t immediately obvious, but if they’re 50m apart and each powered by its own battery rather than from the same power supply, I assume this detail isn’t negligible. My question: are the GNDs connected so power is supplied to only one Croduino, or would this connection be necessary even if each has its own power supply?

Original message (Croatian)

[name removed] bok!
A ne, nisam se ohladio. Mislim da zagrijavanje tek počinje, ko u Rusiji. J Error correction algoritmi su uvijek bili zanimljivi ali u ovom mom konkretnom slučaju prednost bi dao pouzdanosti. S druge strane, jako me privlače i algoritmi vezani uz komunikaciju, pa onda ova kombinacija s Dambom i RS485 mi se čini best buy.
Što se tiče podjele informacije s ostalima, naravno da sam za, jedino se bojim kako meni pitanja sporadično padaju na pamet da bi se u klasičnoj raspravi izgubila nit. Namjera mi je ionako svaki taj projektić objaviti u temi „Pokaži svoj projekt“ ali tada bi svi problemi i njihova rješenja bila koncentrirana na jednom mjestu pa bi netko drugi točno mogao vidjeti s čim sam se sve borio i zašto je rješenje na kraju baš takvo.
Eto, u međuvremenu mi se stvorilo još jedno pitanje vezano uz RS485. Fritzing u KKM-u prikazuje dva Croduina kako su im je GND povezan. U tekstu se spominje samo dvije žice za komunikaciju (diferencijalni prijenos), ali po ovome treba i treća, taj GND. Ovako prikazano to ne pada odmah u oči, ali ako su udaljeni npr. 50m i napajaju se iz baterije (svaki svoje), a ne istog razvodnog ormara, onda taj detalj pretpostavljam nije zanemariv. Pitanje glasi: jesu li im GND povezani zato da se napajanje dovede samo na jedan Croduino, ili bi ta veza morala biti i u slučaju da svaki ima svoje napajanje?

Soldered Support:

RS485 works by comparing the voltage difference between differential pairs. However, it still needs a ground reference so the voltage doesn’t become too large. One side receives the voltage of the other side and compares it with its own ground, whose potential might be much lower, resulting in a much larger voltage difference. See http://store.chipkin.com/articles/rs485-rs485-cables-why-you-need-3-wires-for-2-two-wire-rs485 for more details.

Original message (Croatian)

To je super, premalo je nas elektroničara i firmwareaša u HR, a previše praviš softwareaša :))

Po mom mišljenju, nema veze, pa makar će neki dijelić iz našeg razgovora biti nekome koristan. Ali nije frka, ako se ovako bolje osjećaš, nije nikakav problem!
postaviti u “Pokaži svoj projekt” je naravno ultimativno i najbolje rješenje :slight_smile:

Super pitanje! A evo i dobrog odgovora: http://store.chipkin.com/articles/rs485-rs485-cables-why-you-need-3-wires-for-2-two-wire-rs485
ukratko: RS485 radi tako da gleda razliku napona između diferencijalnih parova. Ali, ipak mu treba ground da se ne bi dogodio preveliki napon(jer jedna strana dobiva napona druge strane te uspoređuje sa svojim groundom, čiji potencijal može biti recimo puno manji i eto ti puno većeg napona!).