INHOUDSOPGAWE:

PID -temperatuurbeheerder: 7 stappe
PID -temperatuurbeheerder: 7 stappe

Video: PID -temperatuurbeheerder: 7 stappe

Video: PID -temperatuurbeheerder: 7 stappe
Video: Important PID Concepts | Understanding PID Control, Part 7 2024, Julie
Anonim
PID -temperatuurbeheerder
PID -temperatuurbeheerder

My vriend bou 'n plastiese ekstruder vir plastiekherwinning (https://preciousplastic.com). Hy moet die ekstrusietemperatuur beheer. Vir hierdie doel gebruik hy 'n spuitverwarmerband. In hierdie spuitstuk is daar 'n termokoppel en 'n verwarmingseenheid waarmee ons die temperatuur kan meet en uiteindelik die gewenste temperatuur kan bereik (maak 'n terugwerkingslus).

Toe ek hoor dat hy deur verskeie PID -beheerders nodig was om al hierdie spuitverwarmerbande te beheer, het dit my dadelik die begeerte gegee om ons eie te probeer maak.

Stap 1: gereedskap en materiaal

Gereedskap

  • soldeerbout, soldeerdraad en vloed
  • pincet
  • freesmasjien (chemiese ets is ook moontlik vir prototipe PCB) (u kan ook die PCB saam met my arendlêer bestel)
  • termometer (vir kalibrasie)
  • arduino (enige tipe) of 'n AVR -programmeerder
  • FTDI seriële TTL-232 USB-kabel
  • lasersnyer (opsioneel)
  • multimeter (ohmmeter en voltmeter)

Materiaal

  • Bakeliet koperplaat aan die een kant (minimum 60*35 mm) (ek het my saag verwoes toe ek die veselglas gekoop het, so wees versigtig: Bakeliet)
  • Attiny45 mikrobeheerder
  • LM2940IMP-5 spanningsreguleerder
  • AD8605 operasionele versterker
  • NDS356AP transistor
  • 'n klomp weerstande en kapasitors (ek het die SMT 0603 adafruit -boek)
  • 230V-9V wisselstroom-transformator
  • 1N4004 diodes
  • vaste toestand aflos
  • naellak (opsioneel)

Stap 2: Ets die PCB

Ets die PCB
Ets die PCB
Ets die PCB
Ets die PCB
Ets die PCB
Ets die PCB

Ek het my Proxxon MF70 CNC getransformeer en 'n koniese eindpunt gebruik om die printplaat te maal. Ek dink dat enige gravure -eindpunt sou werk. Die Gcode-lêer is direk gegenereer deur eagle en die pcb-gcode-inprop. Slegs drie passe is gedoen om 'n goeie roete -skeiding te verseker, maar sonder om ure lank al die koper te maal. Toe die PCB uit die CNC -masjien gaan, het ek die roetes met 'n snyer skoongemaak en met 'n multimeter getoets.

Parameters: toevoertempo 150 mm/min, diepte 0,2 mm, rotasiesnelheid 20 000 t/min

Stap 3: Soldeer die komponente

Soldeer die komponente
Soldeer die komponente

Plaas die komponente op die regte plekke met die pincet en die soldeerbout en soldeer dit met behulp van vloeistof (dit help) en begin met die kleinste komponente. Kontroleer weer met 'n multimeter dat u geen kortsluitings of onaangeslote elemente het nie.

U kan die versterkersversterking kies deur die gewenste weerstand te kies (versterking = (R3+R4)/R4). Ek het 1M en 2.7k geneem, so in my geval is die wins gelyk aan ongeveer 371. Ek kan nie die presiese waarde weet nie, want ek gebruik 'n weerstand van 5%.

My termokoppel is 'n J -tipe. Dit beteken dat dit 0,05mV vir elke graad gee. Met die wins van 371 kry ek 18,5 mV per graad uit die versterker se uitset (0,05*371). Ek wil ongeveer 200 ° C meet, sodat die versterker se uitset ongeveer 3,7V (0,0185*200) moet wees. Die resultaat moet nie meer as 5V wees nie, want ek gebruik die 5V -verwysingspanning (ekstern).

Die prent stem ooreen met die eerste (nie werkende) weergawe wat ek gemaak het, maar die beginsel is dieselfde. In hierdie eerste weergawe gebruik ek 'n relais en plaas dit in die middel van die bord. Sodra ek met hoogspanning skakel, het ek spykers gehad wat die kontroleerder laat herlaai het.

Stap 4: Programmeer die mikrobeheerder

Programmeer die mikrobeheerder
Programmeer die mikrobeheerder

Met behulp van 'n arduino soos in hierdie instruksies: https://www.instructables.com/id/How-to-Program-a… kan u die kode laai.

Ek het 'n pro snuistery met 'n FTDI-USB-kabel gebruik om die Attiny 45 te programmeer, maar hierdie metode is ekwivalent. Ek het toe die pen PB1 en GDN direk in die RX en GND van die FTDI-USB-kabel gekoppel om die seriële data te ontvang en te kan ontfout.

U moet al die parameters op nul stel (P = 0, I = 0, D = 0, K = 0) in die arduino -skets. Hulle word ingestel tydens die afstemstap.

As u nie rook of reuk sien verbrand nie, kan u na die volgende stap spring!

Stap 5: Monteer en kalibreer

Monteer en kalibreer
Monteer en kalibreer
Monteer en kalibreer
Monteer en kalibreer

Let op: Moet nooit die kragbron en die 5V van die programmeerder gelyktydig aansluit nie! Anders sien u die rook wat ek in die vorige stap geneem het. As u nie seker is dat u dit kan respekteer nie, kan u die 5v -pen vir die programmeerder verwyder. Ek laat dit toe, want dit was vir my geriefliker om die beheerder sonder kragtoevoer te programmeer en om die kontroleerder te toets sonder dat die verwarmer soos 'n mal voor my gesig verhit word.

Nou kan u die termokoppel op die versterker vertak en kyk of u iets meet (respekteer die polariteit). As u verwarmingstelsel by kamertemperatuur is, moet u nul meet. Deur dit met die hand te verhit, behoort dit alreeds 'n paar klein waardes te veroorsaak.

Hoe om hierdie waardes te lees? Steek eenvoudig die penne PB1 en GDN direk in die RX en GND van die FTDI-USB-kabel en maak die arduino seriële monitor oop.

As die beheerder begin, stuur dit die waarde rooi deur die interne termometer van die skyfie. Dit is hoe ek die temperatuur vergoed (sonder om 'n spesiale chip te gebruik). Dit beteken dat dit nie in ag geneem word as die temperatuur tydens die operasie verander nie. Hierdie waarde verskil baie van die een chip na die ander, dus moet dit met die hand in die REFTEMPERATUUR -definisie aan die begin van die skets ingevoer word.

Voordat u die vaste toestand -relais aansluit, moet u seker maak dat die spanningsuitset binne die bereik is wat u relais ondersteun (3V tot 25V in my geval, die stroombaan genereer ongeveer 11V). (respekteer die polariteit)

Hierdie waardes is nie temperature in graad of Fahrenheit nie, maar die gevolg van die analoog na digitale omskakeling, so hulle wissel tussen 0 en 1024. Ek gebruik die 5V verwysingspanning dus, wanneer die versterker se uitset naby 5V is, is die omskakelingsresultaat naby 1024.

Stap 6: PID Tuning

PID Tuning
PID Tuning

Ek moet noem dat ek nie 'n beheerkenner is nie, en ek het 'n paar parameters gevind wat vir my werk, maar ek kan nie waarborg dat dit vir almal werk nie.

Eerstens moet ek verduidelik wat die program doen. Ek het 'n soort sagteware PWM geïmplementeer: 'n teller word by elke iterasie verhoog tot dit 20'000 bereik (in welke geval op 0 teruggestel word). 'N Vertraging vertraag die lus tot 'n millisekonde. Die mees kieskeurige van ons sal agterkom dat die kontroletydperk ongeveer 20 sekondes is. Elke lus begin met 'n vergelyking tussen die teller en 'n drempel. As die toonbank laer as die drempel is, skakel ek die aflos af. As dit groter is, skakel ek dit aan. Ek reguleer dus die krag deur die drempel in te stel. Die drumpelberekening vind elke sekonde plaas.

Wat is 'n PID -beheerder?

As u 'n proses wil beheer, het u die waarde wat u meet (analogData), die waarde wat u wil bereik (tempCommand) en 'n manier om die toestand van die proses (seuil) te verander. In my geval word dit gedoen met die drempel ("seuil" in Frans, maar baie makliker om te skryf en uit te spreek (spreek "sey" uit)) wat bepaal hoe lank die skakelaar aan en af sal wees (die dienssiklus) dus die hoeveelheid energie in die stelsel geplaas.

Almal is dit eens dat as u ver van die punt is wat u wil bereik, u 'n groot regstelling kan maak, en as u naby is, is 'n klein regstelling nodig. Dit beteken dat die regstelling 'n funksie van die fout is (fout = analogData-tempComand). Ja, maar hoeveel? Gestel ons vermenigvuldig die fout met 'n faktor (P). Dit is 'n proporsionele beheerder. Meganies maak 'n veer 'n proporsionele regstelling omdat die veerkrag eweredig is aan die veerkompressie.

U weet waarskynlik dat u motorophangings bestaan uit 'n veer en 'n demper (skokbreker). Die rol van hierdie demper is om te voorkom dat u motor soos 'n trampolien opskop. Dit is presies wat die afgeleide term doen. As die demper genereer dit 'n reaksie wat eweredig is aan die foutvariasie. As die fout vinnig verander, word die regstelling verlaag. Dit verminder ossillasies en oorskot.

Die term integrator is hier om permanente foute te vermy (dit integreer die fout). Konkreet is dit 'n teller wat toegeneem of verminder word as die fout positief of negatief is. Dan word die regstelling volgens hierdie teller verhoog of verlaag. Dit het geen meganiese ekwivalent nie (of het u 'n idee?). Miskien is daar 'n soortgelyke effek as u u motor na die diens bring, en die werktuigkundige sien dat die skokke stelselmatig te laag is en besluit om nog 'n voorlading by te voeg.

Dit alles word opgesom in die formule: regstelling = P*e (t)+I*(de (t)/dt)+D*integraal (e (t) dt), P, I en D is drie parameters wat gestem te word.

In my weergawe het ek 'n vierde term bygevoeg, wat die 'a priori' (feed forward) opdrag is wat nodig is om 'n sekere temperatuur te handhaaf. Ek het 'n proporsionele opdrag vir die temperatuur gekies (dit is 'n goeie benadering van die verwarmingsverliese. Dit is waar as ons die stralingsverliese (T^4) verwaarloos). Met hierdie term word die integrator ligter.

