Μετάβαση στο κύριο περιεχόμενο

PWM στο Arduino

 

PWM στο Arduino

PWM στο Arduino

Εισαγωγή στο PWM

Η διαμόρφωση πλάτους παλμού (PWM)  είναι μια τεχνική με την οποία το πλάτος ενός παλμού μεταβάλλεται διατηρώντας τη συχνότητα του κύματος σταθερή. Είναι μια μέθοδος παραγωγής αναλογικού σήματος με χρήση ψηφιακής πηγής.

Έλεγχος φωτεινότητας LED με χρήση PWM
Γενιά PWM

 

Ένα σήμα PWM αποτελείται από δύο κύρια στοιχεία που καθορίζουν τη συμπεριφορά του: έναν κύκλο λειτουργίας και μια συχνότητα .

 

Τι είναι ο κύκλος λειτουργίας του σήματος

Η περίοδος ενός παλμού αποτελείται από έναν  κύκλο ON  (5V) και έναν   κύκλο OFF (0V). Το κλάσμα για το οποίο το σήμα είναι ενεργοποιημένο για μια περίοδο είναι γνωστό ως  κύκλος λειτουργίας .

Φόρμουλα Duty Cycle

Π.χ. Ένας παλμός με περίοδο 10 ms θα παραμείνει ενεργός (υψηλό) για 2 ms. Επομένως, ο κύκλος λειτουργίας θα είναι

D = 2ms / 10ms = 20%

 

Μέσω της τεχνικής PWM, μπορούμε να ελέγξουμε την ισχύ που παρέχεται στο φορτίο χρησιμοποιώντας το σήμα ON-OFF. Τα σήματα PWM μπορούν να χρησιμοποιηθούν για τον έλεγχο της ταχύτητας των κινητήρων DC και για την αλλαγή της έντασης του LED.

Τα διαμορφωμένα σήματα πλάτους παλμού με διαφορετικό κύκλο λειτουργίας φαίνονται παρακάτω

σήμα με διακριτό κύκλο λειτουργίας
Κύκλος λειτουργίας PWM

 

Συχνότητα σήματος

Η συχνότητα ενός σήματος καθορίζει πόσο γρήγορα το PWM ολοκληρώνει έναν κύκλο (δηλαδή τα 1000 Hz θα ήταν 1000 κύκλοι ανά δευτερόλεπτο) που σημαίνει πόσο γρήγορα εναλλάσσεται μεταξύ των καταστάσεων ON (υψηλή) και OFF (χαμηλή). Επαναλαμβάνοντας αυτό το μοτίβο ON-OFF με αρκετά γρήγορο ρυθμό και με συγκεκριμένο κύκλο λειτουργίας, η έξοδος θα φαίνεται να συμπεριφέρεται σαν ένα αναλογικό σήμα σταθερής τάσης κατά την παροχή ρεύματος στις συσκευές.

Παράδειγμα: Εάν θέλουμε να δημιουργήσουμε ένα αναλογικό σήμα 2V για μια δεδομένη ψηφιακή πηγή που μπορεί να είναι είτε υψηλό (ενεργό) στα 5 V, είτε χαμηλό (απενεργοποιημένο) στα 0 V, μπορούμε να χρησιμοποιήσουμε PWM με κύκλο λειτουργίας 40%. Θα παρέχει έξοδο 5V για το 40% του χρόνου. Εάν το ψηφιακό σήμα ανακυκλώνεται αρκετά γρήγορα, τότε η τάση που φαίνεται στην έξοδο φαίνεται να είναι η μέση τάση. Εάν το ψηφιακό χαμηλό είναι 0V (που συνήθως συμβαίνει), τότε η μέση τάση μπορεί να υπολογιστεί λαμβάνοντας την ψηφιακή υψηλή τάση πολλαπλασιασμένη με τον κύκλο λειτουργίας ή 5V x 0,4 = 2V.

 

Τώρα, ας δούμε το PWM στο Arduino.

PWM Pins του Arduino Uno

Το Arduino Uno διαθέτει 6 κανάλια PWM 8-bit. Οι ακίδες με το σύμβολο ‘~’αντιπροσωπεύουν ότι έχει υποστήριξη PWM. Αυτές οι ακίδες PWM φαίνονται στην παρακάτω εικόνα.

Λεπτομέρειες ακίδων Arduino PWM

 

Λειτουργίες Arduino για PWM

analogWrite (pin, duty cycle)

Χρησιμοποιείται για τη δημιουργία PWM ή για την έξοδο αναλογικής τιμής σε ένα καθορισμένο κανάλι PWM.

pin– pin στην οποία θέλουμε να δημιουργήσουμε pwm ή αναλογικό σήμα.

