PWM Çıkışını Terslemek

Başlatan Epsilon, 01 Ocak 2019, 22:13:01

Epsilon

Protonda ufak bir program yazdım .
Program bir butona bastıkça bir porttaki LED lerin her biri sıra ile yanıyor.Birinci LED yandığında 1,5 volttan başlayıp yarım volt farkla artıyor.Bu kısmı çalışıyor.

Toplam 6 LED var.Program tekrar çalıştırıldığında örneğin 3 kere basıldığında ayarlanmış olan örneğin 2,5 voltun PWM çıkışından verilmesi gerekiyor.

10 ,20 gibi bir değeri EEPROM a kaydederim de butona bastıkça değişen değeri- bir döngüden- alıp nasıl kaydedeceğim?
İkinci sorun ise sistem ışık algıladığında PWM uçlarındaki o voltajın polaritesi değişmesi gerekiyor.
Yani ışık yokken PWN uçlarında 0,75 volt varsa ,ışığı algılayınca bu voltaj 2,5 volta çıkacak ve + ucu - olacak ,- ucu ise + olacak

Bu iki konu nasıl yapılabilir?
Yardımlarınız için şimdiden teşekkürler.


Andromeda

..pwm dalgasının darbe süresini değiştirince voltajıda ayarlanmış olacak..
ilk soruyu ise anlamadım.
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Epsilon

#2
Alıntı yapılan: elek - 01 Ocak 2019, 22:54:11..pwm dalgasının darbe süresini değiştirince voltajıda ayarlanmış olacak..
ilk soruyu ise anlamadım.

Hocam  farklı voltajları elde etmekte bir sorun yok.
Çözemediğim kısmı butona bastıkça artan bu değerin -örneğin 3,5 voltta kalmışsa .Tekrar açıldığında PWM çıkışının 3,5 volttan açılması.
Diğer sorun ise ışık algıladığında bu pWM voltajının kutuplarının değişmesi(Işık algıladığında saat yönünde dönen motorun ,bu sefer saat yönünün tersinde dönmesi gibi düşünün )

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Epsilon


Epsilon

Koduda ekleyeyim

Device = 16F877A
Xtal=20
TRISA=0
TRISC=0
TRISB=%00010000
TRISD=0
TRISE=0
Dim SAYAC As Byte
Dim Loop As Byte
DEFINE CCP1_REG PORTC           'HPWM PORTC.1
DEFINE CCP2_REG PORTC           'HPWM PORTC.2
DEFINE CCP1_BIT 2                          'CCP1 PİNİ PORTC.2
DEFINE CCP2_BIT 1                          'CCP1 PİNİ PORTC.1

Declare All_Digital = TRUE
Declare PortB_Pullups = On      ' Enable PORTB pull-ups
Output PORTC


PORTD = 0       		' Set PORTD (LEDs) to all output

Main:
If PORTB.4 =0 Then                              'butona basıldı mı?
  While PORTB.4 ==0 :Wend                 'butona basmayı bırakana kadar bekle
  Inc SAYAC                                        'sayac değerini bir artır
  If SAYAC >=7 Then SAYAC =1             'eger sayac degeri 5 ve 5 den büyükse sayacı 1 yap yani başa dön
EndIf
If SAYAC =1 Then PORTD =%00000001:HPWM 1,39,1400        
If SAYAC =2 Then PORTD =%00000010 :HPWM 1,45,1400 
If SAYAC =3 Then PORTD =%00000100 :HPWM 1,49,1400 
If SAYAC =4 Then PORTD =%00010000 :HPWM 1,56,1400 
If SAYAC =5 Then PORTD =%00100000 :HPWM 1,65,1400
If SAYAC =6 Then PORTD =%01000000 :HPWM 1,78,1400 

DelayMS 100

GoTo Main

Andromeda

.. butona basıldıkça artan değişken kaydedilecek ve sonra bu değer istenen yerde kullanılabilir.
Amaç bir motorun ters çalışması  ise dc motor sürücüsü ile bu kolayca yapılabilir.
Ama önce yapılmak istenen devrenin tam olarak ne amaca hizmet edeceğinin bilinmesi gerekir..
pwm nin kutuplarının ters yapılması ne demek  anlamadım..
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

mehmet

Gerilim olarak değil de, pwm
dalga oranı olarak düşünün.
0-255 aralığında; 0-127 arasında
ise sola dönüş olsun. Aynı şekilde
128-255 için de sağa dönsün.

Bir pin sağ/sol seçimi için
röleyi kontrol edebilir.
Pwm dalga oranı da buna göre
oranlanır.

Tabii bunun tam ne işe yaradığını
bilmeden söyledim.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Epsilon

@mehmet hocam
dedikleriniz olabilir.Aşağıdaki resmi bir videodan aldım.Resimdekini de deneyebilirim aslında
Protonda PWM komutununun syntaxın da  terslemek ile ilgili bir ek özellik yokmudur?
Döngü sonucu buton değerini sanırım Vlookup gibi bir komutla yapabileceğim sanırım



Andromeda

..pwm çıkışı nereye bağlanacak?
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Epsilon


Andromeda

..pwm çıkışının terslenmesini anlayamadım hala..
yani darbelerin boşluk ,boşlukların darbe olmasımı?
neticede pwm çıkışı tek bir pinden çıkıyor..referans olarak 
0 voltajı alıyor..
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Epsilon

#12
Yukarıda örneğini verdim.Bir durumda  motorun sola dönmesi başka bir durumda sağa dönmesi gibi ve voltajlar aynı olacak.

Dolu boş oranı ile ilgili değil.Onunla ilgili olsa maximumdan o duty yi çıkartırım

Andromeda

..pwm çıkışı bir cihaza bağlanacak ise o cihazın pwm ye tepkisini bilmek lazım..
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Epsilon

 @ elek  aşağıdaki videoda izah ediliyor(18:45)