Hoe om hierdie parameters te vind?

Ek het 'n konvensionele metode probeer wat u kan vind deur 'pid tuning temperature controller' te gaan google, maar ek het dit moeilik gevind om toe te pas, en ek het met my eie metode beland.

My metode

Stel eers P, I, D op nul en plaas "K" en "tempCommand" op klein waardes (byvoorbeeld K = 1 en tempCommand = 100). Skakel die stelsel aan en wag, wag, wag … totdat die temperatuur gestabiliseer het. Op hierdie stadium weet u dat met 'n "seuil" van 1*100 = 100 die temperatuur neig na X. U weet dus dat u met 'n opdrag van 100/20000 = 5% X kan bereik. Maar die doel is om 100 te bereik omdat dit 'tempCommand' is. Deur 'n proporsie te gebruik, kan u K bereken om 100 (tempCommand) te bereik. Uit voorsorgmaatreël het ek 'n kleiner waarde as die berekende waarde gebruik. Dit is inderdaad makliker om meer te verhit as om af te koel. So uiteindelik

Kfinal = K*tempCommand*0.9/X

As u die beheerder begin, behoort dit natuurlik die temperatuur te hê wat u wil hê, maar dit is 'n baie stadige proses omdat u slegs die verhittingsverliese vergoed. As u van een temperatuur na 'n ander wil gaan, moet 'n hoeveelheid termiese energie in die stelsel gevoeg word. P bepaal met watter tempo jy die energie in die stelsel plaas. Stel P op 'n klein waarde (byvoorbeeld P = 10). Probeer 'n (amper) koue begin. As u nie 'n groot oorskryding het nie, probeer dan met die dubbele (P = 20), as u nou een tussen probeer het. As u 5% oorskry, is dit goed.

Verhoog nou D totdat u nie oorskry nie. (altyd proewe, ek weet dit is nie wetenskap nie) (ek het D = 100 geneem)

Voeg dan I = P^2/(4*D) by (dit is gebaseer op die Ziegler-Nicholts-metode, dit moet stabiliteit waarborg) (vir my I = 1)

Waarom al hierdie beproewings, waarom nie die wetenskap nie?

Ek weet ek weet! Daar is 'n groot teorie en u kan die oordragfunksie en die Z -transformasie en blablabla bereken. Ek wou 'n eenheidsprong genereer en dan die reaksie vir 10 minute opneem en die oordragfunksie skryf, en wat dan? Ek wil nie rekenkunde met 200 terme maak nie. As iemand dus 'n idee het, sal ek graag leer hoe om dit reg te doen.

Ek het ook aan my beste vriende Ziegler en Nichols gedink. Hulle het vir my gesê om 'n P te vind wat ossillasies genereer en dan hul metode toe te pas. Ek het nooit hierdie ossillasies gevind nie. Die enigste ding wat ek gevind het, was 'n oooooooovershoot na die lug.

En hoe kan u die feit stel dat verhitting nie dieselfde is as verkoeling nie?

Ek sal voortgaan met my navorsing, maar laat ons u beheerder nou verpak as u tevrede is met die prestasie wat u behaal.

Stap 7: Pak dit in

Pak dit in
Pak dit in
Pak dit in
Pak dit in
Pak dit in
Pak dit in
Pak dit in
Pak dit in

Ek het toegang tot die Moskou fablab (fablab77.ru) en hul lasersnyer gehad, en ek is dankbaar. Met hierdie geleentheid kon ek 'n aangename pakket maak met 'n enkele klik deur 'n inprop wat bokse met die gewenste afmetings maak (h = 69 l = 66 d = 42 mm). Daar is twee gate (diam = 5 mm) aan die bokant van die LED en die skakelaar en een spleet aan die kant vir die programmeerpenne. Ek het die transformator vasgemaak met twee stukke hout en die PCB met twee skroewe. Ek het die aansluitblok aan drade en aan die PCB gesoldeer, die skakelaar tussen die transformator en die kragtoevoer van die printbord bygevoeg, die LED aan die PBO gekoppel met 'n weerstand (300 Ohm) in serie. Ek het ook naellak gebruik vir elektriese isolasie. Na die laaste toets het ek die boks vasgeplak. Dis dit.

Aanbeveel: