16F877a ile dc motor hız kontrolu?

877a

Üye
Katılım
23 Nis 2009
Mesajlar
3
Puanları
1
16F877a ile dc motor hız kontrolu pwm mantıgı ile nasıl yapılır?
Devrede 3 buton olacak;
1. buton hızı artır
2. buton yavaşlat
3. durdur


Yardımlarınız icin simdiden tesekkürler..
 
s.a
programlama dili olarak proton basic kullanıyrum Bilmem işine yararmı?
 
s.a
programlama dili olarak proton basic kullanıyrum Bilmem işine yararmı?

a.s programlama dili ile ilgili bi problemim yok. Tesekkürler.. Kullandığım program ccs c..
Devrede neler kullanmam gerekiyor?
Pic deneme kartım mevcut 16F877a'dan bilgileri onun üzerinden alıcam fakat dc motoru kontrol edebilmem için ayrıca pwm mantığı ile çalışan bi devre yapmam gerektiğini bilgi edindim. Pwm mantığı hakkında bi bilgim yok.
Eğer sizde böyle bi devre varsa ve benimle paylaşırsanız çok memnun olurum. İlginiz için tesekkür ederim.
 
Son düzenleme:
pwm mantığı, belirli bir periyot boyunca bir sinyal üretme ve bu sinyaldeki lojik 1 ve lojik 0 seviyesini ayarlamaktan ibaret.
örnek olarak 20ms periyodunda 2ms boyunca bir çıkışı aktif ( lojik 1 ) yapıp geriye kalan 18ms boyunca o çıkışı pasif( lojik 0 ) yaparsan, yazılımsal bir pwm üretmiş olursun.

ccs c de bunu şöyle yapabilirsin...

output_high(PIN_B0);
delay_ms(2);
output_low(PIN_B0);
delay_ms(20);


bunu sürekli bir döngü içerisinde yaparsan, 20ms periyotlu bir pwm üretmiş olursun.

while(true){
output_high(PIN_B0);
delay_ms(2);
output_low(PIN_B0);
delay_ms(20);
}


dinamik değişkenleri kullanarak ta, artma ve azalma işlemini buraya dahil edebilirsin.
örneğin long türünde GP ve PERIOD diye iki değişken tanımlayalım.

long period=20000, gp=2000;

olarak yazarız. 20000us = 20ms olacaktır. başlangıç değerlerini böyle kabul edelim. tabi değiştirilebilir.

kodu şu şekilde düzenlememiz gerekir o zaman.
while(true){
output_high(PIN_B0);
delay_us(GP); // ms yerine us yazdık.
output_low(PIN_B0);
delay_us(PERIOD-GP); // ms yerine us yazdık.
}

böylece artır ya da azalt butonu konursa, GP nin değerinin artırılması ya da azaltılması yeterli olur.

Bu, yazılımsal PWM üretimidir. Ben genelde bunu tercih ediyorum.
16F877A'nın ayrıca donanımsal PWM modülü vardır. Bu modül aktifleştirilerek ve ayarları düzenlenerek, programdan bağımsız olarak donanımsal bir şekilde pwm üretilebilir. bir kenarda program başka işlerini yaparken, diğer bir yanda pwm modülü, pwm işaretini üretir.

Fikir oluşmuştur umarım...
 
butonlar yardımıyla pwm sinyalinin iş süresini değiştirerek istediginiz devreyi hazırlayabilirsiniz.


pbp için PWM vw HPWM komutlarının kullanımı (Alıntı)


56)PWM

