Bresenham algoritmus tirisztoros teljesítményszabályozókban. Forrasztópáka teljesítményszabályozója AtMega48 és AtMega8 készülékeken - Méréstechnika - Szerszámok

Ez a szabályozó lehetővé teszi a terhelési teljesítmény szabályozását kétféleképpen.

  1. Fázisimpulzus - a triac nyitási szögének megváltoztatása.
  2. A szükséges számú félciklus kihagyásával.

A második módszernél az impulzusok eloszlását a Bresenham algoritmussal találjuk meg, ennek a megoldásnak a forráskódját teljes egészében a tisztelt fórumokon megjelent cikkekből és hozzászólásokból vettem. Ridiko Leonyid Ivanovics, nagyon szépen köszönjük!

A szabályozót három gomb vezérli:

  1. SET – ha több mint 2 másodpercig lenyomva tartja, belép a beállítási módba; ha röviden megnyomja, görgessen a három gyors energiabeállítás között.
  2. Mínusz.
  3. Plusz.

A szabályozó lehetővé teszi 3 gyors teljesítménybeállítás tárolását. Van egy automatikus kikapcsolás funkció, ha 30 percig nem nyomnak meg gombot, a jelző villogni kezd, majd 10 perc múlva a terhelés kikapcsol.

A vezérlés blokkvázlata beállítási módban.

Ha megnyomja a SET gombot, és több mint 2 másodpercig lenyomva tartja, a REG felirat jelenik meg a képernyőn, majd a plusz/mínusz gombokkal válassza ki a kívánt algoritmust.

  • PAU – Bresenham algoritmus.
  • FI – fázis-impulzus.
Ha az FI algoritmust választjuk
NUM – ​​korrekció 0...145-től. Vagyis a félciklus 145 értékre oszlik. PRC - szabályozás 0-tól 100%-ig, azaz a 145-ös skála automatikusan százalékra konvertálódik Következő három gyors teljesítménybeállítás „-1-”, „-2-” „-3-”.
INC – lépés, amellyel a teljesítmény növelése/csökkentése történik a plusz/mínusz gombokkal.
_t_ - az automatikus kikapcsolás funkció vezérlése BE-engedélyezett, KI-letiltva.

A blokkdiagramból látható, hogy a PAU és FI(PRC) üzemmódok gyors teljesítménybeállításai megegyeznek, mivel tartományuk 0...100. A FI(NUM)-nak saját beállításai vannak, mivel ezek tartománya 0..145.

Két SET+PLUS gomb megnyomásával gyorsan teljes erővel kapcsolhatjuk be a szabályozót (a SET gombot kicsit korábban kell megnyomni), és a képernyőn megjelenik az „on” felirat. Gyors leállítás a SET+MINUS gomb megnyomásával, és az „OFF” felirat jelenik meg a képernyőn.

Diagnosztikai üzenetek.

  • noC – nincsenek óraimpulzusok, és tilos vezérlőimpulzusokat adni a triachoz.
  • EEP – adathiba az EEPROM-ban, a beállítások módba lépéssel megoldható, a paraméterek szerkesztése után a felirat eltűnik.


Vasban.



Nyomtatott áramkör . Kérjük, vegye figyelembe, hogy az indikátorhoz nincsenek ellenállások telepítve, ezeket magára az indikátorra telepítettem.

Megtanultuk, hogyan kell szimbólumokat és vonalakat megjeleníteni TFT-kijelzőn, ebben az oktatóanyagban pedig geometriai formák rajzolását tanuljuk meg. Nem sok geometriai forma lehet hasznos a grafikus felület készítésekor, a főbb a téglalap és a kör, ezeket tanuljuk meg rajzolni, két változatban, árnyékolva és nem árnyékolva. Azonnal megmondom, hogy a cikk részletesen leírja csak néhány geometriai alakzat rajzolásának algoritmusait, amelyek elegendőek a raszteres kép létrehozásának általános elveinek megértéséhez. Kezdjük a legegyszerűbb formával - egy kitöltött téglalappal.
Az előző cikkből emlékszünk arra, hogy ha megadja egy pont koordinátáit, akkor egyszerűen elküldi a színt, akkor maga az SSD1289 fogja kifesteni a pontokat az inicializálás során kiválasztott algoritmus szerint. De ebben az esetben van egy funkció, a vezérlő csak akkor lép a következő sorra, ha eléri az aktuális sor végét.
A következő regiszterek segítenek megrajzolni egy kitöltött téglalapot.

Ezekkel a regiszterekkel beállíthatjuk annak a területnek az elejét és végét, amelyre írni fogunk, majd egy ciklusban elküldjük a színt a kívánt számú alkalommal, és a vezérlő mindent maga csinál, az alatt megadott algoritmus szerint. inicializálás. De most megteszi lépjen a következő sorra, amikor eléri az általunk megadott terület végét.
Az X menti terület határainak rögzítésére egy R44 regisztert, Y mentén pedig két R45 és R46 regisztert használunk. Fogalmazzuk meg a fent leírtakat függvény formájában, a kényelem kedvéért külön függvénybe kerül a munkaterület kiválasztásáért felelős kód Set_Work_Area().
void Set_Work_Area(uint16_t y1, uint16_t x1, uint16_t x2, uint16_t y2) ( Lcd_Write_Reg(0x0044,((x2)<< 8) | x1)); Lcd_Write_Reg(0x0045,y1); Lcd_Write_Reg(0x0046,y2); Set_Cursor(x1, y1); } /////////////////////////////////////// void Draw_Area(uint16_t left, uint16_t top, uint16_t right, uint16_t bottom, uint16_t color) { register uint16_t x,y; Set_Work_Area(left, top, right, bottom); for(y=top; y<=bottom; y++) { for(x=left; x<=right; x++) { Lcd_Write_Data(color); } } Set_Work_Area(0, 0, 319, 239); }


Most, hogy megtanultuk, hogyan kell kitöltött téglalapot rajzolni, próbáljunk meg rajzolni egy kitöltetlent. De ehhez először meg kell tanulnunk vonalakat rajzolni. A már meglévő tudásunkkal vízszintes vagy függőleges vonalat könnyedén húzhatunk, de a horizonthoz képest szöget bezáró vonalat nem. A horizonthoz képest szögben elhelyezkedő vonal megszerkesztéséhez a Bresenham raszteres algoritmust, pontosabban annak módosítását használjuk. A helyzet az, hogy kezdetben az algoritmus osztási és lebegőpontos műveleteket tartalmaz, amelyeket szeretnénk elkerülni, ha mikrokontrollerhez írunk firmware-t. A Wikipédián elolvashatod, hogyan kell ezt megtenni.

Röviden a Bresenham-algoritmus működési elve a következő: veszünk egy szakaszt az x és y kezdeti koordinátákkal. A hurokban hozzáadunk egyet az x-hez a szegmens végének irányában, és minden lépésben kiszámítjuk a hibát - az ezen a helyen lévő valós koordináta és a legközelebbi rácscella közötti távolságot. Ha a hiba nem haladja meg a cella magasságának felét, akkor átfestjük.



A fenti képen a sárga a raszterezés előtti vonalat, a zöld és a piros pedig a legközelebbi cellák középpontjaitól való távolságot mutatja.
És itt van a kód a vonal meghúzásához.
void Draw_Line (uint8_t méret,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t szín) ( int deltaX = abs(x2 - x1); int deltaY = abs(y2 - X jel = x1 int);< x2 ? 1: -1; int signY = y1 < y2 ? 1: -1; int error = deltaX - deltaY; for (;;) { Draw_Point(size,x1,y1,color); if(x1 == x2 && y1 == y2) break; int error2 = error * 2; if(error2 >-deltaY) ( hiba -= deltaY; x1 += jelX; ) if(hiba2< deltaX) { error += deltaX; y1 += signY; } } }
Egy téglalap rajzolásához 4 vonalra van szükségünk, a kényelem kedvéért a vízszintes és függőleges vonalakat külön funkciókra különítjük el,
void Draw_Horizont_Line(uint8_t méret,uint16_t x1,uint16_t y1,uint16_t y2,uint16_t szín) ( Draw_Line(méret, x1, y1, x1, y2, szín); ) ///////////// //////////////// void Draw_Vertical_Line(uint8_t méret,uint16_t x1,uint16_t x2,uint16_t y1,uint16_t szín) ( Draw_Line(méret, x1, y1, x2, y1, szín); ) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Void Draw_Reactangle(uint8_t méret,uint16_t bal,uint16_t felső,uint16_t jobb,uint16_t alsó, uint16_t szín) ( Draw_Horizont_Line(méret, top, left, right, color); Draw_Horizont_Line (méret, alsó, bal, jobb, szín); Draw_Vertical_Line (méret, felső, alsó, bal, szín); Draw_Vertical_Line (méret, felső, alsó, helyes, szín ;)


És ahhoz, hogy háromszöget rajzoljon, csak 3 sorra van szüksége)))
void Draw_Triangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint8_t méret, uint16_t szín) ( DrawL, x2, y,2, y,2, size; x2, y2 , x3, y3, szín); Rajz_Vonal(méret, x3, y3, x1, y1, szín); )


A Bresenham-algoritmus segítségével kört is szerkeszthet. Az algoritmus minden lépésében három pontot veszünk figyelembe, és a kör középpontja és a kiválasztott pont közötti távolságot a kör sugarával összehasonlítva megtaláljuk a megfelelőt.
void Draw_Circle (uint8_t méret,uint16_t x0,uint16_t y0,uint16_t sugár,uint16_t szín) ( int x = 0; int y = sugár; int delta = 2 - 2 * sugár; int hiba = 0; while(y >= 0) ( Rajz_pont(méret,x0 + x, y0 + y,szín); Rajz_pont(méret,x0 + x, y0 - y,szín); Rajz_pont(méret,x0 -x, y0 + y,szín); Rajz_pont(méret, x0 - x, y0 - y,szín); hiba = 2 * (delta + y) - 1; if(delta< 0 && error <= 0) { ++x; delta += 2 * x + 1; continue; } error = 2 * (delta - x) - 1; if(delta >0 && hiba > 0) ( --y; delta += 1 - 2 * y; folytatás; ) ++x; delta += 2* (x - y); --y; ) )


A cikkírás vége felé találtam egy függvényt, ami kitöltött és kitöltetlen köröket rajzol, ezért a kitöltési argumentum a felelős.
void Draw_Circle1(előjel nélküli int x,előjel nélküli int y,char sugar,char kitöltés, char méret, előjel nélküli int szín) ( int a_,b_,P; a_ = 0; b_ = sugár; P = 1 - sugár; while (a_<= b_) { if(fill == 1) { Draw_Area(y-a_,x-b_,y+a_,x+b_,color); Draw_Area(y-b_,x-a_,y+b_,x+a_,color); } else { Draw_Point(size, a_+x, b_+y, color); Draw_Point(size, b_+x, a_+y, color); Draw_Point(size, x-a_, b_+y, color); Draw_Point(size, x-b_, a_+y, color); Draw_Point(size, b_+x, y-a_, color); Draw_Point(size, a_+x, y-b_, color); Draw_Point(size, x-a_, y-b_, color); Draw_Point(size, x-b_, y-a_, color); } if (P < 0) { P = (P + 3) + (2* a_); a_ ++; } else { P = (P + 5) + (2* (a_ - b_)); a_ ++; b_ --; } } } ////////////////////////////////////


Talán csak ennyit szerettem volna elmondani a geometriai formák rajzolásáról, és ebben a cikkben megtudjuk, hogyan működik az ellenállásos érintőképernyő.
Hivatkozás az SSD1289-ről szóló cikkekhez írt kódra, .
Projekt a számára Atmega16 az Atmel Studio 6.2-ben az archívumban (letöltések száma: 167)

Bevezetés A gyártásban (automatizált vezérlőrendszerekben) és a mindennapi életben gyakran szükséges a terhelésre szolgáltatott teljesítmény szabályozása. A terhelés általában váltóáramról működik. Ezért a feladat valamivel bonyolultabb az állandó feszültség mellett működő terhelés teljesítményének beállításához képest. Ha a terhelés állandó feszültségen működik, akkor impulzusszélesség-modulációt (PWM) alkalmaznak, és a munkaciklus megváltoztatásával a terhelésre szolgáltatott teljesítmény is ennek megfelelően változik. Ha PWM vezérlést használ az AC hálózat teljesítményének szabályozására, akkor a kapcsoló, amelyen keresztül a jelet szabályozza (például egy triac), megnyílik, és a szinusz különböző teljesítményű részeit továbbítja a terhelésnek. A szabályozó elemalapja és összeállítása 1. ábra. A szabályozó elektromos kapcsolási rajza A projekt megvalósításához a következőket használtuk: Pinboard AVR mikrokontrolleren ATmega16, Philips BT138 12A triac, DB105 diódahíd, MOC3022 optozisztor, PC817 optocsatoló, ellenállás 220 Ohm - 10 kOhm, 5 potentihm. Az elemek összekapcsolása az 1. ábrán látható. A készülék működési elve Ezt a szabályozót úgy tervezték, hogy 220 V-os hálózatra kapcsolt aktív terhelés mellett működjön, minden félhullám kezdetét optocsatolóval határozzák meg. Így a nulla detektor kimenetén rövid pozitív impulzusokat kapunk abban a pillanatban, amikor a hálózat feszültsége átmegy 0-n. A nulla detektor jele az MK külső megszakítási bemenetére csatlakozik, hogy meghatározza egy új megszakítás kezdetét. félhullámot, és nyissa ki a triacot a szükséges ideig vagy bizonyos számú félciklusra. A triac feloldásához a hagyományos katódhoz képest feszültséget kapcsolunk a vezérlőelektródára az optozisztoron keresztül. Fázismódszer A fázismódszerrel az időzítő késleltetési értékét az ADC mikrokontroller (esetünkben potenciométer) segítségével változtatva ennek megfelelően változtatjuk a triac nyitási késleltetését a félhullám indulása után. Minél hosszabb a késleltetés, a félhullám annál kisebb része kerül át a terhelésre, és ennek megfelelően kevesebb energiát kapunk, és fordítva. A mikrokontroller órajelének ismeretében a késleltetés kiszámításra kerül. 50 Hz hálózati feszültség frekvenciánál a félciklus ideje 0,01 másodperc lesz. Ez azt jelenti, hogy ha a triac 0,003 másodperc után nyílik, akkor a félhullám körülbelül 2/3-a kimarad, és a teljesítmény 70%. Ha a triacot késedelem nélkül kinyitják, akkor a teljes félhullám áthalad, és a kimeneti teljesítmény 100%. A program fázisterhelés szabályozási módszerrel valósult meg. A programozás C++ nyelven, CodeVisionAVR környezetben történt. Az oszcilloszkóp terhelésre mért értékeit a 2. ábra mutatja. 2. ábra. Teljesítménybeállítás fázismódszerrel Triac nyitásának késleltetésének kiszámítása Mivel a feszültségfüggvény nem lineáris, vagyis a szinusz alatti terület azonos időintervallumban eltérő lesz, és ennek megfelelően a teljesítmény is eltérő lesz. Ezért a késleltetést a feszültség nemlinearitása figyelembevételével számítottuk ki. A 3. ábra a hálózati szinuszhullámot és az 1. táblázatban kiszámított késleltetési intervallumokat mutatja. A száz (százalékos) késleltetési érték közül az első öt látható. 3. ábra. Fázismódszerrel történő beállítás 1. táblázat Triac nyitási késleltetések számítása Félhullám pont száma Idő mikroszekundumban Szinuszpont 0 0 0 1 638 0,199 2 903 0,279 3 1108 0,341 4 1282 0,3436 There issen is5ham módszer A tápellátás elvén alapuló teljesítményszabályozási módszer a hálózati feszültség több félciklusát, majd szünetet követi (4. ábra). A triac kapcsolási pillanatai egybeesnek azokkal a pillanatokkal, amikor a hálózati feszültség átlépi a nullát, így a rádióinterferencia szintje élesen csökken. A mikrokontroller használata lehetővé tette a Bresenham-algoritmus használatát az impulzusok egyenletes eloszlására. A terhelésben azonban kisebb az áram kapcsolási frekvenciája a fázisvezérléshez képest. Előnyös nagy teljesítményű terhelések (1 kW-tól) szabályozására. A program megvalósítása megtörtént, és a fázismódszerhez hasonlóan az ADC segítségével megváltoztattuk a kihagyott félciklusok számát. Az átviteli tartományt minden félhullámtól az egy félhullámtól tízig terjedő átvitelig választották. A 4. ábra a Bresenham-módszert alkalmazó vezérlő implementáció oszcilloszkópos képeit mutatja. 4. ábra. Teljesítményszabályozás Bresenham módszerrel Következtetés A szabályozó univerzális, így a mindennapi életben és az iparban is használható. A mikrokontrolleres vezérlés jelenléte lehetővé teszi a rendszer gyors újrakonfigurálását, ami rugalmassá teszi az eszközt. Két vezérlési algoritmus teszi lehetővé a vezérlő széles teljesítménytartományban történő használatát.

