avatar_elektro77

555 te yumuşak kalkış ve duruş

Başlatan elektro77, 20 Aralık 2018, 14:39:12

ete

Madem ki butonlar ile duty değerini değiştireceksin. Neden direk artır tuşuna basınca Duty=Duty+1 veya azalt tuşuna basınca direk Duty=Duty-1 şeklinde uygulama yapamıyorsun da araya sayı - ham gibi diğer değişkenleri sokmuşsun.
Kafandan geçenleri bilemiyorum o nedenle dokunmadım ancak akıl verebilirim.
Bence yukarıda dediğim gibi yapsan daha iyi olur. Sınırları aşmamak için sınır kontrolü koyman gerek bunu unutma. Şu andaki sorunda sınır kontrolünün olmaması.
Ete

elektro77

Amacım butonlarda artırma ve azaltma hızını sadece bir değer atayarak değiştirebilmek.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete


elektro77

butona basıldığında pwm in 0 duty den maximum dutye çıkarkenki hızı. örneğin 3 saniye
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

hiz   con 1      ' Butona basarken değişim hızı, bu değer ile oynayarak hız değiştirilir
bu kod
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Peki diyelimki 2 sn olarak bunu butonla ayarladın. Kim yaptıracak bu işi? yani 0 dan maksimuma kim çıkartacak en önemliside ne zaman bu işi yapacak. Ne zaman maksimumdan sıfıra inecek ve onuda kim yaptıracak.

Ayrıca maden artırma azaltma hızılarını butonla belirlemek istiyorsun pwm duty değeri hesabına bu süre değerini neden bulaştırıyorsun. Bulaştırdığın için butonlar sadece duty değiştiriyor.
Butona bastın (artır) Sayı bir arttı daha elini çekemeden bir daha artar ve HAM=HAM+64 yapıp yeni bir ham değeri buldu.
Bunu götürüp DUTY=(ham+1)*/250 formülünde yerine koyup yeni bir duty buldu ve bunuda işlemciye vererek sinyalin duty değerini değiştirdi. Hani nerede artırma hızı vs. Yanlış yoldasın bence.

Ete

elektro77

anlatmaya çalıştığım sistem 12f675 ile yapılmış bu devrede gayet güzel çalışıyor. fakat pwm frekansı sadece 330 hz. siz motor sürme ideal jızını 5 khz olduğunu söylediğiniz için bu devreyi 12f683 e uyarlamak istedim. fakat yine allak bullak ettim galiba.
@	device  pic12F675, wdt_off, pwrt_on, mclr_off, protect_off,intrc_osc_noclkout
TRISIO = %00110000
WPU = %00110000   
IOC=%00000000 
INTCON=0
'OPTION_REG=%00000111 
ANSEL=0
ADCON0.0 = 0   

dim var BYTE
r var byte
m var byte
i VAR BYTE
sayi_1 var byte

pmw con 255    ' Pwm çözünürlüğü
hiz con 3     ' Butona basarken değişim hızı, bu değer ile oynayarak hız değiştirilir

pmw2 con 255        ' En yüksek seviye, pmw değerine kadar arttırılabilir, motor_min den büyük olmalıdır
motor_min con 0     ' En düşük seviye, sıfıra kadar çekilebilir, max değer pmw kadar olabilir 
dim=127             ' Cihaz açıldığında başlangıç seviyesi atadık, max pmw2 kadar olabilir
buton1 var GPIO.4   'Arttırma
buton2 var GPIO.5   'Azaltma               
pause 100                   
GOTO basla

;---------------------BUTON KONTROL RUTİNİ---------------------
butonkont:

' Artır
if buton1=1 and buton2=0 and dim<pmw2 then   
sayi_1=sayi_1+1
if sayi_1>hiz then
dim=dim+1
sayi_1=0
endif
r=dim
pauseus 180
return   
endif

' Azalt
if buton1=0 and buton2=1 and dim>motor_min then   
sayi_1=sayi_1+1
if sayi_1>hiz then
dim=dim-1
sayi_1=0
endif
r=dim
pauseus 8
return   
endif

r=dim
pauseus 20
return 

;-------------------- PROGRAM BAŞLANGICI-----------------------
BASLA:
GPIO=0
r=dim

CIKIS:
gosub butonkont
r=dim       
For i = 0 TO pmw 
m=6
IF r>0 Then
m=m+1
r=r-1
EndIF
GPIO=m
Next i
goto cikis

END
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Bu programda senin kisi gibi çalışır. Tek farkı sınırları kontrol altında. Sende Duty=Duty+64 komutunda duty nun kaç olduğunu kontrol edemiyorsun. alıp başını gidiyor.
Benzer şekilde Duty=duty-64 komutunda ise eksile eksile önce sıfır sonra 65535 in altına düşüyor ve sistem sapıtıyor.
Ama bu iki programda da ne soft start var ne makismuma otomatik yükseeliş var nede o söyledijlerin var. Artırma hızı diye bir şey yok. Onlar yalnızca PWM elde etmek için döngüyü kontrol ediyorar o kadar.

ete

elektro77

Sayın ete Hocam Ben soft start sistemden vazgeçtiğimi, kullanmak istediğim sistemin bu olduğunu bir kaç mesaj önce yazmıştım. Ana amacım pwm i iki butonla yapmak. Çünkü başka bir rf alıcı devresi picinden 2 çıkış alıp bu hız kontrolü kullanıyorum.
Peki son gönderdiğim f675 li yazılımın frekansı neden 330 hz ve neden %94 duty nin üzerine çıkamıyorum. Gerçekte bu devreyi yapıp denedim ve osiloskopta pwm frekansının 330 hz olduğunu gördüm. Motoru döndürüyorum ama sizin ideal frekansın 5khz olduğunu söylediğinizden beri 12f683 te bunları yapmaya çalışıyorum.
Sizin son mesajda yazdığınız soft start veya otomatik kalkış olayına benim kafam basmaz. mümkün değil. Ben ete değilim malesef.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

yazılımla PWM elde edildiği için frekansın daha da yükselmesi mümkün değil.
İdeal frekans motorlar için 5Khz demiştim doğru. Bunu bir çok motorla denemeler yaparak kendimce belirledim.
Zira 5Khz altında ki frekanslarda motor inlemeye başlıyor. Hele 1Khz ve altında epeyce ses çıkartıyor. Bilmiyorum seninmotor bu 330 hz de ne yapıyor. Ses sorun olmuyor ise kullan gitsin. Başka bir olumsuz tarafı olmaz sanırım.

5 Khz in üzerindeki sinyallerde pek sorun çıkartmıyor. ama 10Khz den sonra motor pals kaçırmaya başlayabiliyor. İdeal aralık 5Khz-10Khz aralığı bana kalırsa.

Ete

elektro77

evet inliyor.
duty değerini%65 in altına düşürdüğümde de motor dönmeyi bırakıp sadece ötüyor.
fakat %65 benim için sorun olmayacak. ama %100 e çıkmam gerekli. Bu yazılımda %94 te son buluyor.bu düzeltmeyi nasıl yaparız.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

bu arada benim motor 12 volt 100 rpm dc reduktorlu motor.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

Ete hocam. Yukaridaki yazilimda %94 pwm i %100 e cikarmanin bir yolu yokmu.yazilim uzerindeki Her değeri oynadim ama basaramadim. Bir tavsiyeniz varmi.
Yada 12f683lü  yazilimin buton kontrolunu saglayabilirmisiniz. Lutfen.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

elektro77

#28
12f683 ile yapılmış olan pwm hız kontrolünü en son aşağıdaki şekilde bitirdim ve çalışıyor.
Kodlarda frekans ile ilgili bir sorun oluşmuş mu veya başka bir sorun varmı kontrol ederseniz memnun olurum.
Saygılar

