PWM Signal durch Arduino durchschleifen

Hallo liebe Gemeinde,

ich habe ein eigentlich sehr simples Vorhaben, welches sich für mich in der Praxi aber dennoch für schwieriger als gedacht gezeigt hat.

ich möchte mit einem Uno R3 ein PWM Signal, welches an Pin 5 in den Arduino rein kommt, 1:1 bei Pin 6 am Arduino wieder ausgeben.

Nach nun 2h rumprobieren, komme ich auf keinen grünen Zweig.
der Welt welcher beim Pin5 reinkommt, unterscheidet sich nach dem Ausgeben an Pin 6 gravierend.

Das Signal welches an Pin 5 anliegt, wird mit einem zweiten Uno erzeugt (dieser soll später gegen einen Sensor mit PWM Ausgang ersetzt werden)

Kann mir jemand eine kleine Gedankenstütze geben, bzw. einen simplen Sketch, welcher mir erklärt, wie das ganze zum Funktionieren hat?

Gruß,
robotsox :slight_smile:

Hi

Wozu brauchst Du das 2.te Signal?
Der Eingang des Arduino sollte das Signal eigentlich recht unangetastet lassen, daß Du Das noch weiter benutzen kannst.

Dein Problem wird hier sein, daß Du eine ganze Menge Laufzeit zwischen Einlesen und Ausgabe hast - etwas schneller könnte Das werden, wenn Du direkt auf die Ports zugreifst - dann ist das Programm aber nicht mehr so einfach portierbar - also auf einen anderen Arduino aufspielbar, da Dieser die Register wo anders hat.

Was hast Du vor und wofür brauchst Du das Signal 'neu'?

MfG

Hey,

danke für die schnelle Antwort.

Ich möchte den Arduino in einen vorhandenen Messkreis hängen. Der Arduino soll dann das "alte" Signal um einen Faktor x manipulieren (verkleinern/vergrößern) und dann das "neue" Signal an die Messstelle des originalen Messkreises weitergeben.

Wenn ich direkt auf die Ports zugreife, ist das Programm dann nur unter verschienden Arduino Typen (nano, uno, mega) nicht portierbar, oder unterscheidet sich der Zugriff schon von uno zu uno?

Danke,
RobotSox

Hi

Unter verschiedenen Typen - kommt dann auf den verwendeten µC an, beim Nano und Uno ist's noch der Gleiche, wenn dort aber die ADC A6 und A7 greifbar sind, Die der Uno nicht bietet.

Wie schnell ändert sich das Mess-Signal und wie schnell musst Du auf Änderungen reagieren?
Dann das Signal messen, einen Timer auf eine nahezu passende Frequenz einstellen.
Die Länge des Signal messen, den PWM-Wert des Timer mit manipuliertem Wert füttern.

Dazu müsste die Frequenz des PWM-Signal gleich bleiben, oder dem Empfänger muß Diese egal sein.

Würdest Du Sender und Empfänger benennen?

MfG

Der Sender wäre ein Niveuasensor im KFZ, der Empfänger das dazugehörige Steuergerät.

Leider gibt es zu dem Sensor keinerlei öffentliche Dokumentation, welche mir die Frequenz von dem PWM Signal näher bringen würde.

Kann ich diese mit dem Arduino rausmessen?
Rein in der Theorie, müsste ich mit dem Arduino die 2 Flanken des Wechselsinus messen, und somit ja die Frequenz rausbekommen?

Kann ich denn den Arduino dann auch so einstellen, das er auf der selben Frequenz das Signal weiter gibt an das Steuergerät im KFZ?

Gruß,
RobotSox

Hi

Sinus oder PWM?

Rein Theoretisch könnte man im ersten Schritt die Frequenz erfassen und einen Timer entsprechend einstellen.
Dazu müsste man auf einander folgende gleiche Flanken erfassen - wir wollen ja die Periodendauer.
Im 2.ten Schritt erfassen wir die Länge des PWM, manipulieren diesen Wert nach Wunsch, rechnen diesen Wert in den PWM-Wert um, bis zu Welchem der Timer zählen soll.

Wenn die Frequenz halbwegs passt, macht Das der µC in Hardware.
Der Arduino muß 'nur' die aktuellen PWM-Werte mitlesen und bei Änderung manipulieren und den neuen Wert ins Register schreiben.

Theoretisch

Praktisch wäre mir unwohl, wenn ein µC, Der NICHT für den KFZ-Einsatz gebaut wurde, bei hundert km/h an den Rädern spielt.

Wie diese Signale aussehen, hast Du bereits herausgefunden? (Sinus wäre schon blöd)
Oszi zur Hand?
Spannung gemessen?

MfG