sitemap link mailform link home

PWM

Die LED-Helligkeit mit PWM steuern

Quelle: Externer Link http://www.mathias-wilhelm.de/arduino/beginner/pulsweitenmodulation-pwm/

Der "Trick" beim Arduino besteht darin, dass ein geeigneter PWM-Port (die Pins 3, 5, 6, 9, 10, 11) als digitaler OUTPUT-Port angemeldet werden muss. Geschrieben wird nachher aber mit dem Befehl  analogWrite(Port,Wert von 0 bis 255):


void setup() {
  // put your setup code here, to run once:
  pinMode(5,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  analogWrite(5,255); // volle Helligkeit
  delay(1000);
  analogWrite(5,127); // halbe Helligkeit
  delay(1000);
  analogWrite(5,63); // viertel Helligkeit
  delay(1000);
  analogWrite(5,0);   // keine Helligkeit
  delay(1000);

}

Einen Gleichstrommotor langsam anfahren und wieder abbremsen

Der Motor wird an Port 5 und GND angeschlossen. Beachten Sie, dass der Motorstrom nicht größer als 30 mA sein darf. Messen Sie Ihren Motor vorher bei 5 V aus!

Beachten Sie, dass der Motor bei Belastung (z.B. Abstoppen der Welle mit der Hand) mehr verbrauchen kann, als im Leerlauf gemessen.

Ich habe daher einen Motor mit 14 mA Leerlaufstrom ausgewählt.

 

// Einen Motor sanft anlaufen und abbremsen lassen

#define MINWERT 80
#define MAXWERT 255
#define PWM_PORT 5
#define BESCHLEUNIGUNG 30 // größerer Wert = langsamer anfahren

void setup() {
  // put your setup code here, to run once:
  pinMode(PWM_PORT,OUTPUT);
}

void loop() {
  // Langsam anfahren
  for (int i = MINWERT; i  {
    analogWrite(PWM_PORT,i);
    delay(BESCHLEUNIGUNG);
  }
  analogWrite(PWM_PORT, MAXWERT); // hohe Geschwindigkeit 3 sec. halten
  delay(3000);

  // Langsam abbremsen
  for (int i = MAXWERT; i>MINWERT; i--)
  {
    analogWrite(PWM_PORT,i);
    delay(BESCHLEUNIGUNG);
  }
 
 analogWrite(PWM_PORT, MINWERT); // Motor 3 sec. ganz langsam
 delay(3000);

}

Einen Gleichstrommotor links und rechts herum laufen lassen - mit PWM


// Einen Motor links und rechts herum laufen lassen
// Die Polaritätsumkehr passiert dadurch, dass man den
// RICHTUNGSPORT einmal HIGH und einmal LOW schaltet

#define PWM_PORT 5
#define RICHTUNGS_PORT 2
#define ZEIT 3000 // ms
#define PWM_POWER 200

void setup() {
  // put your setup code here, to run once:
  pinMode(PWM_PORT,OUTPUT);
  pinMode(RICHTUNGS_PORT,OUTPUT);
}

void loop() {
  // Links rum
  digitalWrite(RICHTUNGS_PORT, LOW);
  analogWrite(PWM_PORT,PWM_POWER);
  delay(ZEIT);
  // Anhalten
  analogWrite(PWM_PORT,0);
  delay(ZEIT);
  // Rechts rum
  digitalWrite(RICHTUNGS_PORT, HIGH);
  // Hier muss jetzt "umgekehrt" gedacht werden!
  // Die PWM-Welle ist jetzt vertikal gespiegelt
  // _|-------|__|-------|_ -> -|_______|--|_______|-
  // Statt PWM = 200 muss PWM = 255 - 200 = 55 gewählt werden!
  analogWrite(PWM_PORT,255-PWM_POWER);
  delay(ZEIT);
  // Anhalten
  analogWrite(PWM_PORT,255);
  delay(ZEIT);

}


.

Letzte Änderung:
March 23. 2023 21:04:40
«    top    »