dc motor yön hız kontrolü(pwm,l298,16f628)

Başlatan HackTroj, 05 Ocak 2012, 18:46:27

HackTroj

merhaba arkadaşlar biliyorum benzer çok konu var ama hiçbirindeki düzenekleri çalıştıramadım.. bilgili bi arkadaşımız bana l298 entegresini ve h köprüsü denen yapının nasıl bu işi sağladıgını anlatabilir mi... mesela pwm i anladım sinyaller şeklinde gönderiyo motorun hızını ama direk entegresiz kullandıgımda isiste normal motor hızı doğrudan 12 volt verdiğimde 500 rpm çıkıo ama pwm ile 255 sinyali gönderdiğimde 160 ta falan kalıodu sanırım ... bir de iki motoru farklıı yön ve hız kontrolüne tabi tutabilir miyim aynı anda?

justice_for_all

l298 entegresi ile iki motoru farklı yonlerde ve farklı hızlarda kontor edebilirsin l298 entegresinin 4 girisi 4 cıkısı vardır ikisi bi motor icin 2si diger motor icin enable pinlerine pwm sinyal uygulanır hızı degiskense ornegin 1.girise 1sinyali 2.girise 0 sinyali gondrdgimize motor saga donuyorsa tam tersi sinyal gonderdgmzde motor aksi yone donecektir
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

tam olarak gerçek bi motorda test etmedim ama 16f628 ile isis de denemeler yapıyorum ... kullandıgım motoru 12 v olarak ayarladım ve 12v güç veriyorum motora normal +- şeklinde 12 volt verdiğimde sanrm rpm değeri altındaki 500 görünürken bu şekilde bagladıgımda sanıyorumki maksimum pwm değeri 255 ve 255 verdiğimde 90 küsürü geçmiyo bu normal mi yoksa bi hata mı yapıyorum bi de 16f628de tek pwm çıkışı mı var?

vitruvius

628'de tek PWM çıkışı vardır. Devre şemanızı ve kodlarınızı paylaşırsanız daha çok yardımcı olabiliriz.

justice_for_all

pwm frekansına gore o deger dgsir pwm cozunurlugu pwm frekansına gore 10 bitte olabilir 8 bitte farklı pwm frekansları deneyin
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

her hangi bi devre şemam yok arkadaşlar sadece araştırıyorum şimdilik elimde oyuncak uzaktan kumandalı bi araba vardı kendi sağlamdı kumandası yoktu arabanın hem kendimi pic konusunda geliştirmek hemde ilerde daha büyük komplike ve özel bişiler yapmak istediğimden şimdilik bu protatip üzerinde çalışıcam henüz udea dan sipariş verdiğim rf modulleri gelmedi düzgün bi devre isiste çıkartmadan da diğer malzemeleri almayım dedim gereksiz masraf olmasın die ... freakans hızına göre nasıl değişir rpm ... 500 ile sürüyorum motora pwm i .. azaltmalı mı yoksa arttırmalı mıyım işin ilginç yanı bi de butonum var buton sadece pwm e gönderilen değeri değiştiriyo
#define tus Button(&PORTA,0,100,0)
#define tus2 Button(&PORTA,1,100,0)
unsigned char aaa;
void interrupt(void){
     if (PIR1.TMR1IF){               //Let me use this even if no other interrupts are enabled
     if(tus)
aaa=200;
if(tus2)
aaa=0;            //To show the output
     TMR1L = 100;                   //TMR1 start time
     TMR1H = 90;
     PIR1.TMR1IF = 0;              //reset timer1 flag
     }
}

void main()
{
TRISA=3;
PORTA=0;
TRISB=0;
PORTB=0;
T1CON.TMR1CS = 0;                    // Fosc / 4
        T1CON.T1CKPS1 = 4;                   // Setting prescale value to 1:8
        T1CON.T1CKPS0 = 1;                   //              "

        TMR1L = 100;                             //TMR1 start time
        TMR1H = 90;

        PIE1.TMR1IE = 1;
        INTCON.PEIE = 1;
        INTCON.GIE = 1;
                T1CON.TMR1ON = 1;                    //turn on timer1

aaa=0;
PORTB.F0=1;
PWM_Init(500);
PWM_Start();
PWM_Change_Duty(0);
while(1)
{
PWM_Change_Duty(aaa);
}
}


