Paylaştığın Proteus şeması ve anlattığın belirtiler, tipik bir ADC (Analog-to-Digital Converter) taşması veya yazılımsal bir sınır (boundary) hatasına işaret ediyor. %75 seviyesine kadar her şeyin normal olması, donanımsal bağlantıdan ziyade verinin işlenme şekliyle ilgili bir problem olduğunu gösteriyor.
Sorunun kaynağı muhtemelen şunlardan biridir:
- ADC Değer Taşması (Overflow)
PIC18F46K22'nin ADC'si 10-bit çözünürlüğe sahiptir (0-1023 arası değer üretir). Eğer kodunda bu değeri 8-bitlik bir değişkene (0-255) atmaya çalışıyorsan, potansiyometre %25'lik dilimleri geçtikçe değer sıfırlanır veya garip davranır.
Belirti: Pot %75'i (768 değerini) geçince, 8-bitlik değişkende değer tekrar başa dönebilir veya beklenmedik bir "offset" oluşabilir.
Çözüm: ADC sonucunu tutan değişkenin unsigned int (16-bit) olduğundan emin ol.
- PWM Duty Cycle Sınırı
Şemada IR2101 sürücüler ve MOSFET'ler üzerinden yük sürüyorsun. PWM sinyali oluştururken "Duty Cycle" değerini hesaplayan formülde bir hata olabilir.
Sorun: Eğer potansiyometreden gelen 1023 değerini doğrudan PWM kaydedicisine (CCPRxL) yazıyorsan ve PWM periyodun (PR2) daha düşük bir değerse, %100'e yaklaştığında sinyal kilitlenir veya kararsızlaşır.
Çözüm: Yazılımda potansiyometre değerini map fonksiyonuyla (veya oranlayarak) 0 ile maksimum PWM değeri (PR2 değeri) arasına sıkıştırdığından emin ol.
- Potansiyometre ve Referans Voltajı
Şemada potansiyometre (RV1) en üst noktada hangi voltaja bağlı? Eğer PIC'in beslemesi (VDD) 5V ise ve potansiyometrenin ucu daha yüksek bir voltaja (örneğin 12V) gidiyorsa, %75'ten sonra ADC girişine limitlerin üzerinde voltaj gelir.
Kontrol: Şemada RV1'in üst bacağının PIC ile aynı besleme hattında (genelde +5V) olduğundan emin ol.
- Yazılımsal "Halt" veya Sonsuz Döngü
Potansiyometre belirli bir değeri geçince kodun içinde bir if-else bloğunda veya bir matematiksel işlemde (sıfıra bölme veya negatif sonuç gibi) takılıyor olabilirsin.
Öneri: Potansiyometre değerini LCD ekranına anlık olarak yazdır. Değer 750-800 bandını geçtiğinde LCD'deki sayının donup donmadığını kontrol et.
Donanımsal Küçük Bir Not
Sürücü katında (IR2101) Bootstrap kapasitörleri (C3, C4, C5) 220nF olarak belirlenmiş. Eğer PWM frekansın çok düşükse bu kapasitörler boşalıyor olabilir, ancak bu durum genelde "takılma" değil "güç kaybı" veya MOSFET ısınması yapar. Asıl sorun yukarıdaki ADC/Yazılım tarafındadır.