A tehetetlenségi terhelések szabályozására gyakran használnak tirisztoros teljesítményszabályozókat, amelyek azon az elven működnek, hogy a terhelést több félciklusú hálózati feszültséggel látják el, amelyet szünet követ. Az ilyen szabályozók előnye, hogy a tirisztorok kapcsolási pillanatai egybeesnek azokkal a pillanatokkal, amikor a hálózati feszültség átlépi a nullát, így a rádióinterferencia szintje élesen csökken. Ezenkívül egy ilyen szabályozó a fázisvezérelt szabályozóval ellentétben nem tartalmaz analóg küszöbelemeket, ami növeli a működési stabilitást és egyszerűsíti a konfigurációt. Mivel a terhelés átkapcsolása csak akkor történik meg, ha a hálózati feszültség átlépi a nullát, a terhelésre szolgáltatott energia minimális része megegyezik a terhelés által egy félciklus alatt elfogyasztott energiával. Ezért a teljesítményszabályozási lépés csökkentése érdekében meg kell hosszabbítani a félciklusok ismétlődő sorozatát. Például egy 10%-os lépés eléréséhez 10 félciklus ismétlődő sorozata szükséges.

ábrán. Az 1. ábra (A) a tirisztor vezérlőelektródájának impulzussorozatát mutatja 30%-os teljesítményterhelés mellett. Mint látható, a tirisztor az első három félciklusban nyitva van, a következő hétben pedig zárva van. Ezt a sorozatot ezután megismételjük. Egy ilyen szabályozó kapcsolási frekvenciája 100%-nál kisebb teljesítmény esetén a félciklus frekvencia 1/10-e. Sokkal logikusabb lenne a félciklusokat, amelyek alatt a tirisztor nyitva van, egyenletesen elosztani a sorozatban. Általános esetben az M hosszúságú sorozatban tetszőleges számú N impulzus egyenletes eloszlásának problémáját (ha N kisebb vagy egyenlő M-vel) a Bresenham-algoritmus oldja meg, amelyet általában a rasztergrafikában használnak ferde szegmensek létrehozására. . Ez az algoritmus egész szám aritmetikával valósul meg, ami nagyban leegyszerűsíti a programozást. ábrán. Az 1. (B) ábra ugyanazt a 30%-os teljesítményt mutatja, de a Bresenham-algoritmus használatával. Ez utóbbi esetben a kapcsolási frekvencia háromszor nagyobb. Megjegyzendő, hogy az erősítés kis teljesítménybeállítási lépésekkel jobban észrevehető. Például 1%-os lépés esetén ugyanazon 30%-os teljesítmény mellett az erősítés 30-szoros lesz.


2. ábra. Teljesítményszabályozó áramkör

A teljesítményszabályozó (lásd 2. ábra) alapja a cég AT89C2051 típusú U1 mikrokontrollerje. A szabályozó áramkör táplálására egy kis teljesítményű T1 transzformátort használnak, amely optotirisztorok használatával galvanikus leválasztást biztosít a hálózatról. Ez elektromos szempontból biztonságosabbá teszi a készüléket. A szabályozó másik hasznos tulajdonsága, hogy különböző üzemi feszültségekre tervezett terhelésekkel is használható. Ehhez elegendő a szükséges feszültséget a tirisztor bemenetére egy további transzformátorról kapcsolni. Például a szabályozó használható kisfeszültségű forrasztópáka táplálására. Csak az szükséges, hogy a feszültség és az áramerősség ne haladja meg a használt tirisztorokra megengedett maximális értéket. A terhelési teljesítmény beállítása az SB1 és SB2 gombokkal történik. Az egyik gomb rövid megnyomása egy lépéssel megváltoztatja a teljesítményt. Ha lenyomva tartja a gombot, monoton teljesítményváltozás következik be. Két gomb egyidejű megnyomása kikapcsolja a terhelést, ha korábban be volt kapcsolva, vagy bekapcsolja a maximális teljesítményt, ha a terhelést kikapcsolta. A terhelésben lévő teljesítmény jelzésére hétszegmenses HG1 - HG3 LED-jelzőket használnak. Az elemek számának csökkentésére dinamikus megjelenítést alkalmaznak, amelyet szoftverben valósítanak meg. A mikrokontrollerbe épített analóg komparátor a hálózati feszültséghez kötődik. Az R17, R18, VD1, VD2 limitereken keresztüli bemenetei váltakozó feszültséget kapnak a teljesítménytranszformátor szekunder tekercsétől. A negatív polaritás korlátozó szerepét az egyenirányító híd diódái látják el. A komparátor visszaállítja a hálózati feszültség előjelét. A komparátor kapcsolók akkor lépnek fel, amikor a hálózati feszültség átlépi a nullát. A komparátor kimenetét szoftver lekérdezi, és amint állapotváltozást észlel, a tirisztor vezérlőkimenetére (mikrokontroller INT0 port) egy vezérlési szintet adnak ki a tirisztorok bekapcsolásához. Ha az aktuális félciklust ki kell hagyni, akkor a szabályozási szint nem kerül kiadásra. Ezután a HG3 jelzőfény 4 ms-ra bekapcsol. Ekkor a gombnyomásokat ellenőrzi, és ha szükséges, módosítja az aktuális teljesítményértéket. Ezután a vezérlőfeszültséget eltávolítják a tirisztorokról, és a HG1 és HG2 jelzőfények 4 ms-ra bekapcsolnak. Ezt követően 4 ms-on belül újabb változás várható a komparátor állapotában. Ha nem történik változás, a rendszer továbbra is elindítja a ciklust anélkül, hogy a hálózathoz kapcsolódna. Csak ebben az esetben a tirisztorok nem nyílnak ki. Ez azért történik, hogy a jelzés normálisan működjön a hálózati frekvenciához igazodó impulzusok nélkül is.

