Ide om half-duplex uart med flera enheter

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
zzarr
Inlägg: 22
Blev medlem: 13 juni 2016, 12:30:43

Ide om half-duplex uart med flera enheter

Inlägg av zzarr »

Hej!

Jag undrar om det skulle fungera att koppla på följande sätt:

Varje Tx på ett gäng enheter skulle kopplas via en diod som släpper igenom ström till en gemensam ledare.

Varje Rx skulle kopplas till en diod som släpper in ström från den gemensamma ledaren.

Anledningen är att som jag tänker har jag bara en ledare att kommunicera med.

Jag ska göra en mer utförlig förklaring senare.

MVH
/ Rasmus
Senast redigerad av zzarr 27 november 2016, 13:36:44, redigerad totalt 1 gång.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1355
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Ide om half-baud uart med flera enheter

Inlägg av baron3d »

Det behöver vara en diod på TX samt ett gemensamt motstånd mot +5V.
Katoden mot TX, som bör vara av schottky typ.
Vissa processorer kan konfigureras till "open drain" och då behövs ingen diod.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Ide om half-baud uart med flera enheter

Inlägg av lillahuset »

Jag antar att du menar "half duplex". Om du gör det, var snäll och fixa rubriken.
Användarvisningsbild
adent
Inlägg: 4266
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Ide om half-baud uart med flera enheter

Inlägg av adent »

Jag hade nog kört en transistor på TX för att sänka typ 12V pull up:ad linje (lite mot i2c-hållet). Samt nån form av spänningsdelning/transistor in på RX.
Beroende på hur långa sträckor du ska köra.

Ett alternativ är ju annars att göra ett ringnätverk. tx på en enhet till rx på nästa, tx på den till rx på nästa ... tillbaka till rx på första. Fast
det är ju beroende av att alla noder är igång om man inte hittar på nån smart elektronik vid varje nod som kopplar ihop tx/rx om noden är av.

MVH: Mikael
zzarr
Inlägg: 22
Blev medlem: 13 juni 2016, 12:30:43

Re: Ide om half-baud uart med flera enheter

Inlägg av zzarr »

Hej Adent, lillahuset och baron3d!

Adent:
Tyvärr försvinner iden med ringnätverk p.g.a. fysiska begränsningar.

lillahuset:
Så klart jag menar half-duplex, inte baud... jag var lite trött när jag skrev...

baron3d:
Tanken är att ström mata MCU'erna från varsin 5V källa (utgången på en stepdown).
Kan jag ha ett pullup motstånd för varje MCU?
Tyvärr ser det inte ut som jag kan konfigurera Tx'en till open drain.
(Det verkar endast gå för I2C bussen. Om jag inte läst databladet fel.)



Jag har sedan jag skrev inlägget kommit fram till att jag ska använda Atmega328P-PU.
Den går att få tag i med boot-loader och är förhållandevis billig.
Jag har beställt 10 st för laddade med Arduino UNO R3 boot-loaders.

MVH
/ Rasmus
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 15658
Blev medlem: 16 april 2006, 17:04:10

Re: Ide om half-duplex uart med flera enheter

Inlägg av mrfrenzy »

Visst går det att kommunicera många enheter med bara en ledare, kolla till exempel specen för 1wire och de implementationer som finns för Arduino så slipper du uppfinna hjulet på nytt.
zzarr
Inlägg: 22
Blev medlem: 13 juni 2016, 12:30:43

Re: Ide om half-duplex uart med flera enheter

Inlägg av zzarr »

Hej mrfrenzy!

Kan man ha fler master enheter i 1wire, jag har bara sett det implementerats för sensorer.

MVH
/ Rasmus
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 15658
Blev medlem: 16 april 2006, 17:04:10

Re: Ide om half-duplex uart med flera enheter

Inlägg av mrfrenzy »

En av dina arduino blir master, övriga blir slaves med tex denna kod:
https://github.com/neuoy/OneWireArduinoSlave
Nerre
Inlägg: 27300
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Ide om half-duplex uart med flera enheter

Inlägg av Nerre »

Om du ska ha flera Master så blir det genast krångligare, då måste du t.ex. fundera över hur du ska lösa det som flera masters vill sända samtidigt.

Det du vill bygga är ju en slags nätverk, och där brukar man väl i huvudsak se tre lösningar:
1. Master-slave, en master och resten av enheterna slavar. Mastern bestämmer vilken av slavarna som ska få prata. (Det behöver inte innebära att slavarna pollas kontinuerligt, det finns varianter där Mastern har "luckor" där slavar som vill prata "hojtar till", men där riskerar man då kollisioner.)
2. Token-nätverk (token ring är det klassiska). Enheterna har en "stafettpinne" och bara den enhet som har den får sända, den skickar sen vidare till nästa enhet när den är klar. Krånglig lösning som får problem om en enhet faller bort (om den hade "stafettpinnen" så kommer de andra aldrig få ordet).
3. Kollisionsdetektering (som ethernet med sin CSMA/CD). Alla kan sända när som helst, om två enheter råkar prata i munnen på varandra så måste de detektera det och sen väntar de var och en en slumpmässig tid innan de försöker igen. Blir stora problem om det är hög trafik på nätverket. (Dagens ethernet löser det mycket med switchar, så alla inte hör alla och det därmed blir färre kollisioner.)
zzarr
Inlägg: 22
Blev medlem: 13 juni 2016, 12:30:43

Re: Ide om half-duplex uart med flera enheter

Inlägg av zzarr »

Hej mrfrenzy och Nerre!

Helt klart intressanta lösningar.

Jag hade tänkt att den som vill prata får "räcka upp handen" genom att lägga 5V på linan i en tidsslott som motsvarar kanske 20bitar med normal normal baud och de andra som ska sända måste ha dragit upp linan innan den får ordet så att säga.

Anledningen till den lösningen är att tanken är att alla enheter ska kunna kopplas i och ur när som helst.

Vad det gäller kollisioner kan man likna systemet med en gammal ethernet hubb, dock kommer det inte vara jättemånga enheter i ett nät och sedan kommer jag avgränsa nätet mot andra när (se det som ett gäng hubbar kopplade till en switch).

MVH
/ Rasmus
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 15658
Blev medlem: 16 april 2006, 17:04:10

Re: Ide om half-duplex uart med flera enheter

Inlägg av mrfrenzy »

Här finns en sida som ganska pedagogiskt förklarar hur protokollet fungerar: http://www.arunet.co.uk/tkboyd/e1dov.htm

En gång per minut, eller en gång var tionde sekund eller hur ofta du nu vill så kan din master köra en search.
Då kollar den vilka enheter som finns på bussen och sparar det i minnet. Om en enhet tillkommit läggs den bara till i listan. Om en försvunnit kan du ju välja att spara det i en logg, generera ett larm eller vad som nu ska hända.

Sedan kör du en kontinuerlig loop:
Master frågar enhet 1 om den vill nåt
--vänta några mikrosekunder, inget svar
Master frågar enhet 2 om den vill nåt
--vänta några mikrosekunder, inget svar
Master frågar enhet 3 om den vill nåt
Börja om från början tills en enhet svarar.
zzarr
Inlägg: 22
Blev medlem: 13 juni 2016, 12:30:43

Re: Ide om half-duplex uart med flera enheter

Inlägg av zzarr »

Hej igen mrfrenzy!

Tackar, jag ska kika på det.

MVH
/ Rasmus
Skriv svar