przypisanie wartości 255 100% w bascom

Komputer wraz z oprogramowaniem wspomagającym projektowanie stał się częścią życia elektronika.
mcgyver26
Raczkujący użytkownik 1
Raczkujący użytkownik 1
Posty: 4
Rejestracja: wt 06 paź 2009, 10:56

przypisanie wartości 255 100% w bascom

Postautor: mcgyver26 » wt 06 paź 2009, 11:25

Witam, jestem tu nowy i jeszcze "zielony".Zaczynam topiero programowanie w bascomie i mam pytanie niby banalne ale robiące mi troche kłopotu :? ,robie regulator obrotów silnika ze zmianą kierunku L/P,i wszystko działa "pięknie",ale chodzi mi by na wyświetlaczu lcd była pokazywana "moc w%"a zmienna "I" w sygnale PWM przyjmuje wartość od 0 do 255 i chodzi mi by było zamiast tego 255 100 które było by wyrażane w %.Z początku myślałem że 255/100 da 2,55 i z tym "skokiem"trzeba bedzie zmieniać zmienną "X"która to wyraża moc w %,ale jakoś se niemoge z tym poradzić :x -prosze o pomoc i wyrozumiałość

^Target
Aktywny użytkownik 2
Aktywny użytkownik 2
Posty: 217
Rejestracja: śr 21 sty 2004, 9:45
Lokalizacja: okolice Bielska-Białej
Kontaktowanie:

Postautor: ^Target » wt 06 paź 2009, 18:52

Jak zauważyłeś, zmienne całkowite 8 bitowe z trudnością ;) dzielą się na wartości ułamkowe. Tutaj trzeba wykonać funkcję całkowitego dzielenia, z zaokrągleniem (w górę lub dół, do wyboru, tutaj chyba lepiej w górę). Jeśli z kolei chciałbyś regulować wartość %, trzeba ją przemnożyć przez 2,55, czyli w praktyce przy inkrementacji o 1 raz dodać 3 a raz 2, pilnując, by zmienna PWMa nie uległa przepełnieniu. Nie znam składni bascoma, jakkolwiek uniwersalna formuła powinna mieć postać:

Kod: Zaznacz cały

PWM = zmienna_8bit[część_całkowita(wartość_% * 2.55)]
lub

Kod: Zaznacz cały

PWM = zmienna_8bitczęść_całkowita(wartość_% * 255 / 100)]

Nie wiem, jaki masz procek, ale najprawdopodobniej istnieje możliwość ograniczenia rozdzielczości PWMa (poprzez odpowiedni rejestr) tak, aby wartości 0..100 (licznik PWM modulo-101) odpowiadały wprost wartości współczynnika wypełnienia w %. Wówczas nie będzie potrzeba niczego przeliczać, a częstotliwość nośna PWMa będzie prawie całkowitą o 100x mniejszą niż taktowanie timera generującego PWM
chciałeś zrobić wzmacniacz, a wyszedł jak zwykle ... mieszacz :/

"Eksperci nie mają monopolu na dobre rady" - Bob Pease
nie jestem żadnym specjalistą

mcgyver26
Raczkujący użytkownik 1
Raczkujący użytkownik 1
Posty: 4
Rejestracja: wt 06 paź 2009, 10:56

Postautor: mcgyver26 » wt 06 paź 2009, 20:54

Witam,i dziękuje za odpowiedź.Kod który podałeś jest dla mnie zrozumiały,ale nie wiem jak go zastosować u mnie,bo u mnie jest:

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64

procek to atmega 8 i jak zapodam zmiennej "I" te 2,55 to on sam se "zaogrągla"czasem do 3,a czasem do 2,ale wtedy wynik jest zawyżany lub zaniżany-nigdy niema tego 100%przy 255.Oto fragment mojego kodu:

Pwm1a = 0
Do
If S1 = 0 Then
Waitms 25
If S1 = 0 Then
Incr I
If I = 0 Then
I = 255
End If
Pwm1a = I
Waitms 20
End If
End If
If S2 = 0 Then
Waitms 25
If S2 = 0 Then
Decr I
If I = 255 Then
I = 0
End If
Pwm1a = I
Waitms 20
End If
End If
loop


Wróć do „Oprogramowanie wspomagające projektowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika. i 3 gości

cron