Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 kwi 2026, o 00:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 11 paź 2015, o 19:50 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Witam,
przysiadłem ostatnio do "zabawy" z żyroskopem, dokładnie tym z linku poniżej:
http://electropark.pl/moduly-przemieszczenia-odleglosci/3169-modul-3-osiowy-zyroskop-l3g4200d.html
i pojawiło się sporo pytań.
Dodam tylko, że dopiero teraz zająłem się interfejsem TWI, więc całkiem możliwe, że nie do końca go rozumiem, oraz że przeczytałem notę katalogową żyroskopu (co z moim angielskim zajęło mi troche czasu), więc to nie jest tak, że zadaje te pytania z lenistwa.

1) naskrobałem taki kod - w pętli while jest tylko wyświetlanie wyniku na wyświetlaczu siedmiosegmentowym, na razie chce uzyskać odpowiedź od żyroskopu jego adres (who_am_i). Niestety program zatrzymuje się na linijce - "wynik=twi_odczytaj(nack);"

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niestety nie potrafię znaleźć, błędu w kodzie.



2) Podłączenie żyroskopu. Atmege16 zasilam 5V, czy poprawne jest podłączenie w którym SDA i SCL procka i żyroskopu podłączam bezpośrednio do siebie, na VCC daje 5V, na SDO - GND, oraz na CS - 5V ?

3) Na str. 30 tabelka 22 jest parametr cut-of co on oznacza ?

4) FIFO ? Czy dobrze rozumiem, że FIFO to tylko taka kolejka (cos jak stos, tylko w pamięci żyroskopu) i jeśli chce oczytać pojedyńczą wartość z każdej osi to nie używam FIFO a kiedy chce odczytywać te pomiary w sposób ciągły to wtedy go używam ?

Konstruktywna krytyka mile widziana !



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2015, o 20:07 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

https://code.google.com/p/davidegironi/ ... 00d_01.zip

proszę działa ...

ad 2.

Zdecyduj się czy SPI czy I2C

jak uzywasz I2C to potrzebujesz tylko SDA i SCL dodatkowo powinny byc pull-upy na obu

Pozostałe nie sa ci potrzebne .... na tą chwilę



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2015, o 20:21 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

hmm zgodnie z notą na str. 8 o pinie CS -"I2C/SPI mode selection (1:SPI idle mode / I2C communication
enabled; 0: SPI communication mode / I2C disabled)".

Dzięki za gotowca, ale pomiędzy moimi umiejętnościami a Twoimi jest spora różnica i nie jestem przekonany, że zrozumiem to co mi wysłałeś.
Ale dziękuje (żeby nie było że narzekam)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2015, o 20:29 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

no to w tym wypadku podajesz na CS stan wysoki "1" - HI czyli VCC
żeby działało I2C , choć sprawdzałem u siebie i działa na w/w sofcie
bez kombinacji z CS :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2015, o 20:48 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Jutro sprawdzę Twój kod :). Stan wysoki to 5V czy 3,3V ? Jeśli żyroskop pracuje na 3,3V, atmega na 5V, to to nie przeszkadza w wymianie danych pomiędzy sobą przez SDA ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 paź 2015, o 20:53 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

przeszkadza powinieneś zastosować konwersję sygnałów
lub oba układy zasilać 3,3V jak puściłeś 5V to już może być po układzie :)

Obrazek

w ten sposób to łączysz jak chcesz zasilać 2ma napięciami

HI = VCC w przypadku twojego układu to 3,3V = HI

------------------------ [ Dodano po: 9 minutach ]

http://allegro.pl/konwerter-poziomow-lo ... 56827.html

są też gotowe konwertery poziomów ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 16:11 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Kupiłem nowego żyra ale dalej nic. Może zaczne od początku. Czy takie podłączenie płytki z żyroskopem jest prawidłowe ?
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 17:26 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

Nie, nie może tam być żadnego 5V , a jak już zasilasz z 5V to konwersja sygnałów
jak podałem wyżej ...

w załaczniku z kodem masz schemat połaczeń z Megą8 , ale to żaden problem ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 17:31 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Ok ale zerknąłęś na link z żyroskopem ? Ma wbudowany stabilizator 3,3V a zasilam 5V. Nie wiedziałem też czy dawać rezystory 4,7 k bo zgodnie ze schematem ma juz podłączone 10 k. Chyba że się myle...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 17:45 
Offline
Użytkownik

Dołączył(a): 03 sie 2015
Posty: 47
Pomógł: 3

