Ardunio uno degisken frekansli pwm uretme

kurusaray

Üye
Katılım
14 Tem 2008
Mesajlar
198
Puanları
1
Yaş
40
Arkadaslar selamlar. Elimde bir adet step motor ve onun hazir surucusu var. Surucunun puls ve yon uclari kullanilarak calisiyor. Ardunio unodan degisken frekansli pwm ureterek hiz kontrolu yapmak istiyorum. Timer ile yaptim pek hiz degismedi. Nasil yapabilirim . Uno ile olmazsa mega ilede olur. Elinde kod olan varsa paylasirlarsa sevinirim.
 
Kod:
const int pwmOut = 9; // PWM çıkış pini tanımlanıyor
int pot = 0;        // okunan analog girişi atayacağımız değişken
int outputValue = 0;        // PWM çıkış bilgilerini tutacağımız değişken (analog out)

void setup() {
}

void loop() {
  pot = analogRead(A0);  //analog girişi oku ve pot değişkenine 
  outputValue = map(pot, 0, 1023, 0, 255);  // pot değişkenine göre 0-1023 arasındaki 10 bitlik değeri 0-255 arasında 8 bitlik değere çevir
  analogWrite(pwmOut, outputValue); // hesaplanan değeri pwm çıkışına yaz          
  delay(2); // her döngüden önce 2 ms bekle                  
}
 
Paylaştığınız kod için teşekkür ederim.

Bu kod ilede hız değişmiyor. Belki çok az değişiyor ama fark edilmiyor.

Sanırım burada frekans değişimimiz yüksek olması gerekiyor. 0-20khz, 0-30khz gibi falan.

http://www.picproje.org/index.php?topic=62675.0

burda bişeyler anlatmılar ama buradaki kodu çalıştıramadım.
 
Pwm duty ile oynayarak hiz ayarı yapamazsınız.frekansi değiştirmek gerekir
 
Bunun bir fonksiyonu yok hazır olarak.mikrodenetleyici timer registerleri üzerinden bu işi gerçekleştirebilirsiniz
 
Örnek uygulama lazım. Şimdi tırmalar dururuz.
 
Timer kesmesi olayının ne olduğunu bununla ne yapabileceğini araştır.
Bu dediğini anca onunla yapabilirsin.
 
Denemediğim için soruyorum, döngü ile dijital çıkışta belli bir frekans oluşturamaz mıyız? Böyle bir şey mümkün mü. Mümkünse artıları eksileri neler olur? Örneğin pot yardımıyla analog girişten veri aldık diyelim. Aldığımız bu veriyi delay komutu ile her döngüde bekleme olarak versek ve çıkışı her bir adımda 1 ve 0 olarak değiştirsek olur mu?
 
Yazılımsal olarak kontrol ederken, kullanmaya çalışacağınız fonksiyon yazdığınız ekranda tek cycle olarak gözükebilir ancak kütüphane karşılığını incelemediğinizi var sayarsak bu birden fazla cycle eşit olabilir. Bu durumda çok karmaşık olarak frekans hesaplaması yapmak zorunda kalırsınız. Çok basit anlamda delayMicroseconds fonksiyonu ile 10.000'lik bir periyot ayarlayarak bu 10.000 içerisinde duty cycle' i değiştirirseniz çok amatör PWM çıkışı elde edebilirsiniz. Peki buna gerek var mı? Tabikide gerek yok bir timer interrupt içerisine yerleştirceğiniz çok basit if döngüsü ile Duty Cycle' i ve Periyodu kesin olarak değiştirebilir ve bunun kaç Hertz' e eşit olacağını bilebilirsiniz. Bu bahsettiğim yöntem ile dijital bir çıkış kullanarak pwm çıkışı elde edilebilir.
 

Forum istatistikleri

Konular
129,689
Mesajlar
929,034
Kullanıcılar
452,395
Son üye
gkmeens

Yeni konular

Çevrimiçi üyeler

Geri
Üst