Go Down

Topic: EasyTransfer icm RS485 (Read 435 times) previous topic - next topic

rainman

Hallo,

Ik ben bezig met een project voor me eigen waar een stukje communicatie in zit tussen verschillende Arduino's.

                                       
                                       
                                        |
Controller  <=BT/RS232=> Master  <=RS232=> Slave 1, Slave 2.

In de controler zit een Mega, de master is een mega, slave 1 en twee zijn nano's


Tussen de controller en master zit een draadloze communicatie dmv HC-05 modules. Dit werkt.

Verder gebruikt ik de EasyTransfer Library om de data te versturen. Dit is "realtime" data voor de besturing. De actuatoren halen uit deze data wat ze moeten doen en de sensoren zetten hun informatie in deze data.

De master bestuurd in wezen alles en de slaves voeren alles uit.

Ik heb het voorbeeld van de servo en potmeter gebruikt en dit werkt.




Laats vertelde iemand mij dat ik beter rs485 kan gebruiken dan RS232.

Ik heb wat gegoogeld en kwam op de MAX485 TTL to RS485 module.

https://opencircuit.nl/Product/10439/MAX485-TTL-to-RS485-module


Verder heb ik een voorbeeld gevonden om dit te programen.

 https://arduino-info.wikispaces.com/SoftwareSerialRS485Example

Deze is wel half-duplex. Ik  weet niet of full duplex beter/sneller is in mijn geval.

Hoe krijg is dit samengevoegd. Ik krijg het niet werkend.

Of heeft iemand een beter idee, dat mag ook

Met vriendelijke groet,

Edwin




MAS3

#1
Mar 12, 2018, 01:08 am Last Edit: Mar 12, 2018, 01:10 am by MAS3
Hoi rainman / Edwin, welkom.

Je vraag is me niet geheel duidelijk.
Want die modules de modules die je gevonden hebt, zijn er voor gemaakt om rs232 op ttl nivo (en dat is wat je met de Arduino doet) om te zetten naar een rs485 signaal.
De data die er heen en weer gaan, kun je gewoon via pin nul en 1 van de nano, en 1 van de 3 serials van de MEGA versturen.
Maar je hebt wel een extra stuursignaal nodig.
Eigenlijk zijn dat er 2, maar vaak word dat met 1 signaal afgehandeld.
Dat signaal word gebruikt om de zender of de ontvanger in te schakelen.
Maar de ontwerpers van deze chipjes (transceivers worden ze wel genoemd), hebben daar wel een beetje over meegedacht.
De signalen zijn DE en !RE (of /RE).
DE staat voor Driver output Enable.
De schrijfwijze geeft aan dat deze pin actief is als het signaal HIGH is.
!RE staat voor Receiver output Enable.
Deze schrijfwijze geeft aan dat deze pin actief is als het signaal LOW is.
De schrijfwijzes die dit aangeven, zijn een uitroepteken of een forward slash voor de naam of een streep over de naam.
Als je dat voorleest, dan noem je het NOT functie.
Dus NOT RE.

Wanneer je de keuze wil hebben om zowel niet te zenden als niet te ontvangen, dan kun je dus 2 signalen gebruiken om je transciever (samentrekking van de woorden transmitter en receiver) te deactiveren.
Wanneer je altijd zendt of ontvangt, dan kun je dit met 1 enkel signaal aanturen en das dus bewust zo gemaakt.

Dit is het enige waar je rekening mee hoeft te houden aan de Arduino / code kant.
Een extra pin die aangeeft of je wil zenden of ontvangen.

Maar je moet aan de kant van de verbinding ook wel even opletten.
Want als je meer dan 2 objecten wil verbinden, en zo lees ik je vraag wel, dan moet je wel zorgen dat de balans behouden blijft.
Hier kun je best veel over terug vinden.

Je komt al een heel eind als je in de shop van gebruiker en forumlid TerryKing gaat kijken (klik voor commerciƫle link), kijk naar het plaatje onderaan.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Go Up