Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: Mucit23 - 29 Mart 2011, 22:27:51

Başlık: PWM ve gelirim hesabı
Gönderen: Mucit23 - 29 Mart 2011, 22:27:51
Merhaba arkadaşlar.

Pwm ile motor kontrol uygulaması yapmak istiyorum. Bazı sorunlarım var. Pwm oluşturmada sorunum yok 16F873 kullanarak dahili pwm modülü ile pwm işini hallediyorum. Devir ayarını duty seviyesiyle oynayarak yapıyorum.
Yapmak istediğim şey duty seviyesi max. olduğunda mtor uclarında 15 voltluk bir gelirim görmek istiyorum. Burada bazı hesaplamalar yapılması gerekiyor. Öncelikle duty seviyesi %100 olduğunda motor uclarında 15 volt görmem için ne yapmam lazım. Motor küçük olacak yani en fazla 2 A akım çeker. Motoru sürmem için nasıl bir trasistör veya mosfet kullanmalıyım bilmiyorum. Özellikle motor sürme donanımı konusunda ve voltaj hesasabı konusunda yardımınıza ihtiyacım var.
Birde arkadaşlar Motoru 10KHz de sürüyorum. 10KHz uygunmudur sizce. Birde PWM çıkışına filte gerekirmi dc voltaj okmak için.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: subram - 29 Mart 2011, 23:06:48
motor sürmek için L293 kulanmıştım daha önce. motor beslemsi harici olarak veriliyor.  tek entegre ile 2 adet motor kontrolü yapılabiliyor.  motor voltajı olarak 36 volta kadar gerilim uygulanabiliyor.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: picmanya - 29 Mart 2011, 23:29:43
%100 duty de motor uçlarına 15 volt gitmesini istiyorsan
motoru DC 15 volt gerilim üzerinden sürmen gerekir.
bu tür sistemlerde %100 duty değerine çıkmamak daha iyi olur.
DC bara kondansatörlerinin şarj olması için duty oranı %100 ün altında olmalıdır.
ki kondansatörler şarj tutabilsin ve zamanla yıpranıp ısınmasın.

bu durumda motor dc beslemesinin dc 15 voltdan fazla olması daha iyi olur.
bu şekilde olunca daha düşük duty de motora yine 15 volt basabilirsiniz.

duyulabilir ses sınırı açısından 10kHz. insan kulağının duyacağı bir aralıkdadır.
rahatsız etmiyorsa tabiki kullanılabir.5kHz. kullananlar bile var.
duyulabilir ses sınırını aşmak için 20kHz. üstüne çıkmak gerekebiliyor.

IRF640N mosfet ve TLP250 işinizi görebilir.hatta devir yönü saniyede bir kaç seferden fazla değişmiyorsatek mosfet tek TLP250 ve tek çift kontak röle ile iş görebilirsiniz.

örnekleri bu sitede fazlasıyla var.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 30 Mart 2011, 06:53:29
Hocam devir yönünü değiştirmek için dediğiniz gibi yapıcam. Öyle düşünüyordum zaten H köprüsü kullanmaya gerek yok. Devir yönünü değiştirmek istersem motorun devrinin düşmesinin bekleyip ondan sonra röle kontaklarıyla motor uclarını ters çeviririm.

  Hocam Bu DC bara kondansatörü dediğiniz pic'in PWM çıkışı ile GND arasınamı bağlamam gerekiyor. Değerleri ne olabilir.

Hocam Birde bu verdiğiniz Mosfetler yerine Herhangi bir N kanal Mosfet kullansam olurmu. Mesela Elimde çok sayıda IRF530,IRF510,IRF540 Gibi mosfetler var. Çoğunun akımı yetiyor bana.

Birde hocam Frekans yüksek olunca mosları picle sürerken sıkıntı yaşayacağımı düşünüyorum. Mosları sürmek üçün gate direnci ne olmalıdır. Bir örnek verebilirmisiniz. Nasıl bir donanım kullanmalıyım.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: picmanya - 30 Mart 2011, 11:53:08
IRF540 da olur diğer mosları incelemedim ama beslemenin en az iki katı çalışma voltajlı mos seçmekde fayda var.
IRF540 + TLP250 + LM7815 (burda soğutucusuz kullanılır) + çift kontak röle (kontakları 8-16 amper gibi olursa iyi olur) + röleyi sürmek için TLP521-621 gibi bir opto ile iş bitirilebilir.

Bu durumda picden bir pwm çıkışı birde digital çıkış almanız yeterli olur.

Motorunuza en fazla 15 volt aktaracaksanız dc link gerilimini 20-24 volt dc kullanıp %100 duty ye çıkmamanız daha iyi netice verir.

dc link kondansatörü pwm çıkışı ile motor arasına bağlı değil zaten buraya kondansatör bağlamaya gerekde yok bazı uygulamalarda emc iyileştirmesi açısından motor uçlarına yüksek voltajlı düşük kapasiteli seramik kondansatör girildiğini görüyorum ama bu düşük kapasitede kondansatör pwm e katkı sunmaz.

bahsettiğim kondansatörler yüksek kapasiteli elektrolitik kapasiteler oluyor bunlar diyot ile mosfetin + beslemesi arasına mosfete yakın + besleme ile toprak arasına takılanlar oluyor.

benim geçmişdeki mesajlarımı bunalmis ve xenix adlı üyenin mesajları inceleseniz sonuçlar karşınıza çıkar bu güne kadar onlarca kez yapılmış çalışmaları okumanız yeterli olur diyebilirim. site bu tür bir çalışma ile ilgili kaynakla dolu.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 30 Mart 2011, 17:56:08
Hocam Bu 7815 in nicin kullanacağız. Motorun beslemesine direk 24 volt versem ve motoru %60,%70 duty pwm ile sürsem motor uclarında 15 volt gelirim elde edemezmiyim.
Birde hocam elimde 4N35 gibi optikuplörlerden var. TLP521 yerine bu opto lardan kullansam röle için sorun çıkartırmı. Hocam birde proteusta basitçe bir simülasyon yapmak için TLP250 benzeri mos sürücü enteğre varmıdır. TLP250 lerden sipariş edicem. Sadece malzemelerim gelene kadarssimülasyonla idare etmek için. Ben tlp 250 yi bulamadım proteusta. Varmıdır buna benzer bişey.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 30 Mart 2011, 18:29:38
Hocam kusurabakmayın. Mosfetler ve mosfetleri sürme ile ilgili çok az bir bilgim var. Biraz araştırarak şöyle bir sürücü şeması kurdum. Acaba uygunmudur.
[IMG]http://img683.imageshack.us/img683/1044/adszpgf.png[/img] (http://img683.imageshack.us/i/adszpgf.png/)

Uploaded with ImageShack.us (http://imageshack.us)
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: JKramer - 30 Mart 2011, 18:49:54
V+'ya 24 V uygulayamazsınız, o ucu motordan ayırın. Mosfet'in kataloğundaki max. değerlere bakın. Bir de gate-source gerilimiyle drain-source (motor üzerinden akan) akımı arasındaki ilişkiyi gösteren grafik olması lazım. Ona göre mosfet'in gate'ine verilecek gerilim hakkında bir şeyler bulabilirsiniz.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 30 Mart 2011, 19:16:10
Hocam dediğim gibi mosfetlerin sürülmesi ile ilgili hiç tecrübem yok. Yanlışım olabilir. Yanlışlarım ve bilmediklerimle ilgili önerilerinize ihtiyacım var.
IRF540 ın datasheetinde şöyle bir grafik buldum. Galiba burda göstermiş.
[IMG]http://img809.imageshack.us/img809/5239/adszre.png[/img] (http://img809.imageshack.us/i/adszre.png/)

Uploaded with ImageShack.us (http://imageshack.us)
Resime bakacak olursak mosetin gate source voltajı en verimli şekilde kullanılırsa yaklaşık olarak +-10V olması gerekir.  Bununla birlikte V+ yı motorbesleme geliriminden ayrıp yaklaşık olarak bi 10 volt uygulamam gerekir. Acaba yukarıda bahsedilen 7815 bu iş içinmiydi. TLP250 için geren V+ voltajımıydı.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 30 Mart 2011, 20:26:10
Hocam Teşekkür ederim. Dediğiniz enteğreyi araştırayım. Gerçi seri üretim felan olmayacak. 1 yada 2 adet lazım. İki enteğredende temin edeyim. İsiste simülasyonda şimdilik gayet iyi gidiyor.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: picmanya - 30 Mart 2011, 22:05:58
şemada bir hata birde eksik var.
geri kalanı doğru.

hata: TLP250 nin 8 nolu pinine 7815 den elde ettiğin +15V gerilimi girecek ve bu pini motor beslemesinden ayıracaksınız.
eksik: söylenmiş ama yinede yazayım motorun uçlarına beslemesine göre ters ve paralel motor akımından küçük akımda olmayacak hızlı diot bağlanmalı.

kondansatörlerinizde minimum 35V. olmalı.

motorunuz dc 15V. da 2 amper çekiyor ise hızlı diod UF5408 olabilir.
2200 uF. kondansatörde kapasite bakımından çok düşük kalır.ben olsam 4700uF. veya 6800uF. 35V. elektrolitik 4 kondansatörü paralel bağlar kullanırdım.birde 100 - 470nF. arası seramik 35V. bir kapasiteyide bu kondanasatörlere paralel bağlardım.

bu kondansatör gurupları mosfete çok yakın olmalı özelliklede 100 - 470nF. seramik dibinde olmalı.

şemadaki devre bu haliyle yön değiştirmiyor.çift kontak röle ilavesi gerekir.röle kontakları mümkünse 16 amper olsa daha iyi olur.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: teknikelektronikci - 30 Mart 2011, 22:16:21
tc 4427 iyi hos kulölanimida kolay ama opto izoleli degil tlp en azindan opto izoleli motorunuz büyükse gürültü fazlaysa tlp250 yi tercih etmekde fayda var
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 02 Nisan 2011, 22:58:10
Arkadaşlar devre tararımım devam ediyor. PWM ile birlikte birde devir ölçümü eklemek istiyorum. Bu konuda bazı merak ettiğim konular var. Encoder ile ölçüm yapmayı planlıyorum. Encoder ile devir ölçerken uygun sensör ne olabilir hangi sensörü tavsiye edersiniz. Birde yazılımsal olarak. Encoderden gelen pulslar ile RB0 int kesmesi oluşturup bu kesmede gelen palsları saymayı düşünüyorum. Acaba doğru bir yöntemmi?
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: teknikelektronikci - 03 Nisan 2011, 12:21:19
hocam uygun sensör ararken bence piyasada bulunabilen sensörleri arastirip öyle uygununu bulmaya calisin
uygun encoder icin calisma voltaji 5 volt olan ve motor devir sayiniza uygun encoder önemli ayrica bazi encoderler difransiyel cikis veriyor yani A A-  B B- NP sanirim size normal olanlari yani sirf A B ve NP yetecekdir
internetten bu linki buldum
http://www.efesotomasyon.com/html/autonics/autonics.html

bu arada sürücünüzü ahngi entegre ile yaptiniz ?
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 03 Nisan 2011, 18:33:07
Hocam şu anda 16F876 fazlasıyla yetiyor bana. Zaten basit bir uygulama olacak. Aslında 16F88 in de pin sayısı yetiyor. ama 16F876 daha uygundur. Belki ilerde pwm çıkışına feedback yapabilirim. Anlık olarak gelirim ve akımı izleyebilirim. Bana kalmış :D Ya şu yazıcıların içinden çıkan encodermi diyeyim optik kuplörmü diyeyim. Encodere benzer malzemelerden elimde birkaç tane var. Bir tarafında IR led, Karşısında foto diyot var. İkisinim arası boşluk . hatırlıyorum söktüğüm yazıcı içinde yine kağıdı süren tamburun devrini görmek için kullanılıyordu. Çıkarmışım duruyor öylesine. Acaba onu encoder olarak kullanamazmıyım. Çıkışını LM358 ile dijital çıkışa çevirip, RB0 dan gelen palsları sayarım. Nasıl olur.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 04 Nisan 2011, 18:45:39
Anladım hocam eğer yazılım işini halledebilirsem dediğim gibi bu encoderlerden kullanırım. Zaten motor tahminimce en fazla 5000RPM'e çıkar.

Herşey iyide şuanda yazılımda  bazı sorunlar yaşıyorum. Aslında daha işin başındayım. Yazılımsal olarak hiç bir ilerleme kaydedemedim. En basitinden bir 10KHz bir frekans çıkartıp duty değerini bile ayarlamakta sorun yaşıyorum. Daha önce hiç böyle bişey yapmadım. Daha doğrusu daha önce hiç picin bu yönüyle uğraşmamışrım. Acemiliğime veriyorum.
Yaptıklarımı söyliyeyim.
16F873 ile 4MHz osc ve 10Khz pwm frekansının şmdilik ilk aşamada duty değeriyle oynamayı planlıyorum.  Elimde birçok 16F873,876 ve 877 olduğu için bu işlemcilerden kullanmak istiyorum. Maksat elimdekiler bitsin. Eğer Bunu yapabilirsem sonra dahada geliştiririm. Ne varki bunda bile sorun yaşıyorum. Herşeyin bir hesabı kitabı var. Buradada ETE hocamın pwm üzerine hazırlamış olduğu derslerden yararlanıyorum. Orada epeyce anlatmıştı.
Ben ise şu anda 16F873 ün CPP1 portundan 10KHz bir pwm frekansı alıp bu frekansın duty değeriyle oynamak ve bu duty değerini lcd ekranda görmek istiyorum. Bunun için programsal olarak herşeyi yaptığımı sanıyorum.

PWM frekansı PR2 registeriyle ayarlanıyordu. PR2 registerinin değerinide  bulmakiçin ilk önce 10KHz lik bir frekansın peryodunu bulamız gerekir.
peryot=1000000/10000=100uS olur. Bunuda Formülde yerine koyarsak Peryot=(PR2+1)4*1/4*4 =25-1=24 olarak çıkar. (Timer2 Bölücü değeri 4 olarak ayarladım)
Duty değerinin hesabı ise ete hocanın derslerinde anlatılanlara göre(duty değerinin %50 olduğunu varsayarsak)
Ham_duty=(PR2+1)*4*50/100 = (24+1)*4*50/100=50 değeri karşımıza çıkar. Bu değerin ilk iki bitini cpp1con.4 ve cpp1con.5 bitlerine geri kalanıda CCPR1L registerine yazıyorduk. Anladıklarım bunlar.

Şimdi benim duty değeri sıfır olduğunda PWMi komple kapatmak istiyorum. duty değeri 1 den büyük olunca PWM açılacak.
Duty değerini değiştirmek için aşağıdaki gibi bir kod yazdım. Devamlı pwm açık.
DEFINE OSC 4
@ DEVICE pic16F873
@ DEVICE pic16F873, WDT_on
@ DEVICE pic16F873, PWRT_On
@ DEVICE pic16F873, PROTECT_OFF

TRISA=%00000000
TRISB=%00000000
TRISC=%11110000
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG   PORTB
DEFINE LCD_DBIT   4
DEFINE LCD_RSREG  PORTB
DEFINE LCD_RSBIT  2
DEFINE LCD_EREG   PORTB
DEFINE LCD_EBIT   3
DEFINE LCD_BITS   4
DEFINE LCD_LINES  2

DEFINE CCP1_REG   PORTC
DEFINE CCP1_BIT   2
DEFINE CCP2_REG   PORTC
DEFINE CCP2_BIT   1

T2CON =%00000101
PR2=24
ADCON1 = 7

ROLE VAR PORTC.0
SYMBOL MENU=PORTC.7
SYMBOL YUKARI=PORTC.6
SYMBOL ASAGI=PORTC.5
SYMBOL JOG=PORTC.4

X        VAR BYTE
DUTY     VAR BYTE
HAM      VAR WORD
PERYOT   VAR WORD
HAM_DUTY VAR WORD
DUTY=50

CCP1CON.2=1
CCP1CON.3=1

PAUSE 200
LCDOUT $FE,1

BASLA:
LCDOUT $FE,$80,"DUTY=",DEC3 DUTY

IF YUKARI=0 THEN
DUTY=DUTY+1
IF DUTY=101 THEN DUTY=100
WHILE YUKARI=0:WEND
ENDIF

IF ASAGI=0 THEN
DUTY=DUTY-1
IF DUTY=255 THEN DUTY=0
WHILE ASAGI=0:WEND
ENDIF

GOSUB DUTY_YAZ
GOTO BASLA

DUTY_YAZ:
HAM_DUTY=(PR2+1)* DUTY /100
CCP1CON.4=HAM_DUTY.0
CCP1CON.5=HAM_DUTY.1
CCPR1L=HAM_DUTY>>2
return

END



Bu kodu isiste çalıştırdığımda pwm düzgün çıkmıyor. Üstelik ekranada hiçbirşey gelmiyor . Ekrana hiçbirşey gelmemesinin sebebi şu olabilir. İlk başta pwmi açtığım komutu kaldırınca ekran geliyor.
CCP1CON.2=1
CCP1CON.3=1
Bu komutları yazınca pwm açılmış oluyor. Fakat ekrana hiçbirşey gelmiyor ve pwm düzgün çıkmıyor. Acaba nerede hata yapıyorum. Bu konuda tecübeli arkadaşların tavsiyelerini bekliyorum. 
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 05 Nisan 2011, 07:14:17
Arkadaşlar bu konuda kimsenin bi fikri yokmu :-\ Neden düzgün çalıştıramıyorum programı nerede hata yapıyorum. Özellikle ETE hocamın önerilerini bekliyorum.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: ete - 05 Nisan 2011, 08:03:48
Hesaplama hatası,

Duty_Yaz kısmındaki verdiğin formülü kaldır
DUTY_YAZ:

'HAM_DUTY=(PR2+1)* DUTY /100 Bunu sil yada kapat
yerine aşağıdaki satırı koy . Düzelir.
ham_DUTY=DUTY

Zaten 1/4 bölücü kullanmışsın 10Khz için bu max duty=100 olacak (8 bit) demekir.
Bu nedenle duty değerini direk CCP1 kontrol registerlerine verebilirsin.
Bit sayısını artırabilmen için Bölücüyü 1/1 yap. Maksimum duty değerin 400 olacaktır. Butonla duty değerini 0-400 arasında değiştir.
Yada böyle bırak 0-100 arasında değiştir.

Ete
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 05 Nisan 2011, 18:20:58
Anladım hocam. 1. Hatam buydu. 2. bir hatamıda kendim buldum. Programı incelerseniz eğer ilk başta ilk önce pwmi açıp sonra duty değerini yazıyordum bu yanlışmış. İlk önce duty değeri 0 olsa bile cpp1 registerine yazıp sonra pwm i açmak gerekiyormuş.
Hocam peki duyt değeri Sıfır olunca pwm i kapatmaya gerek varmıdır.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 11 Nisan 2011, 22:43:36
Arkadaşlar duty değerinin %100 olduğunda motor uclarında yaklaşık 14 ile 15 volt arası bir değer görmem için motoru tam 15 voltla beslemem yeterli gelirmi yoksa birazdahamı yüsek bir gelirim vermek gerekir. Birde arkadaşlar motor uclarında düzgün bir dc voltaj ölçümü için çıkışa herhangi bir filtre devresi gerekirmi.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: picmanya - 11 Nisan 2011, 22:54:10
sürücü devrenin son hali nasıl bir şey?
açık devre şemasını görebiliyormuyuz?
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: F.T - 11 Nisan 2011, 22:56:01
Alıntı yapılan: Mucit23 - 11 Nisan 2011, 22:43:36
Arkadaşlar duty değerinin %100 olduğunda motor uclarında yaklaşık 14 ile 15 volt arası bir değer görmem için motoru tam 15 voltla beslemem yeterli gelirmi yoksa birazdahamı yüsek bir gelirim vermek gerekir. Birde arkadaşlar motor uclarında düzgün bir dc voltaj ölçümü için çıkışa herhangi bir filtre devresi gerekirmi.

15 volt yeterli olur.filtreye gerek yok.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 11 Nisan 2011, 22:57:29
Aslında deneme amaçlı kullanacağım motor küçük güçlü bu yzdendirek BDx53gibi bir transistörlede motoru sürebilirim. Yani motoru fazla bir gücü yok. Ama yüksek güçlü bir motor kullanırsam eğer TLP250 ve IRF540 ikilisi veya buna benzer bir mosfet kullanırdım.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: F.T - 11 Nisan 2011, 23:02:38
kendi yaptığım dc motor driver 110vdc 150 amperlikti. ;)
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 11 Nisan 2011, 23:04:55
Nasıl bir mosfet kullandınız çok merak ediyorum açıkçası. 150 amper az değil ::)
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: F.T - 11 Nisan 2011, 23:08:58
o akımlar mosfeti aşıyor artık ıgbt ler devreye giriyor.mıtsubushı firmasının dual ıgbt ini kullandım.kontrol olarak pic hiç düşünmedim.dolayısı ile plc kullandım.kendi yaptığım kartlara endüstriyel ortamda güvenmem.hobyy için sorun yok ;D
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 11 Nisan 2011, 23:14:45
Anladım. Tabi en uygunu öyledir. Bu arada plc ile PWM motor kontrolü yapıldığını ilk defa duydum :S
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: F.T - 11 Nisan 2011, 23:18:47
evet bende  uygulamayı geçen sene yaptım.nette pek uygulamaya raslamadım ama mutlaka daha önce yapan olmuştur.motor ileri geri kontrol ve tüm korumaları gayet güzel bir iş çıkmış oldu.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: Mucit23 - 14 Nisan 2011, 21:33:58
Alıntı yapılan: ete - 05 Nisan 2011, 08:03:48
Hesaplama hatası,

