11. lecke
Az egyik legkorábbi tanultakat, hogy segítségével a PWM jel kitöltési tényező lehet változtatni. Ezáltal, hogy a fényerő a LED-fény. Van azonban egy érdekes módon, a használata impulzus szélesség moduláció.
Tehát ... Ha kihagyja a generált jelet egy aluláteresztő szűrőt, akkor kap állandó feszültség.

Mivel a működési ciklus változik 0 és 0xFF (255), akkor lesz 255 szintje DC feszültség. Egyszerűen fogalmazva, van egy feszültség tartományban, például 0 és 5V, ez a tartomány van osztva 255 értékeket. Lépésben 5/255 = 0,0196V lehet állítani, hogy minden feszültség.
Ezeket az értékeket lehet kapni szinte minden görbe egy bizonyos sorrendben. Például, egyre nagyobb a töltési 0 és 255, majd csökken a 0 255 megkapja a fűrészfog jelet.
Most viszont, hogy egy konkrét cél: hogy egy szinuszhullám frekvenciája 50 Hz-Atmega8 mikrokontroller. Globális feladat -, hogy rendszeres időközönként a kimeneti feszültség PWM szinuszos.
Nézzük foglalkozik az első része a problémának. Annak érdekében, hogy rendszeres időközönként használja az időzítőt. Tegyük fel, hogy az időzítő beállítása 8MHz frekvencia, azaz a akkor ketyeg 8000000 másodpercenként. Szinuszhullám oszcillál 50-szer egy második, majd az egyik időszak fiók 8000000/50 = 160000 kullancsok maximális. Ha már 256 feszültségszint, és a maximális felbontása szinuszhullám egyenlő 256.
Mi a felbontás a szinusz? Ebben az esetben a pontok száma az időszak, amikor az épített szinuszos. Például, beépített Excel, úgy fog kinézni, mint egy szinuszhullám egy másik felbontást.
Sinus felbontással, 4:

Sinus felbontással 8 pont:

Sinus felbontása 16 pont:

Azt hiszem, „evolúció” sine jól látható - a több pontot (felbontás), annál kevésbé szögletes, és minél jobban néz ki, mint egy normális szinusz. Ennek eredményeként, úgy döntött, hogy abbahagyja a felbontása 128 pixel a sinus.
Most össze az összes korábban említettük, 160.000 tic osztódnak felbontása 128 kap 1250 - ennyi kullancs kell dolgozni megszakítás hogy ki a következő feszültségszint. Az érték a 1250 kell nyomni az összehasonlító regiszter OCR1A
A második rész a globális probléma - hogyan kell építeni egy szinuszhullám. Emlékezzünk matematika: D ... Sinus változik -1 1. Létrehoz ShIMom negatív feszültség nem kapcsol. Ezért szükséges, hogy elmozdulás a fenti grafikon az X tengely - sin (x) +1. Most ez változhat 0-2, ez nem is egy lehetőség, mert van 256 feszültség, így szorozzuk 127, maximum érték 256. Ennek eredményeként kiásták a következő képlet szerint:
128 - felbontása sinus x - pontok számát (0 és 128). Számítani Excel, én fordult array sin [] értékei 128, ami viszont vannak szubsztituálva OCR2.
Az utolsó említésre méltó dolog - az aluláteresztő szűrő, lehetséges a közeljövőben lesz egy tanulság a szűrőket. Jelenleg a képletet annak számítási eredmény értelmetlen, mert vannak olyan oldalak, az online fizetés, csak a típus „LPF” a Google.
firmware és Serratia
Szia admin. Rendszer azonnal össze indított kezdett kivizsgál értékeket, hogy mi történik. Megjelent helyett ez nem történik meg. ICR1 megváltoztatta a képlet így megnövekedett, mint a frekvencia a 32 kHz-es, de a generációs hiányzik más lábak. Jelentése SET_FREQ = 410 is szubsztituált egy megszámoltuk. Most az értékek beállítása mondani nem tudok írni, hogy a munkát.
nikola56rus, nem érdekli az, hogy a kész megoldást. Minden tudok tanácsot is, hogy a kódot a cikkemet, és megtudja, hidd el, nem nehéz, csak egyszerűen meg kell változtatni a nyilvántartás 1. Vagy ha tényleg lustaság megérteni, írni, amit néhány megfelelő fórum, az érme írsz, amit akarsz.
Ön használja az időzítőt 2, és ez számít a 255, és visszaáll (a gyors módban PVM), de el kell 1250tikov hogy nem ragasztott
és mit rögzíteni az értéket OCR1AH = 0x04; OCR1AL = 0xE2; ?
vagy én nem értem valamit?
Cheto én általában zavaros a kódban, OCR2 Ebben az esetben az összehasonlítás második időzítő, és az általunk használt első időmérőt
az első időmérő nem létre (hány fog tartani, és így tovább)