Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

pwm degri hesaplama

Başlatan bbs2006, 15 Mart 2016, 23:25:54

bbs2006

merhaba
8 bitlik sensör devresinden gelen veriye göre pwm değerlerini artırıp azaltmak istiyorum.  1 bit için pwm değerini nasıl hesaplarız. örnek sola dönüşte sol pwm değeri sabit kalıp sağ değerini  her bit değişiminde sag motor pwm değerini azaltmak istiyorum. am her  bit değeri için azaltılacak pwm değerini nasıl hesaplarız. ben sola kesikli dönüşde sağ pwm sağa eğim değerine göre her bit için pwm azaltmak istiyorum. nasıl bir yöntem izleyebilirim.

vitruvius

Soruyu tam anlayamadım ama pwm değerini değiştirmek istiyorsanız bir değişken tanımlayın. Pwm değerine bu değişkeni yazın.

int8 duty_cycle; 
set_pwm1_duty(duty_cycle);

bbs2006

Merbaba
8 bitlik sensör den gelen veriye  göre pwm değiştirmek istiyorum. Örnek
10000000 iken pwm degeri 50 ise 11000000 iken pwm degerini yüzde kaç değiştirmemiz la, ım örnek 60 ise bunu nasıl hesaplıyoruz.

vitruvius

Merhaba, bunu sizin bilmeniz gerekmez mi? Ama doğru orantılı bir şekilde olsun diyorsanız, yani sensörden 0xFF geldiğinde %100'lük bir pwm duty, 0x00 geldiğinde de %0'lık bir pwm duty olsun diyorsanız aşağıdaki gibi bir şey yapabilirsiniz.

Öncelikle ADC'yi 8-bit ayarlamadıysak ayarlayım ve timer2'nin periyodunu 255 olarak yapalım ki işimiz kolaylaşsın.

#device ADC=8
setup_timer_2(T2_DIV_BY_4, 255, 1);


Sonra da adc'yi okuyup direkt olarak set_pwm1_duty fonksiyonunun içine yazabilirsiniz.

unsigned int8 value; 
value = read_adc();
set_pwm1_duty(value);


Bu durumda adc 0b00000000 değerini gördüğünde pwm de 0, 0b11111111 değerini gördüğünde pwm de maksimum (255) duty değerine ayarlanacaktır.

uzaylivolkan

içler dışlar çarpımı yapıp istediğin değeri alırsın.
10000000      50      
11000000      x      x=(50*11000000)/10000000
            x=55