Forum: Mikrocontroller und Digitale Elektronik Vier PWM über eine Signalleitung


von Christian T. (ct1966)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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.

von Egon D. (Gast)


Lesenswert?

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.
von MaWin (Gast)


Lesenswert?

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.
von Erich (Gast)


Lesenswert?

Auf 'ne dumme Frage kann es nur dümmere Antworten geben.

von Erich (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Carsten-Peter C. (carsten-p)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

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?

von A. S. (Gast)


Lesenswert?

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)

von unwissender mitleser (Gast)


Lesenswert?

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.

von Andreas S. (igel1)


Lesenswert?

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

von Helge (Gast)


Lesenswert?

Ohne Code auf der Empfängerseite da gibts den DS2413 2-bit one-wire 
Baustein. Erfordert aber das 1wire-Protokoll auf der Senderseite.

von Paul (Gast)


Lesenswert?

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.

von N. M. (mani)


Lesenswert?

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

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von A. S. (Gast)


Lesenswert?

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.

von A. S. (Gast)


Lesenswert?

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)

von Luisa (Gast)


Lesenswert?

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?

von A. S. (Gast)


Lesenswert?

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.

von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


Lesenswert?

Analoge Modellfernsteuerungen arbeiten mit dem Prinzip.

von Georg (Gast)


Lesenswert?

Luisa schrieb:
> am anderen Ende dann mit einem ADC

und das ganz ohne Prozessor und Programmieren??

Georg

von Luisa (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.