Duty_Yaz kısmındaki verdiğin formülü kaldır
DUTY_YAZ:

'HAM_DUTY=(PR2+1)* DUTY /100 Bunu sil yada kapat
yerine aşağıdaki satırı koy . Düzelir.
ham_DUTY=DUTY

Zaten 1/4 bölücü kullanmışsın 10Khz için bu max duty=100 olacak (8 bit) demekir.
Bu nedenle duty değerini direk CCP1 kontrol registerlerine verebilirsin.
Bit sayısını artırabilmen için Bölücüyü 1/1 yap. Maksimum duty değerin 400 olacaktır. Butonla duty değerini 0-400 arasında değiştir.
Yada böyle bırak 0-100 arasında değiştir.

Ete

Merhabalar ETE hocam. Hocam bi konuda sıkıntıdayım. Biraz yardımınıza ihtiyacım var. Şu PWM motor kontrol projesi. Bu benim bitirme projem aslında internette birçok devre var bu iş üzerine fakat benim kendim yapmam lazım. Sorunumda şudur.  Hocam bana Moturun devri ile birlikte motor uclarındaki gelirimi ölçmem gerekiyor. Bu konuda biraz sıkıntı yaşıyorum. En büyük sıkıntım donanım konusunda. Basit bir 12 volt max. 2 amper çekebilecek bir motorun devri ile oynamak istiyorum. Bu motorun uclarındaki gelirimi ölçmem için nasıl bir donanım kullanmalıyım.Birde ADC ve HPWM i bir türlü bir arada çalıştıramadım. Hocam HPWM konusunda fazla bir sıkıntım yok  yani 16f873 ün cpp1 portundan 10 khz pwm frekansı çıkartıp dutysi ile oynayabiliyorum. Fakat ADC ile birlikte çalıştırınca  şaşırıyor çok saçmalıyor donuyor hemen simülasyon. Bu konuda biraz yardımlarınıza ihtiyacım var.

