Hallo, Ich wollte meinen LevelShifter, den ich vor kurzem gelötet habe, jetzt mal ausprobieren. Als Impulsempfänger habe ich dazu einen Arduino, der die länge von HIGH-Impulsen zählt an die HV-Seite des LevelShifter angeschlossen. An der LV-Seite des LevelShifters hängt ein D1 Wemos Mini, der per Knopfdruck 8 HIGH-Impulse zu je 20 ms ausgibt. Immer, wenn ein Impuls erkannt wird, misst der Arduino die Länge des Impulses und gibt die Zeit im seriellen Monitor aus. Der Schaltplan liegt anbei. Hierbei bitte beachten, dass ich einen LevelShifter verwende. Leider habe ich in Fritzing keinen gefunden und musste deshalb den TX/RX-Levelshifter verwenden. Das seltsame ist nun, dass im Seriellen Monitor des Arduino folgendes ausgegeben wird : I received impuls with length in ms : 1 I received impuls with length in ms : 1 I received impuls with length in ms : 1 I received impuls with length in ms : 1 I received impuls with length in ms : 1 I received impuls with length in ms : 1 I received impuls with length in ms : 21 I received impuls with length in ms : 21 I received impuls with length in ms : 20 I received impuls with length in ms : 20 I received impuls with length in ms : 20 I received impuls with length in ms : 21 I received impuls with length in ms : 21 I received impuls with length in ms : 20 I received impuls with length in ms : 1 I received impuls with length in ms : 1 Der Fehler liegt also darin, dass zwar die 8 Impulse zu je ca. 20 ms korrekt erkannt werden, aber zwischendrin dennoch irgendwelche "Geister"-HIGH-Impulse (anscheinend) ebenfalls erkannt werden. Im Anhang befinden sich die simplen Codes von Sender und Empfänger, sowie der Verkabelungsplan und ein Bild des verwendeten LevelShifters. Könnt ihr mir bitte sagen (oder eine Vermutung abgeben), woher diese "Geister-Impulse" mit 1 ms herkommen ?
:
Bearbeitet durch User
Matthias P. schrieb: > Der Schaltplan liegt anbei. Du hast leider vergessen, den Schaltplan anzuhängen. Du hast lediglich eine Aufbauskizze gepostet, auf der die Pinbezeichnungen nicht erkennbar sind. > Könnt ihr mir bitte sagen (oder eine Vermutung abgeben), woher diese > "Geister-Impulse" mit 1 ms herkommen ? Es sind Störimpulse, die du dir da irgendwie einfängst.
:
Bearbeitet durch Moderator
Die beiden "Massen" von 3V3 und 5V sind schon auch irgendwo direkt miteinander verbunden?
Lothar M. schrieb: > Die beiden "Massen" von 3V3 und 5V sind schon auch irgendwo direkt > miteinander verbunden? Ja, wahrscheinlich über die beiden Masseanschlüsse des Levelshifters. Besser wäre es, die auch noch mal direkt zu verbinden und beim ESP noch einen Elko parallel zur Versorgung zu schalten. Aber: der gesamte Schaltplan fehlt!
Matthias P. schrieb: > Könnt ihr mir bitte sagen (oder eine Vermutung abgeben), woher diese > "Geister-Impulse" mit 1 ms herkommen ? Dein Levelshifter kann nur 0-Bits aktiv ausgeben, er kann keine 1-Bits ausgeben. Dafür sind Pullup-Widerstände da. Diesen Typ von Levelshiftern verwendest Du dann UND WIRKLICH NUR DANN(!), wenn Du bidirektionale OpenDrain Signale hast - z.B. I2C. Für unidirektionale Signale oder bidirektionale Signale, bei denen Du ein Richtungssignal hast, gibt es bessere Lösungen. Z.B: https://www.ti.com/lit/ds/symlink/sn74lvc1t45.pdf Der hat auf jeder Seite eine eigene Versorgungsspannung, und er kann den Ausgang aktiv high und aktiv low treiben. Die Datenrichtung wird durch den DIR-Pin (gehört zur Seite A) bestimmt. Diese Bausteine sind in vielen Programmern und Debuggern drin. Gibts auch mit 2, 4 oder 8 Bits. Die LVC-Serie geht von 1.65V bis 5.5V, die AVC-Serie von 0.8V bis 3.6V, und die AXC-Serie von 0.6V bis 3.6V für VCCA und VCCB. LVC kann+-24mA treiben, AVC und AXC 8mA. Also ganz klar: ungeeignetes Bauteil genommen. Selbst schuld. fchk
Frank K. schrieb: >Diesen Typ von Levelshiftern verwendest Du dann UND WIRKLICH NUR DANN(!), wenn Du bidirektionale OpenDrain Signale hast - z.B. I2C. > > Also ganz klar: ungeeignetes Bauteil genommen. Selbst schuld. Falsch! Wo ist das Problem, dass er nur nach Masse ziehen kann und der High-Pegel durch Pullups erzeugt wird? Die sind ja auf der Platine. Ob bi- oder unidirektional ist dem Ding egal!
:
Bearbeitet durch User
Ja, die beiden Masse-Anschlüsse sind auf dem Steckbrett auch verbunden, hab's nur vergessen einzuzeichnen. Das Bauteil funktioniert ja auch, denn die 20ms Impulse werden korrekt erfasst. Woher allerdings die Störimpulse kommen, ist mir noch schleierhaft. Die Pins sind alle angeschossen. Hab's im der Fritzing-Aufbau nur falsch aufgezeichnet. Schaltplan des LevelShifters hab ich nicht. Ich versuche es morgen mit einer separaten Spannungsversorgung für die 3,3v und die 5v Seite, den bisher wurde die LV und HV-Seite von den Mikrocontrollern gespeist
Welche FETs und welche Widerstandgrößen weist dein "selbstgebauter" Levelshifter auf? Wenn es der BSS138 ist, reagiert der auf Störimpulse ab 0.5V Da könnte ein Schmitttrigger helfen. Ersetze auch mal yield im ESP Script durch {}
:
Bearbeitet durch User
Matthias P. schrieb: > Könnt ihr mir bitte sagen (oder eine Vermutung abgeben), woher diese > "Geister-Impulse" mit 1 ms herkommen ? Nimm erstmal ein Oszi und guck nach, ob sie tatsächlich vorhanden sind oder der Phantasie deines uC entspringen. Was passiert, wenn du versuchsweise einen kleinen Kondensator (220p o.ä.) parallel zum GPIO schaltest?
Rainer W. schrieb: > Nimm erstmal ein Oszi und guck nach, ob sie tatsächlich vorhanden sind > oder der Phantasie deines uC entspringen. Das kann ich leider erst in einer Woche machen, wenn ich wieder zuhause bin. Rainer W. schrieb: > Was passiert, wenn du versuchsweise einen kleinen Kondensator (220p > o.ä.) parallel zum GPIO schaltest? So kleine Kondensatoren hab ich glaube ich gar nicht. Hab mir nur so ein Kondensatorsortiment mal gekauft, wo unterschiedliche Größen drin sind, aber so klein glaub ich nicht. Daniel D. schrieb: > Welche FETs und welche Widerstandgrößen weist dein "selbstgebauter" > Levelshifter auf? Naja, der ist ja nicht selbst gebaut, nur selbst die Stiftleisten dran gelötet. Die genaue Bezeichnung kenn ich leider nicht mehr, aber ich habe zwei Bilder hochgeladen. Daniel D. schrieb: > Ersetze auch mal yield im ESP Script durch {} Dann springt doch der Software-Watchdog ein und resetted das Programm immer wieder, wenn er nicht durch yield hingehalten wird, oder ?
Matthias P. schrieb: > Daniel D. schrieb: >> Ersetze auch mal yield im ESP Script durch {} > > Dann springt doch der Software-Watchdog ein und resetted das Programm > immer wieder, wenn er nicht durch yield hingehalten wird, oder ? Ja das ist richtig, ab idR 1.3 Sekunden. Wird auch vermutlich nichts damit zu tun haben. Dann sind wir gespannt auf die Oszi-Messungen.
Noch eine ganz andere Frage... Wenn du mit einem 3.3V MC einem 5V MC Steuerimpulse sendest, wozu brauchst du dazu einen Levelshifter? Erst wenns umgekehrt ist käme der in Frage. Wobei auch hier gilt: die meisten 3.3V MCs sind an den Inputs "5V tolerant". Soweit ich weiß ist das auch beim ESP der Fall. Von diesem Levelshifter bekomme ich allerdings Kopfweh. Viel Ärger ersparst du dir künftig wenn du den hier nimmst: TXS0108E
Warum funktioniert der Levelshifter mit diesen N-CH FETs überhaupt? Ich verstehe die Logik nicht. Vielleicht hat jemand die Ausdauer auch mir das zu erklären. Der Aufbau den ich im Internet überall gleich finde als Bild anbei. Für mich sieht das aus, als wenn die IOs direkt miteinder verbunden sind, außer der Transistor sperrt. Aber dann sind es auf beiden Seiten immer noch pull-up HIGH Signale (falls auf input geschaltet)
Roland M. schrieb: > Warum funktioniert der Levelshifter mit diesen N-CH FETs überhaupt? Ich > verstehe die Logik nicht. Lies und verstehe das: https://cdn-shop.adafruit.com/datasheets/AN10441.pdf fchk
Roland M. schrieb: > Ich verstehe die Logik nicht. Vielleicht hat jemand die Ausdauer auch > mir das zu erklären. Kannst du Englisch lesen? Dann hier: https://www.mikrocontroller.net/attachment/11546/levelshifter.pdf. LG, Sebastian
Frank K. schrieb: > Lies und verstehe das: > https://cdn-shop.adafruit.com/datasheets/AN10441.pdf Gelesen. Verstanden. Funktioniert bei i2c Dann sehe ich allerdings im Schaltungsaufbau vom TO das von mir beschriebene Problem: der ESP sendet mittels digitalWrite(D7, HIGH); 3.3V und beim UNO laufen die ohne Widerstand in den als Input definierten Pin.
Roland M. schrieb: > der ESP sendet mittels > digitalWrite(D7, HIGH); 3.3V Dieser "Pegelwandler" sollte besser "Low-Übertrager" heißen. Denn ein High-Pegel wird durch ihn einfach gar nicht übertragen, der stellt sich allein durch die beidseitigen Pullups ein.
Daniel D. schrieb: > Noch eine ganz andere Frage... Wenn du mit einem 3.3V MC einem 5V MC > Steuerimpulse sendest, wozu brauchst du dazu einen Levelshifter? Noch eine ganz andere Frage... Was an Logikpegeln hast Du nicht verstanden? Der Levelshifter sorgt dafür, die Signale zuverlässig im spezifizierten Bereich und mit einem vernünftigen Störabstand zu halten. Nur, weil es diverse Pfuscher ohne bauen, muß man diese nicht als Vorbild sehen. > Von diesem Levelshifter bekomme ich allerdings Kopfweh. Diese Transistormimik wurde vor ganz vielen Jahren von Philips vorgestellt und funktioniert! > Viel Ärger ersparst du dir künftig wenn du den hier nimmst: > TXS0108E Diese gibt es als fertige Boards günstig vom Ali und ich setze sie selbst ein. Neben I2C spielen die auch am SPI sauber.
Ach Manfred. Schon mal was von TTL Logik gehört? Der TO setzt dieses Board falsch ein. Der Tipp von Daniel ist korrekt. Deine Art hier im Forum dagegen nicht. Würde dann in diesem Anwendungsfall des TO durch Steuerung mittels pinMode(D7, INPUT) und pinMode(D7, OUTPUT) funktionieren Vielleicht sind dann auch die Störungen weg.
Lothar M. schrieb: > Denn ein High-Pegel wird durch ihn einfach gar nicht übertragen, der > stellt sich allein durch die beidseitigen Pullups ein. Jain. Das Prinzip funktioniert an sich schon. Die Idee dahinter ist, das der FET nicht erst bei GND leitet sondern bereits viel früher. Das ganze gibbets auch etwas ausgeklügelter in Form ganzer ICs - LSF0108 - Dort leitet der FET solange die Signalspannung im Bereich der niedrigeren Betriebsspannung ist. Bei 3.3 <> 5 Umsetzung reicht das locker, den 3.3V werden auch von der 5V Seite sicher als High erkannt. Die Lösung mit den Einzel FETs ist da schlechter. Kann aber je nach Schaltung auch stabil funktionieren. Aber mit einem BSS138, dessen Vgth ist viel zu hoch, der wirkt wirklich nur als LOW Übertrager. Mit einem EM6K34 sieht das schon ganz anders aus.
Andreas M. schrieb: > Das Prinzip funktioniert an sich schon. Ja klar: Low-Pegel werden von einem der beiden Busteilnehmer aktiv auf die Signalleitung gelegt, der High-Pegel stellt sich durch die jeweilige Beschaltung ein. Fazit: der Wechsel von H->L ist steilflankig, die L->H Flanke mogelt sich irgendwie hoch... Andreas M. schrieb: > Bei 3.3 <> 5 Umsetzung reicht das locker, den 3.3V werden auch von der > 5V Seite sicher als High erkannt. Da datf man sich dann aber schon fragen: Wozu dann überhaupt Pegelwandler? Fazit: für unidirektionale Signsle nimmt man richtige aktive Pegelwandler passend zur Richtung.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Ja klar: Low-Pegel werden von einem der beiden Busteilnehmer aktiv auf > die Signalleitung gelegt, der High-Pegel stellt sich durch die jeweilige > Beschaltung ein. Nein, eben nicht. Der Mosfet bleibt ja leitfähig. Beim LSF0108 ist es so, das die Gatespannung des Mosfets so geregelt wird, dass dieser erst abschaltet, wenn das Signal den Pegel der niedrigeren Betriebsspannung erreicht hat. D.h. wenn die die 3.3V Seite den Pegel z.B. per Push/Pull auf 3.3V zieht, dann geht der Pegel auf der 5V Seite ebenfalls instantan auf ca 3.3V hoch. Erst für den Bereich 3.3V->5V wirkt nur noch der Pull-Up. Deswegen braucht man beim LSF0108 auf der 3.3V Seite auch gar keinen Pull-Up, es reicht der auf der 5V Seite. Sobald das Signal auf einer Seite des Mosfets die Betriebsspannung nur minimal unterschreitet wird der Mosfet leitfähig. Wenn man einzelne Mosfets verwendet klappt das natürlich nicht so gut, weil man die Gate-Spannung nicht passenden geregelt bekommt, so das der Einschaltvorgang direkt unterhalb der Betriebsspannung einsetzt. (Man kann aber Doppel-Mosfets benutzen, wie z.B. den von mir genannten EM6K34 und den LSF0108 einkanalig nachbauen) Wenn die Vgth des Mosfet aber niedrig genug ist, dann funktioniert es auch ohne eine solche Regelung für die meisten Fälle sehr gut. (Mit dem BSS138 allerdings eher nicht) Lothar M. schrieb: > Fazit: der Wechsel von H->L ist steilflankig, die L->H Flanke mogelt > sich irgendwie hoch... Wie oben beschrieben: Nein. Ich ziehe hier wieder den LSF0108 ran. Bei Signalrichtung 5V -> 3.3V ist auf der 3.3V Seite das Signal exakt so steilflanking wie auf der 5V Seite. In der Richtung 3.3V -> 5V ist das 5V Signal genauso steilflanking bis 3.3V, aber da setzt dann RC Charaktersitik über den Pull-Up ein. Es gibt dazu im Datenblatt ein schönes Bild. Lothar M. schrieb: > Fazit: für unidirektionale Signsle nimmt man richtige aktive > Pegelwandler passend zur Richtung. Das ist klar, der Ansatz mit den Mosfets ist vor allem für bidirektionale Signale sinnvoll/notwendig.
Ich habe den Test jetzt mal umgedreht, also so, dass der ESP8266 die Impulse zählt und der Arduino die Impulse sendet. Da funktioniert das Ganze, d.h. es werden keine "Geister-Impulse" empfangen. Lothar M. schrieb: > Fazit: der Wechsel von H->L ist steilflankig, die L->H Flanke mogelt > sich irgendwie hoch... Das heißt also, dass bei meinem LevelShifter der Wechsel von HIGH auf LOW funktioniert, aber von LOW auf HIGH nur mit quasi Müh und Not, hab ich das so richtig verstanden ? Um es kurz zu sagen : Ich brauche einen Pegelwandler, der 3.3V in 5V "korrekt "konvertieren kann, also ohne "Geister-Impulse" und das bidirektional, sodass alle HIGH und LOW-Pegel, egal ob se von der 5V oder 3.3V-Seite kommen, korrekt von den Mikrocontrollern erkannt werden. Kurzum : So dass das obige Beispiel korrekt funktioniert, egal, ob die 3.3V-Seite oder die 5V-Seite Sender/Empfänger ist. Ist dafür der von euch beschriebene TXS0108E besser geeignet ? Und falls ja, gibts die eventuell auch schon irgendwo mit fertig gelöteten Stiftleisten?
:
Bearbeitet durch User
Matthias P. schrieb: > Ist dafür der von euch beschriebene TXS0108E besser geeignet ? Solange Du nicht verrätst was Du genau für Signale hast, kann Dir das keiner Beantworten. Sowohl dein Pegelwandler(Mosfets)/LSF0108 als auch der TXS0108E sind für Bi-Direktionale Signale gedacht. Wenn du aber unidirektionale Signale hast, also die eine Seite immer "treibt" und die andere nur "empfängt" dann gibt es bessere Lösungen. Es gibt auch Pegelwandler mit Richtungsumschaltung per Pin. Ein paar Ideen dazu gibts hier: https://www.mikrocontroller.net/articles/Pegelwandler Du könntest aber Deinen Pegelwandler verbessern indem Du die Widerstände mal gegen vernünftige Werte tauschst. 10kOhm für die Pull-Ups ist viel zu viel. Ich sehe da höchstens 3,3k, besser 2,2k.
:
Bearbeitet durch User
Was mir noch auffällt: Den gelben Jumperwire/Widerstand hast Du hoffentlich nicht so gesteckt wie auf dem Bild von Dir. Denn dort ist nichts. Der Pin D12 ist eins weiter rechts.
Matthias P. schrieb: > Dann springt doch der Software-Watchdog ein und resetted das Programm > immer wieder, wenn er nicht durch yield hingehalten wird, oder ? In deinem Code steht yield, es sollte aber yield() lauten ... LG, Sebastian
Matthias P. schrieb: > Ist dafür der von euch beschriebene TXS0108E besser geeignet ? Lies mal über push pull versus open drain Schaltungen. Der TXS kann beides. Wird auch als Shield eingesetzt um Hardware zu schützen, weil er alle Impulse korrekt weiterleitet, vgl. https://www.elektor.de/elektor-raspberry-pi-buffer-board > Und falls ja, gibts die eventuell auch schon irgendwo mit fertig > gelöteten Stiftleisten? Stiftleisten anlöten solltest du dir beibringen lassen. In dem Makerspace gibts Leute, die dir helfen.
Andreas M. schrieb: > Du könntest aber Deinen Pegelwandler verbessern indem Du die Widerstände > mal gegen vernünftige Werte tauschst. 10kOhm für die Pull-Ups ist viel > zu viel. Ich sehe da höchstens 3,3k, besser 2,2k. Dazu müsste ich ja die Verbauten SMD-Widerstände rauslöten. Das kann ich sicher nicht. Sebastian W. schrieb: > In deinem Code steht yield, es sollte aber yield() lauten ... Dann hab ich versehentlich eine alte Version des Codes verwendet. Selbstverständlich muss es, wie du sagst, yield() heißen. Andreas M. schrieb: > Solange Du nicht verrätst was Du genau für Signale hast, kann Dir das > keiner Beantworten. Sowohl dein Pegelwandler(Mosfets)/LSF0108 als auch > der TXS0108E sind für Bi-Direktionale Signale gedacht. Wenn du aber > unidirektionale Signale hast, also die eine Seite immer "treibt" und die > andere nur "empfängt" dann gibt es bessere Lösungen. Es gibt auch > Pegelwandler mit Richtungsumschaltung per Pin. Was ich brauche ist ein Pegelwandler, bei dem ein 3,3V und ein 5V Mikrocontroller sich über einen Pin durch Setzen von HIGH und LOW-Pegeln quasi "unterhalten" können, also kein Schalten von Lasten, sondern mehr "Signalebene". Zum Beispiel rechnet der D1 Wemos ein Ergebnis aus und setzt dann einen bestimmten Pin auf HIGH. Der Arduino liest und erkennt diesen HIGH-Pegel und weiß, dass es jetzt weitergeht. Ebenso andersrum, wenn der Arduino ein Ergebnis hat und dann der D1 Wemos das gesetzte HIGH-Signal erkennt, also bidirektional, über eine Leitung und am besten ohne Setzen der Richtung über einen weiteren Pin. Gut wäre auch noch, wenn man das Bauteil auch für SPI-Kommunikation zwischen 3,3V und 5V Mikrocontroller verwenden könnte, das ist allerdings mehr ein Nice-To-Have, kein Must-Have. Ich hoffe, es ist jetzt einigermaßen verständlich, nach was ich suche.
:
Bearbeitet durch User
Matthias P. schrieb: > Ich hoffe, es ist jetzt einigermaßen verständlich, nach was ich suche. Also SPI ist Unidirektional. Dein Protokoll hört sich für mich recht umständlich an, hast du nicht die Möglichkeit zwei getrennte Pins, je einen pro Richtung zu benutzen? Das würde vieles vereinfachen, auch Deine Software. Wenn nicht, dann nimm den TXS0108E. Der hatte insgesamt 8 Kanäle, sollte reichen. Nachtrag: Ich Denke aber, das für Deine Anwendung UART besser wäre, Full-Duplex, zwei Leitungen, beide Unidirektional, und Nutzdaten kannste auch gleich übertragen.
:
Bearbeitet durch User
Matthias P. schrieb: > Zum Beispiel rechnet der D1 Wemos ein Ergebnis aus und setzt dann einen > bestimmten Pin auf HIGH. Der Arduino liest und erkennt diesen HIGH-Pegel > und weiß, dass es jetzt weitergeht. Ein Handshake der alten Schule. Da fehlt aber noch die Quittierung, dass der Arduino den High-Pegel erkannt hat. Deshalb sind für ein richtiges Handhake 2 Leitungen nötig: ein hin und eine zurück, nennen wir sie H und Z. Und dann läuft ein Handshake so ab: 1. A hat was für B und siganlisiert das mit '1' über H 2. B bestätigt Empfang mit '1' über Z 3. A setzt Signalleitung inaktiv und safggt ciao mit '0' über H 4. B bestätiget, dass es die Quittierung von A erkannt hat und sagt tschüss mit '0' über Z Jeder Schritt dazwischen kann beliebig lange dauern, weil jeder Teilnehmer immer auf den anderen wartet. Es kann keine Signaländerung verloren gehen. Im Timingdiagramm sieht es also so aus:
1 | hab was erkannt ciao tschüss |
2 | A -> H -> B ________------------------------------------______________ |
3 | B -> Z -> A ____________________________-----------------------_______ |
Und vor nicht beide ciao und tschüss gesagt haben, darf A auch nicht einfach wieder anfangen.
:
Bearbeitet durch Moderator
Matthias P. schrieb: > Dazu müsste ich ja die Verbauten SMD-Widerstände rauslöten. Das kann ich > sicher nicht. du musst doch eh löten und rauslöten musst du nichts, zu den 10k pullups einfach einen R parallel schau dir doch das Bild an Beitrag "Re: Seltsames Verhalten bei Arbeit mit LevelShifter" Wenn dir dort ein Signal zu schwach hochgeht, einfach noch mal ein R parallel Rechnen kann man das auch was man sich wünscht 10k vorhanden R gewünscht https://www.eggersdorf.com/parallelschaltung/ mit 3,3k kommst du schon mal auf 2,4k
:
Bearbeitet durch User
Joachim B. schrieb: > Wenn dir dort ein Signal zu schwach hochgeht, einfach noch mal ein R > parallel Also wie in meinem neuen Fritzing-Bild dargestellt, oder (bei Verwendung von HV4 und LV4) ? Bei dem Kauf von dem Teil stand dran, dass es sich um einen bidirektionalen Pegelwandler von 3,3V auf 5V und umgekehrt handelt. Da gehe ich, als Anfänger davon aus, dass das Teil seinen Dienst erfüllt und nicht bei 3,3V auf 5V "Geister"-Impulse generiert. Ich weiß schon, wie ein Handshake funktioniert und mit 2 Kanälen ist das kein Problem. Da hätte ich auch, statt das Teil zu kaufen, das Ganze mit einem Transistor (LV auf HV) und einem Spannungsteiler (HV auf LV) realisieren können. Aber ich möchte eine Lösung, die beides kann und nur einen Kanal (bzw. Pin) benötigt. Darum habe ich das obige Teil gekauft (und mir nichts weiter dabei gedacht :-( ). UART ist mir bekannt, aber ich möchte das mit meiner Methode realisieren, ohne UART. Wenn ich mir den TXS0108E zulege, dann kann der aber das, was ich möchte (also ein Kanal für beides), oder ?
:
Bearbeitet durch User
Matthias P. schrieb: > Wenn ich mir den TXS0108E zulege, dann kann der aber das, was ich möchte > (also ein Kanal für beides), oder ? Ja, der kann das.
Matthias P. schrieb: > Ich weiß schon, wie ein Handshake funktioniert und mit 2 Kanälen ist das > kein Problem. Dann dürfte dir auch klar sein, warum das mit nur 1 Kanal, an dem beide Teilnehmer links und rechts "herumzerren" nicht zuverlässig funktionieren wird. > Bei dem Kauf von dem Teil stand dran, dass es sich um einen > bidirektionalen Pegelwandler von 3,3V auf 5V und umgekehrt handelt. Mir ist immer noch nicht klar, ob du einen bidirektionalen Pegelwandler brauchst. Wo du doch auf jeder einzelnen Leitung nur von A(3V) nach B(5V) übertragen willst. Und eben nicht auch auf der selben Leitung Informationen von B nach A zurück schicken willst. Noch ein Wort zum Ende des Tages: ich habe hunderte Geräte entwickelt und zighunderttausende Geräte im Feld und verdiene mein Geld mit Hardwareentwicklung. Und wenn ich unidirektionale Signale habe, dann nehme ich unidirektionale Pegelwandler. Was will ich noch mehr sagen. Man kanns auch anders machen, weil die Arduinobastelecke grad nichts besseres hergibt. Aber bitte, wenn ihr mal älter seid und Steuerungen fürs echte Leben entwickelt, dann nehmt nicht einfach nur deshalb die selben Bauteile, weil das ja "damals" im Arduinosteckkasten schon immer gut funktioniert hat.
:
Bearbeitet durch Moderator
Matthias P. schrieb: > Ich weiß schon, wie ein Handshake funktioniert und mit 2 Kanälen ist das > kein Problem. Da hätte ich auch, statt das Teil zu kaufen, das Ganze mit > einem Transistor (LV auf HV) und einem Spannungsteiler (HV auf LV) > realisieren können. Aber ich möchte eine Lösung, die beides kann und nur > einen Kanal (bzw. Pin) benötigt. Darum habe ich das obige Teil gekauft > (und mir nichts weiter dabei gedacht :-( ). > > UART ist mir bekannt, aber ich möchte das mit meiner Methode > realisieren, ohne UART. Sicher möchtest Du das. Haben wir verstanden. Ist aber dennoch eine ausgesprochen dumme Idee. Aber hey, Du bist ja Anfänger, und als Anfänger darfst Du auch Fehler machen. Ist wie mit einem Kleinkind und der heißen Herdplatte. Die Erkenntnis kommt immer erst nach der ersten Brandblase. fchk
Lothar M. schrieb: > Mir ist immer noch nicht klar, ob du einen bidirektionalen > Pegelwandler brauchst. Wo du doch auf jeder einzelnen Leitung nur von > A(3V) nach B(5V) übertragen willst. Und eben nicht auch auf der selben > Leitung Informationen von B nach A zurück schicken willst. Doch, genau, darum geht es mir. Dass der Sender der Nachricht, z.B. A, vom Empfänger der Nachricht, z.B. B das Feedback bekommt, ob z.B. die Nachricht korrekt empfangen wurde. Also A soll nach B und B soll nach A übertragen können, auf derselben Leitung. Natürlich nicht gleichzeitig, sondern schön der Reihe nach. Um bei meinem Beispiel mit den 8 Impulsen zu je 20 ms zu bleiben, könnte in diesem Fall der Arduino, nach dem Senden der Impulse seinen Pin auf Eingang umschalten und auf ein HIGH-Signal vom D1 Wemos warten. Also müsste für soetwas der TXS0108E passen, oder ? Joachim B. schrieb: > Wenn dir dort ein Signal zu schwach hochgeht, einfach noch mal ein R > parallel Könntet ihr mir noch sagen, ob ich das mit dem parallelen Schaltung zwei weiterer Widerstände wie in "Korrektur" dargestellt, richtig verstanden habe ?
:
Bearbeitet durch User
Matthias P. schrieb: > Könntet ihr mir noch sagen, ob ich das mit dem parallelen Schaltung zwei > weiterer Widerstände wie in "Korrektur" dargestellt, richtig verstanden > habe ? Ja. so sollte es gehen.
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.