kod böyle


bu da şema

[IMG]http://img860.imageshack.us/img860/4206/adszoj.jpg[/img]


justice_for_all

isiste pwm ucunu osilaskopla olcermisin doluluk oranı(1 olma yuzdesi) ne sekilde
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj


justice_for_all

resimden pek belli olmuyor ama dogru gibi doluluk oranıda %100 proteustan olabilir ozaman
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

teşekkürler verdiğiniz bilgilerle ... 2 pwm destekli 887 ile çözdüm şu an 2 motoru kontrol edebiliorm yön ve hız olarak :) tekrar tekrar teşekkürler bilgileriniz için
bu arada yeni bi sorun çıktı
motorların ikisine de orta yada yüksek hız verdiğimde rpm ler normal değerine yakın çıkıo ama her hangi birine 0 a yakın verdiğimde diğerinin normal değeri de yarısından daha az oluo
devre bu aceba nerde hata yapıyorum

HackTroj

kod da burda
#define tus Button(&PORTA,0,100,0)
#define tus2 Button(&PORTA,1,100,0)
unsigned char aaa;
void interrupt(void){
     if (PIR1.TMR1IF){               //Let me use this even if no other interrupts are enabled
     if(tus)
aaa=200;
if(tus2)
aaa=0;            //To show the output
     TMR1L = 100;                   //TMR1 start time
     TMR1H = 90;
     PIR1.TMR1IF = 0;              //reset timer1 flag
     }
}

void main()
{
TRISC=0;
PORTC=0;
TRISD=0;
PORTD=0;
T1CON.TMR1CS = 0;                    // Fosc / 4
        T1CON.T1CKPS1 = 4;                   // Setting prescale value to 1:8
        T1CON.T1CKPS0 = 1;                   //              "

        TMR1L = 100;                             //TMR1 start time
        TMR1H = 90;

        PIE1.TMR1IE = 1;
        INTCON.PEIE = 1;
        INTCON.GIE = 1;
                                   //turn on timer1

aaa=0;
PORTD.F0=1;
PORTD.F1=1;
PWM1_Init(500);
PWM1_Start();
PWM1_Change_Duty(255);
PWM2_Init(500);
PWM2_Start();
PWM2_Change_Duty(1);

}

justice_for_all

ama yaptiginiz sekilde her bir motoru sadece tek yonlu dondurursunuz tam olarak istediginiz bumu?eger devreyi gercekleyecekseniz 100 direncler fazla ya orayi saseye baglayin yada direnc degerlerini kucultun similasyondada yaparmisiniz aynisini
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

evet o hatamı demn ters tarafa test ederken farkettim ve o uçları da l298 aracılığıyla pic e bağlayıp sinyal verdim ters yöne çalıştırdım ama 90 rpm de kalmıştı :D şimdi söylediğiniz gibi dirençleri kaldırıp direk toprakladım ve 450 rpm e çıktı teşekkür ediyorum sanırım şu an düzgün bi biçimde oldu ... konuyla alakasız ama birşey sormak istiyorum ... neden her mesajım onay bekliyo... yeni üye oldugum için mi yoksa bende mi bi sıkıntı var

vitruvius

Alıntı yapılan: HackTroj - 06 Ocak 2012, 01:01:05
evet o hatamı demn ters tarafa test ederken farkettim ve o uçları da l298 aracılığıyla pic e bağlayıp sinyal verdim ters yöne çalıştırdım ama 90 rpm de kalmıştı :D şimdi söylediğiniz gibi dirençleri kaldırıp direk toprakladım ve 450 rpm e çıktı teşekkür ediyorum sanırım şu an düzgün bi biçimde oldu ... konuyla alakasız ama birşey sormak istiyorum ... neden her mesajım onay bekliyo... yeni üye oldugum için mi yoksa bende mi bi sıkıntı var

Yeni üye olduğunuz için.