Hocam PWM için böyle bir kod yazdım şimdilik. PWM kısmını bu şekilde ayarlıyorum.'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [Ferhat YOL]                                      *
'*  Notice  : Copyright (c) 2011 [Mucit23]                      *
'*          : All Rights Reserved                               *
'*  Date    : 03.04.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 4
@ DEVICE pic16F873
@ DEVICE pic16F873, WDT_OFF
@ DEVICE pic16F873, PWRT_On
@ DEVICE pic16F873, PROTECT_OFF

TRISA=%00000001
TRISB=%00000000
TRISC=%11110000
PORTA=0
PORTB=0
PORTC=0

DEFINE LCD_DREG   PORTB
DEFINE LCD_DBIT   4
DEFINE LCD_RSREG  PORTB
DEFINE LCD_RSBIT  2
DEFINE LCD_EREG   PORTB
DEFINE LCD_EBIT   3
DEFINE LCD_BITS   4
DEFINE LCD_LINES  2

DEFINE CCP1_REG   PORTC
DEFINE CCP1_BIT   2

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50

ON INTERRUPT GoTo KESME   
OPTION_REG=%10000001   
INTCON=%10100000 
TMR0=0
T2CON = %00000101
PR2=24

SYMBOL SOL=PORTC.7
SYMBOL SAG=PORTC.6
SYMBOL ASAGI=PORTC.5
SYMBOL YUKARI=PORTC.4