Ez a működési algoritmus azonban bizonyos korlátozásokat támaszt a hálózati frekvenciával kapcsolatban: 50 Hz-től legfeljebb 20%-kal kell eltérést mutatnia. A gyakorlatban a hálózati frekvencia eltérése sokkal kisebb. Az INT0 portról érkező jel egy VT3 és VT4 tranzisztorokból álló kapcsolóra kerül, amely az optotirisztorok LED-jeinek vezérlésére szolgál. Amikor a mikrokontroller RESET jele aktív, a porton egy logikai egy szint van. Ezért a nulla aktív szintként van kiválasztva. A terhelés átkapcsolásához két optotirisztort használnak, amelyek egymás mellé vannak kötve. Az optotirisztoros LED-ek sorba vannak kötve. A LED áramát az R16 ellenállás állítja be, és körülbelül 100 mA. A szabályozó két üzemmódban működhet, különböző teljesítménybeállítási fokozatokkal. Az üzemmód kiválasztása a JP1 jumper segítségével történik. Ennek a jumpernek az állapota azonnal lekérdezésre kerül a mikrokontroller alaphelyzetbe állítása után. Az 1. módban a teljesítmény beállítási lépése 1%. Ebben az esetben az indikátor 0 (0%) és 100 (100%) közötti számokat jelenít meg. A 2. módban a teljesítmény beállítási lépése 10%. Ebben az esetben az indikátor 0 (0%) és 10 (100%) közötti számokat jelenít meg. A fokozatok számának 10 kiválasztása a 2. módban annak a ténynek köszönhető, hogy bizonyos esetekben (például elektromos tűzhely vezérlése) nincs szükség a teljesítmény beállítására. Ha a szabályozót csak a 2-es üzemmódban kívánják használni, akkor a HG1 jelző és az R8, R9 ellenállások nem telepíthetők. Általánosságban elmondható, hogy a szabályozó lehetővé teszi az egyes üzemmódok teljesítményszintjének tetszőleges beállítását. Ehhez a 0005H címen a 0005H címen, a 000BH címen a 2. módban pedig a 000BH címen be kell írnia a programkódba az 1. módhoz tartozó színátmenetek kívánt értékét. Ne feledje, hogy az 1. módban a fokozatok maximális száma nem lehet több. 127-nél, a 2-es módban pedig nem több, mint 99, mert ebben a módban nem lehetséges a százas megjelenítés.

Akár 2 A terhelőárammal az optotirisztorok radiátorok nélkül is használhatók. Nagyobb terhelési áramok esetén az optotirisztorokat 50-80 cm2-es hűtőbordákra kell felszerelni. 50 V-nál kisebb feszültségű szabályozó használata esetén az optotirisztorok bármilyen feszültségosztályúak lehetnek. Hálózati feszültséggel végzett munka esetén az optotirisztorok osztályának legalább 6-osnak kell lennie. Teljesítményként bármilyen kis teljesítményű transzformátor használható, amelynek szekunder tekercsfeszültsége 8-10 V (AC) és megengedett terhelőáram legalább 200 mA transzformátor. A VD3 - VD6 diódák bármilyen betűvel helyettesíthetők KD208, KD209 diódákkal vagy KTs405 egyenirányító híddal. Az U2 típusú 7805 stabilizátor chip (hazai analóg KR142EN5A, KR1180EN5) nem igényel radiátort. VT1 - VT3 tranzisztorok - bármilyen kis teljesítményű p-n-p. A VT4 tranzisztor bármilyen betűvel helyettesíthető KT815, KT817 tranzisztorokkal. VD1, VD2 diódák - bármilyen kis teljesítményű szilícium, például KD521, KD522. SB1 és SB2 gombok - bármilyen kicsi, reteszelés nélkül, például PKN-159. Kijelzők HG1 - HG3 - bármely hétszegmens közös anóddal. Csak kívánatos, hogy elegendő fényerővel rendelkezzenek. C3, C4, C6 kondenzátorok - bármilyen elektrolitikus. A többi kondenzátor kerámia. Az R16 ellenállás MLT-0,5, a többi MLT-0,125. Még kényelmesebb az SMD ellenállások, például a P1-12 használata. Az U1 chip az aljzatra van felszerelve. Ha a szabályozó szervizelhető alkatrészekből van összeállítva, és a mikrokontroller hiba nélkül van programozva, akkor a szabályozót nem kell beállítani. Csak a hálózati frekvenciához való csatlakozás helyességét célszerű ellenőrizni. Ehhez szinkronizálni kell az oszcilloszkópot a hálózati feszültséggel, és meg kell győződni arról, hogy a kijelző pásztázó impulzusai (a mikrokontroller RXD és TXD érintkezőinél) szinkronban vannak a hálózattal és dupla hálózati frekvenciájúak. Ha egy terhelés csatlakoztatásakor a szinkronizálás megszakad az interferencia miatt, 1-4,7 nf kapacitású kondenzátort kell csatlakoztatni a komparátor bemenetei közé (a mikrokontroller 12, 13 érintkezői).

