- Katılım
- 24 Şubat 2018
- Mesajlar
- 24,139
ortalama konusunda da şüpheliyim ben. Ölçüm hatalarının önemli bir problem olacağını düşünmüyorsak bence hesaplanan değer geriden geleceği için tepki süresini epey geciktirebilir, daha önemlisi PID'yi çok yanıltabilir.
PICO daki ADC nin arada bir uçuk bir pals üretme gibi bir sorunu var. O yüzden ortalama almadan işi yapmak pek mümkün görünmüyor. Tabi arada bir gelen bir pikin PID i nasıl etkileyeceğini bilmiyorum. Belki de PID bundan etkilenmez. Etkileneceğini varsayarsak, belli sayıda ortalama almak gerekir. Tabi ortalama almak da tepki süresini arttırıyor. O yüzden alman gereken ortalama sayısı arttıkça, PWM frekansını da arttırmak lazım ki tepki süresinden bir kaybın olmasın.
Şöyle bir yapı kullanılabilir:
PWM frekansını gene 1 kHz yaparsın. PWM kesmesinde geriye dönük 10 örneğin ortalamasını alırsın. Bu ortalamayı da raw ADC count olarak bir globale yazarsın. 10 kesmede bir de başka bir flag set edersin.
Ana döngüdeki program da bu flag'ı görünce yeni bir PID değeri hesaplar ve sonucu PWM ye yazar. Bunu yazarken de uygun bir şekilde yapmak lazım. Doğrudan PWM hardware'ine yazacağına kesmeye söylersin "yeni PWM hesapladım, müsait bir zamanda yazılmasını arz ederim" diye