SALIH-46
Üye
- Katılım
- 20 Mar 2008
- Mesajlar
- 47
- Puanları
- 1
- Yaş
- 40
Arkadaşım şimdi senin yapmak istediğin şu değilmi atıyorum kol yukarı doğru hareket edecek ve 400 puls olduğu zaman o seviyede sabitleyecek ve senin gelecek olan puls'in maksimum 900 ise böyle bir durumda yani puls sayısı 900 bulabileceği için timer1 kullanman (sayıcı olarak) bencede mantıklı çünkü timer1 16bitlik zamanlayıcı/sayıcı ve şimdi bence zamanlayıcı olayını (şunun için zamanlayıcı ile işin olmayacak gibi) boş ver
sadece şunu yap şimdilik timer1 sayıcı olarak ayarla prescaler oranınıda 1:1 yap yani encoder dan gelen herbir puls sinyalinin düşen veya yükselen kenarında kesme oluştur kesme programında yön bilgisine göre puls sayısını artır veya azalt bu arada a0 analog olarak ayarla bir potun orta ucunuda a0 getir a0 dan aldığın değeri sayısallaştırdın atıyom 300 şimdi sen pwm'in duty saykılını artırmaya başlarsın ( motor gittikce hızlı dönmeye başlar) kol yukarı doğru hareket ettikce gelen pulsleri sayarsın puls sayın 300 bulduğunda pwm'in duty saykılını artırmassın olduğu yerde kalır eğer denge bozulursa o kurduğun döngü sayesinde pwm'i artırır veya azaltırsın
aşağıdaki koda gelince sana attığım mail'i dikkate al bence ve burda timer1 sayıcı olarak kullnıyorsan encoder'ın puls ucu pic'in 15 nolu bacağına yani rc0(tc1ck timer1'in sayıcısı için harici giriş) bacağına gelmeli ama yön sinyalini istediğin yerden alırsın ve timer1'sayıcısına gelen pulsleri bölmeyeceksin hergelen pulsde kesmeye gitmen lazım yani oran 1:1 olacak
sadece şunu yap şimdilik timer1 sayıcı olarak ayarla prescaler oranınıda 1:1 yap yani encoder dan gelen herbir puls sinyalinin düşen veya yükselen kenarında kesme oluştur kesme programında yön bilgisine göre puls sayısını artır veya azalt bu arada a0 analog olarak ayarla bir potun orta ucunuda a0 getir a0 dan aldığın değeri sayısallaştırdın atıyom 300 şimdi sen pwm'in duty saykılını artırmaya başlarsın ( motor gittikce hızlı dönmeye başlar) kol yukarı doğru hareket ettikce gelen pulsleri sayarsın puls sayın 300 bulduğunda pwm'in duty saykılını artırmassın olduğu yerde kalır eğer denge bozulursa o kurduğun döngü sayesinde pwm'i artırır veya azaltırsın
aşağıdaki koda gelince sana attığım mail'i dikkate al bence ve burda timer1 sayıcı olarak kullnıyorsan encoder'ın puls ucu pic'in 15 nolu bacağına yani rc0(tc1ck timer1'in sayıcısı için harici giriş) bacağına gelmeli ama yön sinyalini istediğin yerden alırsın ve timer1'sayıcısına gelen pulsleri bölmeyeceksin hergelen pulsde kesmeye gitmen lazım yani oran 1:1 olacak