A szoftver letölthető: a pwr100.bin (366 bájt) fájl tartalmazza a ROM firmware-t, a pwr100.asm fájl (7106 bájt) a forrásszöveget. A TASM 2.76 használatával történő fordításhoz szükséges könyvtárak a lib.zip archívumban találhatók (2575 bájt).

1%-os teljesítményszabályozási lépésnél a hálózati feszültség instabilitása a fő teljesítménybeállítási hiba forrása. Ha a terhelés nincs galvanikusan csatlakoztatva a hálózathoz, akkor könnyen megmérhető a terhelésre adott feszültség átlagos értéke, és visszacsatoló áramkör segítségével állandóan tartható. Ezt az elvet a második szabályozó hajtja végre. A készülék blokkvázlata az ábrán látható. 3.


3. ábra. Készülék blokkdiagramja

Az automatikus szabályozási módban való működéshez két Br Bresenham modulátort használnak. Csíkos útitakaró. 1 és Br. Csíkos útitakaró. 2, amelyek szoftverben vannak megvalósítva. A modulátor bemenetén Br. Csíkos útitakaró. 1 megkapja a szükséges tápkódot, amelyet a vezérlőgombokkal lehet beállítani. Ennek a modulátornak a kimenetén impulzussorozat jön létre, amely az 1. aluláteresztő szűrővel történő szűrést követően a komparátor egyik bemenetére kerül. A terhelésről eltávolított feszültség az LPF 2 aluláteresztő szűrőn keresztül jut a komparátor második bemenetére. A komparátor kimenetéről egy egybites hibajelet küldenek a mikrokontroller bemenetére, ahol digitálisan szűrik. Mivel a DF digitális szűrő a modulátorokkal szinkronban működik, a kimenő impulzussorozatok ismétlési frekvenciáján és ennek a frekvenciának a felharmonikusainál a hatékony hullámzáscsökkentés biztosított. A digitális szűrő kimenetéről egy 8 bites hibajel kerül az integráló IR szabályozóba. A pontosság növelése érdekében az integráló vezérlő 16 bites rácson működik. A vezérlő kimeneti kódjának alsó 8 bitje a Br modulátor bemenetére kerül. Csíkos útitakaró. 2, amelynek kimenetén impulzussorozat jön létre, amely a tirisztorok vezérlésére szolgál.

A második szabályozó sematikus diagramja az ábrán látható. 4.


4. ábra. A második szabályozó sematikus diagramja

Ez a szabályozó áramkörét tekintve nagyon hasonló a fent leírthoz, ezért érdemes csak a különbségein foglalkozni. Mivel a mikrokontroller rendelkezésre álló I/O portjai nem voltak elegendőek, a beépített komparátor használatát el kellett hagynunk. A szabályozó kettős U2 komparátort használ, LM393 típusú. A komparátor első fele a hálózati feszültséghez való kötődésre szolgál. Az LM393 jellemzői miatt szükséges volt az R27 ellenállás hozzáadása a kötőáramkörhöz, amely az R14-el, R15-tel együtt feszültségosztót képez, amely csökkenti a negatív feszültséget a komparátor bemenetein. A hálózati frekvencia négyszöghulláma a komparátor kimenetéről az INT0 mikrokontroller bemenetére kerül. A komparátor második felét a visszacsatoló hurokban használják. A T1 mikrokontroller bemenetére egybites hibajel érkezik. Az R16, C7 és R17, C8 elemekből kialakított aluláteresztő szűrők vannak beépítve a komparátor bemeneteire. A modulátor kimenetének jele (a mikrokontroller T0 tűje) az R18, R19 osztón keresztül jut az aluláteresztő szűrő bemenetére. Az osztó azért szükséges, mert a komparátor nem tud a tápfeszültséghez közeli bemeneti feszültséggel működni. Az osztó után az impulzusok amplitúdója körülbelül 3,5 V. Az amplitúdó stabilitását a +5 V-os tápfeszültség stabilitása határozza meg, amely referenciaként szolgál. A terhelésről eltávolított feszültség egy másik aluláteresztő szűrő bemenetére jut, szintén az R20, R21 ellenállásokból kialakított osztón keresztül. Ez az osztó úgy van kiválasztva, hogy névleges hálózati feszültség és 100%-os terhelés mellett az aluláteresztő szűrő kimenetének feszültsége 3,5 V. Az INT1 mikrokontroller kimenetéről érkező jel egy tranzisztoros kapcsolón keresztül kerül vezérlésre. a tirisztorok. A V1 és V2 optotirisztorok a VD11 dióda szerelvénnyel együtt vezérelt egyenirányítót alkotnak, amely táplálja a terhelést.

