DIY Thermoelektrisk Gjæringsskap

Hans Einar skrev:
Jeg har laget akkurat det som beskrives i post 1. Jeg brukte 90w elementer og 2x vannkjølt cpu kjølere med radiator på hver side.
Har skrinlagt det prosjektet. Problemet var at elementene ikke tålte kontinuerlig drift og røyk. Brukte kjølepasta og fikk det greit til. Men kjedelig når pilsen en mogren står i 20 grader og stormgjærer.
Håper dere får det til.

da tror jeg problemet er at den har blitt overopphetet. Så lenge man holder den varme siden klald nok, bør den tåle kontinuerlig drift

nordhagen skrev:
Spennende. Kanskje vi kunne samarbeide litt på dette? Er progger av yrke. Mangler erfaring med Arduino/C, men vil veldig gjerne lære.

Har allerede begynt på jobben med å lage en temperaturstyringsenhet med PI-en, så jeg har en del komponenter.
Jeg kan heller ikke så mye programmering, men kan litt basic og litt actionscript fra før, og kjenner meg lett igjen i C, stort sett de samme prinsippene. Ja, vi prøver å samarbeide litt på dette her!
Raspberry PI har jeg ikke prøvd, den har en del mer prosessorkraft, men det er jo ikke nødvendig til det vi prøver å gjøre her...

kvolden skrev:
AMelbye: Mulig jeg var uklar, men man kan absolutt regulere et peltierelement med PWM. Poenget er bare at man må passe på å gjøre det på en frekvens som er høy nok til at man ikke får nevneverdig temperaturvariasjon i elementet gjennom periodetiden. Noen få titalls kilohertz og oppover er helt trygt.

Reguleringen du foreslår er i praksis en P-regulator (Proporsjonalregulator). Det kan fungere, selv om proporsjonalitetsparameteret nok burde tunes inn etter forholdene, men man kan uansett droppe ATX-forsyningen og styre elementet med PWM direkte. Jeg ville nok også dyttet inn et integralledd, siden en ren P-regulator kan gi avvik som en PI-regulator vil rette opp.

Den enkleste, og dyreste, løsningen er nok å skaffe en dual output PID med PWM på utgangene. Men å implementere en tilsvarende sak på en raspberry pi, arduino eller en annen mikrokontrollerløsning er absolutt overkommelig. En løsning kan være å koble peltierelementet med en H-bro av MOSFETs, og bruke raspberry pi-en (eller noe annet) til å generere PWM-signalet og et styresignal for å bestemme polariteten og dermed om det skal varme eller kjøle.

Hva er et integral-ledd?

Jeg skal lese meg opp på dette med H-bro og mosfets. Dette er litt over hodet på meg :) Men jeg synes det virker like overkommelig å styre spenningsregulatoren på en PSU, og valget av AT/ATX kommer rett og slett av at jeg har 10-15stk liggende i kjelleren. Men om det er lettere å låse PSU på 15V og heller regulere ned vha PWM skal jeg definitivt ta dette i betraktning :)
 
brewpi et veldig kult prosjekt! Her er mye allerede gjort, men støtter brewpi throttling av peltier-elementer? Hvis ikke, er jeg redd for at det vil være langt over mine ferdigheter å skrive om deres kode til å støtte dette. Men det er jo heller ikke så sikkert at det er nødvendig å throtle elementet for å få dette til.

Hvis peltiere ikke tåler å styres av treg PWM, tåler de da å skifte mellom 0V og 15V en gang i minuttet? Dette er vel samme type slitasje?

Dreper dette peltieren er vi tilbake der vi var. Nesten. Men, hvis det er spennings-hopp peltieren ikke tåler:
hva med å koble en enormt stor kondis i parallell for å gi den et gradvis spenningsfall når den skrues av, og lage en treeeg softstart-krets for å gi gradvis økning i spenning når den skrues på?
 
Vel, å skrive om BrewPI-koden er noe jeg skulle kunne klare. Og bra det enda er noe, for jeg skjønner fortsatt ikke en dritt av hva det er vi skal gjøre med Peltier-elementene for å hindre at de kræsjer. Det må da kunne gå an å skru dem av og på for svingende!?
 
Ja, men det kan være at de må skrues av og på sakte. Jeg vet ikke, jeg bare gjetter, men det er et gjengående problem at peltiere går i stykker

Sent from my GT-I9100 using Tapatalk
 
Det bør ikke være noe problem å lage peltierkjøler med av/på styring som virker. Jeg har i hvertfall ikke hatt noen problemer med dette. Men det er ett par ting som er greit å ha i tankene.
- Det er ikke lurt å kjøre peltierelementene med for høy spenning og strøm. Selv om kjølebokselementene er spesifisert til å tåle 18V så er det nokså optimalt å kjøre de på 12V. Høyere spenning kan øke kjøleeffekten hvis kjølingen på hver side er god nok, men gir også mye dårligere virkningsgrad, lager mye varme og stresser elementene mer. Hvis det trengs mer kjøleeffekt er det mye bedre å bruke flere elementer enn å kjøre de for hardt. Peltierelementene har høyest virkningsgrad når de kjøres rundt 50-60% av maksimal spenning.
- Det er lurt å sette opp styringen slik at den ikke slår inn og ut alt for fort. Med lengere sykluser stresses elementene mindre. Med STC-1000 kontrolleren endres dette med temperaturdifferansen som er kriterie for inn og utkobling. Ellers stemmer det at PWM styring er greit så lenge frekvensen er høy nok. Hva som er høyt nok er kansje litt vanskelig å si, men jeg regner med at alt over 100Hz er OK.
Ellers har jeg sett at det selges peltiermoduler på ebay av samme type som de i kjøleboksene men som har aksialvifter rett på kjøleribbene og er fiks ferdig til innbygging. De koster også bare halvparten av en billig kjøleboks. Peltierkjøling er kan være gaske snedig, men i de fleste tilfeller er det nok bare å innse at kompressorkjøler er best egnet.
 
HansV skrev:
Det bør ikke være noe problem å lage peltierkjøler med av/på styring som virker. Jeg har i hvertfall ikke hatt noen problemer med dette. Men det er ett par ting som er greit å ha i tankene.
- Det er ikke lurt å kjøre peltierelementene med for høy spenning og strøm. Selv om kjølebokselementene er spesifisert til å tåle 18V så er det nokså optimalt å kjøre de på 12V. Høyere spenning kan øke kjøleeffekten hvis kjølingen på hver side er god nok, men gir også mye dårligere virkningsgrad, lager mye varme og stresser elementene mer. Hvis det trengs mer kjøleeffekt er det mye bedre å bruke flere elementer enn å kjøre de for hardt. Peltierelementene har høyest virkningsgrad når de kjøres rundt 50-60% av maksimal spenning.
- Det er lurt å sette opp styringen slik at den ikke slår inn og ut alt for fort. Med lengere sykluser stresses elementene mindre. Med STC-1000 kontrolleren endres dette med temperaturdifferansen som er kriterie for inn og utkobling. Ellers stemmer det at PWM styring er greit så lenge frekvensen er høy nok. Hva som er høyt nok er kanskje litt vanskelig å si, men jeg regner med at alt over 100Hz er OK.
Ellers har jeg sett at det selges peltiermoduler på ebay av samme type som de i kjøleboksene men som har aksialvifter rett på kjøleribbene og er fiks ferdig til innbygging. De koster også bare halvparten av en billig kjøleboks. Peltierkjøling er kan være gaske snedig, men i de fleste tilfeller er det nok bare å innse at kompressorkjøler er best egnet.

Interessant. Nå avbetilte jeg 15V/10A-elementene mine fordi strømforsyninga ble dyr, men da kunne jeg like greit brukt dem på f.eks. 12V istedet da.

La meg se om jeg forstår dette riktig:
Når du sier at det er fordelaktig at ikke styringen kobler elementene inn og ut for fort, så mener du da at det ikke skjer for ofte? At de heller får lange pauser mellom hver gang de kobles inn eller ut, ikke sant?

Og FWM-styring; betyr dette at når strømmen faktisk er på, så svinger den egentlig mellom av og på konstant med en gitt frekvens? F.eks. 100 Hz (100 ganger i minutter).
 
Her er komplett peltiermodul fra ebay til 150kr:
http://www.ebay.com/itm/Thermoelect...=Home_Automation_Modules&hash=item43c369fe4e Jeg kjører min på 12V/5A strømforsyning fra biltema til 199kr: http://www.biltema.no/no/Kontor---T...ng/Nettaggregat-og-ladere/Nettadapter-38116/ Ett alternativ kan være å ha en strømforsyning på 16-24V og kjøre to elementer i serie. Evt. fire elementer hvor to og to står i serie. Det kan gi bedre kjøling med mye mindre tilført effekt og varmetap. Hva som blir optimalt for den enkelte løsningn er det bare å prøve seg frem med, men som en tommelfingerregen kan fire elementer gi samme kjøleeffekt som ett element med halve effekten tilført.

