Poziomica cyfrowa na AVR

Poziomica cyfrowa na AVR

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.

DSC03627DSC03626

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ń

 

schemat

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:

plytka

No dobra czas przejść do tego jak to działa, może schemat blokowy trochę ułatwi poruszanie się.

blokowy

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:

DSC03622 DSC03624 DSC03619 DSC03620 DSC03621 DSC03625

 

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żeniuDSC03637

Poziomica w skrajnym prawym położeniuDSC03641

Poziomica w skrajnym lewym położeniu
DSC03640

Poziomica w położeniu granicznym prawymDSC03639

 

Poziomica w położeniu granicznym lewymDSC03638

Ocena: 4.93/5 (głosów: 161)

Podobne posty

29 komentarzy do “Poziomica cyfrowa na AVR

  • 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.

    Odpowiedz
  • 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

    Odpowiedz
    • 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.

      Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
  • 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?

    Odpowiedz
    • 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

      Odpowiedz
  • 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.

    Odpowiedz
    • 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.

      Odpowiedz
    • 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.

      Odpowiedz
  • 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 :)

    Odpowiedz
  • 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 …

    Odpowiedz
  • 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

    Odpowiedz
  • 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.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?