Tartalomjegyzék:
- 1. lépés: Pwm jel generálása 50 Hz -re
- 2. lépés: Arduino program változó terhelési ciklushoz
- 3. lépés: Váltás 50 Hz -es Arduino Pins -en
- 4. lépés: H -híd vezetése és a Pwm -jel szűrése
Videó: Arduino Sinewave inverterekhez: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ebben a projektben SPWM (szinuszhullámú impulzus széles modulált) jelet generáltam két arduino pwm digitális kimenetből.
Mivel egy ilyen program elkészítéséhez az arduino számos más funkciójáról és tulajdonságairól kell beszélnem, a teljes projekt, beleértve az oszcilloszkóp képeket és a különböző frekvenciákat, kérjük, látogasson el webhelyemre:
eprojectszone
1. lépés: Pwm jel generálása 50 Hz -re
50 Hz -es jel magasabb frekvencián történő előállításához szükséges néhány számítást elvégezni. Az arduino frekvenciái 8 MHz -en lehetnek, de változó teljesítményciklusú jelet szeretnénk.
Az arduino változó munkaciklusainak megértéséhez olvassa el ugyanazon bejegyzés 1, 2 és 3 e részét.
Tegyük fel, hogy a frekvenciánk 50 Hz, ami azt jelenti, hogy az időtartam 20 ms. Tehát 10 ms fél ciklus időszak. Azokban a 10 ms -ban sok impulzusra van szükségünk, különböző munkaciklusokkal, kis munkaciklusokkal kezdve, a jel közepén maximális terhelési ciklusokkal rendelkezünk, és kis munkaciklusokkal is befejezzük. Szinuszhullám létrehozásához két tüskét használunk pozitív félciklus és egy negatív félciklus. Bejegyzésünkben ehhez az 5 -ös és 6 -os csapokat használjuk, ami 0 -as időzítőt jelent.
A sima jel érdekében a fázis megfelelő pwm-t választjuk 31372 Hz frekvencián-lásd az előző bejegyzést. Az egyik legnagyobb probléma az, hogy hogyan számoljuk ki az egyes impulzusokhoz szükséges működési ciklust. Tehát, mivel frekvenciánk f = 31372Hz, az egyes impulzusok periódusa T = 1/31372 = 31,8 us, tehát az impulzusok száma egy fél ciklusban N = 10ms/31,8us = 314 impulzus. Most az egyes impulzusok működési ciklusának kiszámításához y = sinx, de ebben az egyenletben fokokra van szükség, így a félciklus 180 fok 314 impulzus esetén. Minden impulzushoz 180/314 = 0,57deg/impulzus van. Ez azt jelenti, hogy minden egyes impulzushoz 0,57 fokgal haladunk előre.
y a terhelési ciklus, és x a pozíció értéke fél munkaciklusban. először x 0, majd x = 0,57, x = 1,14 és így tovább, amíg x = 180.
ha mind a 314 értéket kiszámítjuk, akkor egy 314 tömb elemet kapunk ("int" típusú, hogy az arduino könnyebben kiszámítsa).
Ilyen tömb:
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, 250, 249, 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};
Látható, hogy a szinuszhullámhoz hasonlóan a munkaciklus a legalacsonyabb az első és az utolsó elemnél, és a legmagasabb a közepén.
2. lépés: Arduino program változó terhelési ciklushoz
A fenti képen változó teljesítményciklusú jelek vannak a tömb értékeivel.
De hogyan lehet ilyen jelet adni ??
a program alábbi része megszakításokkal módosítja a munkaciklusok értékeit
sei (); // engedélyezze a megszakításokat
}
ISR (TIMER1_COMPA_vect) {// megszakítás, amikor az 1. időzítő egyezik az OCR1A értékkel
if (i> 313 && OK == 0) {// végső érték a 6. tű vektorból
i = 0; // ugrás a vektor (tömb) első értékére
OK = 1; // engedélyezze az 5. tűt
}
x = sinPWM ; // x vegye ki az értéket az i pozíciónak megfelelő vektorból (i nulla indexelt)-a munkaciklus értéke
i = i+1; // ugrás a következő pozícióra
}
3. lépés: Váltás 50 Hz -es Arduino Pins -en
Mivel minden csap csak egy fél ciklusot generál a teljes szinuszhullám létrehozásához, két csapot használunk, amelyek egymást váltják pontosan 10 másodperc után (50 Hz -en). Ez a csapváltás a tömb végén történik- miután tegyük fel, hogy az 5. tüske 314 impulzust generált, ez a csap ki van kapcsolva, és engedélyezi a 6-os csapot, ami ugyanazt teszi, de a negatív munkaciklusra.
Mivel az arduino csak pozitív jeleket tud generálni, a negatív munkaciklus a h bridge-ben készül- erről itt olvashat
A csapok cseréjének programja:
sei (); // engedélyezze a megszakításokat
}
ISR (TIMER1_COMPA_vect) {// megszakítás, amikor az 1. időzítő egyezik az OCR1A értékkel
if (i> 313 && OK == 0) {// végső érték a 6. tű vektorból
i = 0; // ugrás a vektor első értékére
OK = 1; // engedélyezze az 5. tűt
}
if (i> 313 && OK == 1) {// végső érték az 5. tű vektorból
i = 0; // ugrás a vektor első értékére
OK = 0; // engedélyezze a 6. tűt
}
x = sinPWM ; // x vegye ki az értéket az i pozíciónak megfelelő vektorból (i nulla indexelt)
i = i+1; // ugrás a következő pozícióra
ha (OK == 0) {
OCR0B = 0; // készítse el az 5 0 tűt
OCR0A = x; // engedélyezze a 6. csapot a megfelelő terhelési ciklushoz
ha (OK == 1) {
OCR0A = 0; // készítse el a 6 0 -as érintkezőt
OCR0B = x; // engedélyezze az 5. tüskét a megfelelő terhelési ciklushoz
}
}
4. lépés: H -híd vezetése és a Pwm -jel szűrése
Az arduino által kapott jelek az inverter alkalmazás vezérlő részei, mivel mindkettő pozitív. Ahhoz, hogy teljes szinuszhullámot és praktikus invertert készítsünk, h -hidat kell használnunk, és a pwm -t aluláteresztő szűrővel kell tisztítani.
A H-híd itt látható.
Az aluláteresztő szűrőt kis AC motorokkal tesztelték-itt.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A legolcsóbb Arduino -- A legkisebb Arduino -- Arduino Pro Mini -- Programozás -- Arduino Neno: 6 lépés (képekkel)
A legolcsóbb Arduino || A legkisebb Arduino || Arduino Pro Mini || Programozás || Arduino Neno: …………………………. További videókért Iratkozz fel YouTube -csatornámra ……. .Ez a projekt arról szól, hogyan lehet a legkisebb és legolcsóbb arduino -t kezelni. A legkisebb és legolcsóbb arduino az arduino pro mini. Hasonló az arduino -hoz