Dzień dobry
Chciałbym się z Wami podzielić pierwszym większym projektem na AVR.
Poziomica cyfrowa, może temat dziwny bo po co to komu, jak dla mnie przydatny bajer, miły dla oka gadżet, co kto woli.
Z racji tego, że lutowanie jakoś mi idzie pokusiłem się na zastosowanie elementów SMD. Moja wizja tego projektu zakładała użycie diod LED “normalnych” dlatego one nie są powierzchniowe, za to zostały w wymyślny sposób przytwierdzone do płytki.
Do projektu użyłem:
1. AtMega8A TQFP32
2. PCA9635PW – moduły PWM sterowane poprzez komunikacje I2C
3. stabilizator napięcia LM1117S
4. kondensatory, rezystory, kwarc 16MHz itd.
5. moduł 3 osiowego akcelerometru i 3 osiowego żyroskopu MPU6050 na płytce GY-521
Dla zwiększenia estetyki i niezawodności (utlenianie się miedzi) cała płytka została pokryta stopem Lichtenberg’a.
Schemat połączeń
Dodane 32 otwory podłączone do GND to nic innego jak miejsca podłączeń anod LED.
W schemacie zawarty jest przycisk uruchamiający bistabilny jak i monostabilny przycisk do resetu. został on zamocowany odwrotnie niż na ogół montuje się micro switch’e. Specjalnie dla niego przez płytkę został przewiercony otwór dla słupka przycisku. Zastosowanie tego uniemożliwi jego przypadkowe wciśnięcie, możliwe jest tylko przy pomocy długopisu lub czegoś cienkiego.
Płytka do projektu została zaprojektowana w EAGLE i wygląda następująco:
No dobra czas przejść do tego jak to działa, może schemat blokowy trochę ułatwi poruszanie się.
Jak widać program zaczyna od funkcji demonstracyjnej, to zwykłe zapalanie się diodek od środka na zewnątrz i z powrotem, nic szczególnego programowo, a cieszy oko.
Przyznam że użyty tu filtr Kalman’a pozyskałem z forum Forbot i jest on dobry ale tylko dla jednej osi, no w poziomicy chyba więcej nie jest wymagane dlatego tu się nadaje idealnie. Ta “wada” tego filtra jest jednocześnie jego zaletą. Nieskomplikowany algorytm zajmuje mało pamięci i dość szybko się wykonuje.
Cały projekt do pobrania tutaj: Poziomica
main.c
Główny program, starałem się go dość dobrze opisać, jest on wykomentowany na każdym kroku
kalman.c
Wspomniany już filtr Kalman’a pobrany z forum Forbot
MPU6050_2.c
Plik nagłówkowy zawiera wszystkie rejestry które są też dostępne w dokumentacji producenta do układu, w pliku *.c wykorzystane one są do zainicjalizowania układu, wskazania źródła zegara i ustawienia minimalnej (i tak dużej) czułości układu na ruch.
pca9635.c
Biblioteka do obsługi modułów PCA9635PW. Nic skomplikowanego, same funkcje wykorzystujące I2C do komunikacji z układami.
twi.c
Biblioteka do obsługi komunikacji I2C.
Jak już można zauważyć w main.c, przed główną pętlą wprowadzony jest off-set. Nie ukrywam że idealnie równoległe nawiercenie i zamontowanie płytki GY-521 było bardzo utrudnione przez co zostało tu wprowadzone to przesunięcie.
Nie wprowadzałem off-set do rejestru układu MPU6050 celowo, w tym miejscu jest ono widoczne, a to już celowe zagranie, projekt jest uniwersalny i każdy kto zechce go zrobić będzie widział od razu że w tym miejscu trzeba dokonać kalibracji.
Dla przedstawienia dlaczego taka jest tam wprowadzona wartość prezentuję zdjęcia z kalibracji:
W skrajnych położeniach poziomica zapala tylko 1 diodę lecz z pełną siła. Jak wiadomo zielone diody świecą z inną mocą niż czerwone a dodatkowo obie są bardzo jasne, w programie została wprowadzona 11 wartościowa tablica i uwzględnione programowo, że czerwone diody mają świecić z mniejszą mocą niż zielone.
Dwa koszyki na baterię 9V są nie z wymagań konsumpcyjnych układu, są tu jedynie dla zwiększenia stabilności płytki i umożliwienia jej postawienia np. na stole.
Poziomica w idealnym położeniu
Poziomica w skrajnym prawym położeniu
Poziomica w skrajnym lewym położeniu
Poziomica w położeniu granicznym prawym
Poziomica w położeniu granicznym lewym
Bardzo dobry projekt, płytka rewelacyjna… 6/5 :D
Zaje…te. Też taką chce 5/5
Dodaj proszę jakiś tytuł do swojego projektu :)
Dodałem tytuł, żeby nie było tak pusto. Jak chcesz, możesz go zmienić na jakiś inny.
A projekt świetny!
bardzo fajny pomysł wykonanie gratuluje pomysłu
Wcale nie taki bajer, bo jeśli napisać program by np diody pokazywały wychylenie w stopniach (np 1 dioda to 1 stopień) i wmontować układ w poziomice, byłoby to bardzo praktyczne.
Projekt i wykonanie super nawet na 6tkę ale kwestie użytkowania praktycznego raczej z tą dokładnością wskazywania nie widzę.
Pozdrawiam
Jak już idziemy w cyfrowość, to jeszcze dzwiękiem by mogła informować. Jakieś idealne “A” na poziom z dodatkowym jakimś sygnałem, gdy w lewo, to częstotliwość się zmniejsza, gdy w prawo, to ton rośnie. i bez patrzenia będziemy mogli obrazy wieszać :D
Dziękuję za pomysły i sugestie, jeśli ukaże się wersja v2 z pewnością pochwalę się zmianami, a co do dokładności to wskazania pokrywają się z klasyczną poziomicą, wydaje mi się ze to wystarczająco jak na takie urządzenie.
Jak dla mnie można by użyć procka z większą pamięcią i napisać jakiś program “ozdobny” – gdy poziomica jest nie używana, zamiast się kurzyć w szafce, może służyć jako chociażby bajerancki wskaźnik wysterowania :) Szkoda w końcu by taki idealny pasek led ze sterowaniem PWM leżał nieużywany :D
Witam no widzę, że wreszcie unowocześnili poziomicę. Nadchodzą więc czasy, w których nie będziemy już musieli patrzeć na ten płyn, który tam jest w środku tylko wszystko klarownie będziemy widzieć. Oto chodzi ułatwić jak najbardziej i tak ciężką pracę budowlańcom. Ciekawe co następne zostanie poprawione.
A tak przy okazji może by tak wynaleźć łopatę, która będzie automatycznie za nas kopać. Moim zdaniem to by było przełomowe wydarzenie i z pewnością firmy, by się szybko pofatygowały po taki sprzęt. Pożyjemy zobaczymy bo dziś wszystko jest możliwe.
A widziałeś kiedyś koparkę?
poziomNIca!
Waserwoga!
Ten moduł żyroskopu trzyma się tylko na goldpinach? Nie masz problemów z jego stabilnością – czy goldpiny się zbytnio nie odkształcają jak ktoś złapie za ten moduł? – można wtedy niechcący rozkalibrować poziomicę. Lepszym pomysłem byłoby wlutowanie scalaka żyroskopu bezpośrednio w główną płytkę – chociaż nie wiem, czy dałbyś radę wykonać taka płytkę termotransferem, bo ten żyroskop ma chyba mniejszy raster niż zastosowany AVR.
Ten moduł trzyma się na goldpinach, ale jest przylutowany. Te wolne goldpiny są pewnie do programowania
Cześć,
Na wstępie powiem że to bardzo fajny projekt.
Mam kilka pytań.
Czy możesz mi powiedzieć jaka jest dokładność kątowa czujnika MPU6050?
Chciałem wykonać poziomice z wyświetlaczem pokazującym kąt i zastanawiam się czy jest możliwość uzyskania dokładności rzędu 0,1 stopnia?
skala akcelerometru to: ±250, ±500, ±1000, and ±2000°/sec
a żyroskopu: ±2g, ±4g, ±8g and ±16g
więc myślę że stosując odpowiednie algorytmy dokładność może być duża, widziałem roboty 2 kołowe,a nawet robota stojącego na kuli wykorzystujący ten moduł do utrzymania równowagi. 0.1 stopnia powinno być osiągalne
Projekt bardzo ciekawy, świetna koncepcja zastosowania akcelerometru. Wykonanie płytek bardzo estetyczne. Sam je frezowałeś? A co do lutowania, pozwolę sobie zacytować “Z racji tego, że lutowanie jakoś mi idzie pokusiłem się na zastosowanie elementów SMD” i od razu wyprowadzić z błędu – lutowanie idzie Ci świetnie!!! Większą sztuka jest przylutować element SMD który się ciągle wierci i gdzieś ucieka (no chyba że zastosuje się klej) niż zwykłego “przewlekańca” którego po prostu wkładasz w otwór, zaginasz nóżki i lutujesz z drugiej strony. Projekt cieszy oko, fajny bajer. Oby tak dalej, czekam na kolejne posty Twojego autorstwa :). Pozdrawiam.
Dziękuję za słowa uznania. Od razu chciałbym wspomnieć że nie jest to pierwsza wykonana przeze mnie płytka dlatego też wszystkie otwory i dopasowanie jej rozmiarem robiłem samodzielnie. Co prawda jest to pierwszy projekt SMD dlatego też nie byłem pewny co jakości jej wykonania, jak wiemy SMD musi mieć dokładniej wykonany termotransfer i to był dla mnie największy kłopot.
Dziękuję za słowa uznania. Od razu chciałbym wspomnieć że nie jest to pierwsza wykonana przeze mnie płytka dlatego też wszystkie otwory i dopasowanie jej rozmiarem robiłem samodzielnie. Co prawda jest to pierwszy projekt SMD dlatego też nie byłem pewny co jakości jej wykonania, jak wiemy SMD musi mieć dokładniej wykonany termotransfer i to był dla mnie największy kłopot.
Witam,
Czy może się Pan ze mną z kontaktować chcę zrobić bardzo podobny projekt :)
kivlow14@gmail.com
Daję 10/10. Wpadłem na pomysł ulepszenia twojego projektu : dodałbym brzęczyk, który w momencie gdy poziomica pokaże poziom, piszczy. Takie małe udogodnienie :)
A ma ktoś może sposób na przeliczenie bety na stopnie ?
Przeszukałem już cały internet (tak, Chuck mi pomagał) i to co znalazłem nie działa, działa źle … lub kompletnie nie rozumiem …
wszystko super ale ta 1zl zielona poziomica wzorcowa to porazka :) oczywiscie wiem ze chodzi o probe ale jak bedziesz rozbudowywal pomysl idz to sklepu popros o pziomice za 300zl i wykalibruj twoja i bedzie ikona poziomic
POZIOMNICA, a nie POZIOMICA!!!
A tak to fajny projekt! :)
Świetny projekt :D
Witam.
Czy jest możliwość aby poziomnica gdy jest w pozycji przechylonej,
(obojętnie w którą stronę), pokazywała by że jet poziomo i dopiero od TEJ (krzywej) pozycji,
zaczynała by działać?
Czyli odliczać przechyły.
Potrzebuje tego do innego projektu.
Pozdrawiam.