Skocz do zawartości

Robot balansujący - odwrócone wahadło


Pomocna odpowiedź

  • 1 miesiąc później...

1. Termometrem się nie interesowałem. nawet nie wiedziałem że ma.

2. Nie przerabiałem. przepisałem tylko z C od bascoma

3. zrobiłem to zupełnie bezmyślnie skalując na oko sygnał z gyro i acc. jeśli sygnału z gyro był za duzo w porównaniu do acc to filtr przestrzeliwał przy szybkich ruchach zeby potem wrócić do poziomu prawdziwego kąta, jak za mało to powolutku narastał.

Ciekawa wizualizacja, w czym zrobiona, jaka komunikacja i częstotliwość pracy filtra? U mnie Kalman też działa całkiem sprawnie. 500Hz BMA180 + ITG3200:

1. Zamiast L293D zastosuj TB6612, Nie będziesz miał tak dużych spadków napięcia na mostku - http://robodudes.com/drivery/60-tb6612-ssop24.html

Mam ten mostek też jako moduł z wyprowadzeniami na listwę 2,54mm w cenie 26zł/szt

2. Takie silniki można bez problemu dostać w polsce - http://robodudes.com/silniki-dc/120-metalowy-mikro-silnik-pololu-50-1.html

3. Możesz zarówno zastosować przetwornicę jak i duży stabilizator liniowy (ale w tym drugim wypadku masz spore straty zamieniane na ciepło).

4. Komunikacja I2C jest na małe odległości - generalnie używana przy przesyłaniu danych w obrębie jednej płytki. Na większe odległości nie działa zbyt stabilnie, ale można na kilka sposobów to poprawić:

a) Masz dobrze odfiltrowane zasilanie po stronie płytki z I2C? Do zwykłego kondensatora 100nF dodałbym jeszcze jakiś większy typu 10uF

b) Rezystory podciągające można trochę zmniejszyć tak do 2,2k

c) dobry kabel z ekranowaniem

d) zmniejszyć prędkość przesyłu danych

e) dodać korekcję błędów (jak komunikat nie pójdzie to wysyłasz zapytanie ponownie)

Najlepiej jednak nie stosować i2C powyżej kilkunastu cm, chociaż sam mam w projekcie I2C na kablu ok. 1m i działa, ale piękne to to nie jest i nawet kilka procent (kilkunastobajtowych) komunikatów idzie w kosmos.

  • 3 miesiące później...
  • 1 miesiąc później...

Po co stosować enkoder?

Czy nie wystarczy wykorzystać oś poziomą akcelerometru w celu obliczenia drogi z pomierzonego przyśpieszenia?

s+= v*dt + 1/2a *dt^2;

v += a*dt;

s - suma drogi od startu programu

a - pomiar przyśpieszenia osi poziomej

dt - czas trwania pętli

kosalka88, teoretycznie wystarczy, ale tylko teoretycznie. W praktyce szumy akcelerometru są na tyle duże, że po podwójnym całkowaniu, już po kilku sekundach wyznaczona pozycja kompletnie "rozjedzie" Ci się ze stanem faktycznym.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...