pot ile analog olarak motor dc motor kontrolü

Başlatan HackTroj, 07 Ocak 2012, 19:58:48

HackTroj

l298 ve h-bridge ile kurdugum devremde potansiyometreden analog değer okuyup bunu motoru kontrol etmek için kullanıyorum motor 0-255 arası değer alıyo pwm ile .. ben potansiyometre %50 iken motorun durmasını %50 den aşağıdayken motorun sola %50 den yukardayken sağa dönmesini istiyorum ... ama pot dan aldıgım analog değere karşılık bi motor değeri hesaplayamadım bi türlü  pot dan gelen analog değer nasıl hesaplanır ne olarak gelir unsigned short char vs... şimdiden yardımlarınız için çok teşekkür ederim

justice_for_all

programini yuklersen daha fazla yardimci olurum
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Tagli

Pot'tan gelen analog değere göre L298'e göndereceğin PWM sinyalinin iş zamanını (duty cycle) hesaplamalısın. Sanırım 10 - 20 kHz ciharında bir PWM sinyaline ihtiyacın var (bu konuda fazla deneyimim yok). Ayrıca, okuduğun değere göre L298'e giden iki bitlik veriyi de değiştirmelisin. Motorun duracağı analog aralığı da belirlemen gerekli. Son olarak, motoru çalıştırmaya yetmeyecek ölü iş zamanı bölgesini de belirleyip, yazılımla ortadan kaldırmalısın (bu kısım tercihlere bağlı).
Gökçe Tağlıoğlu

HackTroj

buyrun isis ve kod ...


unsigned short temp_res;
void main()
{
ADCON1=0x80;
TRISD=0;
PORTD.f0=1;
portd.f1=0;
TRISA=1;
PWM1_Init(500);
PWM1_Start();
while(1)
{
 temp_res=Adc_Read(0);
 if(temp_res<128)
 {
 PORTD.F0=0;
 PORTD.F1=1;
 PWM1_Change_Duty(128-temp_res);
 }
 else if(temp_res==128)
 {
 PORTD.F0=0;
 PORTD.F1=0;
 PWM1_Change_Duty(0);
 }
 else if(temp_res>128)
 {
 PORTD.F0=1;
 PORTD.F1=0;
 PWM1_Change_Duty(temp_res-128);
 }
}
}

justice_for_all

#4
hangi entegreyi kullniyodunuz siz


edit: ayrica ADCON0 registeriyle ilgili islem yapmamissiniz bence en onemlisi o..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj


justice_for_all

Adc_Read(0); bu fonksiyon nasil calisiyor hoca geriye nasil deger donduruyor ?
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

an0 pinindeki analog portu okuyor anlamadm ne sormak istediğinizi?


HackTroj

orda direk alıyo aldıgı değeri pwm e aktarıyo ben tam olarak hesap yöntemini bulmak istiyorum bu sayede pot  % 50 iken motoru durdurup ona göre yavaş yavaş hızlandırıp %50 nin altında ters çalıştırabilirim

skara1214

motordan gelen değeri 16 bitlik bir integera atacaksın.ona göre istediğin işlemi yapabilirsin
Herkes ölür ama herkes gerçekten yaşamaz

justice_for_all

degiskeninizde 16 bit tanimli bu sekilde calismasi gerek
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

peki pot dan aldıgım analog değeri ekrana yazdırmak istediğimde saçma karakterler yazıyo lcd ekrana ... sayısal olarak yazdırabilirsem güzel olucak ... çünkü şu kod ile pot%50 iken duruo gibi %51 iken ileri gidio hemde yüksek bi rpm le %52 de falan tekrar geri dönüyo bunun nedeni nedir

justice_for_all

hocam analog cevirici 10 bit olarak geri donderir yani 255 degilde 1023 geri donderir ordaki islemlerinizi buna gore yapmalisiniz.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

HackTroj

şimdi oldu hocam eyvallah ... anladım ne demek istediğinizi sanırım kullandıgım komponentleri biraz daha araştırmalıyım