Det stemmer at det enten bør være lange pauser mellom inn og utkobling eller at det gjøres med PWM på en høy frekvens. Med PWM må man velge frekvens ut fra muligheten til å styre og hva slags driver man har. Noen driverkretser kan kjøres kanske høyt i frekvens, men hvis frekvensen blir for høy i forhold til switchetidene blir det mye varmetap. Lyd kan også være en faktor, så det er som regel greit å ikke legge seg på de frekvensene vi hører best. Så PWM frekvens kan ligge mellom 100Hz og 100kHz for en slik løsning, men hva som er best er helt avhengig av utstyret.
 
det der ser jo ut som en grei løsning! EDIT: Den vifta på den kalde siden er veldig liten. Små vifter bråker mye i forhold til hvor lite luft de flytter, så jeg ville byttet den ut.

jeg kan selge mine AT PSU'er for 100kr pr stk. De mangler vifte, for viftene ble i sin tid brukt i et annet prosjekt, men 12V railen leverer (sannsynligvis, jeg må dobbelsjekke specsa) nok strøm til å drive 2 peltiere på 6 Ampere, om du kobler i parallell. AT-strømforsyningene har også fordelen fremfor ATX at du ikke trenger å "lure" de til å skru seg på. De har en helt vanlig av/på knapp.

Enkleste løsning blir da å bestille et par av den kjøleren fra ebay, kombinert med en STC1000 (evt. brewpi) og en H-bridge, så er det bare å designe en dings som velger strømretning ut ifra hvilken strømkilde STC'en har aktiv, så har man varming og kjøling i ett!

All den tid vifta på kjølesiden er mye mindre enn på varmesiden ville jeg ha kjørt kjøling fra 12V railen, og varming fra 5V eller 3.3V-railen. Det får man kanskje ikke til med en H-bridge, men det kan lett gjøres med de samme 4 mosfetene (evt. 2 reléer), må bare koble litt annerledes.

Hvilke mosfeter man skal kjøpe og hvordan man styrer dem håper jeg noen andre kan svare på
 
Det er helt klart enklest å bruke rele for switching mellom kjøle og varme. Mye mer styr og koblinger med MOSFET.
Hvis man ønsker å begrense oppvarmingen er det bare å legge inn en effektmotstand i tillegg.
Se vedlagt koblingsskjema for STC-1000 styring. Her har jeg brukt ett dobbelt, vekslende rele. Det går selvsagt fint med to enkle også. Motstanden er som sagt kun for å begrense varmen og kan gjerne fjernes/kobles forbi. Jeg kar også koblet slik at vifta kun står på ved kjøling, hvis den går hele tiden vil effekten på varming øke enda mer.
 

Vedlegg

  • Peltier STC-1000 styring (Schematic).pdf
    7,8 KB · Sett: 30
HansV skrev:
Det er helt klart enklest å bruke rele for switching mellom kjøle og varme. Mye mer styr og koblinger med MOSFET.
Hvis man ønsker å begrense oppvarmingen er det bare å legge inn en effektmotstand i tillegg.
Se vedlagt koblingsskjema for STC-1000 styring. Her har jeg brukt ett dobbelt, vekslende rele. Det går selvsagt fint med to enkle også. Motstanden er som sagt kun for å begrense varmen og kan gjerne fjernes/kobles forbi. Jeg kar også koblet slik at vifta kun står på ved kjøling, hvis den går hele tiden vil effekten på varming øke enda mer.

jeg tenkte to doble, for å kunne veksle mellom 12V rail, 5V rail (i revers, for kjøling), da jeg allerede har disse spenningene på den PSU jeg tenker å bruke. Det er som du sier en mulighet å bruke en motstand for å redusere spenningen, men da "koker" du bort strømmen, og det er ikke spesielt energieffektivt. Å kjøre 12V i revers med en så liten varmeveksler på den siden som da blir varm vil være en påkjenning for elementet. Kanskje det går bra, men 5V vil være tryggere.

Det som mangler i dette systemet er kontroll av viftehastighet. En standard viftekontroller skrur opp hastigheten når det blir varmt, men gjør ingen ting når det blir kaldt. I dette tilfellet vil vi at viftene skal stoppe helt når kjøleribbens temp=target temp innvendig i boksen, og kjøre fortere jo større differansen er. Separat styring av utvendig og invendig vifte er en selvfølge. Dette fikser en Arduino lett. Arduinoen kan også gjøre alt en STC1000 gjør, men det krever litt mer programmering.