elektro77

DUTY=512            'başlangıctaki pwm değeri. değiştirilebilir.

BASLA:
if ARTIR=1 and AZALT=0 then   
DUTY=DUTY+1
IF DUTY>1023 THEN DUTY=1023
endif

if ARTIR=0 and AZALT=1 then   
DUTY=DUTY-1
IF DUTY=0 THEN DUTY=1
endif

PAUSE 5   'DEĞİŞİM HIZI.Bu değerle oynayarak pwm değişim hızı ayarlanır.

IF X=DUTY THEN BASLA
X=DUTY
CCP1CON.4=X.0
CCP1CON.5=X.1
CCPR1L=x>>2
goto basla
end
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Kod da hata yok. Ancak 5Khz PWM frekansı için 4 Mhz osc frekansında için şu parametreleri kullanmak gerekirdi;
Bölme oranı : 1/1 olursa  PR2=199 ,Max Duty değeri 800
Bölme Oranı: 1/4 olursa  PR2= 49,  Max. duty=200
Bölme oranı : 1/16 olursa PR2=12Max Duty=50

Sen ise 1/4 Bölme oranı ile Pr2=249 ve max. duty=1000 alarak 1 khz lik bir sinyal oluşturuyorsun. Hali ile max duty değerin 1000 oluyor ve sen bunu buton ile +1 şeklinde 0 dan 1000 e kadar artırmak zorundasın. Bunun zaman alması neden ile pause değerini 5 e kadar düşürmüşsün.
Bunların neresi yanlış diye soracak olabilirsin. Hiç bir yeri yanlış değil ama biraz daha akıllıca kod oluşturmak mümkün.
Buton ile artırma eksiltme yapacağımız için max duty değerinin çok yüksek olmasını tercih etmemek gerekiyor. Ayrıca frekansımız da 5Khz olmalı değilmi. O halde yukarıdaki tabloya bakacak olursak bize en uygun olanı 800 veya dahada iyisi 200 olurdu. 800 kullanılırsa tuşa basınca artırma ve eksiltmelerde 10 ar artırma veya eksiltme yaptırmak daha akıllıca olacaktır. Böylece 80 kademede max dutya erişebilirsin.
200 kullanacak olursa +1 şeklinde artırım yapman veya tersi için -1 şeklinde azaltma yapmak uygun olur.
Her iki konumda da pause miktarlarını keyfine göre değiştirebilirsin.
Dikkat edersen hiç bir şekilde hazır kod isteklerine cevap vermiyorum. Vermiyeceğimde Ancak işi öğrenmen için elimden gelenide yapıyorum. Sağdan soldan toplamışda olsan birşeyler yaptığını görebiliyorum. Umarım bu sana itici güç olurda öğrenme seviyeni artırırsın.
Bu aşamadan sonra bu kod doğrumu yanlışmı şeklindeki isteklerinede cevap vermeyeceğimi bildirmek isterim.
Her ne kadar fakir edebiyatı yapıyor olsanda ücretli projeler yaptığını çok iyi biliyorum. Üstelik ne hikmetse sürekli bilginin az olduğu konularda iş alıyorsun ve buradan yardım istiyorsun. Bu işi ya öğren ve sadece takıldığın noktalarda yardım iste yada bu işleri alma. İnsan bildiği işleri yapmalı. Bilgi eksiliği her zaman olabilir. Usulünce bilenlere sorarak bunu gidermek te her zaman mümkün. Tabiiki bilgi isteğinin dozajını kaçırmamak temel ilke olmalı. Aksi halde yardım edenlerin keyfini kaçırır ve kendilerini aldatılmış hissetmelerine sebep olursun.
Daha fazla konuyu uzatmamak adına bu konuyuda kilitliyorum.


Ete

Powered by EzPortal