Tartalomjegyzék:

PID hőmérséklet -szabályozó: 7 lépés
PID hőmérséklet -szabályozó: 7 lépés

Videó: PID hőmérséklet -szabályozó: 7 lépés

Videó: PID hőmérséklet -szabályozó: 7 lépés
Videó: Keltető házilag - esti hőmérséklet macera 2024, November
Anonim
PID hőmérséklet -szabályozó
PID hőmérséklet -szabályozó

A barátom műanyag extrudert épít műanyag újrahasznosítás céljából (https://preciousplastic.com). Neki kell szabályoznia az extrudálás hőmérsékletét. Ebből a célból fúvóka melegítő szalagot használ. Ebben a fúvókában van egy hőelem és egy fűtőegység, amelyek lehetővé teszik a hőmérséklet mérését, és végül a kívánt hőmérséklet elérését (retroaktív hurok készítése).

Amikor hallottam, hogy több PID -szabályozónak szüksége van ezekre a fúvókafűtés -sávokra, azonnal felkeltette bennem a vágyat, hogy megpróbáljunk sajátot készíteni.

1. lépés: Eszközök és anyagok

Eszközök

  • forrasztópáka, forrasztóhuzal és fluxus
  • csipesz
  • marógép (kémiai maratás is lehetséges a PCB prototípusok készítéséhez) (a PCB -t a sas fájlommal is megrendelheti)
  • hőmérő (kalibráláshoz)
  • arduino (bármilyen típus) vagy AVR programozó
  • FTDI soros TTL-232 USB kábel
  • lézervágó (opcionális)
  • multiméter (ohmmérő és voltmérő)

Anyag

  • Bakelit egyoldalú rézlemez (legalább 60*35 mm) (tönkretettem a fűrészemet az üvegszálas vásárlásakor, ezért légy óvatos: bakelit)
  • Attiny45 mikrovezérlő
  • LM2940IMP-5 feszültségszabályozó
  • AD8605 operációs erősítő
  • NDS356AP tranzisztor
  • egy csomó ellenállás és kondenzátor (nálam van az SMT 0603 adafruit könyv)
  • 230V-9V AC-DC transzformátor
  • 1N4004 diódák
  • szilárdtest relé
  • körömlakk (opcionális)

2. lépés: A PCB maratása

Etch a PCB
Etch a PCB
Etch a PCB
Etch a PCB
Etch a PCB
Etch a PCB

A NYÁK marásához a Proxxon MF70 CNC transzformált és egy kúpos végét használtam. Úgy gondolom, hogy bármelyik gravírozó végcél működni fog. A Gcode fájlt közvetlenül az eagle és a pcb-gcode plugin állította elő. Mindössze három menetet hajtottak végre, hogy biztosítsák a jó útvonalat, de anélkül, hogy órákat kellene tölteni az összes réz őrlésével. Amikor a NYÁK kiment a CNC gépből, vágóval tisztítottam az útvonalakat és multiméterrel teszteltem.

Paraméterek: előtolás 150 mm/perc, mélység 0,2 mm, forgási sebesség 20 000 t/perc

3. lépés: Forrasztja az alkatrészeket

Az alkatrészek forrasztása
Az alkatrészek forrasztása

A csipesszel és a forrasztópáka segítségével helyezze az alkatrészeket a megfelelő helyre, és forrasztja be fluxussal (segít), és kezdje a legkisebb alkatrészekkel. Ismét ellenőrizze multiméterrel, hogy nincsenek -e rövidzárlatok vagy nem csatlakoztatott elemek.

Az erősítő erősítését a kívánt ellenállás kiválasztásával választhatja ki (erősítés = (R3+R4)/R4). Vettem 1M és 2,7k, így az én esetemben a nyereség körülbelül 371. Nem tudom a pontos értéket, mert 5% -os toleranciát használok.

A hőelemem J típusú. Ez azt jelenti, hogy minden fokozathoz 0,05 mV -ot ad. A 371 -es erősítéssel fokonként 18,5 mV -ot kapok az erősítő kimenetéből (0,05*371). 200 ° C körül szeretnék mérni, így az erősítő kimenetének 3,7 V (0,0185*200) körül kell lennie. Az eredmény nem haladhatja meg az 5 V -ot, mert az 5 V -os referenciafeszültséget használom (külső).

A kép megfelel az első (nem működő) verziónak, amit készítettem, de az elv ugyanaz. Ebben az első verzióban egy relét használtam, és a tábla közepére tettem. Amint nagyfeszültségűre váltottam, tüském volt, ami miatt a vezérlő újraindult.

4. lépés: Programozza be a mikrokontrollert

Programozza be a mikrokontrollert
Programozza be a mikrokontrollert

Egy olyan arduino használatával, mint ebben az utasításban: https://www.instructables.com/id/How-to-Program-a… betöltheti a kódot.

FTDI-USB kábellel ellátott pro csecsebecsét használtam az Attiny 45 programozásához, de ez a módszer egyenértékű. Ezután a PB1 és a GDN tűt közvetlenül az FTDI-USB kábel RX és GND csatlakozójához csatlakoztattam, hogy megkapjam a soros adatokat, és képes legyek a hibakeresésre.

Az arduino vázlatban az összes paramétert nullára kell állítani (P = 0, I = 0, D = 0, K = 0). A hangolási lépés során kerülnek beállításra.

Ha nem lát füstöt vagy égett szagot, ugorhat a következő lépésre!

5. lépés: Összeszerelés és kalibrálás

Összeszerelés és kalibrálás
Összeszerelés és kalibrálás
Összeszerelés és kalibrálás
Összeszerelés és kalibrálás

Vigyázat: Soha ne csatlakoztassa egyszerre a tápegységet és az 5 V -ot a programozóból! Ellenkező esetben látni fogja a füstöt, amelyet az előző lépésben vettem. Ha nem biztos benne, hogy ezt tiszteletben tudja tartani, egyszerűen távolítsa el a programozó 5V -os tüskéjét. Engedtem, mert kényelmesebb volt számomra tápellátás nélkül programozni a szabályozót, és tesztelni a vezérlőt anélkül, hogy a fűtés őrülten melegítene az arcom előtt.

Most elágazhatja a hőelemet az erősítőn, és ellenőrizheti, hogy mér -e valamit (tartsa be a polaritást). Ha a fűtési rendszer szobahőmérsékletű, akkor nullát kell mérnie. A kézzel történő hevítésnek már kis értékekhez kell vezetnie.

Hogyan kell leolvasni ezeket az értékeket? Egyszerűen csatlakoztassa a PB1 és GDN csapokat közvetlenül az FTDI-USB kábel RX és GND csatlakozójához, és nyissa ki az arduino soros monitort.

Amikor a vezérlő elindul, piros értéket küld a chip belső hőmérője által. Így kompenzálom a hőmérsékletet (dedikált chip használata nélkül). Ez azt jelenti, hogy ha a hőmérséklet változik a művelet során, azt nem veszik figyelembe. Ez az érték chipenként nagyon eltér, ezért manuálisan kell megadni a REFTEMPERATURE definícióban a vázlat elején.

A szilárdtestalapú relé csatlakoztatása előtt ellenőrizze, hogy a kimeneti feszültség a relé által támogatott tartományban van -e (esetemben 3–25 V, az áramkör körülbelül 11 V -ot generál). (tiszteletben tartva a polaritást)

Ezek az értékek nem hőmérsékletek vagy Fahrenheit fokok, hanem az analóg -digitális átalakítás eredménye, így 0 és 1024 között változnak. Az 5 V -os referenciafeszültséget használom, tehát amikor az erősítő kimenete 5 V közelében van, az átalakítási eredmény 1024 közelében van.

6. lépés: PID hangolás

PID hangolás
PID hangolás

Meg kell említenem, hogy nem vagyok ellenőrzési szakértő, ezért találtam néhány paramétert, amelyek működnek számomra, de nem garantálom, hogy mindenkinél működik.

Először is el kell magyaráznom, mit csinál a program. Egyfajta szoftveres PWM -et valósítottam meg: a számlálót növeljük minden iterációnál, amíg el nem éri a 20'000 értéket (ebben az esetben 0 -ra áll vissza). A késleltetés ezredmásodpercre lassítja a hurkot. A legigényesebbek észreveszik, hogy az ellenőrzési időszak körülbelül 20 másodperc. Minden ciklus a számláló és a küszöb összehasonlításával kezdődik. Ha a számláló alacsonyabb a küszöbnél, akkor kikapcsolom a relét. Ha nagyobb, bekapcsolom. Tehát a teljesítményt a küszöb beállításával szabályozom. A küszöbszámítás minden másodpercben megtörténik.

Mi az a PID vezérlő?

Ha irányítani szeretne egy folyamatot, akkor rendelkezik a mért értékkel (analogData), az elérni kívánt értékkel (tempCommand), és módot ad a folyamat állapotának módosítására (seuil). Esetemben a küszöbértékkel történik ("seuil" franciául, de sokkal könnyebb írni és kiejteni (ejtsd "sey")), amely meghatározza, hogy mennyi ideig lesz a kapcsoló be- és kikapcsolva (a munkaciklus), tehát az energiamennyiséget betenni a rendszerbe.

Mindenki egyetért abban, hogy ha messze van az elérni kívánt ponttól, akkor nagy korrekciót hajthat végre, és ha közel van, akkor egy kis korrekcióra van szükség. Ez azt jelenti, hogy a korrekció a hiba függvénye (error = analogData-tempComand). Igen, de mennyit? Tegyük fel, hogy megszorozzuk a hibát egy tényezővel (P). Ez egy arányos vezérlő. Mechanikusan a rugó arányos korrekciót végez, mivel a rugóerő arányos a rugó nyomásával.

Valószínűleg tudja, hogy az autó felfüggesztése rugóból és lengéscsillapítóból (lengéscsillapító) áll. Ennek a csappantyúnak az a szerepe, hogy elkerülje az autó trambulinként történő visszapattanását. A származékos kifejezés pontosan ezt teszi. Csillapítóként olyan reakciót generál, amely arányos a hiba ingadozásával. Ha a hiba gyorsan változik, a korrekció csökken. Csökkenti a rezgéseket és a túllépéseket.

Az integrátor kifejezés itt van a tartós hiba elkerülése érdekében (integrálja a hibát). Konkrétan ez egy számláló, amelyet növelnek vagy csökkentenek, ha a hiba pozitív vagy negatív. Ezután a korrekciót ennek a számlálónak megfelelően növelik vagy csökkentik. Nincs mechanikai egyenértékűsége (vagy van ötlete?). Lehet, hogy hasonló hatás érhető el, amikor beviszi autóját a szervizbe, és a szerelő észreveszi, hogy az ütések szisztematikusan túl alacsonyak, és úgy dönt, hogy további előfeszítést ad hozzá.

Mindezt a következő képlet foglalja össze: korrekció = P*e (t)+I*(de (t)/dt)+D*integrál (e (t) dt), P, I és D három paraméter, amelyek hangolni kell.

A verziómban hozzáadtam egy negyedik kifejezést, amely az "a priori" (előre továbbítás) parancs, amely szükséges egy bizonyos hőmérséklet fenntartásához. A hőmérséklet arányos parancsát választottam (ez jó közelítés a fűtési veszteségekhez. Igaz, ha figyelmen kívül hagyjuk a sugárzási veszteségeket (T^4)). Ezzel a kifejezéssel az integrátor könnyebbé válik.

Hogyan lehet megtalálni ezeket a paramétereket?

Kipróbáltam egy hagyományos módszert, amelyet a "pid tuning hőmérséklet szabályozó" google -ban talál, de nehezen alkalmazhatónak találtam, és végül a saját módszeremmel végeztem.

Az én módszerem

Először állítsa a P, I, D értéket nullára, a "K" és a "tempCommand" értékeket pedig kis értékekre (például K = 1 és tempCommand = 100). Kapcsolja be a rendszert, és várjon, várjon, várjon… amíg a hőmérséklet stabilizálódik. Ezen a ponton tudja, hogy 1*100 = 100 "seuil" esetén a hőmérséklet X -re hajlik. Tehát tudja, hogy 100/20000 = 5% paranccsal elérheti X -et. De a cél az, hogy elérjük a 100 -at mert ez "tempCommand". Egy arány használatával kiszámíthatja a K -t, hogy elérje a 100 -at (tempCommand). Elővigyázatosságból kisebb értéket használtam, mint a számított. Valójában könnyebb többet melegíteni, mint lehűteni. Szóval végre

Kfinal = K*tempCommand*0.9/X

Most, amikor elindítja a vezérlőt, természetesen a kívánt hőmérsékletre kell törekednie, de ez nagyon lassú folyamat, mert csak a fűtési veszteségeket kompenzálja. Ha az egyik hőmérsékletről a másikra szeretne lépni, bizonyos mennyiségű hőenergiát kell hozzáadni a rendszerhez. P határozza meg, hogy milyen sebességgel fekteti az energiát a rendszerbe. Állítsa a P értéket kis értékre (például P = 10). Próbáljon ki (majdnem) hidegindítást. Ha nincs nagy túllépése, próbálja meg a duplával (P = 20), ha most van egy próbálkozása a kettő között. Ha 5% -os túllépés van, akkor jó.

Most növelje a D -t, amíg nincs túllépés. (mindig próbák, tudom, hogy ez nem tudomány) (D = 100 -at vettem)

Ezután adjuk hozzá I = P^2/(4*D) (Ziegler-Nicholts módszerén alapul, garantálnia kell a stabilitást) (számomra I = 1)

Miért ezek a próbák, miért nem a tudomány?

Tudom, tudom! Van egy hatalmas elmélet, és kiszámíthatja az átviteli függvényt, a Z transzformációt és a blablabla -t. Egységes ugrást akartam generálni, majd 10 percig rögzíteni a reakciót, és megírni az átviteli függvényt, és akkor mi van? Nem akarok számtant készíteni 200 taggal. Szóval ha valakinek van ötlete, szívesen megtanulnám, hogyan kell helyesen csinálni.

A legjobb barátaimra, Zieglerre és Nicholsra is gondoltam. Azt mondták, keressek egy rezgéseket generáló P -t, majd alkalmazzák a módszerüket. Soha nem találtam ezeket a rezgéseket. Az egyetlen dolog, amit találtam, egy óóóóóóóás volt az ég felé.

És hogyan kell modellezni azt a tényt, hogy a fűtés nem ugyanaz a folyamat, mint a hűtés?

Folytatom a kutatást, de most csomagoljuk be a vezérlőt, ha elégedett a kapott teljesítménygel.

7. lépés: Csomagolja be

Csomagolja be
Csomagolja be
Csomagolja be
Csomagolja be
Csomagolja be
Csomagolja be
Csomagolja be
Csomagolja be

Hozzáférésem volt a moszkvai fablabhoz (fablab77.ru) és a lézervágójukhoz, és hálás vagyok. Ez a lehetőség lehetővé tette számomra, hogy egy szép csomagot készítsek egy kattintással, amelyet egy plugin generált, aki a kívánt méretű dobozokat készít (h = 69 l = 66 d = 42 mm). A tetején két lyuk (átmérő = 5 mm) van a led és a kapcsoló számára, és egy rés az oldalon a programozó csapok számára. A transzformátort két fadarabbal, a NYÁK -t két csavarral rögzítettem. A kapocslécet forrasztottam a vezetékekhez és a NYÁK -hoz, hozzáadtam a kapcsolót a transzformátor és a NYÁK -bemenet között, sorba kötöttem a vezetéket a PBO -val egy ellenállással (300 Ohm). Az elektromos szigeteléshez körömlakkot is használtam. Az utolsó teszt után ragasztottam a dobozt. Ez az.

Ajánlott: