CCS ile Step Motor

Başlatan bymühendis, 30 Aralık 2014, 07:57:14

bymühendis

Merhabalar Step Motor Hız Yön Kontrolü adında bi araştırmam var 16F877 ile yapıyorum fakat proteusta bi türlü çalıştıramadım. çıkışı b portuna yönlendirdim ama olmuyor. Bakarsanız sevinirim.


/******************************************************
Uygulama Adı : STEP MOTOR HIZ VE KONUM KONTROLU
*******************************************************/
#include<16f877.h>  // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigurasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)// Gecikme fonksiyonu icin kullanılan osilator frekansı belirtiliyor
// Giriş ve cıkış pinlerine isim atanıyor
#define durdur pin_a0
#define b_tamileri pin_a1
#define b_tamgeri pin_a2
#define b_hizlan pin_a3
#define b_yavasla pin_a4
#define use_portd_lcd True
#include<lcd.c>
int durum; // int8 tipinde değişkenler tanımlanıyor
int i=0; // int8 tipinde i değişkenine bir değer atanıyor
int gecik; // int8 tipinde değişkenler tanımlanıyor
int sayac=0; // int8 tipinde değişkenler tanımlanıyor
float aci=0.0; // float tipinde değişkenler tanımlanıyor
const int tam_adim[]={0x01,0x02,0x04,0x08}; // STEP MOTOR TAM ADIMLARI TANIMLANIYOR
char deger[10]="0.0"; // char tipinde değişken tanımlanıyor
void hizarttir()
{ gecik=gecik-20;
if(gecik<=25)
{ gecik=26; }
}
void hizazalt()
{ gecik=gecik+15;
if(gecik>=230)
{ gecik=237; }
}
void lcd1()
{ lcd_putc("\fILERI DONUYOR");
output_high(pin_e2);
}
void lcd2()
{ lcd_putc("\f GERI DONUYOR");
output_high(pin_e1);
}
void goster()
{
lcd_gotoxy(1,2);
printf(lcd_putc,"ACI= %f",aci);
}
void dur()
{
printf(lcd_putc,"STOP");
delay_ms(2);
}
void main()
{
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Timer0 ayarları yapılıyor
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
enable_interrupts(int_rda); // INT_RDA kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
Basla:
output_b(0x00);
lcd_init();
output_d(0x00); //'D'portu baslangıcta sıfırlanıyor
lcd_gotoxy(1,1); //lcd'nin 1.satırına yaz
lcd_putc(" ENES AYDIN "); //lcd yaz
lcd_gotoxy(1,2); //lcd'nin 1.satırına yaz
lcd_putc("H.IBRAHIM KANAT"); //lcd yaz
{
durum=0x00; //meşgul değil
output_low(pin_e1); //ileri yonde pin_e1 aktif
output_low(pin_e2); //geri yonde pin_e2 aktif
if(input(b_tamileri)) //tam adım ileri basıldı mı?
{
durum=0x03; //meşgule cek
gecik=180;
sayac=0;
lcd1(); //lcd ileri yonde don bilgisi
while(durum==0x03)
{
output_b(tam_adim[i]); //'b'portundan tam adım bilgisi cık
sayac++;
aci=sayac*(15.0);
delay_ms(gecik);
goster();
if(sayac==24) //360 derecelik bir turunu 24 adımda tamamla
{ sayac=0; } //sayacı sıfıra
if(i==3) //4. değeri alınca
{ i=-1; } //i yi 0 ın altına indir
i++; //i yi arttır
if(input(b_hizlan))
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();
goto Basla;
}
}
}
if(input(b_tamgeri))
{
durum=0x04; //meşgule cek
gecik=140;
sayac=24;
lcd2();
while(durum==0x04)
{
if(i==0) //i değeri 0 ise
{ i=4; } //i yi 4 yap yani tablonun son değeri
if(sayac==0) //sayacı sıfırla
{ sayac=24; } //360 derecelik bir turunu 24 adımda tamamla
i--; //i yi azalt
output_b(tam_adim[i]); //Geri yonde tam adım
sayac--; //Geri yonde donuyor
aci=sayac*(15.0); //Bir tam adımı 15 derece
delay_ms(gecik); //adımlar arası gecikme
goster(); //lcd goster
if(input(b_hizlan)) //hızlan butonuna basıldımı
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();
goto Basla;
}
}
}
}
}

bymühendis

Yardım edebilecek yok mu ?

Salih

Alıntı yapılan: bymühendis - 01 Ocak 2015, 15:44:36
Yardım edebilecek yok mu ?

Şemayı da yüklersen bakabiliriz.

bymühendis



1. numarala anahtar durdurma
2. numaralı anahtar ileri
3. numaralı anahtar geri
4. numaralı anahtar hızlan
5. numaralı anahtar yavasla

Bu şekilde işleyecek ama similasyonu baslattıgımda 16f877 nın cıkıs portuna ( Yani b portu ) veri gitmiyor. Asıl sıkıntı bu . şimdiden teşekkürler

Recep METE

#4
Şu kodları uygun yerlere yazıp dener misin?


#use fast_io(a)
#use fast_io(b)
set_tris_b(0x00);
set_tris_a(0x1F);

mesaj birleştirme:: 02 Ocak 2015, 08:49:25


Kodda bazı eklemeler yaptım.Bu şekilde derleyip dener misin.Muhtemelen sorun çözülecektir.



/******************************************************
Uygulama Adı : STEP MOTOR HIZ VE KONUM KONTROLU
*******************************************************/
#include<16f877.h>  // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigurasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)// Gecikme fonksiyonu icin kullanılan osilator frekansı belirtiliyor
// Giriş ve cıkış pinlerine isim atanıyor
#define durdur pin_a0
#define b_tamileri pin_a1
#define b_tamgeri pin_a2
#define b_hizlan pin_a3
#define b_yavasla pin_a4
#define use_portd_lcd True
#include<lcd.c>

#use fast_io(a)                                                                                                                                          

#use fast_io(b)


int durum; // int8 tipinde değişkenler tanımlanıyor
int i=0; // int8 tipinde i değişkenine bir değer atanıyor
int gecik; // int8 tipinde değişkenler tanımlanıyor
int sayac=0; // int8 tipinde değişkenler tanımlanıyor
float aci=0.0; // float tipinde değişkenler tanımlanıyor
const int tam_adim[]={0x01,0x02,0x04,0x08}; // STEP MOTOR TAM ADIMLARI TANIMLANIYOR
char deger[10]="0.0"; // char tipinde değişken tanımlanıyor
void hizarttir()
{ gecik=gecik-20;
if(gecik<=25)
{ gecik=26; }
}
void hizazalt()
{ gecik=gecik+15;
if(gecik>=230)
{ gecik=237; }
}
void lcd1()
{ lcd_putc("\fILERI DONUYOR");
output_high(pin_e2);
}
void lcd2()
{ lcd_putc("\f GERI DONUYOR");
output_high(pin_e1);
}
void goster()
{
lcd_gotoxy(1,2);
printf(lcd_putc,"ACI= %f",aci);
}
void dur()
{
printf(lcd_putc,"STOP");
delay_ms(2);
}
void main()
{
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Timer0 ayarları yapılıyor
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
enable_interrupts(int_rda); // INT_RDA kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver


set_tris_a(0b00011111);
   
   set_tris_b(0x00);


Basla:
output_b(0x00);
lcd_init();
output_d(0x00); //'D'portu baslangıcta sıfırlanıyor
lcd_gotoxy(1,1); //lcd'nin 1.satırına yaz
lcd_putc(" ENES AYDIN "); //lcd yaz
lcd_gotoxy(1,2); //lcd'nin 1.satırına yaz
lcd_putc("H.IBRAHIM KANAT"); //lcd yaz
{
durum=0x00; //meşgul değil
output_low(pin_e1); //ileri yonde pin_e1 aktif
output_low(pin_e2); //geri yonde pin_e2 aktif
if(input(b_tamileri)) //tam adım ileri basıldı mı?
{
durum=0x03; //meşgule cek
gecik=180;
sayac=0;
lcd1(); //lcd ileri yonde don bilgisi
while(durum==0x03)
{
output_b(tam_adim[i]); //'b'portundan tam adım bilgisi cık
sayac++;
aci=sayac*(15.0);
delay_ms(gecik);
goster();
if(sayac==24) //360 derecelik bir turunu 24 adımda tamamla
{ sayac=0; } //sayacı sıfıra
if(i==3) //4. değeri alınca
{ i=-1; } //i yi 0 ın altına indir
i++; //i yi arttır
if(input(b_hizlan))
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();
goto Basla;
}
}
}
if(input(b_tamgeri))
{
durum=0x04; //meşgule cek
gecik=140;
sayac=24;
lcd2();
while(durum==0x04)
{
if(i==0) //i değeri 0 ise
{ i=4; } //i yi 4 yap yani tablonun son değeri
if(sayac==0) //sayacı sıfırla
{ sayac=24; } //360 derecelik bir turunu 24 adımda tamamla
i--; //i yi azalt
output_b(tam_adim[i]); //Geri yonde tam adım
sayac--; //Geri yonde donuyor
aci=sayac*(15.0); //Bir tam adımı 15 derece
delay_ms(gecik); //adımlar arası gecikme
goster(); //lcd goster
if(input(b_hizlan)) //hızlan butonuna basıldımı
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();
goto Basla;
}
}
}
}
}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

bymühendis

#5
Alıntı yapılan: semfero - 02 Ocak 2015, 08:40:13
Şu kodları uygun yerlere yazıp dener misin?


#use fast_io(a)
#use fast_io(b)
set_tris_b(0x00);
set_tris_a(0x1F);

Denedim ama olmadı Step moturu çalıstırıyor +135 de sabit kalıyor sonra hareket etmiyor.

Recep METE

İsis şeması nı oturup hazırlamaya eriniyorum. Şu semayi dosya halinde yuklermisin. Sorunu çözmek için  deneme yapmamız lazım.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

bymühendis


Recep METE

#8
arkadaşım çalıştırdım.Youtube videosunu yüklüyorum.goto dallanmaları ile bu iş olmuyor.ancak while döngüsü ile başarabildim.Bariz eksikliklerin var.

http://youtu.be/sEbP79kCsO4

Kodun son hali, değişiklik yapıldı.


/******************************************************
Uygulama Adı : STEP MOTOR HIZ VE KONUM KONTROLU
*******************************************************/
#include<16f877.h>  // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigurasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)// Gecikme fonksiyonu icin kullanılan osilator frekansı belirtiliyor
// Giriş ve cıkış pinlerine isim atanıyor
#define durdur pin_a0
#define b_tamileri pin_a1
#define b_tamgeri pin_a2
#define b_hizlan pin_a3
#define b_yavasla pin_a4
#define use_portd_lcd True
#include<lcd.c>

int durum; // int8 tipinde değişkenler tanımlanıyor
int i=0; // int8 tipinde i değişkenine bir değer atanıyor
int gecik; // int8 tipinde değişkenler tanımlanıyor
int sayac=0; // int8 tipinde değişkenler tanımlanıyor
float aci=0.0; // float tipinde değişkenler tanımlanıyor
const int tam_adim[]={0x01,0x02,0x04,0x08}; // STEP MOTOR TAM ADIMLARI TANIMLANIYOR
char deger[10]="0.0"; // char tipinde değişken tanımlanıyor
void hizarttir()
{ gecik=gecik-20;
if(gecik<=25)
{ gecik=26; }
}
void hizazalt()
{ gecik=gecik+15;
if(gecik>=230)
{ gecik=237; }
}
void lcd1()
{ lcd_putc("\fILERI DONUYOR");
output_high(pin_e2);
}
void lcd2()
{ lcd_putc("\f GERI DONUYOR");
output_high(pin_e1);
}
void goster()
{
lcd_gotoxy(1,2);
printf(lcd_putc,"ACI= %f",aci);
}
void dur()
{
printf(lcd_putc,"STOP");
delay_ms(2);
}
void main()
{
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Timer0 ayarları yapılıyor
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
enable_interrupts(int_rda); // INT_RDA kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver

lcd_init();
output_d(0x00); //'D'portu baslangıcta sıfırlanıyor
lcd_gotoxy(1,1); //lcd'nin 1.satırına yaz
lcd_putc(" ENES AYDIN "); //lcd yaz
lcd_gotoxy(1,2); //lcd'nin 1.satırına yaz
lcd_putc("H.IBRAHIM KANAT"); //lcd yaz

durum=0x00; //meşgul değil
output_low(pin_e1); //ileri yonde pin_e1 aktif
output_low(pin_e2); //geri yonde pin_e2 aktif

while(1){

if(input(b_tamileri)) //tam adım ileri basıldı mı?
{
durum=0x03; //meşgule cek
gecik=180;
sayac=0;
lcd1(); //lcd ileri yonde don bilgisi
while(durum==0x03)
{
output_b(tam_adim[i]); //'b'portundan tam adım bilgisi cık
sayac++;
aci=sayac*(15.0);
delay_ms(gecik);
goster();
if(sayac==24) //360 derecelik bir turunu 24 adımda tamamla
{ sayac=0; } //sayacı sıfıra
if(i==3) //4. değeri alınca
{ i=-1; } //i yi 0 ın altına indir
i++; //i yi arttır



if(input(b_hizlan))
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();

}
}
}


if(input(b_tamgeri))
{
durum=0x04; //meşgule cek
gecik=140;
sayac=24;
lcd2();
while(durum==0x04)
{
if(i==0) //i değeri 0 ise
{ i=4; } //i yi 4 yap yani tablonun son değeri
if(sayac==0) //sayacı sıfırla
{ sayac=24; } //360 derecelik bir turunu 24 adımda tamamla
i--; //i yi azalt
output_b(tam_adim[i]); //Geri yonde tam adım
sayac--; //Geri yonde donuyor
aci=sayac*(15.0); //Bir tam adımı 15 derece
delay_ms(gecik); //adımlar arası gecikme
goster(); //lcd goster
if(input(b_hizlan)) //hızlan butonuna basıldımı
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();

}
}
}
}}
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

z

Programındaki hataları bilemem ama D3-D4-D5-D6 diyodlarını kaldırmalısın.

iyodlar kalsın diyorsan bunlara seri 12v zener bağla. 9v regülatör çıkışına da en azından 100uF bağla.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

bymühendis

Alıntı yapılan: semfero - 02 Ocak 2015, 17:49:18
arkadaşım çalıştırdım.Youtube videosunu yüklüyorum.goto dallanmaları ile bu iş olmuyor.ancak while döngüsü ile başarabildim.Bariz eksikliklerin var.

http://youtu.be/sEbP79kCsO4

Kodun son hali, değişiklik yapıldı.


/******************************************************
Uygulama Adı : STEP MOTOR HIZ VE KONUM KONTROLU
*******************************************************/
#include<16f877.h>  // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigurasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)// Gecikme fonksiyonu icin kullanılan osilator frekansı belirtiliyor
// Giriş ve cıkış pinlerine isim atanıyor
#define durdur pin_a0
#define b_tamileri pin_a1
#define b_tamgeri pin_a2
#define b_hizlan pin_a3
#define b_yavasla pin_a4
#define use_portd_lcd True
#include<lcd.c>

int durum; // int8 tipinde değişkenler tanımlanıyor
int i=0; // int8 tipinde i değişkenine bir değer atanıyor
int gecik; // int8 tipinde değişkenler tanımlanıyor
int sayac=0; // int8 tipinde değişkenler tanımlanıyor
float aci=0.0; // float tipinde değişkenler tanımlanıyor
const int tam_adim[]={0x01,0x02,0x04,0x08}; // STEP MOTOR TAM ADIMLARI TANIMLANIYOR
char deger[10]="0.0"; // char tipinde değişken tanımlanıyor
void hizarttir()
{ gecik=gecik-20;
if(gecik<=25)
{ gecik=26; }
}
void hizazalt()
{ gecik=gecik+15;
if(gecik>=230)
{ gecik=237; }
}
void lcd1()
{ lcd_putc("\fILERI DONUYOR");
output_high(pin_e2);
}
void lcd2()
{ lcd_putc("\f GERI DONUYOR");
output_high(pin_e1);
}
void goster()
{
lcd_gotoxy(1,2);
printf(lcd_putc,"ACI= %f",aci);
}
void dur()
{
printf(lcd_putc,"STOP");
delay_ms(2);
}
void main()
{
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Timer0 ayarları yapılıyor
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
enable_interrupts(int_rda); // INT_RDA kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver

lcd_init();
output_d(0x00); //'D'portu baslangıcta sıfırlanıyor
lcd_gotoxy(1,1); //lcd'nin 1.satırına yaz
lcd_putc(" ENES AYDIN "); //lcd yaz
lcd_gotoxy(1,2); //lcd'nin 1.satırına yaz
lcd_putc("H.IBRAHIM KANAT"); //lcd yaz

durum=0x00; //meşgul değil
output_low(pin_e1); //ileri yonde pin_e1 aktif
output_low(pin_e2); //geri yonde pin_e2 aktif

while(1){

if(input(b_tamileri)) //tam adım ileri basıldı mı?
{
durum=0x03; //meşgule cek
gecik=180;
sayac=0;
lcd1(); //lcd ileri yonde don bilgisi
while(durum==0x03)
{
output_b(tam_adim[i]); //'b'portundan tam adım bilgisi cık
sayac++;
aci=sayac*(15.0);
delay_ms(gecik);
goster();
if(sayac==24) //360 derecelik bir turunu 24 adımda tamamla
{ sayac=0; } //sayacı sıfıra
if(i==3) //4. değeri alınca
{ i=-1; } //i yi 0 ın altına indir
i++; //i yi arttır



if(input(b_hizlan))
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();

}
}
}


if(input(b_tamgeri))
{
durum=0x04; //meşgule cek
gecik=140;
sayac=24;
lcd2();
while(durum==0x04)
{
if(i==0) //i değeri 0 ise
{ i=4; } //i yi 4 yap yani tablonun son değeri
if(sayac==0) //sayacı sıfırla
{ sayac=24; } //360 derecelik bir turunu 24 adımda tamamla
i--; //i yi azalt
output_b(tam_adim[i]); //Geri yonde tam adım
sayac--; //Geri yonde donuyor
aci=sayac*(15.0); //Bir tam adımı 15 derece
delay_ms(gecik); //adımlar arası gecikme
goster(); //lcd goster
if(input(b_hizlan)) //hızlan butonuna basıldımı
{
while(input(b_hizlan)); // bir kere basıldıgını anlasın
hizarttir();
}
if(input(b_yavasla))
{
while(input(b_yavasla)); // bir kere basıldıgını anlasın
hizazalt();
}
if(input(durdur))
{
dur();

}
}
}
}}


Abi sağolasın çok teşekkür ederim  uzun zamandır uğraşıyorum. Tekrardan çok teşekkür ediyorum .

bymühendis

Alıntı yapılan: z - 02 Ocak 2015, 18:19:53
Programındaki hataları bilemem ama D3-D4-D5-D6 diyodlarını kaldırmalısın.

iyodlar kalsın diyorsan bunlara seri 12v zener bağla. 9v regülatör çıkışına da en azından 100uF bağla.

Kardeşim buna bayağı araştırma yaptım bayağı uğraştım en sonunda bu haliyle yaptım . ama yinede teşekkür ederim verdiğin fikir için.