Obsah:
- Krok 1: Generování signálu Pwm pro 50 Hz
- Krok 2: Program Arduino pro variabilní pracovní cyklus
- Krok 3: Střídavě na 50Hz pinech Arduino
- Krok 4: Řízení mostu H a filtrování signálu Pwm
Video: Arduino Sinewave pro střídače: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
V tomto projektu jsem vygeneroval signál SPWM (sinusový pulsně široce modulovaný) ze dvou digitálních výstupů arduino pwm.
Protože, abych vytvořil takový program, musím mluvit o mnoha dalších funkcích a vlastnostech arduina, celého projektu, včetně obrázků osciloskopu a pro různé frekvence, navštivte mé webové stránky:
eprojectszone
Krok 1: Generování signálu Pwm pro 50 Hz
Pro generování signálu 50 Hz na vyšší frekvenci je nutné provést nějaké výpočty. Frekvence z arduina mohou být na 8 MHz, ale my chceme signál s proměnným pracovním cyklem.
Chcete -li porozumět typům variabilních pracovních cyklů arduina, můžete si přečíst tyto 3 části stejného příspěvku 1, 2 a 3.
Předpokládejme, že naše frekvence je 50 Hz, což znamená, že časové období je 20 ms. 10ms je tedy polovina cyklu. V těchto 10 ms potřebujeme mít mnoho pulzů s různými pracovními cykly počínaje malými pracovními cykly, uprostřed signálu máme maximální pracovní cykly a skončíme také s malými pracovními cykly. Pro generování sinusové vlny použijeme dva piny jeden pro pozitivní poloviční cyklus a jeden pro negativní poloviční cyklus. V našem příspěvku k tomu používáme piny 5 a 6, což znamená časovač 0.
Pro plynulý signál volíme fázově správný pwm na frekvenci 31372 Hz-viz předchozí příspěvek. Jedním z největších problémů je, že vypočítáme potřebný pracovní cyklus pro každý puls. Protože naše frekvence je f = 31372 Hz, perioda pro každý impuls je T = 1/31372 = 31,8 us, takže počet pulzů pro poloviční cyklus je N = 10 ms/31,8 us = 314 pulzů. Nyní pro výpočet pracovního cyklu pro každý impuls máme y = sinx, ale v této rovnici potřebujeme stupně, takže poloviční cyklus má 180 stupňů pro 314 pulzů. Pro každý puls máme 180/314 = 0,57 stupňů/puls. To znamená, že pro každý puls se pohybujeme vpřed o 0,57 stupňů.
y je pracovní cyklus a x hodnota polohy v polovičním pracovním cyklu. nejprve x je 0, poté x = 0,57, x = 1,14 a tak dále, dokud x = 180.
vypočítáme -li všech 314 hodnot, získáme pole 314 prvků (typ „int“vypočítá snáze arduino).
Takové 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};
Vidíte, že jako sinusová vlna je pracovní cyklus nejnižší u prvního a posledního prvku a nejvyšší uprostřed.
Krok 2: Program Arduino pro variabilní pracovní cyklus
Na obrázku výše máme signály proměnných pracovních cyklů s hodnotami z pole.
Jak ale takový signál vytvořit ??
část níže uvedeného programu používá přerušení ke změně hodnot pracovních cyklů
sei (); // povolit přerušení
}
ISR (TIMER1_COMPA_vect) {// přerušení, když se časovač 1 shoduje s hodnotou OCR1A
if (i> 313 && OK == 0) {// konečná hodnota z vektoru pro pin 6
i = 0; // přejít na první hodnotu vektoru (pole)
OK = 1; // povolit pin 5
}
x = sinPWM ; // x vezme hodnotu z vektoru odpovídající poloze i (i je nula indexována)-hodnota pracovního cyklu
i = i+1; // přejděte na další pozici
}
Krok 3: Střídavě na 50Hz pinech Arduino
Protože každý pin generuje pouze poloviční pracovní cyklus k vytvoření plné sinusové vlny, používáme dva piny, které se střídají jeden po druhém po přesných 10 ms (pro 50 Hz). Tato změna pinů se provádí na konci pole- poté, co řekněme, že pin 5 vygeneroval 314 pulzů, tento pin se vypne a aktivuje pin 6, což dělá totéž, ale pro záporný pracovní cyklus.
Protože arduino může generovat pouze pozitivní signály, je v h můstku vytvořen negativní pracovní cyklus- zde si o tom můžete přečíst
Program pro změnu pinů:
sei (); // povolit přerušení
}
ISR (TIMER1_COMPA_vect) {// přerušení, když se časovač 1 shoduje s hodnotou OCR1A
if (i> 313 && OK == 0) {// konečná hodnota z vektoru pro pin 6
i = 0; // přejde na první hodnotu vektoru
OK = 1; // povolit pin 5
}
if (i> 313 && OK == 1) {// konečná hodnota z vektoru pro pin 5
i = 0; // přejde na první hodnotu vektoru
OK = 0; // povolit pin 6
}
x = sinPWM ; // x vezme hodnotu z vektoru odpovídající poloze i (i je nula indexována)
i = i+1; // přejděte na další pozici
pokud (OK == 0) {
OCR0B = 0; // vytvoření kolíku 5 0
OCR0A = x; // povolit pin 6 na odpovídající pracovní cyklus
pokud (OK == 1) {
OCR0A = 0; // vytvoření kolíku 6 0
OCR0B = x; // povolit pin 5 na odpovídající pracovní cyklus
}
}
Krok 4: Řízení mostu H a filtrování signálu Pwm
Signály získané z arduina jsou řídicí částí pro invertorové aplikace, protože oba jsou kladné. Abychom vytvořili plnou sinusovou vlnu a praktický invertor, musíme použít h můstek a vyčistit pwm dolní propust.
Zde je představen H-můstek.
Nízkopásmový filtr testován s malými střídavými motory-zde.
Doporučuje:
Prototypové brýle pro noční vidění pro airsoft/paintball: 4 kroky
Prototypové brýle pro noční vidění pro Airsoft/Paintball: Krátká poznámka k brýlím pro noční vidění Pravé brýle pro noční vidění (gen 1, gen2 a gen 3) obvykle fungují zesílením okolního světla, nicméně brýle pro noční vidění, které zde vyrobíme, fungují na jiném principu. Budeme používat kameru Pi NoIR, která
Deska plošných spojů pro robota pro sledování linek - Arnab Kumar Das: 4 kroky
Návrh desky plošných spojů pro robota pro sledování linek - Arnab Kumar Das: Tento projekt předpokládá, že jsme již provedli výběr komponent. Aby systém správně fungoval, je důležité porozumět tomu, co každá součást vyžaduje, pokud jde o výkon, napětí, proud, prostor, chlazení atd. Je také důležité porozumět
Nástavec pro únos nohou pro dětskou chůzi: 4 kroky
Příloha k únosu nohou pro dětskou chůzi: Tento návod vám ukáže, jak jsem vytvořil průvodce pro chodce mého syna, který by pomohl zabránit „nůžkování“nebo překřížení nohou při chůzi. Nástavec „trvanlivého lékařského vybavení“od výrobce vás bude stát stovky dolarů; toto je s
Jednoduchý obvod střídače: 8 kroků
Jednoduchý invertorový obvod: Jedná se o jednoduchý invertorový obvod založený na tranzistoru 13007. základní měnič pracuje na konfiguraci Push-Pull. Tento střídač je vhodný pro malé zátěže, jako jsou 15W LED žárovky, mobilní nabíječka a další elektrické příslušenství
Sonda pro měření hladiny podzemní vody pro nastavení nízkých zdrojů: 4 kroky (s obrázky)
Sonda pro měření hladiny podzemní vody pro nastavení nízkých zdrojů: Úvod Od Oxfam jsme obdrželi žádost o vyvinutí jednoduchého způsobu, jakým by školní děti v Afghánistánu mohly monitorovat hladiny podzemní vody v blízkých studních. Tato stránka byla přeložena do Dari Dr. Amirem Haidarim a překlad může být