Universal Havya Kontrolcüsü Tasarımı

1671128733369.png
 
Sen ölçtüğün voltu 248 ile çarpıp 7 çıkaracaksın.
Dünyadaki en iyi akış diyagramını(!) çizmiş olabilirim.
1671130339015.png
 
Yılbaşından sonra daha çok vaktim olur, o zaman belki daha çok katkıda bulunabilirim.
 
Bu tolerans şimdilik bize yeter.
Benim 902C termometre 21 ölçüyor uç sıcaklığını.

temp:
    float average     = 0;//analog ortalama
    float c           = 0.0;//derece
    float adc         = 0.0;//analog okuma
    const float cpu_v = 3.30;//işlemci voltajı
    const int max_adc = 4096;//12 bit adc max değeri
    float       adc_v = 0.0;//analog voltaj

    adc_v = average * (cpu_v / max_adc);//adc voltaj dönüşümü
    c = adc_v * 248 - 7;//bulunan sıcaklık formülümüz

Bu şekilde bizim program ile 21 derece olan uç sıcaklığını 20.66 ölçüyoruz bu şekilde devam edelim kalibrasyona göndeceğiz.
 
İlk sorunumuzu yaşadık mosfet'in kapalı konumunu yakalayamıyoruz.
Bu şekilde deniyorum.


C++:
  if (digitalRead(0) == LOW) {//pwm pin = 0
      //ortalama alma
    total = total - readings[readIndex];
    readings[readIndex] = analogRead(A0);
    total = total + readings[readIndex];
    readIndex = readIndex + 1;
    if (readIndex >= numReadings) {
      readIndex = 0;
    }
    average = total / numReadings;
    //ortalama alma

     //adc to voltaj
    adc_v = average * (cpu_v / max_adc);
     //adc to voltaj
    
      //voltaj to sıcaklık
    c = adc_v * 248 - 7;
      //voltaj to sıcaklık
    Serial.println(c);
  }

 
  if (c > 149) {
    analogWrite(0, 0);   
  }
 
  if (c < 151) {
    analogWrite(0, 10000);
  }
 
C++:
 state = digitalRead(0);
  
  if (state == 0) {
    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 * 248 - 7;
    Serial.println(c);
  }
  else{
    average = 0;
  }
 

  if (c > 149) {
    analogWrite(0, 0);   
  }
 
  if (c < 151) {
    analogWrite(0, 10000);
  }

Bu şekilde çözdüm
 
PWM nin kapalı oluşunu kesme ile yakalaman daha iyi olur Ahmet. Yoksa böyle döngü içinde yaparsan yakalama yeri değişir bu da ölçüm hatası demek.
 
PWM nin kapalı oluşunu kesme ile yakalaman daha iyi olur Ahmet. Yoksa böyle döngü içinde yaparsan yakalama yeri değişir bu da ölçüm hatası demek.
Bir pini hem intterupt'a bağlayıp hemde output port yapabilir miyim bakalım.

Olmazssa'da sorun değil 0ve1 pini köprüleriz 1 intterupt çalışır 0 pwm I/O çok :)
 
Bir pini hem intterupt'a bağlayıp hemde output port yapabilir miyim bakalım.

Olmazssa'da sorun değil 0ve1 pini köprüleriz 1 intterupt çalışır 0 pwm I/O çok :)

Pin olmayacak interrupt kaynağı. PWM nin count sıfıra inmesi olacak interrupt kaynağı.
 
PWM count kesmesinde ölçüm yaparsan, her zaman tam olarak aynı noktada ölçüm yapmış olursun, yani PWM enerjisinin kesildiği anda ve ısıtıcının maksimum sıcaklığında. Kesmede sıcaklığı ölçüp bir kenara yazarsın sonra da ana program bu değeri okur.

Ama burada dikkat edilmesi gereken bir husus var: Eğer kesme, ölçülen sıcaklığı bir double olarak kaydederse, bu 2 tane 32 bit değerdir. Ana program iki değerin yazılışının ortasında yakalayabilir ve saçma bir sayı okur. O yüzden ölçülen sıcaklığı ya float yap (32 bit) yada integer yap. Mesela sıcaklık 158.3 ℃ ise 1583 olarak integere kaydet. Böylece ana program hiçbir zaman yarım yamalak bir sıcaklık okumaz, program tutarlı olur.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,957
Mesajlar
118,804
Üyeler
2,825
Son üye
karahanli7

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top