Nie do konca rozumie twoja wypowiedz i chyba chodzi ci o krecenie silnikiem w jedna strone z okreslana predkoscia. Czyli chcesz zrobic PWM. Cos takiego robilem i w dodatku w 2 strony sie kreci, ale to juz trudniejsza sprawa. (chodzi o hardware)
Aby zrobic PWM dla silnika piszesz mniej wiecej taki program. (Napisze go w basicu aby bylo bardziej czytelne)
Zalozmy, ze silnik ma 15 stopni krecenia (predkosci)
WY=P1.2 ;to nasze wyjscie na np. tranzystor
LP:=0 ;1 bajt
CT:=0 ;1bajt
;proc z przerwania od np. T0 wywolywana co 1/400 moze byc wiecej
;i tak srednia wyjdzie, a silnik bedzie mniej brzeczal
CT:=CT+1 ;CT to licznik liczacy od 1 do 16
if CT=17
CT:=1
endif
if CT<LP then
WY:=1
else
WY:=0
endif
Wpisujac odpowiednia wartosc do LP, uzyskamy rozna wartosc sredniej do zasilania silnika. Gdy np. wpiszemy:
silnik bedzie krecil sie z pelna swoja predkoscia. Gdy wpiszemy:
silnik nie bedzie sie krecil.
Gdy wpiszemy:
silnik bedzie dostawal (okolo) polowe okresu na zasilanie. W ten sposob otrzymamy okolo polowe predkosci krecenia. Pomijam tu liniowosc pracy silnika, gdyz to jest znacznie bardziej skomplikowane i nalezalo by przygotowac tabele z momentami obrotowymi.
Byc moze cos pomieszalem ze znakiem nierownosci, ale mam nadzieje, ze zalapales o co chodzi. Ponadto musisz wiedziec, ze pelny okres PWM dla silnika, to w tym przypadku 400/15=26Hz.
Ponadto mozesz to zrobic w petli glownej poza przerwaniami.
Aby zrobic mozliwosc krecenia w 2 strony, trzeba nieco rozbudowac program do okreslania kierunku obrotow i oczywiscie hardware, co prowadzi do wielu ciekawych problemow.
Mam nadzieje ze teraz to juz jest jasne.