■ Forum Czytelników
p vcc
PC81IRESET) VCC PDO<RXD)
PD1(TXD)
PD2UNTO)
PD3UNT1)
PD4(XCK/TO)
PB6(XTAL 1/TOSC1) PB7(XTAL2/TOGC2) RDSCT1)
PD6< AINO)
PD7(AIM)
PBOOCPI QND
vcc
Sztuki walki są interesującym sposobem spędzania wolnego czasu, a ćwiczenia w tym kierunku dają niektórym sporo radości. Czasami pojawiają się wątpliwości: jakie postępy udało mi się zrobić? Czy jestem już szybszy, silniejszy? Nic tak nie motywuje do dalszej i cięższej pracy jak widoczne efekty wysiłku. Pre zentowany układ ma za zadanie pomoc w tej kwestii - pozwala określić, z jaką silą wypro wadzane jest uderzenie czy też kopnięcie,
a tym samym pozwala obserwować efekty
ćwiczeń. Może być także interesującym gadżetem umilającym czas na spotkaniach towarzyskich albo sposobem na zaimponowanie naszej lubej.
Schemat ideowy pokazany jest na rysunku 1. Pracą układu steruje mikrokontroler z grupy AVR, konkretnie Atmcga8. Ma on sporą liczbę wyjść, a co najważniejsze, wbudowany przetwornik analogowo-cyfrowy. Jego zadaniem jest pomiar wartości z czujnika przyspieszenia, uśrednienie i wyświetlenie na linijce diod LED Pracuje on z zewnętrznym rezonatorem kwarcowym, który zapewnia dostateczną moc obliczeniową. Ponieważ lubię wyciskać z uK tak wiele, jak się da, dlatego jest 16MHz ©. Cewka i kondensator dołączone do wejścia AREF pełnią rolę filtru dla napięcia odniesienia.
Teraz kilka słów o czujniku ADXL311. Jest to scalony czujnik przyspieszenia mierzący w zakresie ±2g z wyjściami analogowymi. To nie oznacza błędu pomiarowego (jak myślałem w pierwszej chwili), ale jego zdolność pomiaru ruchu w dwóch kierunkach: przód i tył. Warto dodać, że układ jest w stanie mierzyć ruch w dwóch osiach: X oraz Y - ma dwa wyjścia. Napięcie wyjściowe jest proporcjonalne do siły przyspieszenia działającej na przetwornik. Kiedy układ pozostaje w spoczynku, napięcie na wyjściu wynosi około 1,5 - 1,7V. Zmiany napięcia są wychwytywane przez uK. i odpowiednio przetwarzane (szczegóły dalej). Kondensatory podłączone do XOUT i YOUT wpływają na czułość ADXL3U. Im większa ich wartość, tym mniejsza czułość akcelerometru. W ramach eksperymentu można dołączyć inne wartości w zakresie InF - 0,47|iF.
Kilka słów o programie sterującym. Naj
ważniejszą funkcją jest pomiar napięcia na wyjściu czujnika. AVR mierzy je 255 razy i wyciąga z tego średnią, następnie z każdych 40 takich średnich wybierana jest najmniejsza i ona jest prezentowana na linijce diod LED. Zabieg ten ma na celu ukazanie największej
siły w danej jednostce czasu. Po tym cykl się powtarza. Powyższy listing pokazuje pętlę główną.
Warta dodatkowego komentarza jest linia „punktu pracy”. W praktyce okazało się, że czujnik po zmianie płytki niejako się przestawił.
PCBiADCS/SCL) PC44ADC5/SDA) 14^-PC31AUC3) Ki— PC2(AOC2) pcmnr.li
PCOIAOCO) Ks-
OND AREF AVCC PBS(SCK) P&4IMISO) PB3IMOSI/OC2) PB20SS/OC1B) PB1(OC1 A)
Rys. 1 Schemat Ideowy
while (1){
soi(ADCSRA, AOSC); //star- pomiaru
while(biL_i3__clear(ADCSRA, ADIF)){;] //oczekiwanie kcnca //pomiaru
coi(ADCSR, ADIF); //wyzerowanie flaqi pomiaru
licznik++ ; //zaznacz wykonaie kolejnego pomiaru
średnia 4— ADCH ; //dodaj kolejny pomiar
if (licznik==0) { //mamy 255, czas na obliczenia temp = srednia/255; //podziel smume 255 pomiarów //przez 255 - otrzymuje średnia
if(stan>temp){stan=temp;}//zapisz najmniejsza war:, średnia - 0 ; //wyzeruj
licznik_b++; //zaznac2 koLejna, obliczona średnia
)
if(licznik_b — 40){ //gdy bedzie ich 40 {tzn. średnich) scan = stan - 80 ; // punkt pracy stan /-3 ; //dostosuj do linijki LbU zapisz(stan); //prezentacja stan =255; //ustaw max. Możliwa wartość licznik b = 0 ; //liczenie oć początku
58 Wrzesień 2005 Elektronika dla Wszystkich