witam
jeżeli schemat jest zgodny z płytka to ma podciągnięte, ale czasami płytka jedno a rzeczywistość to drugie raz miałem taki przypadek , CHinska robota, schemat uniwersalny, zobacz fizycznie czy te rezystorki tam są napis na rezystorze 103 lub 1002.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 17:52 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Witam :). R3 i R2 - 103, R1 - 102, na kondensatorach nie ma żadnych symboli.
Połączenie równoległe 4,7 i 10 dałoby mi ok 3 k - czy to mogłoby uszkodzić układ ?
Jeszcze co do samego podłączenia. N płytce jest dioda, która ma mi sygnalizować podłączenie układu do zasilania (?). Otóż jeśli odłącze VCC, a mam podłączony pin SDO i/lub CS do 3,3 V to dioda dalej świeci. Nie wiem czy to ma jakieś znaczenie...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 19:20 
Offline
Użytkownik

Dołączył(a): 03 sie 2015
Posty: 47
Pomógł: 3

na SDO podajesz stan wysoki czyli patrząć na DS:
The slave address (SAD) associated with the L3G4200D is 110100xb. The SDO pin can be
used to modify the least significant bit (LSb) of the device address. If the SDO pin is
connected to the voltage supply, LSb is ‘1’ (address 1101001b).
Otherwise, if the SDO pin is
connected to ground, the LSb value is ‘0’ (address 1101000b). This solution permits the
connection and addressing of two different gyroscopes to the same I2C bus.

czyli 0x69 natomiast w przykładzie kodu z gita masz adres
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a zatem nic nie będzie grało ponieważ nie znajdzie choćby chał urządzenia podłącz do masy to otrzymasz adres taki jak w przykładzie 0x68 i powinno grać. Chyba że go zjarałeś ale nie sądzę.

W sumie zrobiłeś to wcześniej ale dałeś 5v na CS to chyba był błąd. scalak działa na 3.3v.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 19:55 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

kodu od SunRiver jeszcze nie wgrywałem. Analizuje go od wczoraj i staram przerobić (nie rozumiem koncepcji podziału programu na pliki, nie znam się na uart), ale chyba jeszcze trochę pracy przede mną.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 20:06 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

_damian napisał(a):
ale chyba jeszcze trochę pracy przede mną.


oj sporo , trzeba sobie szybko przyswajać ogromne ilosci wiedzy i danych , a i tak się jest zawsze do tyłu
ale im więcej się kolega nauczy tym lepsze programy powstaną :)

Koncepcja podziału jest banalna ,
przede wszystkim main nie jest przerośnięty , kod jest czytelniejszy :)

a uart to banalne zagadnienie najprostsza transmisja danych :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 21:04 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Ok. Wywaliłem z main.c
Kod:
#include "uart/uart.h"

oraz to
Kod:
uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));

oraz
Kod:
itoa(gxraw, itmp, 10); uart_puts(itmp); uart_putc(' ');
itoa(gyraw, itmp, 10); uart_puts(itmp); uart_putc(' ');
itoa(gzraw, itmp, 10); uart_puts(itmp); uart_putc(' ');
dtostrf(gx, 3, 5, itmp); uart_puts(itmp); uart_putc(' ');
dtostrf(gy, 3, 5, itmp); uart_puts(itmp); uart_putc(' ');
dtostrf(gz, 3, 5, itmp); uart_puts(itmp); uart_putc(' ');
itoa(gtempdiff, itmp, 10); uart_puts(itmp); uart_putc(' ');
uart_puts("\r\n");


teraz mian wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


no i dodałem te swoje wyświetlanie na wyświetlaczu siedmiosegmentowym.

Czy tak jest ok ? Reszta bez zmian



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2015, o 18:16 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

Witam ponownie.
https://www.pololu.com/product/1272
Zgodnie z powyższym linkiem w moim układzie zabrakło rezystora 10k do CS oraz SDO.

Uruchomiłem żyroskop jednak wskazania przy nieruchomym układzie odbiegają (dość delikatnie mówiąc) od zera.
Może ktoś realizował kiedyś podobny projekt więc opisze co chciałbym uzyskać. Na bazie akcelerometru i żyroskopu chciałbym odczytywać trasę po jakiej porusza się mój pojazd.
Dlatego tez prośba do Was - moglibyście podpowiedzieć ... hmm jak to wykonać. NIE CHCE gotowych rozwiązań. Prosiłbym bardziej o opis problemów z jakimi mogę się spotkać i jak je rozwiązać. Taki ogólny opis wiedzy którą powinienem sobie przyswoić.

PS
Podpunkt 3 z pierwszego postu dalej aktualny :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2015, o 19:15 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

_damian napisał(a):
Na bazie akcelerometru i żyroskopu chciałbym odczytywać trasę po jakiej porusza się mój pojazd.

hmm.... gyro jak i accel służą do pomiarów innych wartości niż droga ...
no ale powodzenia :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2015, o 19:33 
Offline
Użytkownik

Dołączył(a): 22 kwi 2015
Posty: 50
Pomógł: 0

W teorii mógłbym podwójnie całkować przyśpieszenie z trzech osi z akcelerometru ale jak się to ma do praktyki ?
Zachęcam do dyskusji ! :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO