18 sierpnia 2008, 23:32:05 - Poziom 0 [ projekt Fud] [pFud] PWM i ugly hack

pFud do sterowania sterownikami silników używa sygnału z zakresu 0-3.3V. Jako że komputery nie potrafią podawać na wyjście napięcia o dowolnej wartości, w projekcie jest wykorzystany PWM (Pulse Width Modulation), czyli odpowiednie włączanie i wyłączanie prądu 3.3V, by (uśredniając) uzyskać dowolną wartość z zakresu 0-3.3V.

Dla lepszego zrozumienia mikrokontrolerów, "zbudujemy" ściemniacz żarówek wolframowych.

1. Stajemy przy włączniku światła w pokoju.
2. Wymyślamy, z jaką dokładnością chcemy sterować. Ja wybieram dokładność do 1%, czyli dzielę 100% możliwości żarówki na 100, czyli okres wynosi 100.
3. Wybieramy, ile procent możliwości żarówki chcemy wykorzystać. Ja wybieram 10%, czyli "duty" wynosi 10.
4. Ustawiamy kontakt/przełącznik światła w pozycji "światło włączone".
5. Zaczynamy liczyć do 100.
6. Gdy dojdziemy do 10, przełączamy przełącznik w pozycję przeciwną.
7. Gdy dojdziemy do 100, przełączamy przełącznik w pozycję przeciwną i zaczynamy liczyć od nowa.
Gratulacje, właśnie sterowałeś światłem jak prawdziwy mikrokontroler. Z tym, że mikrokontroler wykona 20k cykli w sekundę i efekt będzie zdecydowanie lepszy.

W taki sposób działa sterowanie silnikami w pFudzie. Przypatrzmy się punktowi 4. pFud zaczyna zawsze od włączonego "światła". Jednak, co by się stało, gdyby podczas jazdy 20% mocy naprzód, coś przestawiło polaryzację (czyli właśnie początkową pozycję w punkcie 4)? Silniki dostałyby 80% mocy (sporo upraszczam i kłamię w tym punkcie). Przy czym, musiałoby się to przestawić na wszystkich czterech kanałach PWM. Jeśli przestawiłoby się na jednym, jedno koło jechałoby 20% do przodu, a drugie 80% do przodu. I tak właśnie wyglądał stan berserk robota, na który trafiałem od dłuższego czasu.

Po dłuższych badaniach, okazało się, że w rejestrze ustawień modułu PWM nie ma informacji o tym, że polaryzacja została przestawiona. Robot nie wie, że coś jest nie tak, więc skoro nie może sam wykryć, nie może sam tego naprawić. Stąd też, byłem zmuszony zastosować tytułowy ugly hack: reset kanałów PWM co 64 cykle głównej pętli. Przypuszczalnie, pFud będzie mógł szaleć około pół sekundy, zanim sterowanie nie wróci do normy.

Dodaj komentarz

 
Podpis:
Treść:
Strona WWW (opcjonalnie):
Wpisz kod:code

Powrót na główną

head Main Jogger. jajc. remiq.net. chrome. Notes headlines. bookmarks.
odstep.!Ona (0/0)
odstep.Przyjaciele (4/5)
odstep.CTD (Wiktor)
odstep.eR
odstep.Jade
odstep.Lobo
odstep.Kategorie
odstep.embeded [5]
odstep.niepoprawne [13]
odstep.o remiqu [91]
odstep.14.03.2007 - 13.04.2009 [2]
odstep.Ogólne [927]
odstep.Politycznie [103]
odstep.projekt Libraria [13]
odstep.projekty [7]
odstep.Irony Projects [1]
odstep.projekt AmaLight [12]
odstep.projekt Fud [48]
odstep.remiq.net [21]
odstep.YPA [1]
odstep.Rodzinnie [4]
odstep.Szczecin [3]
odstep.Techblog [4]
odstep.Uczelnia [25]
odstep.z eksportu [20]
odstep.Jogger (7/7)
odstep.Kobieta z pingwinem
odstep.Zlota betatesterka
odstep.RKlisowski
odstep.Aaaa to kto?
odstep.ZdzichuBG
odstep.WIPS (3/3)
odstep.Kasprzol
odstep.Xycu
odstep.Bookmarks
odstep.Łosoś?
odstep.JAJC Plugins
odstep.Biblionetka
odstep.Login
odstep.Zalogowano jako:
odstep.
odstep.Archiwum
odstep.Styczeń 2004
odstep.Luty 2004
odstep.Marzec 2004
odstep.Kwiecień 2004
odstep.Maj 2004
odstep.Czerwiec 2004
odstep.Lipiec 2004
odstep.Sierpień 2004
odstep.Wrzesień 2004
odstep.Październik 2004
odstep.Listopad 2004
odstep.Grudzień 2004
odstep.Styczeń 2005
odstep.Luty 2005
odstep.Marzec 2005
odstep.Kwiecień 2005
odstep.Maj 2005
odstep.Czerwiec 2005
odstep.Lipiec 2005
odstep.Sierpień 2005
odstep.Wrzesień 2005
odstep.Październik 2005
odstep.Listopad 2005
odstep.Grudzień 2005
odstep.Styczeń 2006
odstep.Luty 2006
odstep.Marzec 2006
odstep.Kwiecień 2006
odstep.Maj 2006
odstep.Czerwiec 2006
odstep.Lipiec 2006
odstep.Sierpień 2006
odstep.Wrzesień 2006
odstep.Październik 2006
odstep.Listopad 2006
odstep.Grudzień 2006
odstep.Styczeń 2007
odstep.Luty 2007
odstep.Marzec 2007
odstep.Kwiecień 2007
odstep.Maj 2007
odstep.Czerwiec 2007
odstep.Lipiec 2007
odstep.Sierpień 2007
odstep.Wrzesień 2007
odstep.Październik 2007
odstep.Listopad 2007
odstep.Grudzień 2007
odstep.Styczeń 2008
odstep.Luty 2008
odstep.Marzec 2008
odstep.Kwiecień 2008
odstep.Maj 2008
odstep.Czerwiec 2008
odstep.Lipiec 2008
odstep.Sierpień 2008
odstep.Wrzesień 2008
odstep.Październik 2008
odstep.Listopad 2008
odstep.Grudzień 2008
odstep.Styczeń 2009
odstep.Luty 2009
odstep.Marzec 2009
odstep.Kwiecień 2009
odstep.Maj 2009
odstep.Czerwiec 2009
odstep.Lipiec 2009
odstep.Sierpień 2009
odstep.Wrzesień 2009
odstep.Październik 2009
odstep.Listopad 2009
odstep.Grudzień 2009
odstep.Styczeń 2010
odstep.Luty 2010
odstep.Marzec 2010
odstep.Kwiecień 2010
odstep.Maj 2010
odstep.Czerwiec 2010
odstep.Lipiec 2010
odstep.Sierpień 2010
odstep.Październik 2010
odstep.Listopad 2010
odstep.Marzec 2011
odstep.Kwiecień 2011
odstep.Maj 2011
odstep.Lipiec 2011
odstep.Wrzesień 2011
odstep.Październik 2011
odstep.Listopad 2011
odstep.Marzec 2012
odstep.
odstep.
odstep.

Powered by Jogger