Hallo zusammen, ich möchte zwei ATMega328 über ein ca. 2 m langes Kabel miteinander koppeln (ein Ausgang des einen soll an einen Eingang des anderen angeschlossen werden). Es handelt sich lediglich um ein Schaltsignal, keine schnellen Signale oder gar PWM. Den Eingang habe ich über 10k gegen +5V gezogen. Brauche ich für den Ausgang einen Bustreiber oder eine Transistor-Schaltstufe oder geht das auch so? Kabellänge wie geschrieben ca. 2 m. Was würdet Ihr empfehlen? Viele Grüße repman
Bei langsamen Signalen geht es auch so. Kleiner Tiefpass / Keramik-Kondensator (10-100nF) zwischen Masse und Signal und Leitung verdrillen hilft gegen Induktionen von außen. Ein fehlererkennendes / korrigierendes Übertragungsprotokoll hilft bei Bedarf zusätzlich.
:
Bearbeitet durch User
Was soll denn da übertragen werden ? Der ATmega hat ja HW-Uarts , die schreien geradezu nach anwendung. Beim Pullup würde nur von 10K auf 1K gehen ... Ich selbst benutze soetwas gerade mit einen Uart am 2313 und als softuart am Attiny85. Das kabel selbst stellt auch einen kondensator da. Ist dann der pullup zu hoch, dann wird die flanke von dem impuls zu sehr verschliffen. Bei 9.6K könnten 10-100nF als abblockkondenstator etwas hoch sein. Wenn die umgebung sauber ist , reicht der pullup. Wenn die umgebung mit viel störungen behaftet ist, dann benötigst du einen treiber, der aus dem assymetrischen signal, ein Symetrisches macht ( siehe RS422). Dann kannst du mit einem verdrillten kabel die signale übertragen und die einstrueungen heben sich auf. in etwas nobler sieht es so aus : http://www.intersil.com/en/products/interface/serial-interface/rs-485-rs-422/ISL8489E.html die gibt es aber auch ,,einseitig" und günstiger. Du kannst aber auch anstelle eines Pullups , einen widerstand vom eingang gegen die masse legen und den Treiber des Uarts als stromschnittstelle betreiben. Da der Atmel bis zu 20mA treieben kann und einen gegentaktausgang hat, ist das etwas robuster, als die übertragung des spannungspegels.
:
Bearbeitet durch User
Hallo Michael, danke für die schnelle Antwort. Michael F. schrieb: > Was soll denn da übertragen werden ? Der ATmega hat ja HW-Uarts , die > schreien geradezu nach anwendung. Viel zu kompliziert gedacht: Ich will einfach nur dem einen Controller (dem Slave) von seinem Master sagen, dass er in 10 sec. abgeschaltet wird und er sich bitte darauf vorbereiten soll. Wenn der Slave also an seinem Eingang ein LOW-Signal bekommt, weiss er, dass bald der Saft abgedreht wird und er z. B. einen kleinen Motor langsam stoppen oder eine LED-Leiste runterdimmen soll. Es geht also nicht direkt um eine Signalübertragung. Die Kopplung ist eher wie ein Schalter. Viele Grüße repman
achso ... dann würde ich den vorgeschlagenen kondensator nehmen und den pullup auf 1K reduzieren.
Michael F. schrieb: > achso ... > > dann würde ich den vorgeschlagenen kondensator nehmen und den pullup auf > 1K reduzieren. Also dann so? Viele Grüße repman
ja das sollte reichen. Nimmst du ein pegelinterrupt ? Wenn du verhindern willst, das ein glitch stört, würde ich den port zweimal abfragen. Ich lasse an meinem eine 1ms impuls ausgeben. Wenn dann der ,,slave" feststellt, daß er angesprochen wird, wartet er nocheinmal 0,5 ms und schaut nach, ob der port immernoch gesetzt ist.
Es mag konrintiert klingen, aber die Randbedingungen sind (mir) noch nicht klar. Bei 2m stellen sich so fragen wie - gemeinsame Versorgung (Vcc)? - zweipolige Verbindung (Signal + Masse)? - Gefahr von Ausgleichstströmen (welches "Masse-"Potential? Ich persönlich würde die Widerstände so wählen, dass etwa 50% des maximalen IO-Stroms fließen (wenn stromsparen kein Thema ist) dafür aber Serienwiderstände an Ein- und Ausgang in Richtung Kabel setzen. Also z.B. bei Pull-Up 10k ein Serienwiderstand von 1k im Sender und Empfänger. (Zwecks besserem Pegel den Pull-Up an den Ausgang, nicht an den µC-Pin.) Wenn Kabelbruch/Kurzschluss detektierbar sein sollen, dann ist entweder ein ADC-Eingang oder eine mini-Transistorschaltung mit zweitem Eingangssignal notwendig (oder halt ein togglendes Signal).
Servus, 1k Pullup halte ich für Stromverschwendung, 5 oder 10 k, zusammen mit dem Kondi, sind schon ok. Empfehlen würde ich aber Serienwiderstände: 100-200 Ohm am Ausgang, und auch einen Serienwiderstand vor dem Eingang des empfangenden µC. Das schützt die Ports beim Anstecken und verhindert Probleme mit Überschwingern an den Flanken.
auch nicht schlecht :-) Aber dann kann man auch gleich ein Optisches toslink nehmen. Dann hast die wirklich alles erschlagen. Sender ToslinkLED strecke ( billiges ) optisches kabel empfänge Toslinkempfänger. Bei 10K pullup könnte das kabel schon als antenne wirken. Das habe ich selbst erlebt. Und bei der kurzen schaltdauer, stören die 1K auch nicht. Dann würde ich aber die 1K gegen masse legen und 270 Ohm am ausgang ( dann würden etwas unter 20mA fließen, wenn kurzschluß. @ Stefan sind die schaltung fest miteinander verbunden ? Dann würde ich nur noch den zusätlichen 270 ohm an ausgang anfügen ( zur sicherheit ).
Danke allen, die sich an der Diskussion beteiligen! Ich habe das mal zusammengefasst (s.o.). VCC und Masse werden natürlich ebenfalls verbunden. VCC des Slave wird über einen Mosfet geschaltet, so dass der Master dem Slave den Saft abdrehen kann. Da der Slave aber vorher noch einiges erledigen muss, kann ich nicht einfach den Strom abstellen, sondern muss ihm (über ein PortPin) sagen, dass gleich eine Stromsperre kommt. Dann kann er - bildlich gesprochen - noch schnell den Kopf von Shampoo befreien kann, bevor das Wasser abgestellt wird. .-) VG repman
Sind die Schaltungen beide direkt oder indirekt geerdet? Wenn ja, dann hast du eventuell Probleme durch eine Masseschleife. Magnetfelder induzieren einen Strom in der GND Leitung, so dass die GND Pegel links und rechts nicht gleich sind. Bei mehr als 0,6V Differenz kommt es dann zu Fehlfunktionen. Wenn eine Erdung vorhanden ist, dann bitte nur an einem Ende das Kabels.
Stefan U. schrieb: > Sind die Schaltungen beide direkt oder indirekt geerdet? Beide Schaltungen sind nicht geerdet. Sitzen in einem Plastikgehäuse ohne Metallkontakt nach aussen. VG repman
ja dann reicht es, was du jetzt eingezeichnet hast :-) Du kannst den II.prozessor auch einfach in einen deepsleep versetzen, dann brauchst du ihn nicht ausmachen ... Wenn du den pegel nach unten laufen lässt, bereitet er sich auf das schlafen vor, indem alles erledigt wird und er geht dann in den tiefschlaf. Ziehst du den pegel wider nach oben, wacht er erneut auf.
Optokoppler. Dann sind Masseschleifen und Versorgung egal. Gruß Jobst
R2 und R3 heben den Low-Pegel an Pin32-Slave ja an (hier etwa 1V). Den Effekt von R3 kannst Du eliminieren, wenn Du ihn zwischen Pin32 und R1/c5 schaltest.
Stefan K. schrieb: > Brauche ich für den Ausgang einen Bustreiber oder eine > Transistor-Schaltstufe oder geht das auch so? Das kommt drauf an, wie verstört deine Umgebung ist. Es ist ein Unterschied, ob daneben ein meterlanger Funken gezogen wird oder ob du in einem Faraday'schen Käfig sitzt. https://youtu.be/k8lXOnsvD80?t=49
100nF direkt an einen Port sind auch nicht so die "feine Art". Ist eine recht hohe kapazitive Last. Würde da eher auf 10nF reduzieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.