A mikrokontroller portjainak mentése érdekében a vezérlőgombok eltérőek. Hiány van a szabályozó működési ciklusában, ha a visszajelzők kialszanak. Ekkor ezen indikátorok vonalaival lehetett beolvasni a gombokat. Így a három gomb ráadásul csak egy sort használ: ez a P3.7 visszatérési sor. A harmadik gomb az "AUTO" mód vezérléséhez volt szükséges. Bekapcsolás után azonnal kézi üzemmódban van a szabályozó, pl. funkcionálisan megfelel a fent leírt vezérlőnek. Az automatikus vezérlési mód bekapcsolásához egyszerre kell megnyomnia az "AUTO" és az "UP" gombot. Az "AUTO" LED világít. Ebben az üzemmódban a szabályozó automatikusan fenntartja a beállított teljesítményt. Ha most megnyomja és lenyomva tartja az "AUTO" gombot, akkor a jelzőfényeken láthatja a szabályozó aktuális állapotát (a kimenő teljesítmény százalékos arányát, amely a hálózati feszültség ingadozása esetén változik, így a teljesítmény változatlan marad). Ha a hálózati feszültség annyira leesett, hogy az áramellátás már nem lehetséges, az „AUTO” LED villogni kezd. Az automatikus vezérlési módot az "AUTO" és a "LE" gomb egyidejű megnyomásával kapcsolhatja ki.

Ha a terhelési áram meghaladja a 2 A-t, optotirisztorokat kell felszerelni a hűtőbordára. Az optotirisztorok alapjai az anódokra csatlakoznak, így ebben az áramkörben a készülékek közös radiátorra szerelhetők, amely a készülék közös vezetékére csatlakozik. VD11-ként célszerű Schottky-diódákból álló szerelvényt (vagy két különálló Schottky-diódát, például KD2998-at) használni. Végső megoldásként használhat hagyományos diódákat, amelyek lehetővé teszik a szükséges terhelési áramot. Jó eredmények érhetők el a KD2997, KD2999, KD213 használatával. Az LM393 komparátort az Integral szoftver gyártja IL393 néven. Használhat két különálló komparátort is, például az LM311-et (más néven KR554CA3). A KP505A tranzisztor helyett (amelyet a tranzisztorgyár Minszkben gyártott) használhatja a KT815, KT817 bipoláris tranzisztort, ha 1 Kom ellenállást ad sorba a VT3 kollektoráramkörhöz. A többi részre vonatkozó követelmények ugyanazok, mint a fent leírt szabályozó esetében. A szabályozó konfigurálásához terhelést kell rá csatlakoztatni, és a névleges hálózati feszültséget kell alkalmazni (például LATR segítségével). Ezután be kell állítania a maximális teljesítményt (100%). Az R21 vágóellenállás használatával nullához közeli feszültségkülönbséget kell elérni az U2B komparátor 5. és 6. bemenetén. Ezt követően csökkentenie kell a teljesítményt 90% -ra, és be kell kapcsolnia az "AUTO" módot. Az R21 beállításával egybeesést kell elérni (±1 egység pontossággal) a beépített teljesítmény és a szabályozó állapotának vezérlési üzemmódjában (az "AUTO" gomb megnyomásával) a jelzőfények leolvasásával.

A szoftver letölthető: a pwr100a.bin (554 bájt) fájl tartalmazza a ROM firmware-t, a pwr100a.asm fájl (10 083 bájt) a forrásszöveget. A TASM 2.76 használatával történő fordításhoz szükséges könyvtárak a lib.zip archívumban találhatók (2575 bájt).

Radioelemek listája

Kijelölés típus Megnevezés Mennyiség jegyzetÜzletA jegyzettömböm
1.opció.
U1 MK AVR 8 bites

AT89C2051

1 Jegyzettömbhöz
U3 Lineáris szabályozó

LM7805

1 Jegyzettömbhöz
VT1-VT3 Bipoláris tranzisztor

KT3107V

3 Jegyzettömbhöz
VT4 Bipoláris tranzisztor

KT972A

1 Jegyzettömbhöz
V1, V2 Optocsatoló tirisztorTO125-12,5-62 Jegyzettömbhöz
VD1, VD2 Egyenirányító dióda

1N4148

2 Jegyzettömbhöz
VD3-VD6 Egyenirányító dióda

FR157

4 Jegyzettömbhöz
C1, C2 Kondenzátor33 pF2 Jegyzettömbhöz
C3 1 µF1 Jegyzettömbhöz
C4 Elektrolit kondenzátor33 µF1 Jegyzettömbhöz
C5 Kondenzátor0,1 µF1 Jegyzettömbhöz
C6 Elektrolit kondenzátor1000 µF 25 V1 Jegyzettömbhöz
R1-R9 Ellenállás

200 Ohm

9 Jegyzettömbhöz
R10, R11 Ellenállás

4,7 kOhm

2 Jegyzettömbhöz
R12-R15, R17, R18 Ellenállás

10 kOhm

6 Jegyzettömbhöz
R16 Ellenállás

51 Ohm

