Obsah:
- Krok 1: Generovanie signálu Pwm pre 50 Hz
- Krok 2: Program Arduino pre variabilný pracovný cyklus
- Krok 3: Striedanie na 50 Hz pinoch Arduino
- Krok 4: Jazda na moste H a filtrovanie signálu Pwm
Video: Arduino sinewave pre meniče: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
V tomto projekte som vygeneroval signál SPWM (sínusový impulz so širokou moduláciou) z dvoch digitálnych výstupov arduino pwm.
Pretože na to, aby som mohol vytvoriť taký program, musím hovoriť o mnohých ďalších funkciách a vlastnostiach arduina, celého projektu vrátane obrázkov osciloskopu a pre rôzne frekvencie navštívte moju webovú stránku:
eprojectszone
Krok 1: Generovanie signálu Pwm pre 50 Hz
Na generovanie signálu 50 Hz na vyššej frekvencii je potrebné vykonať niekoľko výpočtov. Frekvencie z arduina môžu byť 8 MHz, ale chceme signál s premenlivým pracovným cyklom.
Aby ste pochopili typy variabilných pracovných cyklov arduina, môžete si prečítať tieto 3 časti toho istého príspevku 1, 2 a 3.
Predpokladajme, že naša frekvencia je 50 Hz, čo znamená, že časové obdobie je 20 ms. Takže 10 ms je pol cyklu. V týchto 10 ms potrebujeme veľa impulzov s rôznymi pracovnými cyklami počínajúc malými pracovnými cyklami, v strede signálu máme maximálne pracovné cykly a skončíme tiež s malými pracovnými cyklami. Na generovanie sínusovej vlny použijeme dva piny jeden na pozitívny polovičný cyklus a jeden pre negatívny polovičný cyklus. V našom príspevku na to používame piny 5 a 6, čo znamená časovač 0.
Pre hladký signál vyberáme fázovo správne pwm na frekvencii 31372 Hz-pozri predchádzajúci príspevok. Jedným z najväčších problémov je, že vypočítame potrebný pracovný cyklus pre každý impulz. Pretože naša frekvencia je f = 31372 Hz, perióda pre každý impulz je T = 1/31372 = 31,8 us, takže počet impulzov pre pol cyklu je N = 10 ms/31,8 us = 314 impulzov. Teraz na výpočet pracovného cyklu pre každý impulz máme y = sinx, ale v tejto rovnici potrebujeme stupne, takže polovičný cyklus má 180 stupňov pre 314 impulzov. Pre každý impulz máme 180/314 = 0,57 stupňov/impulz. To znamená, že pri každom pulze sa pohneme dopredu o 0,57 stupňa.
y je pracovný cyklus a x hodnota polohy v polovičnom pracovnom cykle. najskôr x je 0, potom x = 0,57, x = 1,14 a tak ďalej, až x = 180.
ak vypočítame všetkých 314 hodnôt, získame pole 314 prvkov (typ „int“bude jednoduchšie vypočítať arduino).
Takéto pole je:
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};
Môžete vidieť, že ako sínusová vlna je pracovný cyklus najnižší v prvom a poslednom prvku a najvyšší v strede.
Krok 2: Program Arduino pre variabilný pracovný cyklus
Na obrázku vyššie máme signály s premenlivými pracovnými cyklami s hodnotami z poľa.
Ale ako vytvoriť taký signál ??
časť nižšie uvedeného programu používa na zmenu hodnôt pracovných cyklov prerušenia
sei (); // povoliť prerušenia
}
ISR (TIMER1_COMPA_vect) {// prerušenie, keď sa časovač 1 zhoduje s hodnotou OCR1A
if (i> 313 && OK == 0) {// konečná hodnota z vektora pre pin 6
i = 0; // prechod na prvú hodnotu vektora (pole)
OK = 1; // povoľte kolík 5
}
x = sinPWM ; // x vezme hodnotu z vektora zodpovedajúceho pozícii i (i je nula indexovaná)-hodnota pracovného cyklu
i = i+1; // prejdite na ďalšiu pozíciu
}
Krok 3: Striedanie na 50 Hz pinoch Arduino
Pretože každý pin generuje iba polovičný pracovný cyklus na vytvorenie plnej sínusovej vlny, používame dva piny, ktoré sa striedajú jeden po druhom presne po 10 ms (pre 50 Hz). Táto zmena pinov sa vykoná na konci poľa- potom, keď povedzme, že kolík 5 vygeneroval 314 impulzov, tento kolík sa vypne a povolí kolík 6, čo robí to isté, ale pre negatívny pracovný cyklus.
Pretože arduino môže generovať iba pozitívne signály, negatívny pracovný cyklus sa vytvára v mostíku h- o tom si môžete prečítať tu
Program na výmenu kolíkov:
sei (); // povoliť prerušenia
}
ISR (TIMER1_COMPA_vect) {// prerušenie, keď sa časovač 1 zhoduje s hodnotou OCR1A
if (i> 313 && OK == 0) {// konečná hodnota z vektora pre pin 6
i = 0; // prejde na prvú hodnotu vektora
OK = 1; // povoľte kolík 5
}
if (i> 313 && OK == 1) {// konečná hodnota z vektora pre pin 5
i = 0; // prejde na prvú hodnotu vektora
OK = 0; // povoľte kolík 6
}
x = sinPWM ; // x vezme hodnotu z vektora zodpovedajúceho pozícii i (i je nula indexovaná)
i = i+1; // prejdite na ďalšiu pozíciu
ak (OK == 0) {
OCR0B = 0; // urobte kolík 5 0
OCR0A = x; // povolenie kolíka 6 na príslušný pracovný cyklus
ak (OK == 1) {
OCR0A = 0; // urobte kolík 6 0
OCR0B = x; // povoľte kolík 5 do zodpovedajúceho pracovného cyklu
}
}
Krok 4: Jazda na moste H a filtrovanie signálu Pwm
Signály získané z arduina sú riadiacou časťou aplikácií invertora, pretože oba sú pozitívne. Aby sme vytvorili plnú sínusovú vlnu a praktický invertor, musíme použiť mostík h a vyčistiť pwm dolnopriepustný filter.
Tu je predstavený H-most.
Nízkopriepustný filter testovaný s malými striedavými motormi-tu.
Odporúča:
Nástenný držiak pre iPad ako ovládací panel pre domácu automatizáciu, pomocou magnetu ovládaného servom na aktiváciu obrazovky: 4 kroky (s obrázkami)
Nástenný držiak pre iPad ako ovládací panel domácej automatizácie využívajúci servom riadený magnet na aktiváciu obrazovky: V poslednej dobe som strávil nejaký čas automatizáciou vecí vo svojom dome a okolo neho. Ako svoju domácu automatizačnú aplikáciu používam Domoticz, podrobnosti nájdete na www.domoticz.com. Pri mojom hľadaní aplikácie na palubnej doske, ktorá zobrazuje všetky informácie o Domoticz,
Priemyselná automatizácia založená na Arduine -- VFD (meniče s premenlivou frekvenciou): 10 krokov
Priemyselná automatizácia založená na Arduine || VFD (pohony s premenlivou frekvenciou): V tomto návode vám ukážem, ako urobiť 1. Na mieru navrhnutá doska Arduino pre priemyselnú automatizáciu 2. Ako ovládať VFD [meniče s premenlivou frekvenciou] pomocou Arduino 3. Ako navrhnúť základnú dosku pre navíjací stroj DigiCone MDF Aké veci máte
WTware pre Raspberry Pi 2 (Pi 3)- Operačný systém pre tenkých klientov: 3 kroky
WTware pre Raspberry Pi 2 (Pi 3) - Operačný systém pre tenkých klientov: Tenký klient od Raspberry Pi - je to sen o lenivom správcovi sieťového systému. Aplikácie Windows na Pi.WTware pre Raspberry Pi je operačný systém tenkých klientov, ktorý vytvára pripojenia na služby Windows Remote Desktop Services. Software pre Raspbe
Rýchla a jednoduchá nabíjačka pre iPod / prenosný konektor DC pre príslušenstvo: 3 kroky
Rýchla a jednoduchá nabíjačka pre iPod / prenosný konektor DC pre príslušenstvo: Jedná sa o jednoduchý dizajn S U P E R, ktorý vám umožní prevádzkovať mnoho rôznych DC doplnkov z jednoduchej batérie
Poklop pre prístup k batérii pre krysu LED Throwie: 4 kroky
Poklop pre prístup k batérii pre LED Throwie Rat: LED Throwie Rat V2.0 má poklop na prístup na suchý zips, ktorý uľahčuje výmenu batérie