Cuprins:
- Pasul 1: Generarea semnalului Pwm pentru 50Hz
- Pasul 2: Programul Arduino pentru ciclul de funcționare variabilă
- Pasul 3: alternare la 50Hz Pin Arduino
- Pasul 4: Conducerea unui pod H și filtrarea semnalului Pwm
Video: Arduino Sinewave pentru invertoare: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
În acest proiect am generat un semnal SPWM (impuls de undă sinusoidală larg modulat) de la două ieșiri digitale arduino pwm.
Deoarece pentru a crea un astfel de program, trebuie să vorbesc despre multe alte funcții și proprietăți ale arduino, proiectul complet, inclusiv imagini de osciloscop și pentru diferite frecvențe, vă rugăm să vizitați site-ul meu web:
eprojectszone
Pasul 1: Generarea semnalului Pwm pentru 50Hz
Pentru a genera un semnal de 50Hz la o frecvență mai mare, este necesar să faceți câteva calcule. Frecvențele de la arduino pot fi la 8 MHz, dar dorim un semnal cu ciclu de funcționare variabil.
Pentru a înțelege tipurile de cicluri variabile ale arduino puteți citi aceste 3 părți ale aceluiași post 1, 2 și 3.
Să presupunem că frecvența noastră este de 50Hz, ceea ce înseamnă că perioada de timp este de 20 ms. Deci 10 ms este perioada de jumătate de ciclu. În acei 10 ms trebuie să avem multe impulsuri cu cicluri de sarcină diferite începând cu cicluri de sarcină mici, în mijlocul semnalului avem cicluri de sarcină maxime și terminăm și cu cicluri de sarcină mici. Pentru a genera o undă sinusoidală vom folosi doi pini unul pentru jumătate de ciclu pozitiv și unul pentru jumătate de ciclu negativ. În postarea noastră pentru aceasta folosim pinii 5 și 6, ceea ce înseamnă Timer 0.
Pentru un semnal neted, alegem fm corectă la o frecvență de 31372 Hz - vezi postarea anterioară. Una dintre cele mai mari probleme este modul în care calculăm ciclul de funcționare necesar pentru fiecare impuls. Deci, deoarece frecvența noastră este f = 31372Hz, perioada pentru fiecare impuls este T = 1/31372 = 31,8 us, deci numărul de impulsuri pentru un semiciclu este N = 10ms / 31,8us = 314 impulsuri. Acum, pentru a calcula ciclul de funcționare pentru fiecare impuls, avem y = sinx, dar în această ecuație avem nevoie de grade, astfel încât jumătate de ciclu are 180 de grade pentru 314 impulsuri. Pentru fiecare impuls avem 180/314 = 0,57deg / impuls. Asta înseamnă că pentru fiecare impuls mergem înainte cu 0,57 grade.
y este ciclul de lucru și x valoarea poziției în jumătate de ciclu de lucru. la început x este 0, după care x = 0,57, x = 1,14 și așa mai departe până la x = 180.
dacă calculăm toate cele 314 de valori, obținem o matrice de 314 de elemente (tastați "int" pentru a fi calculat mai ușor de către arduino).
O astfel de matrice este:
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};
Puteți vedea că, ca o undă sinusoidală, ciclul de funcționare este cel mai mic la primul și ultimul element și cel mai mare la mijloc.
Pasul 2: Programul Arduino pentru ciclul de funcționare variabilă
În imaginea de mai sus avem semnale cu cicluri de funcționare variabile cu valori din matrice.
Dar cum să faci un astfel de semnal ??
partea programului de mai jos se întrerupe pentru a modifica valorile ciclurilor de funcționare
sei (); // activate interrupts
}
ISR (TIMER1_COMPA_vect) {// întrerupe când timerul 1 se potrivește cu valoarea OCR1A
if (i> 313 && OK == 0) {// valoarea finală din vector pentru pinul 6
i = 0; // mergeți la prima valoare a vectorului (matrice)
OK = 1; // activați pinul 5
}
x = sinPWM ; // x ia valoarea din vectorul corespunzător poziției i (i este zero indexat) -valoarea ciclului de funcționare
i = i + 1; // treceți la următoarea poziție
}
Pasul 3: alternare la 50Hz Pin Arduino
Pentru că fiecare pin generează doar un ciclu de jumătate de sarcină pentru a face o undă sinusoidală completă, folosim doi pini care alternează unul după altul după 10 msecunde exacte (pentru 50Hz). Această schimbare a pinilor se face la sfârșitul matricei - după ce să presupunem că pinul 5 a generat 314 impulsuri, acest pin este oprit și activat pinul 6, ceea ce face același lucru, dar pentru ciclul de funcționare negativ.
Deoarece arduino poate genera numai semnale pozitive, ciclul de funcționare negativ este realizat în h bridge - puteți citi aici despre el
Programul pentru schimbarea pinilor:
sei (); // activate interrupts
}
ISR (TIMER1_COMPA_vect) {// întrerupe când timerul 1 se potrivește cu valoarea OCR1A
if (i> 313 && OK == 0) {// valoarea finală din vector pentru pinul 6
i = 0; // mergeți la prima valoare a vectorului
OK = 1; // activați pinul 5
}
if (i> 313 && OK == 1) {// valoarea finală din vector pentru pinul 5
i = 0; // mergeți la prima valoare a vectorului
OK = 0; // activați pinul 6
}
x = sinPWM ; // x ia valoarea din vectorul corespunzător poziției i (i este zero indexat)
i = i + 1; // treceți la următoarea poziție
if (OK == 0) {
OCR0B = 0; // faceți pinul 5 0
OCR0A = x; // activați pinul 6 la ciclul de funcționare corespunzător
if (OK == 1) {
OCR0A = 0; // faceți pinul 6 0
OCR0B = x; // activați pinul 5 la ciclul de funcționare corespunzător
}
}
Pasul 4: Conducerea unui pod H și filtrarea semnalului Pwm
Semnalele obținute de la arduino sunt partea de control pentru aplicațiile invertorului, deoarece ambele sunt pozitive. Pentru a realiza o undă sinusoidală completă și un invertor practic, trebuie să folosim un pod h și pentru a șterge pwm un filtru trece jos.
Podul H este prezentat aici.
Filtrul trece-jos testat cu motoare AC mici.
Recomandat:
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE PENTRU ANIMALE PENTRU ANIMALE: 9 pași
DISTRIBUITOR AUTOMAT DE ALIMENTE PENTRU ANIMALE: Ai simțit vreodată că ai pierdut prea mult timp hrănindu-ți animalul? A trebuit vreodată să suni pe cineva să-ți hrănească animalele de companie în timp ce erai în vacanță? Am încercat să rezolv aceste două probleme cu proiectul meu actual de școală: Petfeed
Lumina reactivă pentru muzică -- Cum să faci lumină reactivă pentru muzică super simplă pentru a face desktop-ul grozav .: 5 pași (cu imagini)
Muzică lumină reactivă || Cum să facem muzică super simplă lumină reactivă pentru a face desktopul grozav. basul care este de fapt semnal audio de joasă frecvență. Este foarte simplu de construit. Vom
Telecomandă pentru copii mici pentru video player pentru PC: 6 pași
Telecomandă video pentru copii mici pentru player video PC: Construiesc o telecomandă care se conectează la un computer cu USB. Telecomanda mare permite copilului meu să aleagă și să redea videoclipuri pe un computer vechi. Acesta este un proiect relativ simplu. Componenta de bază este fie o tastatură USB, fie o tastatură USB fără fir. Apoi
Instrucțiuni pentru realizarea unui atașament de legătură cu patru bare pentru suportul pentru picioare montat în centru: 9 pași (cu imagini)
Instrucțiuni pentru realizarea unui atașament de legătură cu patru bare pentru suportul pentru picioare montat în centru: scaunele cu roți cu putere medie (PWC) au devenit mai populare în ultimii ani. Cu toate acestea, datorită amplasării roților din față, suporturile tradiționale montate lateral au fost înlocuite cu un singur suport pentru picioare montat central. Din păcate, center-mou
Suport pentru hârtie pentru laptop, cel mai ieftin suport pentru laptop posibil: 4 pași
Suport pentru hârtie pentru laptop, cel mai ieftin suport pentru laptop posibil: se întâmplă să iubesc cutremurul 3 și mă îngrijorez cu privire la durabilitatea MacBook-ului meu. Nu am niciodată ideea de a cumpăra aceste suporturi pentru laptop cu ventilatoare, deoarece MacBook-urile nu au deloc găuri în partea de jos. Mă gândeam că acele jumătăți de bile ar putea să-mi îndoaie laptopul c