Taula de continguts:
- Pas 1: Generació del senyal Pwm per a 50Hz
- Pas 2: Programa Arduino per al cicle de treball variable
- Pas 3: Alternar els pins Arduino a 50Hz
- Pas 4: conduir un pont H i filtrar el senyal Pwm
Vídeo: Arduino Sinewave per a inversors: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
En aquest projecte he generat un senyal SPWM (pols d'ona sinusoïdal modulada) a partir de dues sortides digitals arduino pwm.
Com que per fer aquest programa he de parlar de moltes altres funcions i propietats de l’arduino, el projecte complet incloent imatges d’oscil·loscopi i per a diferents freqüències, si us plau visiteu el meu lloc web:
eprojectszone
Pas 1: Generació del senyal Pwm per a 50Hz
Per generar un senyal de 50Hz a major freqüència és necessari fer alguns càlculs. Les freqüències d'arduino poden ser a 8 MHz, però volem un senyal amb cicle de treball variable.
Per entendre els tipus de cicles de treball variables d’arduino, podeu llegir aquestes 3 parts del mateix post 1, 2 i 3.
Suposem que la nostra freqüència és de 50 Hz, és a dir, el període de temps és de 20 ms. Per tant, 10 ms és un període de mig cicle. En aquests 10 ms hem de tenir molts impulsos amb cicles de treball diferents, començant per cicles de treball petits, al mig del senyal tenim cicles de treball màxims i acabem també amb cicles de treball petits. Per generar una ona sinusoïdal utilitzarem dos pins un per mig cicle positiu i un de mig cicle negatiu. A la nostra publicació per a això fem servir els pins 5 i 6, que vol dir temporitzador 0.
Per a un senyal suau, escollim la fase correcta de pwm a una freqüència de 31372 Hz (veure publicació anterior). Un dels problemes més grans és que calculem el cicle de treball necessari per a cada impuls. Per tant, com que la nostra freqüència és f = 31372Hz, el període per a cada impuls és T = 1/31372 = 31,8 us, de manera que el nombre d’impulsos per a mig cicle és N = 10ms / 31,8us = 314 impulsos. Ara per calcular el cicle de treball per a cada pols tenim y = sinx, però en aquesta equació necessitem graus, de manera que el mig cicle té 180 graus per 314 polsos. Per a cada pols tenim 180/314 = 0,57deg / pols. Això significa que per cada pols avancem amb 0,57 graus.
y és el cicle de treball i x el valor de la posició en mig cicle de treball. al principi x és 0, després que x = 0,57, x = 1,14 i així successivament fins a x = 180.
si calculem tots els 314 valors obtindrem una matriu de 314 elements (escriviu "int" per calcular-lo més fàcilment per arduino).
Aquesta matriu és:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Podeu veure que, com una ona sinusoïdal, el cicle de treball és més baix al primer i últim element i més alt al mig.
Pas 2: Programa Arduino per al cicle de treball variable
A la imatge superior tenim senyals de cicles de treball variables amb valors de la matriu.
Però, com fer aquest senyal ??
la part del programa següent utilitza les interrupcions per canviar els valors dels cicles de treball
sei (); // habilita les interrupcions
}
ISR (TIMER1_COMPA_vect) {// interrompre quan el temporitzador 1 coincideix amb el valor OCR1A
if (i> 313 && OK == 0) {// valor final del vector per al pin 6
i = 0; // anar al primer valor del vector (matriu)
OK = 1; // activa el pin 5
}
x = sinPWM ; // x pren el valor del vector corresponent a la posició i (i és zero indexat) -valor del cicle de treball
i = i + 1; // passa a la següent posició
}
Pas 3: Alternar els pins Arduino a 50Hz
Perquè cada pin genera només un cicle de mitjà treball per fer una ona sinusoïdal completa, fem servir dos pins que s’alternen un darrere l’altre després de 10 segons exactes (per 50Hz). Aquest canvi de pins es realitza al final de la matriu; després de dir que el pin 5 ha generat 314 polsos, aquest pin està apagat i activat el pin 6, cosa que fa el mateix però per al cicle de treball negatiu.
Com que arduino només pot generar senyals positius, el cicle de treball negatiu es fa al pont h; aquí podeu llegir-ne
El programa per canviar els pins:
sei (); // habilita les interrupcions
}
ISR (TIMER1_COMPA_vect) {// interrompre quan el temporitzador 1 coincideix amb el valor OCR1A
if (i> 313 && OK == 0) {// valor final del vector per al pin 6
i = 0; // anar al primer valor del vector
OK = 1; // activa el pin 5
}
if (i> 313 && OK == 1) {// valor final del vector per al pin 5
i = 0; // anar al primer valor del vector
OK = 0; // activa el pin 6
}
x = sinPWM ; // x pren el valor del vector corresponent a la posició i (i és zero indexat)
i = i + 1; // passa a la següent posició
if (D'acord == 0) {
OCR0B = 0; // fes el pin 5 0
OCR0A = x; // habilita el pin 6 al cicle de treball corresponent
if (D'acord == 1) {
OCR0A = 0; // fes el pin 6 0
OCR0B = x; // habilita el pin 5 al cicle de treball corresponent
}
}
Pas 4: conduir un pont H i filtrar el senyal Pwm
Els senyals obtinguts d’arduino són la part de control per a aplicacions d’inversors perquè tots dos són positius. Per fer una ona sinusoïdal completa i un pràctic inversor hem d’utilitzar un pont h i netejar el pwm un filtre de pas baix.
El pont H es presenta aquí.
El filtre de pas baix provat amb petits motors AC és aquí.
Recomanat:
VentMan Part II: Detecció de forns automatitzats per Arduino per a ventiladors de reforç: 6 passos
VentMan Part II: Detecció de forns automatitzats per Arduino per a ventiladors de reforç: Punts principals: es va fer un pirateig temporal per detectar quan funcionava el motor del ventilador de CA / forn, de manera que els meus dos ventiladors de reforç podien encendre’s. Necessito dos ventiladors de reforç a la meva canalització per empènyer més aire calent / fred dos dos dormitoris aïllats. Però jo
Flipperkonsole per a consola Flipper / Pinball per a PC Pinballs per a PC: 9 passos
Flipperkonsole for PC Flipper / Pinball Console for PC Pinballs: Das istine your USB basi Spielkonsole for PC-Flipperkästen. Die Spannungsversorgung erfolgt über das USB Kabel. S'implementen els botons Flipper i el botó d'inici. Zusätzlich ist ein stossen von unten, von links und von rechts implem
Com veure tots els passos per defecte - PER E MÉS FÀCIL !!!: 5 passos
Com veure tots els passos per defecte - PER E MÉS FÀCIL !!!: Alguns de vosaltres ja ho saben, però només ho publico per si alguns no han vist la nova actualització i en veuen l’altra instructible. Espero que els agradi! O sí? Material necessari: ordinador Resistència de 130 ohm 2x 5mm llums LED blaus
Suport per a corretges per a portàtils: per a sofà o llit: 5 passos
Suport per a corretges per a portàtils: per a sofà o llit: això és el que he fet després de mesos esforçant-me el coll mentre mirava el portàtil quan estava assegut al sofà. Realment només funciona si t’asseus com jo quan estic al sofà, caigut enrere amb els peus recolzats a la taula de cafè .. Però, també és h
Comandament de vídeo per a nens petits per a reproductor de vídeo per a PC: 6 passos
Comandament de vídeo per a nens petits per a reproductor de vídeo per a PC: construeixo un comandament a distància que es connecta a un PC amb USB. El gran comandament a distància permet al meu nen petit seleccionar i reproduir vídeos en un equip antic. Aquest és un projecte relativament senzill. El component principal és un teclat USB o un teclat USB sense fils. Llavors