U        VAR BYTE
W        VAR BYTE
SYC      VAR BYTE
SNY      VAR BYTE
SAYAC    VAR BYTE
DUTY     VAR BYTE
I        VAR WORD
PERYOT   VAR WORD
HAM_DUTY VAR WORD
DUTY=0
GOSUB EKRAN
GOSUB DUTY_YAZ
GOSUB PWM_ON
PAUSE 200
LCDOUT $FE,1

BASLA:

IF YUKARI=0 THEN
sayac=0
DUTY=DUTY+1
IF DUTY=101 THEN DUTY=100
GOSUB DUTY_YAZ:GOSUB EKRAN
WHILE YUKARI=0
W=1
IF SAYAC=>25 THEN
   W=0:SAYAC=25
   DUTY=DUTY+1:GOSUB DELAY
   IF DUTY=101 THEN DUTY=100
   GOSUB DUTY_YAZ
ENDIF
GOSUB EKRAN
WEND
W=0
ELSE
W=0:SAYAC=0
ENDIF

IF ASAGI=0 THEN
sayac=0
DUTY=DUTY-1
IF DUTY=255 THEN DUTY=0
GOSUB DUTY_YAZ:GOSUB EKRAN
WHILE ASAGI=0
W=1
IF SAYAC=>25 THEN
   W=0:SAYAC=25
   DUTY=DUTY-1:GOSUB DELAY
   IF DUTY=255 THEN DUTY=0
   GOSUB DUTY_YAZ
