Hallo Schwarmwissen, ich bastle gerade an einem Messgerät für unseren Mähdrescher. Dieses kommuniziert per Funk mit einem Terminal in der Garage und liefert verschiedene Messwerte (Temperatur, Füllstand, etc.) bzw. empfängt auch Statusinformationen, wieviel Kapazität noch im Silo frei ist. An dem Modul, was am Mähdrescher montiert ist, soll man aber verschiedene Parameter einstellen können. Dazu gibt es einen kleinen avr controller mit LCD Display, über das sich z.B. baudrate und sendeleistung konfigurieren lassen. Es arbeiten also insgesamt zwei controller und ein Funkmodul im Mähdrescher. Controller A sammelt die Informationen von der Maschine und sendet sie über das Funkmodul raus. Controller B sendet bei Bedarf Konfigurationseinstellungen an das Funkmodul. Das Funkmodul hat aber nur einen UART. Mein Ziel ist es, dass Controller B durch setzen eines Pins die Kommunikation zwischen Controller A und Funkmodul unterbricht und gleichzeitig eine Verbindung vom UART des Controller B mit dem Funkmodul hergestellt wird. Also im Grunde sowas wie ein Relais was zwischen den RX/TX Leitungen hin und herschaltet. Kann man sowas mit einem USB Switch machen? Dieser Chip von TI hat im Grunde ja genau das Verhalten, was ich suche... http://www.ti.com/product/ts3usb221 Oder geht es einfacher? Freu mich auf eure ideen!
Andi R. schrieb: > Oder geht es einfacher? Viel einfacher. Wenn du da mit UART Pegel aus dem MC (0-3,3V oder 0-5V) umgehst, reichen im einfachsten Fall zwei Dioden als Wired-OR, die gegen einen Pullup arbeiten (Ausgang ist low, wenn mindestens ein Eingang low ist). Du kannst auch ein einfaches 'echtes' AND Gatter verwenden. (Ausgang nur high, wenn beide Eingänge high sind). Den RX vom Empfänger leitest du einfach auf beide MC. Wenn die nichts voneinander wissen, ist es aber sinnvoll, per Portpin des Masters dem Slave zu sagen, wann er darf bzw. die Schnauze halten muss.
> Oder geht es einfacher?
Ja.
1) Installiere einfach ein 2. Funkmodul, oder
2) Controller B sendet Daten an Controller A (über UART, SPI, I2C, such
dir was aus) und Controller A funkt an die Zentrale.
Andi R. schrieb: > Das Funkmodul hat aber nur einen UART. Welche UART-Pegel hast du da? TTL oder "richtige" V24 Pegel mit +-5V (aufwärts)? > Kann man sowas mit einem USB Switch machen? RS232 != USB Ergebnis: nein. > Also im Grunde sowas wie ein Relais was zwischen den RX/TX Leitungen hin > und herschaltet. Nimm doch so ein Relais... Und vor Allem: zeiche dir und uns einen Schaltplan, dann weiß man wovon und worüber man diskutiert... > ich bastle gerade an einem Messgerät für unseren Mähdrescher. > Es arbeiten also insgesamt zwei controller und ein Funkmodul im > Mähdrescher. Und warum brauchst du da jetzt 2 Controller, die die mit dem Funkmodul kommunizieren? Könnte das nicht 1 Einziger machen?
Hallo und vielen Dank schonmal für die Anregungen. @Matthias: Das klingt vielversprechend. Kannst Du mal in den anliegenden Schaltplan schauen? Ist das ungefähr das, was Du meintest? Wenn der KONFIG Pin des Steuercontrollers auf LOW ist, kommunizieren Sensorboard der Maschine und Funkmodul miteinander. Wenn der KONFIG Pin auf HIGH gelegt wird, kann der Konfig-Controller mit dem Funkmodul reden. Etwaige Antworten des Funkmoduls auf die Konfigbefehle gehen dabei nicht zurück zum Sensormodul... Würde das funktionieren? Bei dem UART handelt es sich jeweils um 3.3V Pegel. @Eric: Ein zweites Funkmodul erscheint mir hier nicht zweckdienlich. Leider kann ich auch die beiden Controller nicht miteinader sprechen lassen, weil es sich bei dem Sensormodul um ein Zubehörteil der Maschine handelt. @Lothar: Ein mechanisches Relais möchte ich nicht verwenden, da ich schlechte Erfahrung mit Datenleitungen über Relaiskontakte gemacht habe. Bzgl. des USB Umschalters, so handelt es sich nach meinem Verständnis doch um einen simplen Schalter, der halt nur für hohe Frequenzen (z.B. USB) ausgelegt ist.
Ich glaube nicht, dass das geht. Wenn dein konfig port auf high geht, kommen bei dem sensor doch lauter einsen an...
Andi R. schrieb: > Leider kann ich auch die beiden Controller nicht miteinader sprechen > lassen, weil es sich bei dem Sensormodul um ein Zubehörteil der Maschine > handelt. Dann solltest du das alles schnell vergessen und dein Modul völlig unabhängig von der bisher vorhandenen Hardware über ein eigenes Funkmodul ankoppeln. Du kannst ja gar nicht rausfinden, ob das 'Zubehörteil' gerade was senden will und jeder MC sendet, wann er will. Dein Modul müsste also die Telegramme des 'Zubehörteils' mitschneiden und selbst verarbeiten, um sie dann nach Hause zu senden. Alles andere führt früher oder später zur Datenkollision zwischen den beiden MC.
Hi Matthias, das macht nix. Das Sensormodul sendet immer wieder die gleichen Telegramme an das Terminal und in die andere Richtung genauso. Wenn die Übertragung unterbrochen wird, arbeiten beide Systeme jeweils mit dem zuletzt erfolgreich empfangenen Wert. Ich kann also jederzeit die Kommunikation unterbrechen, ohne dass mir die Maschine oder das Terminal übel nehmen. Wichtig ist für diese Schaltung nur, dass im Konfigurationsmodus a) keine Sensordaten zum Funkmodul gelangen und b) die Antworten auf die Konfigbefehle nicht zum Sensorboard gelangen können Und Kollisionen sollten doch eigentlich mit der oben stehenden Schaltung vermieden werden, oder? Wenn der Konfig-Pin HIGH geht, ist die Kommunikation zwischen Sensor und Funk gekappt - der Konfig-Controller hat freies Schussfeld. Ich muss halt nur sicherstellen, dass der Konfig-Controller nicht sendet, wenn der Konfig-Pin LOW ist. Aber das ist ja Sache meines Programmes.
Andi R. schrieb: > Das Funkmodul hat aber nur einen UART. > > Mein Ziel ist es, dass Controller B durch setzen eines Pins die > Kommunikation zwischen Controller A und Funkmodul unterbricht und > gleichzeitig eine Verbindung vom UART des Controller B mit dem Funkmodul > hergestellt wird. nimm doch einen analog switch einen stino Umschalter CD HEF 74HC 4053 3 Stk 1xUM
:
Bearbeitet durch User
Axel R. schrieb: > 2 x MAX3375. Über PIN6 (Standby) kannst Du den nicht benötigten > hochohmig schalten. Nur als Idee. OMG, warum Pegelwandler, er kann doch direkt auf der 5 oder 3,3V Seite schalten und im 4053 sind 3 STK 2x UM drin, da braucht er nur ein IC sogar für beide Richtungen.
Hallo Joachim, vielen Dank für Deinen Beitrag. Den 4053 gibt es ja auch als LV Variante, so dass ich direkt die 3.3V UART damit durchschalten könnte. Das gefällt mir. Jetzt habe ich noch zwei Fragen zu dem Datenblatt: http://www.nxp.com/documents/data_sheet/74LV4053.pdf 1) Was ist Vee? Lege ich den auf GND? 2) Auf Seite 8 ist die On-Resistance dargestellt. Dort steht, bei Vcc = 3.3V ist RON typ. 100 Ohm. Ist das nicht ein bisschen viel für einen UART? Danke für die Hilfe
Andi R. schrieb: > Oder geht es einfacher? Ja, die Ursache des Problems lösen, nämlich dass Controller A und B unkoordiniert um eine Ressource (das Funkmodul) konkurrieren. Damit gibt es einen ganz offensichtlichen Lösungsansatz: Zugriff auf die Ressource (Funkmodul) koordinieren. Dazu gehört mehr als die Leitungen zu beliebigen Zeiten umzuschalten. Also, z.B.: Lösung 1) [einfach] Controller A und Controller B in einem einzigen Controller vereinigen, der damit exklusiv Kontrolle über das Funkmodul erhält und die beiden Funktionen im Controller (Daten übertragen und Konfiguration) intern koordiniert. Lösung 1) [aufwendig] Das Funkmodul erhält einen eigenen Controller C. Controller C bedient exklusiv das Funkmodul. Controller A, B und C werden über einen geeigneten Bus verbunden. Es wird für den Bus ein Anwendungs-Layer definiert und implementiert, der es A und B erlaubt koordiniert mit Controller C zu kommunizieren. Da ich so einen Verdacht habe, wie der Krusch mit Controller A und B zustande kam: Arduino? Wenn ja, egal ob Lösung 1 oder 2, schmeiß den Arduino-Müll raus und mach es richtig. Du hast einen Mähdrescher. Du hast ausreichend Energie um eine anständige, leistungsfähige Embedded-Plattform, notfalls sogar einen Car-PC (nicht empfohlen, aber es würde gehen) betreiben zu können. Also etwas, was die Funktion von Controller A und B in sich vereinen kann.
Jay schrieb: > Ja, die Ursache des Problems lösen, nämlich dass Controller A und B > unkoordiniert um eine Ressource (das Funkmodul) konkurrieren. So unkoordiniert ist das nun auch nicht. Immerhin hat ein Controller die Macht, dem anderen das Wort zu verbieten. Es tut mir sehr leid, dass Dir das Improvisieren einer Lösung so schwer fällt aber ich werde nicht gleich den ganzen Mähdrescher neu bauen, nur damit ich den Kanal eines Funkmoduls wechseln kann. Auch ein CarPC erscheint mir hier völlig daneben. Was soll das bringen? Es gibt Umgebungsparameter, auf die ich nur bedingt Einfluss habe und es gibt welche, die ich beeinflussen kann. Der ganze Aufbau mit dem Umschalten funktioniert einwandfrei mit zwei simplen Kippschaltern. Es geht nur darum, das ganze jetzt elektronisch zu machen, damit der zweite Controller seine Modembefehle absetzen kann, sobald jemand die Konfiguration geändert hat. ...ohne, dass der Maschinenbediener erst den Kippschalter umlegen muss. Ein Arduino ist hier nirgendwo im Einsatz, falls Dir das jetzt irgendwas bringt.
Andi R. schrieb: > 2) Auf Seite 8 ist die On-Resistance dargestellt. Dort steht, bei Vcc = > 3.3V ist RON typ. 100 Ohm. Ist das nicht ein bisschen viel für einen > UART? auf der µC Seite für Signale interessieren doch 100 Ohm nicht, 100 Ohm nach GND ist am Inport genauso low wie 100 Ohm am Inport nach high/VCC auch high ist.
:
Bearbeitet durch User
Habe diesen hier noch in der Kramkiste gefunden. https://www.fairchildsemi.com/datasheets/FS/FSUSB42.pdf Funktioniert bestens.
Andi R. schrieb: > Funktioniert bestens. siehste, der Funktion nach auch ein elektronischer Umschalter, sieht dem Symbol nach auch analog aus, wie der 4053. freut mich wenn es nun klappt was du wolltest.
Ja genau. Ich finde das auch ästhetischer als ein paar Logikgatter, die vielleicht billiger sind, aber in Summe dann auch aufwendiger nachzuvollziehen sind. Z.B. bei der schaltung oben mit dem AND und den beiden OR Gattern muss man beim Lesen wissen, dass ein inaktiver TX immer HIGH ist - sonst würd's nicht gehen. Der Switch ist super easy zu verstehen und zudem spart man noch ein Bauteil. Vielen Dank für den Tip mit dem 4053!
Andi R. schrieb: > Vielen Dank für den Tip mit dem 4053 gerne, mit sowas habe ich schon Porterweiterungen gestrickt ohne mich drum kümmern zu müssen welche Signalrichtung gilt! Die gibt es ja von 1xUM bis 1aus8 oder 1aus16 (De)Multiplexer
:
Bearbeitet durch User
Hallo, ich kenne die Protokolle jetzt nicht. Die Umschaltung soll doch bestimmt immer funktionieren. Durch einen einfachen Umschalter würde mitten in einem Datentelegramm 'plötzlich' die Konfiguration zwischenfunken und umgekehrt. Da könnte man einen AVR mit 2 HW-UARTs oder als zweites ein Soft-UART als Kontroller B nutzen. Wenn das der Kontroller B nicht mit übernehmen kann, dann halt ein Kontroller C. So passiert die Umschaltung zwischen zwei vollständigen Diagrammen. Ich persönlich würde, gerade bei einem Eigenbau, nur einen Mikrokontroller für alles nehmen.
Sind deine UART Daten die du an Modul 1 schickst für Modul 2 Geheim? Weil sonst könnte man seine Software auch entsprechend umschreiben dass Daten für Modul 1 immer mit einer "1" anfangen und Daten für Modul 2 immer mit einer "2". Wenn dem nicht so ist, ignoriert das entsprechende Modul die Meldung einfach. Klappt natürlich nur, wenn man eine klare Master/Slave Trennung hat und die Slaves auch wirklich alle die Schnauze halten sofern sie vom Master nichts gefragt werden.
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.