Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: E-x8 - 14 Ocak 2019, 00:31:47

Başlık: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: E-x8 - 14 Ocak 2019, 00:31:47
Merhaba

72MHz'de çalışan stm32f103 denetleyicim var. Uzaktan kumandalı araçtan gelen pwm sinyalini okuyorum kumandadan 50Hz gönderim yapılıyor. Servo gibi 1000-2000us arası pwm uzunluğu var. Timer2'nin Channel 1'inden okuma yapıyorum. Yükselen kenarda zamanı tutup düşen kenarda çıkartıp uzunluğu bulabiliyorum ancak timer2 nin hızını ayarlayamadım. Çünkü datasheetin içinde kayboldum kaynaklarda da farklı farklı tanımlanmış bu konu hakkında yardımcı olabilir misiniz?
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: Mucit23 - 14 Ocak 2019, 01:06:40
Stm32 timeri bu işi otomatik yapıyor. Kesme ile yapmak verimsiz olabilir. Örnekler içerisinde pwm input örneği var. Onu inceleyin.
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: E-x8 - 14 Ocak 2019, 09:50:13
Öncelikle mesaj yazdığınız için teşekkür ederim.

1.) Timer2'nin hızını düzgün ayarlamış mıyım? Değerler nasıl olmalı? ve Hız hesabı nasıl oluyor?

2.) Örnekler nerede bulunuyor?
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: Tagli - 14 Ocak 2019, 10:15:12
Konu ve örnek Reference Manual'de. TIM2 için "15.3.5 Imput capture mode" ve "15.3.6 PWM input mode". Aynı başlıklar diğer bazı timer modülü bölümlerinin altında da olabilir.
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: Mucit23 - 14 Ocak 2019, 10:27:43
STSW-STM32054 içerisinde olacaktı. Örnekler içerisinde TIM örneklerine bakın. Doğrudan PWM input örneği var.

Prescaller değeriniz doğru değil gibi. Ölçeceğiniz frekansa göre Timer Çalışma frekansını prescaller ile ayarlamanız gerekir.

Eğer 50Hz PWM frekansını ölçecekseniz Periyodunuz 20ms demektir. Bu durumda Timer prescaller değerini (72-1) yaparsanız Timer tam olarak 1mhz ile çalışır. Buda Her bir tick 1us anlamına gelir. Yani sizin çözünürlüğünüz 1us olduğu anlamına geliyor. 20ms lik periyoda sahip bir pwm sinyalinin puls genişliğğini 1uS çözünürlükte 0-20000 arası ölçebilirsiniz teorik olarak. Timer Prescallerdaki mantık bu şekilde. Sadece ARR için verdiğiniz değeri geçmemesine dikkat edin. Aksi halde taşma olur. ARR değerini 0xFFFF yapmakta fayda var.
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: E-x8 - 14 Ocak 2019, 10:41:58
Prescaler değerimi 71 yaptım ve AutoReload registeri 0xFFFF yaptım çalışıyor. Ancak okuduğum değerler 1100-1890 arası gibi elimde osiloskop vs olmadığı için doğruluğunu kıyaslayamıyorum.
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: E-x8 - 14 Ocak 2019, 10:52:28
Kumandadan gazı fullediğimde Keil'den data olarak 1898us olarak okuma yapıyorum. Durum aynıyken multimetre 8.6% doluluk okumakla birlikte 45.44Hz olarak gösteriyor.

1000ms'de 45.44Hz ise bir periyot 22,00704225352112676056338028169ms yapar.

22,00704225352112676056338028169ms 100% ise 8,6% 1,8926056338028169014084507042254ms yapar.

Bende 1898us olarak ölçmüştüm son sonuçla kıyasladığımda doğru gibi. Sizce doğru mu?
Başlık: Ynt: STM32F103 50Hz PWM Sinyalinin Uzunluğunu Nasıl Ölçerim?
Gönderen: Mucit23 - 14 Ocak 2019, 10:58:17
En doğrusu osiloskop ile puls genişliğini ölçüp karşılaştırmak. Ama emin olmak için birkaç farklı duty değeri için ölçüm yapıp karşılaştırabilirsin.