ENDIF
GOSUB EKRAN
WEND
W=0
ELSE
W=0:SAYAC=0
ENDIF
GOSUB EKRAN
GOTO BASLA


DELAY: 'gecıkme
  FOR I=0 TO 70:NEXT
RETURN


DUTY_YAZ:
HAM_DUTY=duty
CCP1CON.4=ham_DUTY.0
CCP1CON.5=HAM_DUTY.1
CCPR1L=HAM_DUTY>>2
return

PWM_ON:
CCP1CON.2=1
CCP1CON.3=1
RETURN

PWM_OFF:
CCP1CON.2=0
CCP1CON.3=0
RETURN

EKRAN:
LCDOUT $FE,$80,"DUTY=",#DUTY
RETURN

DISABLE
KESME:
IF W=1 THEN
      SAYAC=SAYAC+1
      IF SAYAC=101 THEN SAYAC=0    
ENDIF     
INTCON.2=0   
RESUME
ENABLE

END
           


Hocam bu koddada eminim bir çok hatam vardır.
Şimdi benim ADC ile motor uclarındaki gelirimi ölçmek için nasıl bir donanım kurmalıyım. Ayrıca yazılım konusundada biraz önerilerinize ihtiyacım var. Bana yardımcı olursanız sevinirim.
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: devkartal - 18 Kasım 2017, 18:33:18
selam arkadaşlar
Elimde16F873 pic mevcut, 16f628 yaptığım 3 ledli test devresi nasıl oldu bilmiyorum pic kısa devre oldu .Yeni uygulamayı  16F873 ile yaptım  proteus ta çalışıyor fakat fiziki devrede çalıştıramadım.
Altaş yayıncılıktan satın almış olduğum usb pic programa kiti (D149 rev 3) ile bir kerede dosya atmak nasip olmadı her seferinde sorun yaşadım bu kadar kararsız çalışan kit görmedim sinir bozucu bir şey..

