-
        

Ergebnis 1 bis 7 von 7

Thema: PWM als Datenübertragung nutzbar ?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2015
    Beiträge
    20

    PWM als Datenübertragung nutzbar ?

    Anzeige

    Mal angenommen, man möchte zwei Arduinos "vernetzen", aber die I2C ist schon sehr stark belastet.
    Trotzdem möchte man z.B. 10 mal in der Sekunde einen Integer Wert von dem einen Arduino zu anderen schicken.

    Man könnte ja nun "im Sender" einen PWM Out setzen und diesen Wert "im Empfänger" wieder einlesen.
    Theoretisch lassen sich damit bei 8 Bit Auflösung immerhin Werte von 0 bis 256 übertragen. (bei 8 Bit Auflösung)
    Will man höhere Werte übertragen, nimmt man z.B. 2 PWM und rechnet das Ganze wieder zusammen.

    Der Vorteil wäre, man braucht wenig Programmcode und damit wenig Abarbeitungszeit auf beiden Seiten der Übertragung.

    Aber wenn der "Sender" nun z.B. 112 gibt, liest dann der "Empfänger" auch 112 oder kann das auch mal 114 oder 110 werden ?
    Immerhin ist der Unterschied nur 19 mV je Wert.
    Bei 10 Bit Auflösung entsprechend kleiner (knapp 5 mV je Step)

    Wie zuverlässig wäre so ein Konstrukt ?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Hallo,
    prinzipiell ist das möglich. Es gibt da zwei Möglichkeiten:
    1. "Sender" gibt PWM aus und der "Empfänger" misst digital die Puls/Pausendauer.
    2. "Sender" gibt PWM aus, das wird mit einem RC-Tiefpass geglättet und der "Empfänger" misst die Spannung per ADC

    Bei Variante 1 kommt es auf gutes Timing an, aber auch wie die Signalflanken ankommen. Eine Abweichung kann auftreten, wird aber eher niedrig ausfallen.
    Bei Variante 2 (aus deiner Formulierung mit den 19mV klingt das eher danach) hat man zwei große Probleme. Erstens kann der RC-Tiefpass nicht perfekt filtern, sodass man eine Restwelligkeit und damit schwankende ADC-Werte bekommt. Zweitens dauert es recht lange, bis sich die Spannung am RC-Tiefpass auf das neue PWM-Tastverhältnis eingestellt hat.
    Einen PWM-Ausgang direkt mit dem ADC zu vermessen, macht nicht viel Sinn - die Messergebnisse sind dann ja entweder 0V oder 5V, je nach dem ob im PWM-Ablauf gerade Puls oder Pause erwischt wurde. Dann kann man's gleich digital messen.
    Also lieber digital die Puls/Pausendauer messen. Frage ist nur, wie man das bei 0% Tastverhältnis (Pin dauerhaft auf Low) und 100% Tastverhältnis (Pin dauerhaft auf high) löst.

    Grüße, Bernhard

    Alternativ gibt es auch noch digitale Schnittstellen wie UART, SPI ...
    Wenn noch viele Pins frei sind, kann man auch parallel einige Bits rüberschieben.
    "Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Bernhard,
    Zitat Zitat von BMS Beitrag anzeigen
    Also lieber digital die Puls/Pausendauer messen. Frage ist nur, wie man das bei 0% Tastverhältnis (Pin dauerhaft auf Low) und 100% Tastverhältnis (Pin dauerhaft auf high) löst.
    Genau so
    Bei einer 8-Bit PWM hat man bei 1 und 254 noch einen Impuls, welchen man messen kann.
    Die PWM-Frequenz kennt man ja, also wenn man innerhalb einer Periodendauer keinen Impuls hat, muss man den Pegel abtasten L = 0 und H = 255.

    Allerdings muss man mit einer höheren Frequenz abtasten (Oversampling), als die PWM für den Raster verwendet. Grundsätzlich ergibt sich immer ein Fehler von +/-1 des gemessenen Wertes.
    Man müsste also die Werte noch mit eine Prüfsumme/CRC schützen.

    Aber grundsätzlich stellt sich schon die Frage, ob dies der optimale Weg ist!

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    ... zwei Arduinos "vernetzen", aber die I2C ist schon sehr stark belastet ... PWM Out ... 8 Bit Auflösung ...
    In einem ähnlichen Fall - viel I²C-Traffic - habe ich als Lösung die UART-Verbindung genommen, interruptgetrieben und mit FIFO. Gerade wenns nur PtP ist macht die Sinn. Ich habe in diesem Fall bei den Platinen meist auf jeder mehrere UARTs . . . Die Verbindung geht bei meinen 20-MHz-ATmegas stabil selbst bei 1,2 MBd (UBRR = 1) ;.-.)
    Ciao sagt der JoeamBerg

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2015
    Beiträge
    20
    Na, ich seh schon...
    ganz so einfach ist es eben nicht, die Daten - und sind sie noch so gering - von A nach B zu schaufeln.
    Mal eben den PWM abfragen? Läuft nicht, zu schwammig...
    Pulsverhältnis ermitteln ginge zwar, aber die Synchronisation ist auch nicht ohne durch die hohen Taktraten des Senders.

    Da ist es über UART vermutlich einfacher...

    Ich sehe es ein

    DANKE für die Diskussion, Freunde

    Josef

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Josef,
    Zitat Zitat von Langer711 Beitrag anzeigen
    Da ist es über UART vermutlich einfacher...

    Ich sehe es ein
    Das UART wurde auch genau zum Zweck der Datenübertragung entwickelt.
    PWM wurde zu Leistungssteuerung entwickelt.

    Eigentlich nicht verwunderlich, dass die Teile unterschiedlich gut zu deinem Problem passen

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2015
    Beiträge
    20
    Naja ich bin neu in Sachen Arduino oder Microcontroller allgemein.
    Programmierung selbst ist kein Thema, aber der Umgang mit Ein- und Ausgängen ist mir bisher nur in Sachen SPS bekannt.

    Man muss sich halt erst einen Überblick über die Möglichkeiten schaffen, bevor man was auf die Beine stellen kann.

    Aber nochmal vielen Dank für die vielen Hinweise Eurerseits!

    Ich wünschte mir, es hätte sich auch mal was in meiner anderen Frage rund um die 433 Mhz-Übertragung getan

    Josef

Ähnliche Themen

  1. ISP Pin als Eingang nutzbar machen.
    Von demmy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 11.05.2014, 18:45
  2. diese Motoren mit L298 nutzbar?
    Von Testus2K im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 06.07.2010, 12:14
  3. 5km Funkgerät als Datenübertragung
    Von Einstein2312 im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 17.02.2007, 19:33
  4. ATMega32: Port B trotz ISP nutzbar?
    Von MasterFX im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 13.04.2006, 19:50
  5. Datenübertragung:Nicht als String, sondern platzsparend als?
    Von m_herr im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 27.02.2006, 20:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •