Inhaltsverzeichnis:
- Schritt 1: Auswahl des Mikrocontrollers
- Schritt 2: CCP-MODUL KONFIGURIEREN
- Schritt 3: Konfigurieren des Timer2-Moduls (TMR2-Register)
- Schritt 4: Konfigurieren von PR2 (Timer2 Periodenregister)
- Schritt 5: CCPR1l-Modul konfigurieren
- Schritt 6: Schreiben Sie die Skizze auf Ihre MPLAB X IDE, der Code wird unten angegeben
Video: PWM-Welle mit PIC-Mikrocontroller generieren - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
WAS IST PWM?
PWM STEHT FÜR PULSE WIDTH MODULATION ist eine Technik, mit der die Breite des Impulses variiert wird.
Um dieses Konzept klar zu verstehen, betrachten Sie einen Taktimpuls oder ein beliebiges Rechteckwellensignal, das einen Arbeitszyklus von 50% hat, was bedeutet, dass die Ton- und Toff-Periode gleich sind. Die Gesamtdauer, für die das Signal hoch und die Dauer für das Signal niedrig war, wird als Gesamt bezeichnet Zeitraum.
Für das oben gezeigte Bild hat diese Welle ein Tastverhältnis von 50%
Arbeitszyklus = (ON-Zeit / Gesamtzeit)*100
EIN-Zeit - Zeit, für die das Signal hoch war
AUS-Zeit - Zeit, für die das Signal niedrig war Gesamtzeit -Gesamtzeitdauer des Impulses (sowohl EIN- als auch AUS-Zeit)
Schritt 1: Auswahl des Mikrocontrollers
Die Auswahl des geeigneten Mikrocontrollers für das Projekt ist der wesentliche Teil des Projekts PWM-Signale können in Mikrocontrollern mit PWM-Kanälen (CCP-Registern) erzeugt werden. Für dieses Projekt plane ich, bei pic16f877 zu bleiben. Sie können den Datenblatt-Link herunterladen, der unten angegeben ist
PIC16F877a Datenblatt hier klicken
Das CCP-Modul ist für die Erzeugung des PWM-Signals verantwortlich. CCP1 und CCP2 werden mit PORTC gemultiplext. PORTC ist ein 8-Bit breiter bidirektionaler Port. Das entsprechende Datenrichtungsregister ist TRISC. Durch Setzen des TRISC-Bits (=1) wird der entsprechende PORTC-Pin als Eingang verwendet. Das Löschen eines TRISC-Bits (=0) macht den entsprechenden PORTC-Pin zu einem Ausgang.
TRISC = 0; //Das Löschen dieses Bits macht PORTC als Ausgabe
Schritt 2: CCP-MODUL KONFIGURIEREN
CCP - ERFASSEN/VERGLEICHEN/PWM-MODULE
Jedes Capture/Compare/PWM (CCP)-Modul enthält ein 16-Bit-Register, das als:
• 16-Bit-Capture-Register
• 16-Bit-Vergleichsregister
• PWM-Master/Slave-Tastverhältnisregister
Konfigurieren Sie das CCP1CON-Register auf den PWM-Modus
Registrieren Beschreibung
CCPxCON Dieses Register wird verwendet, um das CCP-Modul für den Capture/Compare/PWM-Betrieb zu konfigurieren.
CCPRxL Dieses Register enthält die 8-Msb-Bits von PWM, die unteren 2-Bits sind Teil des CCPxCON-Registers.
TMR2 Freilaufender Zähler, der mit CCPR1L und PR2 zur Erzeugung des PWM-Ausgangs verglichen wird.
Jetzt werde ich binär verwenden, um die Bits zum Konfigurieren des CCP1CON-Registers darzustellen.
siehe das Bild oben.
CCP1CON = 0b00001111;
Sie können auch das Hex-Format verwenden
CCP1CON = 0x0F; // CCP1CON-Register für PWM-Modus konfigurieren
Schritt 3: Konfigurieren des Timer2-Moduls (TMR2-Register)
Timer2 ist ein 8-Bit-Timer mit einem Prescaler und einem Postscaler. Sie kann als PWM-Zeitbasis für den PWM-Modus des/der CCP-Moduls verwendet werden. Das TMR2-Register ist lesbar und beschreibbar und wird bei jedem Geräte-Reset gelöscht.
T2CON-Register wird angezeigt
Prescale und Postscale passen die Ausgangsfrequenz der erzeugten PWM-Welle an.
Frequenz = Taktfrequenz/(4*Prescaler*(PR2-TMR2)*Postscaler*count)
Wobei Tout = 1/Frequenz
T2CON = 0b00000100;
Dies erzeugt 2,5 KHz @ 1Mhz oder 100KHz @ 4MHz Quarz (praktisch gibt es eine Beschränkung für diese PWM-Frequenz, siehe spezielles Datenblatt für weitere Details)
Hex-Darstellung
T2CON = 0x04; // T2CON ohne Prescaler- und Postscale-Konfiguration aktivieren
Schritt 4: Konfigurieren von PR2 (Timer2 Periodenregister)
Das Modul Timer2 verfügt über ein 8-Bit-Periodenregister PR2. Timer2 inkrementiert von 00h, bis er mit PR2 übereinstimmt, und wird dann beim nächsten Inkrementierungszyklus auf 00h zurückgesetzt. PR2 ist ein lesbares und beschreibbares Register. Das PR2-Register wird beim Zurücksetzen auf FFh initialisiert.
Durch Einstellen eines geeigneten Bereichs für PR2 kann das Tastverhältnis der erzeugten PWM-Welle geändert werden
PR2 = 100; // Stellen Sie die Zykluszeit auf 100 ein, um das Tastverhältnis von 0-100. zu variieren
Der Einfachheit halber verwende ich PR2 = 100, indem ich CCPR1L = 80 mache; 80% Arbeitszyklus kann erreicht werden.
Schritt 5: CCPR1l-Modul konfigurieren
Da PR2 = 100, kann CCPR1l irgendwo zwischen 0-100 konfiguriert werden, um den gewünschten Arbeitszyklus zu erhalten.
Schritt 6: Schreiben Sie die Skizze auf Ihre MPLAB X IDE, der Code wird unten angegeben
#enthalten
void delay(int a) //Funktion zum Erzeugen einer Verzögerung{
for(int i=0; i<a;i++)
{
for(int j=0;j<144;j++);
}
}
void main()
{TRISC = 0; //Das Löschen dieses Bits macht PORTC als Ausgabe.
CCP1CON = 0x0F; // CCP1CON-Register für PWM-Modus konfigurieren
T2CON = 0x04; // T2CON ohne Prescaler- und Postscale-Konfiguration aktivieren.
PR2 = 100; // Stellen Sie die Zykluszeit auf 100 ein, um das Tastverhältnis von 0-100. zu variieren
während(1){
CCPR1L = 75; // erzeugte 75% Arbeitszyklusverzögerung (1);
}
}
Ich habe auch eine kleine Änderung am Code vorgenommen, damit die Frequenz der erzeugten PWM-Welle
Dieser Code wird in Proteus simuliert und die Ausgangs-PWM-Welle wird unten gezeigt. Um dies auf Ihre Bildentwicklungsboards hochzuladen, verwenden Sie #include mit geeigneten Konfigurationsbits.
Dankeschön
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
So generieren Sie Gerber-Dateien aus Eagle 9 – wikiHow
So generieren Sie Gerber-Dateien von Eagle 9: In diesem anweisbaren zeige ich Ihnen, wie Sie Gerber-Dateien von Eagle CAD Version 9 und höher generieren und Ihre Leiterplatten mit den Gerber-Dateien bestellen können
Drahtlose Kommunikation mit billigen 433MHz-HF-Modulen und Pic-Mikrocontrollern. Teil 2: 4 Schritte (mit Bildern)
Drahtlose Kommunikation mit billigen 433MHz-HF-Modulen und Pic-Mikrocontrollern. Teil 2: Im ersten Teil dieser Anleitung habe ich gezeigt, wie man einen PIC12F1822 mit MPLAB IDE und XC8-Compiler programmiert, um einen einfachen String drahtlos mit billigen TX / RX 433 MHz-Modulen zu senden. Das Empfängermodul wurde über einen USB mit UART TTL verbunden Kabel-Werbung