duty cycle– βρίσκεται μεταξύ 0 (0%, πάντα απενεργοποιημένο) – 255 (100%, πάντα αναμμένο).

e.g. analogWrite (3, 127//generates pwm of 50% duty cycle

 

Ξεθώριασμα LED με χρήση Arduino PWM

Ας δημιουργήσουμε μια μικρή εφαρμογή στην οποία το led θα ξεθωριάζει συνεχώς. Αυτή η εφαρμογή led fading που χρησιμοποιείται για διακόσμηση σε εκδηλώσεις και φεστιβάλ.

Διεπαφή LED στο Arduino Uno

Ξεθώριασμα LED με χρήση Arduino

 

Έργο για ξεθώριασμα LED χρησιμοποιώντας Arduino PWM

int led = 6;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

void setup() {
  pinMode(led, OUTPUT); // declare pwm pin to be an output:
}

void loop() {
  analogWrite(led, brightness); // set the brightness of led

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }  
  delay(30);  // wait for 30 milliseconds to see the dimming effect
}

 

Ελέγξτε τη φωτεινότητα των LED χρησιμοποιώντας ένα ποτενσιόμετρο

Ας δημιουργήσουμε μια εφαρμογή στην οποία θα ελέγχουμε τη φωτεινότητα του led χρησιμοποιώντας το Arduino μεταβάλλοντας το κουμπί του ποτενσιόμετρου. Έτσι, όταν περιστρέφουμε το κουμπί του ποτενσιόμετρου, το ADC του Arduino θα διαβάσει αυτό το αναλογικό σήμα. Στη συνέχεια θα δημιουργήσουμε σήμα PWM ανάλογο με το αναλογικό σήμα.

Διάγραμμα διεπαφής

Έλεγχος φωτεινότητας LED με χρήση ποτενσιόμετρου με Arduino


Κωδικός για τον έλεγχο της φωτεινότητας των LED με χρήση arduino

int ledPin = 6;      // LED connected to digital pin 9
int analogPin = A0;  // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setup()
{
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}

void loop()
{
  val = analogRead(analogPin); // read the input pin
  analogWrite(ledPin, val / 4);// analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Tmp36GZ θερμόμετρο με LCD οθόνη

 Tmp36GZ με LCD οθόνη // Define to which pin of the Arduino the output of the TMP36 is connected: #include <LiquidCrystal_I2C.h> // Look for LiquidCrystal I2C library by Marco Schwartz LiquidCrystal_I2C lcd ( 0x 27 , 16 , 2 ) ;  // set the LCD address to 0x3F for a 16 chars and 2 line display #define sensorPin A0 void setup () {   // Begin serial communication at a baud rate of 9600:   Serial . begin ( 9600 ) ;   lcd . init () ;   lcd . clear () ;           lcd . backlight () ;      // Make sure backlight is on     // Print a message on both lines of the LCD.   lcd . setCursor ( 2 , 0 ) ;   //Set cursor to character 2 on line 0   lcd . print ( "Hello world!" ) ;     lcd . setCursor ( 2 , 1 ) ;   //Move cursor to character 2 on line 1   lcd . print ( "LCD Tutorial" ) ; } void loop () {   // Get a reading from the temperature sensor:   int reading ...

Πώς να χρησιμοποιήσετε ένα Breadboard

  Πώς να χρησιμοποιήσετε ένα Breadboard Το breadboard έχει εσωτερικές συνδέσεις μεταξύ των οπών του. Μερικές κάθετες συνδέσεις και μερικές οριζόντιες συνδέσεις. Κανονικά, χρησιμοποιείτε τις κολώνες στα πλάγια για να συνδέσετε το τροφοδοτικό σας. Και χρησιμοποιείτε τις σειρές στη μέση για να συνδέσετε τα στοιχεία σας. Στήλες Τροφοδοτικού Είναι σύνηθες να χρησιμοποιείτε τις στήλες στα αριστερά και δεξιά για τη σύνδεση του τροφοδοτικού. Αυτές οι στήλες συνδέονται κάθετα. Έτσι, εάν συνδέσετε 5 βολτ στην επάνω οπή μιας από τις πλευρικές κολώνες, θα έχετε 5 βολτ σε όλες τις οπές αυτής της στήλης. Χρησιμοποιήστε τις στήλες που επισημαίνονται με κόκκινη γραμμή για το συν και τη στήλη με μπλε γραμμή για το μείον. Τέλος φόρμας Σημείωση: Μερικές μεγαλύτερες πλάκες   breadboard χωρίζονται στα δύο έτσι ώστε το πάνω μισό να αποσυνδεθεί από το κάτω μισό. Αυτό υποδεικνύεται από τις κατακόρυφες μπλε και κόκκινες γραμμές που χωρίζονται στα δύο.   Περιοχή Συστατικού Σ...