Variables PWM Signal 0-250 Hz Arduino Nano

Hi, ich möchte ein PWM Signal mit variabler Frequenz von 0-250 Hz erstellen.
Pulsweite erstmal egal, sagen wir 50%.
Der MC bekommen ein Inputsignal, soll dieses auswerten und linear als Output ausgeben.
Danke

Also analog? PWM oder FM oder AM oder was?

Are you trying to create a variable frequency PWM signal?

¿Está tratando de crear una señal PWM de frecuencia variable?

Das ist meine Lösung.

#include <PWM.h>
#define PWM_READ 6
unsigned long durationHigh;
unsigned long durationLow;
float freq_measured;
float pulseWidth;
int32_t frequency = 25;     //Hz

void setup(){
  Serial.begin(9600);
  pinMode(PWM_READ, INPUT);
  InitTimersSafe();
 
  bool success = SetPinFrequencySafe(9, frequency);
  if (success){
    pinMode(13, OUTPUT);
    digitalWrite(13,HIGH); //LED High
  }
  pwmWrite(9, 127);

}

void loop(){
  durationHigh = pulseIn(PWM_READ, HIGH);
  durationLow = pulseIn(PWM_READ, LOW);
  
  Serial.print("High: ");
  Serial.print(durationHigh);
  
  Serial.print(" Low: ");
  Serial.print(durationLow);

  pulseWidth = 1 / (((float)durationHigh + (float)durationLow) / (float)durationHigh);
  Serial.print(" Pulsweite: ");
  Serial.print(pulseWidth, 3);

  freq_measured = 1000000.0 / ((float)durationHigh + (float)durationLow);
  Serial.print(" Freq: ");
  Serial.print(freq_measured);
  Serial.println("Hz");
   
  bool success = SetPinFrequencySafe(9, freq_measured);
  if (success){
    pinMode(13, OUTPUT);
    digitalWrite(13,HIGH); //LED High
  }else{
    digitalWrite(13,LOW); //LED Low
  }

  pwmWrite(9, 127);
   
  delay(100);
}

Dafür gibt es die Funktion tone() (Jedenfalls ab 32 Hz aufwärts) .
wird allerdings üblicherweise nicht als PWM bezeichnet.

Diese Beschreibung verstehe ich nicht, auch nicht durch Anschauen deiner Lösung.

Prinzipiell ein 0Hz (Gleichspannung) kann kein PWM mit weniger als 100% sein.
Es hat auch wenig Sinn bei einem PWM Signal die Frequenz zu regeln.

Du kannst ein Signal in der Frequenz regeln. 0 Hz ist unrealistisch realistisch ist zB 0,1Hz

@michael_x Ich bekomme von einem (Durchfluss-) Sensor ein 5V Rechtecksignal (5V PWM, 50% Duty Cycle) und der MC soll die Frequenz bestimmen. Laut Datenblatt 14 - 225 Hz. Der Sensor verschlüsselt den Durchfluss in der Frequenz des Signals, der Duty Cycle bleibt konstant.
Die Lösung bestimmt die Frequenz über die Zeiten des Signals in der High und der Low Position. Dann wird ein anderer Pin als Output für die gleiche Frequenz benutzt.

In der Lösung nicht ersichtlich weil nicht explizit danach gefragt: In der Verarbeitung kommt noch eiun Offset auf die gemessene Frequenz drauf. Aber einfach einen Wert draufzuaddieren bekomme ich noch selber hin, deshalb wollte ich nur den ersten Part erfragen.
Jedes Rechtecksignal kann als PWM-Signal interpretiert werden mMn, ob das wissenschaftlich korrekt ist sei dahingestellt, aber wir sind hier nicht an der Uni sondern im Hobbybereich.

michael_x
Diese Beschreibung verstehe ich nicht, auch nicht durch Anschauen deiner Lösung.
Blockzitat

In der Lösung bekommt Pin 6 über einen 22k den PWM Input, der MC berechnet die Frequenz in Hz und Pin 9 gibt das (in dem Fall gleiche, in der Realität mit OPffset versehene) Signal wieder aus.

uwefed
Prinzipiell ein 0Hz (Gleichspannung) kann kein PWM mit weniger als 100% sein.

Hat auch niemand behauptet.

uwefed
Es hat auch wenig Sinn bei einem PWM Signal die Frequenz zu regeln.

Interessant, woher du meinen Anwendungszweck kennst, aber besser irgendwas schreiben gar nichts.

uwefed
Du kannst ein Signal in der Frequenz regeln.

Danke, das weiß ich selbst, die Frage bezog sich eher auf das wie.

1 Like

Kann schon, führt aber zu beliebig vielen Mißverständnissen.

Hier handelt es sich also um ein Rechtecksignal mit variabler Frequenz, also Modulationsverfahren FM.

Auch dieser Teil war sehr mißverständlich formuliert:

eigentlich völlig unverständlich.

Wenn Du damit meinst, daß es nicht notwendig oder sinnvoll ist, sich an feststehende Begriffe zu halten, dann ist das ein ganz anderes Hobby.

Danke @c0nr3f1, ist mir jetzt klar. Als Ausgang ein ähnliches Frequenzmoduliertes Signal, aber mit anderen Parametern, auszugeben, ist nun auch nicht mehr so sinnlos.

Wie gesagt, dafür --mit der genannten Einschränkung auf minimal-Frequenz-- ist eigentlich die Funktion tone gedacht.

Wenn Du ein Rechtecksignal mit 50% Duty Cycle hast, braucht Du eignetlich nur del L oder den H Teil zu messen da ja beide gleich sind.
EIn PWM Signal ist explizit ein Signal das den Duty Cycle ändert. Tut es das nicht ist es kein Puls Weiten Moduliertes Signal sondern was anderes zB mit variabler Frequenz.

Du hast geschrieben daß Du ein Signal mit 0 bis 250Hz willst, also hast Du das behauptet.

Wenn man die Dinge falsch benennt dann bekommt man unerwartete Antworten. Dann bitte nicht eingeschnapt sein und vorwerfen man wisse nicht für was man das braucht. Ich erhalte von Dir die Infos mit denen ich Dir antworte. Gebe ich Antworten, die Du nicht erwartest, könnte auch sein, daß Deine Infos unvollständig oder falsch interpretierbar sind und ich darauf reingefallen bin.

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.