Jeg synes fremdeles det er mer sexy å throttle elementet, enten vha pwm eller justering av PSUens regulator, men det er jo noe man kan implementere på sikt. Evt kan du skifte rail ut ifra temperaturavvik. Stort avvik 12V, lite avvik 3.3V, det vil gi mye gjevnere viftehastighet, og krever bare ett relé til.
 
Jeg hadde en laaaang reisedag i dag, og fikk skrevet litt kode:

Kode:
#include <Bounce.h> //inkluderer bounce biblioteket som gjør det enkelt å bruke trykk-knapper

int termostat = 20; //oppretter variabelen termostat og setter en standardverdi av 20
float sensor0; //oppretter sensor0 - gjæringskar
float sensor1; //sensor1 - indre kjøleribbe
float sensor2; //sensor2 - ytre kjøleribbe
float sensor3; //sensor3 - temp i PSU
float temp0; //konvertert til Celsius
float temp1; //konvertert til Celsius
float temp2; //konvertert til Celsius
float temp3; //konvertert til Celsius
int kald12V = 6; //kontrollerer reléene for kjøling
int kald5V = 7;
int kald3V =8;
int fan0 = 9; //pwm-utganger for vifter
int fan1=10;
int fan2=11;
int varm5V=12; //kotrollerer reléene for varming
int varm3V=13;
int upperTreshold0V; //brukes til å definere temperatursoner
int lowerTreshold0V;
int upperTreshold3V;
int lowerTreshold3V;
int upperTreshold5V;
float heatsink0Delta;
float heatsink1Delta;
float heatsink2Delta;
float selectedHeatsink;
unsigned long timeOfSwitch;
unsigned long timeCurrent;

Bounce button0 = Bounce(0, 5);
Bounce button1 = Bounce(1, 5); //setter bounce tid på knapp 1 og 0 til 5ms


void setup() {
  pinMode(0, INPUT_PULLUP);
  pinMode(1, INPUT_PULLUP); //skrur på pullup resistors på pinne 1 og 0
  pinMode(kald12V, OUTPUT); //setter pinne6 (relé 12V) til output
  pinMode(kald5V, OUTPUT); //setter pinne7 (relé 5V) til output
  pinMode(kald3V, OUTPUT); //setter pinne8 (relé 3.3V) til output
  pinMode(varm5V, OUTPUT); //setter pinne12 (relé -5V) til output
  pinMode(varm3V, OUTPUT); //setter pinne13 (relé -3.3V) til output
  Serial.begin(38400); //oppretter en virtuell serieport over USB for feilsøking/kommunikasjon med PC
}

void loop(){
  button0.update();
  button1.update();
  if (button0.fallingEdge()) {
    termostat --;
  Serial.print("teermostaten er satt til: ");
  Serial.println(termostat);
  }
  if (button1.fallingEdge()) {
    termostat ++;
  Serial.print("termostaten er satt til: ");
  Serial.println(termostat);
  }
sensor0 = analogRead(2); //leser pinne 2 og lagrer resultatet som sensor0
sensor1 = analogRead(3); //leser pinne 3 og lagrer resultatet som sensor1
sensor2 = analogRead(4); //leser pinne 4 og lagrer resultatet som sensor2
sensor3 = analogRead(5); //leser pinne 5 og lagrer resultatet som sensor3
  temp0 = 25 + (sensor0 - 512) / 11.3; //konverterer til Celsius
  temp1 = 25 + (sensor1 - 512) / 11.3; //konverterer til Celsius
  temp2 = 25 + (sensor2 - 512) / 11.3; //konverterer til Celsius
  temp3 = 25 + (sensor3 - 512) / 11.3; //konverterer til Celsius
  upperTreshold0V = 0.2 + termostat;  //nedenfor denne -> 0V
  lowerTreshold0V = -0.2 + termostat; //ovenfor denne -> 0V
  upperTreshold3V = 0.5 + termostat; //nedenfor denne -> 3V
  lowerTreshold3V = -0.5 + termostat; //ovenfor denne -> -3V
  upperTreshold5V = 0.8 + termostat; //nedenfor denne -> 5V


  heatsink0Delta = abs(temp1 - termostat);  //avvik mellom termostatverdi og temp på kjøleribbe
  heatsink1Delta = abs(temp2 - termostat);
  heatsink2Delta = abs(temp3 - 20);

delay(500);
 selectedHeatsink = heatsink0Delta; //lagrer verdien av heatsink0Delta i selectedHeatsink
fanControl(fan0); //kaller opp funksjonen fanControl, og gir med verdien av fan0
delay(500);
 selectedHeatsink = heatsink1Delta;
fanControl(fan1);
delay(500);
 selectedHeatsink = heatsink2Delta;
fanControl(fan2);
delay(500);
timeCurrent = millis();
tempControl();

}

 
 void fanControl(int selectedFan) { //kjører funksjonen fanControl, og kaller verden gitt da variablen ble kallt for selectedFan
  if (selectedHeatsink <= 3){
    analogWrite(selectedFan, 0); // vifte av. Skalaen går fra 0 til 255
  }
if (selectedHeatsink > 3 and selectedHeatsink <= 9){
 analogWrite(selectedFan, 100); 
}
if (selectedHeatsink > 9 and selectedHeatsink <= 18){
 analogWrite(selectedFan, 180); 
}
if (selectedHeatsink > 18 and selectedHeatsink <= 25){
 analogWrite(selectedFan, 255); 
}
}


/*---------------------------------------------------------------------------------------------------------------------*/

void tempControl(){
  if (timeCurrent-timeOfSwitch > 60000){ //bare kjør dette skriptet hvis det er minst 1min siden forrige justering
  if (temp0 < upperTreshold0V and temp0 > lowerTreshold0V ) //korrekt temp, alt av
  {
    digitalWrite (kald12V, LOW);
    digitalWrite (kald5V, LOW);
    digitalWrite (kald3V,LOW);
    digitalWrite (varm5V, LOW);
    digitalWrite (varm3V, LOW);
    timeOfSwitch = millis();
  }
  else if (temp0 > upperTreshold0V and temp0 < upperTreshold3V ) //litt for varmt
  {
    digitalWrite (kald12V, LOW);
    digitalWrite (kald5V, LOW);
    digitalWrite (varm5V, LOW);
    digitalWrite (varm3V, LOW);
    delay (100);
    digitalWrite (kald3V, HIGH);
    timeOfSwitch = millis();
  }
  else if (temp0 > upperTreshold3V and temp0 < upperTreshold5V ) //en del for varmt
  {
    digitalWrite (kald12V, LOW);
    digitalWrite (kald3V,LOW);
    digitalWrite (varm5V, LOW);
    digitalWrite (varm3V, LOW);
    delay(100);
    digitalWrite (kald5V, HIGH);
    timeOfSwitch = millis();
  }
  else if (temp0 > upperTreshold5V) //mye for varmt
  {
    digitalWrite (kald5V, LOW);
    digitalWrite (kald3V,LOW);
    digitalWrite (varm5V, LOW);
    digitalWrite (varm3V, LOW);
    delay(100);
    digitalWrite (kald12V, HIGH);
    timeOfSwitch = millis();
  }
  
 else if (temp0 < lowerTreshold0V and temp0 > lowerTreshold3V )
 {
   digitalWrite (kald12V, LOW);
    digitalWrite (kald5V, LOW);
    digitalWrite (kald3V,LOW);
    digitalWrite (varm5V, LOW);
    delay(100);
    digitalWrite (varm3V, HIGH);
    timeOfSwitch = millis();
 }
else if (temp0 < lowerTreshold3V )
{
    digitalWrite (kald12V, LOW);
    digitalWrite (kald5V, LOW);
    digitalWrite (kald3V,LOW);
    digitalWrite (varm3V, LOW);
    delay(100);
    digitalWrite (varm5V, HIGH);
    timeOfSwitch = millis();
}
else
{
 // gjør ingen ting 
}
}
}

Jeg har prøvd å kommentere så mye som mulig, så det skal være mulig å skjønne hva jeg gjør. Jeg har ikke hatt sjangs til å teste dette enda, men tror det skal virke. En del av parametrene her må selvfølgelig tweakes.

Denne krever så langt:
5 reléer, 3 temperaturfølere, 3 vifter, en AT eller ATX PSU, noen små transistorer som kan forsterke 5V pwm-signalet til 12V for drift av vifter.
den sjekker temperaturen i gjæringskaret, kjøler med 12V, 5V eller 3.3V avhengig av hvor stort avviket er, evt varmer med 3.3 eller 5V.

Viftene kontrolleres avhengig av nærmeste kjøleribbe's avik fra idealtemperatur. Vifte3 (PSU) er idealtemperatur satt til 20 grader uavhengig av gjæringstemp. Jeg har også satt opp en seriellport over USB for feilsøking.


Det som gjenstår: temperatursensorene som er brukt her er ikke spesielt nøyaktige. jeg bytter til DS18B20, hvilket vil påvirke koden litt.
(http://www.squidoo.com/arduino-temperature-sensors). Jeg vil også ha et display for å vise hvor mange grader som er i boksen. Dette kan alternere mellom å vise faktisk instillt temp og faktisk temp.
Jeg vurderer også å sette opp en eller annen form for logging og programmering av temp.endringer, men er ikke helt sikker på hvordan jeg skal få kommunisert med en PC uten å ha PCen kontinuerlig koblet til gjennom seriellporten. Ruteren min har usb-porter for tilkobling av printere og sånt, så der finnes kanskje en løsning..
 
Lurer på om jeg kan bruke noe av dette med min Pi. Fordelen er at den har trådløst nettverk, så monitorering blir litt enklere. Min har påmontert GPIO break-out.
 
kvolden skrev:
PWM står for Pulse-Width Modulation, eller pulsbreddemodulasjon på norsk. Det innebærer at man skrur helt av og helt på spenningen (eller strømmen) i en fast grunnfrekvens og varierer forholdet mellom på-tid og av-tid. Dette i stedet for å justere spenningen opp og ned. Dette gir ofte en mer forutsigbar og lineær effektregulering. Det er ofte brukt i for eksempel styring av likestrømmotorer, siden man på denne måten beholder elektromotorens maksimale dreiemoment samtidig som man kan justere hastigheten lineært fra null til maks – justerer man i stedet spenningen opp og ned får man ulineær hastighetsregulering, man mister moment, og motoren blir svak og kan gå varm og/eller stoppe ved lave hastigheter.

I dette tilfellet er det slik at hver gang du utsetter elementet for en rask temperaturendring, så vil du mekanisk belaste det. Med termostatkontroll vil du jo nødvendigvis skru det på når temperaturen faller under sett-temperaturen minus hysterese, og skru det av når temperaturen går over sett-temperaturen pluss hysterese. Dette blir fort ganske mange sykler på relativt kort tid, og du risikerer at elementet blir dårligere. Med rask PWM derimot, vil ikke elementet rekke å endre temperatur nevneverdig mellom hver gang du skrur det av og på, men det krever en litt mer avansert regulering – en vanlig PID-regulator med PWM ut vil være glimrende, forutsatt at den kan ha rask nok frekvens på utgangen.

Du kan også regulere med å justere spenningen opp og ned, men det er minst like "vanskelig" å regulere som PWM og gir som regel (men ikke nødvendigvis) et effekttap i selve reguleringen.

Hvis jeg skulle bruke PWM isteden for å bytte mellom forskjellige railer på PSU, hvordan gjør jeg dette?

Jeg ser for meg at det blir betraktelig færre deler, og billigere. Men hvordan velger jeg riktig transistor/mosfet for jobben?

Arduinoen sine PWM-utganger er på 490Hz, 5V.



nordhagen skrev:
Lurer på om jeg kan bruke noe av dette med min Pi. Fordelen er at den har trådløst nettverk, så monitorering blir litt enklere. Min har påmontert GPIO break-out.

Kanskje, jeg vet ikke noe som helst om hvordan en RasPI virker. Kanskje bare trenger en C++ compiler for RasPI, så er du på vei?
 
Hvis du velger en N-kanal MOSFET kan du drive den direkte med ett 5V logisk signal fra en mikrokontroller. Da må peltierelementet ha supply koblet inn fast på plusspolen og transistoren koblet fra minuspolen på elementet til jord. Mye enklere enn å ha transistor på + polen. Skal spenningen kunne reverseres er det enklest å gjøre dette med ett rele, ellers blir det masse transistorer og drivere for å få det til å virke. Tror ikke du vil gå den veien:)
Det du må tenke på er pakken, hvordan du monterer og kjøler transistoren. TO-220 er som regel greit, og kan monteres rett på kjøleribbe uten isolasjon hvis ribba ikke er tilkoblet noe annet. Strømmen og spenningen må være høy nok, påmotstanden lav nok og switchetidene korte nok.
Til denne applikasjonen børe det være mulig å bruke det aller meste av N-kanal MOSFET med påmotstand under 100mohm. IRF2805 bør for eksempel være godt egnet, den har lav påmotstand med 5V gate-source spenning. https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=71-373-34&toc=19199 Ellers vil nok alt av N-kanal MOSFET på ebay med lav påmotstand fungere godt nok.
Det kan nok hende at det kan være en ide å ha en seriemotstand på gaten hvis den skal drives direkte fra en mikrokontrollerutgang, for å gi litt beskyttelse av utgangen. Verdien må da velges ut i fra switchehastigheten. Men det går sikkert fint uten også.
 
AMelbye skrev:
Hva er et integral-ledd?

Ja, det burde jeg kanskje utdypet med det samme. Kort fortalt er det I-en i "PID". ;) Den reguleringen du foreslo er P-en. P-en står som nevnt for "proporsjonal", og heter det fordi pådraget er proporsjonalt med avviket mellom ønsket temperatur og faktisk temperatur. Altså desto mindre temperaturavvik, jo mindre kraftig pådrag, og omvendt. Og proporsjonalitetskonstanten (for eksempel 10 watt per grad Celsius) bestemmes ut fra det egenskapene til det spesifikke tilfellet du vil regulere. Dette gjør at du ikke får konstante temperatursvingninger rundt sett-temperaturen, slik man får med en termostat. Men med en P-regulator alene vil du få et statisk reguleringsavvik. Kanskje du setter 12 grader som ønsket temperatur, og den stabiliserer seg på 12,8, for eksempel – de faktiske tallene avhenger av i hvor stor grad karet taper/vinner varme til/fra omgivelsene. Der kommer I-en inn. Den tar hensyn til historiske og akkumulerte avvik – summen av avvik som har vært – og sørger for at reguleringen drar seg inn og treffer temperaturen nøyaktig. (D-en er et derivatledd som tar hensyn til stigningen i det man regulerer, eller hvor fort det man regulerer endrer seg, og på den måten muliggjør en raskere respons. Den er det ikke så farlig med i et system som dette, men de fleste regulatorer med både P- og I-ledd er PID-regulatorer som også har et D-ledd.)

Teorien bak reguleringsteknikk kan være litt komplisert, men man finner garantert ferdigkodede implementasjoner av PID-regulatorer i forskjellige programmeringsspråk. Det kan imidlertid være smart å huske at den løsningen dere ønsker å ta i bruk bør på et eller annet vis kunne gi både positivt og negativt pådrag, siden man ønsker både varming og kjøling. For peltierelementet kan som kjent både varme opp og kjøle ned. Det vil si, det endrer varmestrømretningen med den elektriske strømretningen – snu spenningen, og kald og varm side vil “bytte plass”.

AMelbye skrev:
Men jeg synes det virker like overkommelig å styre spenningsregulatoren på en PSU, og valget av AT/ATX kommer rett og slett av at jeg har 10-15stk liggende i kjelleren. Men om det er lettere å låse PSU på 15V og heller regulere ned vha PWM skal jeg definitivt ta dette i betraktning :)

Ja, du kan helt fint gjøre det slik. Jeg bare tenkte at om du allerede har generert (eller kan generere) et PWM-signal til ATX-forsyningen, så kan du like så greit bruke det til å styre peltierelementet direkte gjennom den nevnte H-broen i stedet for å bruke det til å styre utspenningen på ATX-forsyningen. Men om du er mer komfortabel med å styre en ATX, så er det selvsagt ingenting i veien for det. :) I tillegg falt det meg ikke inn at du selvsagt kan bruke samme forsyning (dog med en annen spenning) til å drive resten av elektronikken også, og da blir den jo slett ikke så overflødig som jeg først tenkte.

nordhagen skrev:
[J]eg skjønner fortsatt ikke en dritt av hva det er vi skal gjøre med Peltier-elementene for å hindre at de kræsjer. Det må da kunne gå an å skru dem av og på for svingende!?

Det er klart du kan. :) Saken er som følger. Et peltierelement virker ved at når man kjører en elektrisk strøm gjennom det, så vil det også gå en varmestrøm fra den ene siden til den andre. Og når elementet utsettes for tildels store og raske endringer i varmestrøm vil det belastes mekanisk på en måte som over tid kan gjøre elementet dårligere og til slutt ødelegge det helt. Derfor ønsker man å unngå hyppige og mange slike endringer.

Dersom du styrer elementet med et termostat, vil det gjennomgå mange slike sykler, og man risikerer dermed altså at elementet blir dårligere over tid. Én løsning på dette er å heller regulere og justere drivspenningen slik at den har en rimelig konstant varmestrøm som så godt som mulig matcher varme tilført eller fjernet gjennom omgivelsene og holder temperaturen der den skal være.

En annen mulighet er PWM, som forklart tidligere, men under den forutsetning at frekvensen er høy nok. Er frekvensen for lav får man samme problem som med termostaten. Temperaturen og varmegjennomstrømningen i elementet rekker å endre seg for mye mellom hver gang det blir skrudd av og på, samtidig som det blir skrudd av og på ofte. Men om frekvensen er høy nok til at den med god margin overgår tregheten i systemet, så vil man ikke ha dette problemet. HansV nevner 100 Hz, noe som i hvert fall én produsent hevder er et greit kompromiss hvis man ikke har mulighet til å gå høyere, mens de anbefaler nedre del av størrelsesorden kilohertz.

Men, hvis ikke elementet kosta skjorta, så kan du jo kjøre det på for eksempel halv effekt på et termostat og se om det går bra. Det kan godt gå bra veldig lenge, spesielt om karet taper/vinner veldig lite varme til/fra omgivelsene, slik at elementet ikke trenger å skru seg på så fryktelig ofte. :)

HansV skrev:
Skal spenningen kunne reverseres er det enklest å gjøre dette med ett rele, ellers blir det masse transistorer og drivere for å få det til å virke. Tror ikke du vil gå den veien:)

Tja, det blir ikke så skrekkelig mye. Spesielt ikke om man finner en ferdig H-bro-brikke. Da vil man faktisk trenge færre komponenter, siden det vil holde med den ene brikken, mens du med reléløsningen trenger en transistor til å drive elementet, en buffertransistor for å drive reléspolen og en diode for å unngå ødeleggende motspenninger. Men om man ikke finner en ferdig H-bro-brikke, så er det nok enklere med et relé. Det er nok også en enklere krets å forstå for en nybegynner. Det er verdt å merke seg, for øvrig, at det fortsatt vil være en H-bro, bare at du bruker et DPDT-relé i stedet for fire transistorer. :)
 
kvolden skrev:

HansV skrev:

Takk for gode innspill! Jeg begynte å se etter en passende H-bridge, men å finne noe som tåler oppimot 10A har jeg ikke klart.

Jeg tenker å bruke denne peltieren: http://www.ebay.com/itm/12709-TEC-T...onents_Fans_Heatsinks_SR&hash=item23360b0b65
Den trekker 9A, og den heftigste H-bridgen jeg har klart å finne tåler 6A. Dermed blir det mosfet+relé. Jeg tenker også å styre viftene med pwm, og trenger sikkert noen mosfet'er der også, men jeg har lest at vifter slites veldig av pwm-styring. Kan jeg glatte utgangen av mosfeten med en kondensator? I såfall hvor stor? Er størrelsen her avhengig av spenning eller last?

Jeg fant noen billige n-kanal mosfets på ebay, blant annet denne:
http://www.ebay.com/itm/IRFZ24N-IRF...87?pt=LH_DefaultDomain_0&hash=item3a66d2b623 55V, 17A, holder i massevis. Den er også pakket inn i TO-220. og det står "Rds (On) 70m?" er dette påmotstanden? Ser denne grei ut? I såfall kan jeg vel like godt kontrollere viftene også med denne?

---

Jeg sjekket og fant at det allerede finnes et PID library for arduino! lett!
http://playground.arduino.cc/Code/PIDLibrary#.Uyq0SoUYIdV
Da blir det nok til at jeg bruker denne til styring av selve elementet. Når det gjelder styring av viftene tror jeg en P-regulator holder i massevis, men vil skrive om koden litt her også, så den justerer trinnløst isteden for i steg.
 
Hvor mye har du tenkt å drive elementet med? Husk på at det kan bli MYE varme på 6x6cm. Hvis du skal få noe særlig kjøleeffekt er det viktig å kjøle godt på begge sidene av elementet. Det er temperaturdifferansen over elementet i tillegg til strømmen som bestemmer hvor mye varme det kan flytte, og kjøleeffekten faller fort når temperaturdifferansen øker. Så gitt ut fra kjølingen din vil du ha en spenning som gir maksimal kjøling, så vil kjøleeffekten falle hvis du øker spenningen/strømmen. Det kan være lurt å lese databladet på elementet for å se sammenhengene og måle temperaturen på kjøleribbene be begge sider når du begynner å teste. Jeg har laget flere peltierløsninger som både virker og ikke virker og brukt mye tid på dette, så jeg vet at det ikke er helt trivielt å få til en god løsning bestandig:) Ett annet velment råd er å begynne å teste selve kjøleløsningen først og heller lage ett avansert styresystem senere hvis du ser at det fungerer som det skal og om du faktisk trenger en slik styring.
 
Tilbake
Topp