sorunu çözdüm abi yoldayım eve gidince geldiğimiz yeri atarımProgramın tamamını paylaş Ahmet, yoksa verdiğin değişken tiplerine göre INF çıkmaz. Bir de aynı tip kullanmaya özen göster. Ya herşey float olsun yada herşey double olsun.
double mn = 0;
double mx = 60000;
double lTime = 0;
double errSum = 0;
double lErr = 0;
double Kp = 45;
double Ki = 26;
double Kd = 40;
void PID() {
unsigned long now = millis();
double timeChange = (double)(now - lTime);
double error = 240 - c;
errSum += error * timeChange;
errSum = constrain(errSum, mn * 1.1, mx * 1.1);
double dErr = (error - lErr) / timeChange;
double newOutput = (Kp * error + Ki * errSum + Kd * dErr);
double output = constrain(newOutput, mn, mx);
lErr = error;
lTime = now;
analogWrite(0, output);
Serial.println(output);
}
2-3 dk bekletmesin Ahmet. 20-30 sn benim açımdan uygundur. Hatta 1dk ya bile razıyım.Amacım -->Bu<-- kullanarak devreyi performans kayıpsız çalıştırabilmek.
100Hz pwm count 52k 3.9A çekiyor.
Isınma süresi benim hoşuma gitti ama ben düğmesine bastım elimi çekene kadar hazır olsun diye bir beklenti varsa hem adaptör boyutu büyeyecek hemde software ciddi değişikliğe uğrayacak çünkü pwm count 52k üstüne çıktığında sıcaklık hesaplamaya zaman kalmıyor.
Ne kadar akım o kadar hızlı ısınma abi.2-3 dk bekletmesin Ahmet. 20-30 sn benim açımdan uygundur. Hatta 1dk ya bile razıyım.
Benim için sorun değil. Herkesin alabileceği bir şey olsun. Yani 10 ampere göre ayarlarsın, adam 5 amper adaptör koyar, sonrada devre akım çekeceğim diye adaptöre yüklenirse sıkıntı olur. Voltaj çökmesi filan olmayacak şekilde hallet işi. Ben muhtemelen trafo ile kullanırım. İstasyonun oynamaması için ağırlıkta yapar hem trafo.Ne kadar akım o kadar hızlı ısınma abi.
Dersen ki ben 10A adaptörü koyacak kutu basarım/bulurum ısınma süresi 5-6 saniye max.
Amacım herkesin elindekini değerlendirmesi.Benim için sorun değil. Herkesin alabileceği bir şey olsun. Yani 10 ampere göre ayarlarsın, adam 5 amper adaptör koyar, sonrada devre akım çekeceğim diye adaptöre yüklenirse sıkıntı olur. Voltaj çökmesi filan olmayacak şekilde hallet işi. Ben muhtemelen trafo ile kullanırım. İstasyonun oynamaması için ağırlıkta yapar hem trafo.
Kullandığım kaynak çok rahat 10A verebiliyor fakat ben PWM'i 52k ile sınırladım.Sende güçlü 24 V kaynak yok muydu Ahmet? Toparlama süresinin uzun olması akımın düşük olmasındandır.
JBC uç 400 dereceden sonra kızarmaya başlıyor ne kadar sağlıklı bilmiyorum.Ben evde benim havyayı 350 dereceden aşağı kullanmıyorum. Helede anakart ile uğraşıyorsam 450 dereceye set ediyorum, yoksa lehim erimiyor. Sen 300'ün üstü stabil değil diyorsun. Eğer benim havya 400 gösterip 300 ayarlamıyorsa senin 300 bize yetmez.
Çok da kasma akşama yetiştireceğim diye. Sonuç iyi olmadıktan sonra önemi yok yetişmesinin. Sen zaten kendini kanıtladın. Yavaş yap, sağlam yap.
float adc = 0.0;
const float cpu_v = 3.30;
const int max_adc = 4096;
float adc_v = 0.0;
float c = 0.0;
int state = 0;//LAZIM OLUR DIYE BURDA
const int numReadings = 20;
int readings[numReadings];
int readIndex = 0;
int total = 0;
float average = 0;
void setup() {
Serial.begin(115200);
analogReadResolution(12);
pinMode(A0, INPUT);
pinMode(1, INPUT);
analogWriteResolution(16);
pinMode(0, OUTPUT_8MA);
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
if(digitalRead(1) == LOW){
total = total - readings[readIndex];
readings[readIndex] = analogRead(A0);
total = total + readings[readIndex];
readIndex = readIndex + 1;
if (readIndex >= numReadings) {
readIndex = 0;
}
average = total / numReadings;
adc_v = average * (cpu_v / max_adc);
c = adc_v * 290, 32;
c = c - 7,6;//KALBRASYON -
c = c + 0; //KALIBRASYON +
Serial.println(c);
}
PID();
}
double mn = 0; //MIN PWM COUNT
double mx = 52000;//MAX PWM COUNT
double lTime = 0;
double errSum = 0;
double lErr = 0;
double Kp = 70;//P
double Ki = 12;//I
double Kd = 66;//D
void PID() {
unsigned long now = millis();
double timeChange = (double)(now - lTime);
double error = 251 - c;//set değişkeni buraya girecek
errSum += error * timeChange;
errSum = constrain(errSum, mn * 1.1, mx * 1.1);
double dErr = (error - lErr) / timeChange;
double newOutput = (Kp * error + Ki * errSum + Kd * dErr);
double output = constrain(newOutput, mn, mx);
analogWriteFreq(100);
analogWrite(0, output);
}
böyle daha iyi.Havya ucunu bağladığın mengenenin ve soğutucunun da ısıl bir kapasitesi (veya kayıpları) var.
Uç boştayken(sapa takılıyken) daha stabil olacaktır diye düşünüyorum.
Kullandığım kaynak çok rahat 10A verebiliyor fakat ben PWM'i 52k ile sınırladım.
daha fazlası hesaplama zamanıma yetmiyor.
PWM count 52k iken 3.9-4.050 civarında çekiyor.
Software'ı anlaşılır hale getirip atacağım daha gözünü kırpmadan 10 15 hata bulursun abi.