16F873 sigorta ayarlarını her seferinde farklı yaparak pic programlandı demesine rağmen malesef  gerçekte çalıştıramadım.

16F873 Pic ile farklı bir ayar varmı?  aynı uygulamayı icsp denesem çalışır mı? bunları bilmiyorum
sorun usb programla kartında olabilir mi? yoksa benim fark edemediğim bir başka bir şey mi var ?

Devre  pic 'in RB0,RB1,RB2 nolu bacaklarına bağlı ledleri sıra ile yakmakta Pic 'nin sıra ile 21,22,23 nolu pinleri  4 mhz  xtal  22pf kondasatör xtal birer uçunda diğer uçlar şasede 9 ve 10 nolu ayaklarına bağlı ledler 470R dirençle sürülüyor  20 nolu pin +5V  ve 19 nolu pin gnd toprak olarak bağlı bu devre breadboard üzerinde pic test etmek için kurdum fakat çalıştıramadım.

kodlarıda çok basit aşağıdaki gibi pic basic


Dongu:   High    portb.0      'ledi yak
                   Pause    800         '0.5 saniye geçikme yap.
                    low      portb.0     'ledi söndür
                   pause    800         '0.5 saniye geçikme yap.
                     High    portb.1      'ledi yak
                  Pause    600         '0.5 saniye geçikme yap.
                    low      portb.1     'ledi söndür
                  pause    600         '0.5 saniye geçikme yap
                    High    portb.2      'ledi yak
                 Pause    400         '0.5 saniye geçikme yap.
                   low      portb.2     'ledi söndür
                   pause    400         '0.5 saniye geçikme yap.
                    goto     Dongu    'Dongu etiketine git ve devamlı yak söndür
                    end
Başlık: Ynt: PWM ve gelirim hesabı
Gönderen: F.T - 18 Kasım 2017, 18:53:08
Devkartal senin sorunun sigorta ayarları ile alakalıdır.Bence.