SÖZDİZİMİ
PWM PIN,DUTY,CYCLE
AÇIKLAMA
PIN’E darbe genişliği modülasyonlu darbe katarı çıkışı yapar.PWM’nin her çevrimi 256 adımdır. Duty ile edilen işin çevrimi her bir PWM çevrimi için 0-255 arasında (%0-%100)değişir. PIN 0..15 arasıbirsayı 0..15 arasıbirsayı içerenbir değişken (örneğin B0,,B3) veya bir bacağın adı olabilir.(örneğin porta.0)
Cycle ile gösterilien PWM’nin çevrim zamanı osilatör frekansına değişir.4mhz için yaklaşık 5ms sürer.20mhz çevrim ile çevrim 1ms sürer.OSC tanımlamanın PWM üzerinde bir etkisi olmaz.
Pıc’in PWM donanımı varken PWM çıkışı sürekli olsun isteniyorsa PWM yerine HPWM kullanılabilir.
PIN darbenin üretilmesinden hemen önce çıkış olur. Darbe oluşumu bitince yeniden giriş oacaktır.pın bacağındaki PWM çıkışı kirlidir. Uygun kare dalga serisi oluşturmaz. Sinyali işe yarar hale sokmak için filtre gerekir. Basit bir D/A çeviricisi olark aşağıdaki RC devresine başvurulabilir.
PWM PORTB.7,127,100 ‘PORTB’nin 7. bitine %50 iş çevrimli
‘100 çevrimlik PWM sinyali gönderir.



28)HPWM

sözdizimi
hpwm chanel, dutcycle,freqency
bazı PIC’lerde bulunan PWM donanımını kullanarak darbe geişlik modülasyonlu bir darbe katarıüretir. Program diğer işlemleri yürütürken arkada durmaksızın çalışabilir.channel PWM donanımkanalınıifade eder. Bazı entegrelerde1,2,ya da 3PWM kanalı olabilir.2 kanallı cihazlarda her iki kanaldaki FREQENCY frekans değerlerininaynı olması şarttır.
DUTYSYCLE ise sinyalin açık/kapalı (yüksek /düşük) oranını belirler.0 ile 255 arasında değer alabilir.0 her zamandüşük(kapalı)oldudğunu ;255 her zaman yüksek (açık) olduğunu anlatır.127 değeri iş çevriminin (kare dalga) yarısını verir.
FREQUENCY PWM sinyalin arzulanan frekansıdır. Her frekans bütün osilatör ayarlarında mümkün değildir. Her hangi bir osilatör ayarı için en yüksek frekans 32767Hz’dir. Her osilatör ayarı için kullanılabilecek en düşük HPWM frekansı tabloda gösterilmektedir.
PIC18C452 gibi bazı cihazların HPWM için kullanılabilen alternatif bacakları vardır. Karşılık gelen bacaklar aşağıdaki tanımlarla kullanılabilir.
DEFİNE CCP1_ REG PORTC ‘HPWM 1 PORTU
DEFİNE CCP1_ BIT 2 ‘HPWM 1 BİTİ
DEFİNE CCP2_ REG PORTC ‘HPWM 2 PORTU
DEFİNE CCP2_ BIT 1 ‘ HPWM 2 BİTİ
Aşağıda PIC17C7xx entegrelerinde PWM kanal 2 ve kanal3 ile hangi zaman sayarın (TIMER1 veya TIMER2) kullanılacağı tanımlanmaktadır. Tanımlama yapılmazsa ön ayar gereğimceTIMER1 kullanılır.
DEFİNE HPWM2_tımer 1 ‘Hpwm2zaman sayarı seçimi
DEFİNE HPWM3_ tımer 1 ‘Hpwm3 zaman sayarı seçimi
HPWM 1,127,1000 ‘1KHZ’te %50 iş çevrimli PWM sinyali HPWM 1,64,2000 ‘2KHZ ‘te %25 iş çevrimli PWM sinyali
 
Öncelikle ilginiz için çok teşekkür ederim..
Yazılımsal pwm olmayacak yani LMD18200 gibi PWM girişli entegre kullanmam gerekiyormuş ayrıca dc motorun beslemeside PWM girişli entegreden mi sağlanacak? ISIS gibi bir programda ufak şema çizebilir misiniz? Yani şimdilik sizlerden yardım istediğim devrede kullanmam gerekenler ve devre dizaynı.. Kolay gelsin. Tekrar teşekkürler.
 
Son düzenleme:

Forum istatistikleri

Konular
130,159
Mesajlar
933,809
Kullanıcılar
453,270
Son üye
mamucuk
Geri
Üst