Hallo, ich möchte vier PWM Signale (300Hz) über eine Leitung übertragen. Möglichst ohne Software mit einer kleinen Hardwarelösung. Kann man da z.B. einfach einen Multiplexer nehmen? Freue mich über jede Idee! Danke im Voraus :) Gruß Chris
Christian T. schrieb: > Hallo, > ich möchte vier PWM Signale (300Hz) über eine Leitung übertragen. Warum? Ganz sicher, daß nicht mehr Adern genutzt werden können? > Möglichst ohne Software mit einer kleinen Hardwarelösung. Kann man da > z.B. einfach einen Multiplexer nehmen? Nö. > Freue mich über jede Idee! Danke im Voraus :) Nutze die eine Leitung für Datenübertragung eines UARTs und setz ans Ende einen kleinen AVR, welcher die Daten empfängt und daraus die 4 PWMs generiert. Das braucht aber etwas Software.
Falk B. schrieb: >> Möglichst ohne Software mit einer kleinen Hardwarelösung. >> Kann man da z.B. einfach einen Multiplexer nehmen? > > Nö. Mehrkanal-Fernsteuerung ist ja auch noch nicht erfunden...
Beitrag #7120092 wurde von einem Moderator gelöscht.
Beitrag #7120101 wurde von einem Moderator gelöscht.
Christian T. schrieb: > Freue mich über jede Idee Natürlich gibt es Lösungen z.B. hat die Post früher 4 (und viel mehr) Sprachsignale (also deutlich über 300Hz) über eine (Kupfer)Leitung ubertragen ganz ohne Software und Mikrocontroller, auch gelingt es Radiostationen 4 (und mehr) Sender uber 1 Antenne zu senden und könnte 4 Empfängern (auch an 1 Antenne, z.B. Hausgemeinschaft) jeweils ein eigenes Programm zuzusenden, zudem wurde hier die PCM Multiplexlösung für Modellbaufunkfernsteuerungen angesprochen die Motoren simultan mit PWM in der Drehgeschwindigkeit regelt, aber keine der Lösungen wird dir gefallen, daher spart man sich lieber deren Ausarbeitung.
Beitrag #7120108 wurde von einem Moderator gelöscht.
Christian T. schrieb: > über eine Leitung Bleibt also nur Funk, oder Sender und Empfänger mit dicken Erdspießen, oder Anschluß an die Bahnschienen beidseitig.
Erich schrieb: > Bleibt also nur Funk, > oder Sender und Empfänger mit dicken Erdspießen, > oder Anschluß an die Bahnschienen beidseitig. Genau so kann man es machen. Hier z.B. für die Übertragung einer Leistung von 600 Megawatt, allerdings unmoduliert: https://de.wikipedia.org/wiki/Baltic_Cable
Christian T. schrieb im Beitrag #7120101: > Viel schöner wäre es wenn sich nur diejenigen melden die gerne > weiterhelfen wenn sie eine Lösung zu der Frage haben.... Du siehst, dass es hier genug Lösungsansätze gibt. Was fehlt, ist die konkrete Beschreibung deines Problems. Damit könnte die Diskussion hier wesentlich zielgerichteter laufen.
Jede Fernsteuerung für Modelle überträgt mehrere PWM Signale über eine Leitung, die hier meistens eine Funkstrecke ist. Dieses Summensignal wird im Empfänger dekodiert, entweder mit simplem Schieberegister oder mit MC. Gehen tut es also.
Hallo, Du wirst Deine Gründe haben, vier PWM- Signale gemuxt zu übertragen. Der Aufwand ist jedoch hoch. Du musst mit einer hohen Rate abtasten und viele Daten nacheinander übertragen. Sender und Empfänger müssen synchronisiert werden. Vier PWM- Signale neu zu erzeugen ist dagegen einfach und die Signale dürften deutlich „sauberer“ sein. Vielleicht reicht es, nur Änderungen zu übertragen. Ich habe hier einen Dimmer vorgestellt, bei dem über i2c nur die Helligkeitswerte übertragen werden können. Vielleicht ist ein solcher Weg einfacher. Gruß Carsten
Christian T. schrieb: > Möglichst ohne Software mit einer kleinen Hardwarelösung. Varioprop (Graupner) hat das vor ca. 50 Jahren mit Vierschichtdioden gelöst. Nachteil: die gibts heute glaube ich gar nicht mehr :-) Dein Anliegen ist völlig weltfremd/trollig. Bei solch kleinen Frequenzen/Datenraten kommt keiner ausser dir auf die Idee das rein hardwarebasiert lösen zu wollen. Warum auch?
Gehen tut das, auch einfach mit fertigen Chips oder mit logikICs. Wie lang und welche Frequenz? (Die 300Hz ist vermutlich die Periodendauer, wie viel Bit bzw welche Auflösung hat der Dutycycle?) Einfachste bastellösung: parallel/seriell -schieberegister, alle 16us mit 1MHz rauspusten, ruhepegel 1, erstes Bit 0, dann 4 Bit - 4 Kanäle und dann 9 Bit 1. Das ist ein UART nachgebaut. Also doch besser überlegen, einen uC mit je 10 Zeilen Code (4 IO einlesen, über UART direkt rauspusten, auf der anderen Seite umgekehrt)
A. S. schrieb: > Das ist ein UART nachgebaut. Also doch besser überlegen, einen uC mit je > 10 Zeilen Code (4 IO einlesen, über UART direkt rauspusten, auf der > anderen Seite umgekehrt) Hättest du die Güte, für alle weniger hellen Köpfe, die 10 Zeilen Code hier noch schnell anzufügen. Ist doch für Dich sicher ein Kinderspiel. Danke.
Oder vielleicht so: Du schaltest mit Deinen 4 PWM-Signalen 4 Frequenzgeneratoren, die alle auf unterschiedlichen Frequenzen laufen (ca. 1000x so hoch wie Deine PWM-Grundfrequenz). Die addierst Du alle zusammen und fischt die unterschiedlichen Frequenzen am Ziel mit Bandpassfiltern wieder raus. Dann schwupps noch einen Tiefpass oder ein getriggertes Monoflop dahinter und schon hast Du Dein PWM-Signal rekonstruiert. Viele Grüße Igel1
Ohne Code auf der Empfängerseite da gibts den DS2413 2-bit one-wire Baustein. Erfordert aber das 1wire-Protokoll auf der Senderseite.
A. S. schrieb: > Wie lang und welche Frequenz? (Die 300Hz ist vermutlich die > Periodendauer Nein, 300Hz ist eine Frequenz, keine Periodendauer, die ist 1/300Hz A. S. schrieb: > Einfachste bastellösung: parallel/seriell -schieberegister, alle 16us > mit 1MHz rauspusten, ruhepegel 1, erstes Bit 0, dann 4 Bit - 4 Kanäle > und dann 9 Bit 1. Spielst Du Buzzwordbingo? Möglichst viele Fachbvegriffe würfeln, merkt schon keiner daß alles Unsinn ist? A. S. schrieb: > Das ist ein UART nachgebaut. Also doch besser überlegen, einen uC mit je > 10 Zeilen Code (4 IO einlesen, über UART direkt rauspusten, auf der > anderen Seite umgekehrt) und hoffen daß es keiner wirklich liest.
Ich finde es zwar auch total übertrieben und würde es eher digital mit einem uC lösen, aber wenn es unbedingt sein muss habe ich da auch an eine OOK o.ä. gedacht. Andreas S. schrieb: > Oder vielleicht so: Evtl kommt man da auch mit 8 solchen RS485 Transceiver mit OOK zurecht. Kommt wahrscheinlich darauf an wie gut der eingebaute Bandpass ist und auf die "Datenrate" an: https://www.ti.com/product/THVD8000
Der Igel hatte da schon Recht: Trägerfrequenzverfahren. Fernsteueranlagen funktionieren manchmal anders, da die Pulsbreite zur Ansteuerung von Servos verglichen mit der Wiederholrate sehr schmal war wenn ich das richtig in Erinnerung habe. Da kann man mehrere Kanäle nacheinander übertragen und recht einfach multiplexen, aber wenn man am Ende 0..100% PWM haben will, wirds schwierig.
Chrstian, wenn man eine Diskussion führt, muss man auch dabei bleiben. Nicht einfach eine Frage in den Raum werfen und sich dann verpissen. Je länger du die Diskussion unmoderiert laufen lässt, umso weniger hilfreich wird sie enden.
Paul schrieb: > Nein, 300Hz ist eine Frequenz, keine Periodendauer, die ist 1/300Hz Du meine Güte: 300Hz wird meist als Rechteck/Sinus mit 50/50 aufgefasst. Wenn jemand fragt, ob man 300Hz über 100m übertrgen kann, dann wird jeder sagen. Ja. Wenn aber hier die 300Hz nur (der Kehrwert) der Periodendauer meint, das "Signal" aber darin steckt, ob es 1,5% oder 1,58% Duty-Cycle sind, dann ist das eine ganz andere Größenordung.
unwissender mitleser schrieb: > Hättest du die Güte, für alle weniger hellen Köpfe, die 10 Zeilen Code > hier noch schnell anzufügen. Ist doch für Dich sicher ein Kinderspiel. > Danke. Voraussetzung: gleicher µC, gleicher Quartz, ein Port A mit 8 Bit, wovon die ersten 4 vom µC an die Gegenstelle gesendet werden und umgekehrt. Quasi Bidirektional jeweils 4 Bit. Register/Framework: * trisA: (wr-only) 1=input, 0=output * portA (lesen: Eingangswert, schreiben: Ausgangswerte) * uart_init() : initialisieren mit hoher Baudrate (Wert ist egal, ohne Parity. Z.B. 1 MBaud oder minimaler Baudratenteiler) * tx_flg : (rd-only) Flag, dass Transmit-Buffer leer ist * reg_tx : (wr-only) Register um ein Byte zu senden * rx_flg : (rd-only) Flag, dass ein neues Byte in reg_rx ist * reg_rx : (rd-only) Register für letztes Empfangsbyte
1 | int main(void) |
2 | {
|
3 | trisA = 0x0f; /* upper nibble output, lower = input */ |
4 | uart_init(); |
5 | for(;;) |
6 | {
|
7 | if(tx_flg) {reg_tx = portA | 0xf0;} |
8 | if(rx_flg) {portA = reg_rx << 4;} |
9 | }
|
10 | }
|
Da die high-bits 1 sind, gibt es kein Synchronisierungsproblem des Uarts. (Edit: Dass es genau 10 sind ist Zufall. Und ja, "Hello World" mit Uart in einem µC ist eine große Herausforderung. Aber sobald man ein Byte senden und empfangen kann, reicht der ungetestete Code hier)
Schon lustik wenn man nicht(s) brogrammieren kann. Dann soll es harte Ware richten. Einfach die 4 gleichpegeligen PWM-Signale binaer gewichtet addieren durhc die Leitung damit und am anderen Ende dann mit einem ADC wieder dekodieren. Das ist doch jetzt nicht so schwer oder?
Luisa schrieb: > Das ist doch jetzt nicht so schwer oder? Dazu müsste das analoge Signal am Empfänger "springen" oder Du müsstest es mit einem Takt synchronisieren.
Luisa schrieb: > am anderen Ende dann mit einem ADC und das ganz ohne Prozessor und Programmieren?? Georg
> Dazu müsste das analoge Signal am Empfänger "springen" Bravo! Du hast das Prinzip von u.a. QAM verstanden. > ganz ohne Prozessor Unsportlich könnte ich einen Flash-ADC vorschlagen. Aber es gibt auch ganz simple mit parallelen Ausgängen. Hast du eigentlich viel in der Schule gefehlt?
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.