1 0,5 W Jegyzettömbhöz
ZQ1 Kvarc rezonátor12 MHz1 Jegyzettömbhöz
SB1, SB2 Gomb 2 Jegyzettömbhöz
JP1 Jumper 1 Jegyzettömbhöz
HG1-HG3 LED kijelzőELC36143 Jegyzettömbhöz
T1 Transzformátor5 W 9-12 Volt1 Jegyzettömbhöz
S1 Kapcsoló 1 Jegyzettömbhöz
FU1 Biztosíték0,315 A1 Jegyzettömbhöz
2. lehetőség.
U1 MK AVR 8 bites

AT89C2051

1 Jegyzettömbhöz
U2 Összehasonlító

LM393

1 Jegyzettömbhöz
U3 Lineáris szabályozó

LM7805

1 Jegyzettömbhöz
VT1-VT3 Bipoláris tranzisztor

KT3107V

3 Jegyzettömbhöz
VT4 TranzisztorKP505A1 Jegyzettömbhöz
V1, V2 Optocsatoló tirisztorTO125-12,5-62 Jegyzettömbhöz
VD1-VD5 Egyenirányító dióda

1N4148

5 Jegyzettömbhöz
VD6 Fénykibocsátó dióda 1 Jegyzettömbhöz
VD7-VD10 Egyenirányító dióda

FR157

4 Jegyzettömbhöz
VD11 Schottky dióda

MBR3045CT

1 Jegyzettömbhöz
C1, C2 Kondenzátor33 pF2

A Bresenham-algoritmus a számítógépes grafika egyik legrégebbi algoritmusa. Úgy tűnik, hogyan lehet alkalmazni a rasztervonalak felépítésére szolgáló algoritmust otthoni forrasztókemencék létrehozásakor? Kiderült, hogy lehetséges, és nagyon tisztességes eredménnyel. A jövőre nézve azt mondom, hogy ez az algoritmus nagyon jól betáplál egy kis fogyasztású 8 bites mikrokontrollert. De először a dolgok.

Bresenham algoritmusa egy olyan algoritmus, amely meghatározza, hogy egy kétdimenziós raszter mely pontjait kell árnyékolni ahhoz, hogy két adott pont közötti egyenes közelítését kapjuk. Az algoritmus lényege, hogy minden oszlopra x(lásd a képet) határozza meg, melyik sort Y a vonalhoz legközelebb, és rajzoljon egy pontot.

Most nézzük meg, hogyan segít egy ilyen algoritmus a fűtőelemek elektromos kemencében történő vezérlésénél.

A fűtőelem 220V/50Hz hálózati feszültségről működik. Vessünk egy pillantást a grafikonra.


Ha ilyen feszültséget adunk tiszta formájában az elektromos fűtőberendezés bemenetére, akkor a kimeneten 100%-os fűtőteljesítményt kapunk. Ez egyszerű.



Mi történik, ha a fűtőelem bemenetére csak pozitív félhullámot kapcsolunk a hálózati feszültségből? Így van, 50%-os fűtési teljesítményt kapunk.



Ha minden harmadik félhullámot alkalmazunk, 33% teljesítményt kapunk.

Példaként vegyünk a kimenő teljesítmény 10%-os gradációját és egy 100 ms-os időtartamot, ami a hálózati feszültség 10 félhullámának felel meg. Rajzoljunk egy 10x10-es rácsot, és képzeljük el, hogy a tengely Y ez a kimeneti teljesítmény értékek tengelye. Húzzunk egy egyenest 0-tól a szükséges teljesítményértékig.

Nyomon követed a függőségedet?
Ha az időtartamot 1 másodpercre növeli, a kimeneti teljesítmény 1%-os gradációját érheti el. Az eredmény egy 100x100-as rács lesz, minden következménnyel együtt.

És most a jó dolgokról:
A Bresenham-algoritmus egy hurokban szerkeszthető úgy, hogy a tengely mentén minden lépésben x csak kövesse nyomon a hibaértéket, ami azt jelenti - az aktuális érték közötti függőleges távolság yés pontos érték yáramhoz x. Valahányszor növeljük x, növeljük a hibaértéket a meredekség mértékével. Ha a hiba meghaladja a 0,5-öt, a sor közelebb került a következőhöz y, tehát növeljük y eggyel (olvasd - kihagyunk egy félhullámot a feszültségből), miközben a hibaértéket 1-gyel csökkentjük.

Ez a megközelítés könnyen ciklikussá redukálható egész szám összeadása(erről majd később, az MK működési algoritmusának ismertetésekor a következő cikkben), ami a mikrokontrollereknél határozott pluszt jelent.

Szándékosan nem terheltelek képletekkel. Az algoritmus elemi, könnyen Google-elhető. Csak szeretném bemutatni az áramkör-tervezésben való alkalmazási lehetőségét. A terhelés szabályozásához a nulla érzékelővel rendelkező MOC3063 triac optocsatoló tipikus bekötési rajzát kell használni.

Ennek a megközelítésnek számos előnye van.

  • Minimális interferencia a hálózatban a nagy terhelés gyakori kapcsolása miatt; a be-/kikapcsolás azokban a pillanatokban történik, amikor a feszültség átlépi a nullát.
  • Egy nagyon egyszerű algoritmus - minden számítás egész számokkal való munkavégzésre redukálódik, ami jó egy mikrokontroller számára.
  • Nem kell elkeríteni a feszültség nulla keresztezés érzékelőt (hello MOC3063). Még ha az MK egyszerűen megrántja a lábát az időzítőn, kinyitja az optocsatolót, a hiba nem lesz kritikus.

Folytatjuk.

Hasonló cikkek

2023 rsrub.ru. A modern tetőfedési technológiákról. Építőipari portál.