Skocz do zawartości

Czujnik przyspieszeń, akcelerometr MMA7361 +ARDUINO


cesiek

Pomocna odpowiedź

Witam, mam pytanie do bardziej zaawansowanych Kolegów , jak podłączyć akcelerometr MMA 7361 do modułu ARDUINO,w/w moduł ma wyjścia do zasilania 3 i 5 v i ma stabilizator , poza tym parę innych pinów.Czy te dwa piny do zasilania są do wyboru tj. albo 3 v lub 5 ( ciągnę to z ARDUINO ) a reszta ?

Za wskazówki i podpowiedzi z góry dziękuję.

Pozdrawiam[

Link do komentarza
Share on other sites

Spojrzałem z ciekawości w notę (spojrzałeś?). Układ ma jeden tylko pin zasilania VDD (pin 6) i jest to +3,6V (max). VSS to masa a nie drugi do wyboru pin zasilania.

Link do komentarza
Share on other sites

Spojrzałem z ciekawości w notę (spojrzałeś?). Układ ma jeden tylko pin zasilania VDD (pin 6) i jest to +3,6V (max). VSS to masa a nie drugi do wyboru pin zasilania.

Witam ponownie , nie ten moduł ma wyjście zasilania 5 i 3,3 v , pozostałe to GND(wiadomo) , nastepne to GS, ST,X,Y,Z,SL,OG

Link do komentarza
Share on other sites

Źle wkleiłeś zdjęcie albo wcześniej go nie było.

IMHO możesz podłączyć dowolne zasilanie.

Jesli chcesz się upewnić sprawdź czy wyjście stabilizatora połączone jest z pinem 3V3.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

GS to pewnie g-select, czyli wybór czułości, ST to Self-Test (sprawdź w dokumentacji, czy do normalnego działania podłącza się do 0 czy 1), X, Y i Z to sygnały analogowe przyspieszeń w odpowiednich osiach, SL to sleep (zapewne negowany), OG nie pamiętam. Generalnie wszystko powinieneś mieć w dokumentacji.

Link do komentarza
Share on other sites

To mój pierwszy poast dlatego witam serdecznie! Trochę odświeżę temat bo właśnie bawię się mma7161.

Zmontowałem płytkę z atmegą, stabilizatorkiem, i układem akcelerometru. Działa ok - przez monitor portu szeregowego obserwuje zmieniające się parametry x,y,z ruszając płytką, ale chcę kod rozwinąć o funkcję włączania diody w przypadku przekroczenia pewnej wartości - np gdy wartość w osi X przekroczy 2g - dioda się zapala.

Kod mam taki:

#include <AcceleroMMA7361.h>
#include <avr/io.h>

AcceleroMMA7361 accelero;
int x;
int y;
int z;

void setup()
{
 Serial.begin(9600);
 accelero.begin(13, 12, 11, 10, A0, A1, A2);
 accelero.setARefVoltage(3.3);             
 accelero.setSensitivity(LOW);               
 accelero.calibrate();
}

void loop()
{
 x = accelero.getXAccel();
 y = accelero.getYAccel();
 z = accelero.getZAccel();
 Serial.print("\nx: ");
 Serial.print(x);
 Serial.print(" \ty: ");
 Serial.print(y);
 Serial.print(" \tz: ");
 Serial.print(z);
 Serial.print("\tG*10^-2");
 delay(500);                                
}

zakładam że do uzyskania żądanego efektu potrzebuję coś w stylu

 if(x>=150)
   {
     PORTB |= 0x02;
     }

oraz definicję portu atmegi do sterowania napęciem na diodę...

Niestety śleczę nad tym już pół dnia i jakkolwiek bym nie kombinował i dopisywał - układ odmawia współpracy.

Proszę o pomoc w tej kwestii - od rana stawiałem atmege na nogi i po tych bootloaderach, fusebitach itp mózg mi się już lasuje 🙂

Link do komentarza
Share on other sites

Jakie wartości masz w poszczególnych osiach? Widzę, że wypisujesz je przez port szeregowy, więc upewnij się, że faktycznie osiągasz zadaną granicę.

Samo zgaszenie/zapalenie diody na Arduino jest banalne:

digitalWrite(pin, state);

Zazwyczaj led jest na pinie nr 13.

Link do komentarza
Share on other sites

Na osiach przez serial podaje mi dobre wartości. Jak płytka poziomo leży to x i y 0g a na z 9-10g - oczywiście reaguje bardzo dokładnie na każdy ruch układu.

Dzięki za kod, ale ja nie mam płytki arduino tylko atmege na płytce prototypowej wiec w zasadzie diode mogę pod każdy pin podłączyć, tylko coś się nie mogę z tym "if" połapać...

Link do komentarza
Share on other sites

zakres oczywiście jest wiekszy (do 6g - czyli 60m/s2)

10m/s2 (1g) jest w stanie spoczynku na osi "Z"

Program pokazuje z dokładnością do jednego miejsca po przecinku - tyle że bez przecinka, wiec dane wygladają - w stanie spoczynku 100, przy mocniejszym szarpnięciu można uzykac odczyt 200 i więcej...

Link do komentarza
Share on other sites

temat ogarnięty, pojawia się następny...

Korzystając z biblioteki do akcelerometru, oraz przykładowego programu

#include <AcceleroMMA7361.h>

AcceleroMMA7361 accelero;
int x;
int y;
int z;

void setup()
{
 Serial.begin(9600);
 accelero.begin(13, 12, 11, 10, A0, A1, A2);
 accelero.setARefVoltage(3.3);                   //sets the AREF voltage to 3.3V
 accelero.setSensitivity(LOW);                   //sets the sensitivity to +/-6G
 accelero.calibrate();
}

void loop()
{
 x = accelero.getXAccel();
 y = accelero.getYAccel();
 z = accelero.getZAccel();
 Serial.print("\nx: ");
 Serial.print(x);
 Serial.print(" \ty: ");
 Serial.print(y);
 Serial.print(" \tz: ");
 Serial.print(z);
 Serial.print("\tG*10^-2");
 delay(500);                                     //make it readable
}

programik działa, na monitorze portu kom pokazuje ładnie wartości.

Przy każdorazowym restarcie moduł się kalbruje ( i trzeba go w tedy w poziomie trzymać)

Jak zrobić żeby akcelerometr kalibrował się tylko raz po naciśnięciu switcha?

Próbowałem takiego kodu:

if(buttonStateRESET == HIGH)
{
accelero.calibrate();
}

ale nie zdaje egzaminu

Może każdorazową kalibracje wymusza biblioteka?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.