alicem87
Üye
- Katılım
- 21 Nis 2010
- Mesajlar
- 24
- Puanları
- 1
- Yaş
- 36
Arkadaşlar öncelikle merhaba.
16f877 ile çift yönlü ve pwm li dc motor sürme devresi ile uğraşıoyorum.
Klasik bir söylem olacak belki ama proteus ta devreyi çizdim ve çalışıyor.Forum dan okuduğum kadarıyla devreyi bu şekliyle kurmam çalışması için yeterli olmayacak farkındayım.bu yüzden devreyi daha gerçeklemedim.
motoru sürmek için kullandığım entegre L298.bir yerde okudum 600mA max akım diyor ama benim motorum yüksüz halde 1.1A akım çekiyor.ilk sorum sizce bu bir problem yaratırmı?
ikinci sorum ise 16f877 nin çalışma frekansını 20mhz ayarladım,elektronikçilerde satılan 20 lik dedikleri kristallerden aldım sizce bu yeterli mi ve nasıl bağlayacam?
CSS C de yazdığım kod şu şekilde:
şimdiden teşekkürler.
16f877 ile çift yönlü ve pwm li dc motor sürme devresi ile uğraşıoyorum.
Klasik bir söylem olacak belki ama proteus ta devreyi çizdim ve çalışıyor.Forum dan okuduğum kadarıyla devreyi bu şekliyle kurmam çalışması için yeterli olmayacak farkındayım.bu yüzden devreyi daha gerçeklemedim.
motoru sürmek için kullandığım entegre L298.bir yerde okudum 600mA max akım diyor ama benim motorum yüksüz halde 1.1A akım çekiyor.ilk sorum sizce bu bir problem yaratırmı?
ikinci sorum ise 16f877 nin çalışma frekansını 20mhz ayarladım,elektronikçilerde satılan 20 lik dedikleri kristallerden aldım sizce bu yeterli mi ve nasıl bağlayacam?
CSS C de yazdığım kod şu şekilde:
Kod:
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
int i=0; // Tamsayı tipinde değişken tanımlanıyor
int a=0;
#int_timer2
void timer2_( )
{
while(input(pin_a0))
{
delay_ms(20);
for(i=255;i>100;i--)
{
delay_ms(20);
set_pwm1_duty(i);
set_pwm2_duty(0);
}
set_pwm1_duty(0);
delay_ms(500);
if (i==100)
for (i=255;i>100;i--)
{
delay_ms(20);
set_pwm2_duty(i);
set_pwm1_duty(0);
}
output_a(0);
set_pwm2_duty(0);
}
}
void main ( )
{
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı...burda bir komut vardı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
enable_interrupts(INT_timer2);
enable_interrupts(GLOBAL);
setup_ccp1(CCP_PWM); // CCP1 birimi PWM çıkışı için ayarlandı
setup_timer_2(T2_DIV_BY_16,255,1); // Timer2 ayarları yapılıyor
setup_ccp2(CCP_PWM); // CCP1 birimi PWM çıkışı için ayarlandı
set_pwm1_duty(i); // PWM1 çıkışı görev saykılı belirleniyo
set_pwm2_duty(i);
while(1)
{ }
}
şimdiden teşekkürler.