Sommario:
- Passaggio 1: selezione del microcontrollore
- Passaggio 2: CONFIGURAZIONE DEL MODULO CCP
- Passaggio 3: configurazione del modulo Timer2 (registro TMR2)
- Fase 4: Configurazione di PR2 (Registro Periodo Timer2)
- Passaggio 5: configurare il modulo CCPR1l
- Passaggio 6: scrivi lo schizzo su di te MPLAB X IDE il codice viene fornito qui sotto
Video: Generare un'onda PWM con il microcontrollore PIC: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
CHE COS'È IL PWM?
PWM STAND FOR PULSE WIDTH MODULATION è una tecnica mediante la quale la larghezza dell'impulso viene variata.
Per comprendere questo concetto, considera chiaramente un impulso di clock o qualsiasi segnale ad onda quadra che ha un ciclo di lavoro del 50% che significa che il periodo Ton e Toff è lo stesso, La durata totale per cui il segnale era alto e la durata per cui il segnale era basso è chiamata totale periodo di tempo.
Per l'immagine mostrata sopra questa onda ha un duty cycle del 50%
Ciclo di lavoro = (tempo ON / Tempo totale)*100
Tempo ON - tempo per il quale il segnale era alto
Tempo OFF - tempo per cui il segnale era basso Tempo totale - Periodo di tempo totale dell'impulso (sia tempo ON che tempo OFF)
Passaggio 1: selezione del microcontrollore
Selezionando il microcontrollore appropriato per il progetto questa è la parte essenziale del progetto I segnali PWM possono essere generati in microcontrollori con canali PWM (registri CCP). Per questo progetto ho intenzione di restare con pic16f877. è possibile scaricare il collegamento alla scheda tecnica è riportato di seguito
Scheda tecnica PIC16F877a clicca qui
Il modulo CCP è responsabile della produzione del segnale PWM. CCP1 e CCP2 sono multiplexati con PORTC. PORTC è una porta bidirezionale a 8 bit. Il registro di direzione dei dati corrispondente è TRISC. L'impostazione del bit TRISC (=1) farà prendere il corrispondente pin PORTC come input. La cancellazione di un bit TRISC (=0) renderà il corrispondente pin PORTC un'uscita.
TRISC = 0; //La cancellazione di questo bit renderà PORTC come output
Passaggio 2: CONFIGURAZIONE DEL MODULO CCP
CCP - CATTURA/CONFRONTA/MODULI PWM
Ciascun modulo Capture/Compare/PWM (CCP) contiene un registro a 16 bit che può funzionare come:
• Registro di cattura a 16 bit
• Registro di confronto a 16 bit
• Registro PWM Master/Slave Duty Cycle
Configurare il registro CCP1CON in modalità PWM
Registrati Descrizione
CCPxCON Questo registro viene utilizzato per configurare il modulo CCP per l'operazione Capture/Compare/PWM.
CCPRxL Questo registro contiene i bit da 8 Msb di PWM, i 2 bit inferiori faranno parte del registro CCPxCON.
TMR2 Contatore di corsa libera che verrà confrontato con CCPR1L e PR2 per la generazione dell'uscita PWM.
Ora userò il binario per rappresentare i bit per configurare il registro CCP1CON.
fare riferimento all'immagine sopra.
CCP1CON = 0b00001111;
Puoi anche formattare esadecimale
CCP1CON = 0x0F; //configurazione del registro CCP1CON per la modalità PWM
Passaggio 3: configurazione del modulo Timer2 (registro TMR2)
Timer2 è un timer a 8 bit con un prescaler e un postscaler. Può essere utilizzato come base dei tempi PWM per la modalità PWM dei moduli CCP. Il registro TMR2 è leggibile e scrivibile e viene azzerato su qualsiasi dispositivo Reset.
Viene visualizzato il registro T2CON
La prescala e la postscala regoleranno la frequenza di uscita dell'onda PWM generata.
Frequenza = frequenza di clock/(4*prescaler*(PR2-TMR2)*Postscaler*count)
Dove Tout = 1/frequenza
T2CON = 0b00000100;
Questo genererà 2,5 KHz @ 1 Mhz o 100 KHz @ 4 MHz cristallo (praticamente c'è una limitazione per questa frequenza PWM, fare riferimento alla scheda tecnica specifica per maggiori dettagli)
rappresentazione esadecimale
T2CON = 0x04; // abilita T2CON senza configurazione di prescaler e postscale
Fase 4: Configurazione di PR2 (Registro Periodo Timer2)
Il modulo Timer2 ha un registro di periodo a 8 bit, PR2. Il timer2 aumenta da 00h fino a quando non corrisponde a PR2 e quindi si ripristina a 00h al ciclo di incremento successivo. PR2 è un registro leggibile e scrivibile. Il registro PR2 viene inizializzato a FFh al Reset.
L'impostazione di un intervallo appropriato per PR2 consentirà di modificare il ciclo di lavoro dell'onda PWM generata
PR2 = 100; // Imposta il tempo di ciclo su 100 per variare il ciclo di lavoro da 0-100
Per semplicità utilizzo PR2=100 facendo CCPR1L = 80; È possibile ottenere un ciclo di lavoro dell'80%.
Passaggio 5: configurare il modulo CCPR1l
Poiché PR2 = 100 CCPR1l può essere configurato ovunque tra 0-100 per ottenere il ciclo di lavoro desiderato.
Passaggio 6: scrivi lo schizzo su di te MPLAB X IDE il codice viene fornito qui sotto
#includere
void delay(int a) //funzione per generare ritardo{
for(int i=0; i<a;i++)
{
for(int j=0;j<144;j++);
}
}
vuoto principale()
{ TRISC = 0; //La cancellazione di questo bit renderà PORTC come output.
CCP1CON = 0x0F; //configurazione del registro CCP1CON per la modalità PWM
T2CON = 0x04; // abilita T2CON senza configurazione di prescaler e postscale.
PR2 = 100; // Imposta il tempo di ciclo su 100 per variare il ciclo di lavoro da 0-100
mentre(1){
CCPR1L = 75; //ha generato un ritardo del ciclo di lavoro del 75%(1);
}
}
Ho anche apportato una piccola modifica al codice in modo che la frequenza dell'onda PWM generata
Questo è il codice simulato in proteus e l'onda PWM in uscita è mostrata di seguito Per caricarlo sulle schede di sviluppo delle immagini utilizzare #include con i bit di configurazione adeguati.
Grazie
Consigliato:
Generare arte dai commenti: 5 passaggi (con immagini)
Generare arte dai commenti: questo progetto è ambizioso, in cui vogliamo utilizzare alcune delle parti più discutibili di Internet, sezioni di commenti e chat room, per creare arte. Vogliamo anche rendere il progetto facilmente accessibile in modo che chiunque possa cimentarsi nel generare
Fai da te un circuito NE555 per generare un'onda sinusoidale: 6 passaggi
Fai da te un circuito NE555 per generare un'onda sinusoidale: questo tutorial ti insegna come creare un circuito NE555 fai-da-te per generare un'onda sinusoidale. Questo conveniente kit fai-da-te è molto utile per capire come possono funzionare i condensatori con i resistori per controllare il tempo di carica e scarica che per generare
Braccio robotico basato su microcontrollore PIC: 6 passaggi (con immagini)
Braccio robotico basato su microcontrollore PIC: dalla catena di montaggio delle industrie manifatturiere automobilistiche ai robot per la telechirurgia nello spazio, i bracci robotici si trovano ovunque. I meccanismi di questi robot sono simili a quelli di un essere umano che può essere programmato per funzioni simili e aumenta
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del programma di lampeggio dei LED.: 5 passaggi
Configurazione dei fusibili del microcontrollore AVR. Creazione e caricamento nella memoria flash del microcontrollore del LED lampeggiante Program.: In questo caso creeremo un semplice programma in codice C e lo masterizzeremo nella memoria del microcontrollore. Scriveremo il nostro programma e compileremo il file esadecimale, utilizzando Atmel Studio come piattaforma di sviluppo integrata. Configurare il fusibile bi
Skateboard con microcontrollore PIC e LED: 8 passaggi (con immagini)
Skateboard con microcontrollore PIC e LED: cosa ottieni quando un ingegnere elettrico costruisce uno skateboard da zero per il regalo di Natale di un bambino di 13 anni? Ottieni uno skateboard con otto LED bianchi (fanali), otto LED rossi (luci posteriori) tutti controllati tramite microcontrollore PIC! e io migo