Skocz do zawartości

Fotobramka [laser + fotorezystor] + przerwania (TIMER?)


soap

Pomocna odpowiedź

Witam wszystkich!

To mój pierwszy post na tym forum, zatem witam wszystkich 🙂 Przejdź my od razu do rzeczy...

Jakiś czas temu zacząłem zabawę z Arduino i to, co potrzbuję w tym momencie wykonać, to fotobramka, a raczej kilka fotobramek na jednym układzie. Do tej pory wykonałem jedną taką bramkę optyczną składającą się z lasera i fotorezystora.

Docelowo 3 fotobramki będą miały odliczać czas (stoper) p oprzerwaniu wiązki lasera, a wyniki mają być przesyłane za pomoca Bluetooth na smartfona (Android).

Aby poprawnie wszystko stworzyć, czyli trzy fotobramki podłaczone do jednej płytki, polecono mi zastosowac przerwania. Póki co stworzyłem kilka prostych programów (przerwanie po zmianie stanu diody, przerwanie co 1 sek i zaświecenie diody), jednak nie mam za bardzo pomysłu, w jaki sposób zmienić mój obecny kod, aby fotobramka działała przy użyciu przerwań - i przy użyciu jakich przerwań ma to działać.

moja fotobramka wygląda mniej więcej tak:

LINK

Pozdrawiam wszystkich! 😃

Link do komentarza
Share on other sites

Zanim zaczniesz kombinować z przerwaniami, napisz co chcesz zrobić. Tak, wiemy, stoper. Ale ważne są rozdzielczości i (trochę mniej) długości mierzonych czasów. Chyba rozumiesz, że inaczej podchodzi się do pomiaru czasu 1.237ms r rozdzielczością 1us a inaczej do zabawy w samochody RC, gdzie robisz okrążenie w 17 sekund i 0.01s jest w zupełności wystarczające.

Napisz kilka liczb oraz jak widzisz ten system w całości. Co masz jeszcze podłączone, czy będziesz na bieżąco pokazywał upływający czas w trzech kanałach na jakimś wyświetlaczu (jakim?) czy tylko wynik po zakończeniu itd.

Czyli standard: chcesz sensowną poradę, musisz opisać swój projekt w całości: sprzęt i co dokładnie ma robić. Inaczej dostaniesz blablabla.

Link do komentarza
Share on other sites

Czas mierzony będzie głównie w sekundach, wiec rozdzielczości moga być wyzsze, wspomniana 0.01 jest wystarczająca.

W przyszłości będę chciał sprawdzić czas, z jakim pewna rzecz poruszać się będzie z punktu A do punktu B. Nie wiem jeszcze, czy będę podłączał jakieś inne moduły. Na pewno Bluetooth.

Czas ma być wyświetlany zdalnie, na ekranie telefonu (aplikacja na androida). Pokazywany będzie bieżący czas oraz wynik.

Jednak jak na razie skupiam się w ogóle na stworzeniu jednego takiego optycznego stopera przy pomocy przerwań (na razie na monitorze portu szeregowego) - i dopiero potem podpiąć kolejne, stworzyć aplikację i pokazywać na niej wyniki.

Link do komentarza
Share on other sites

"będę chciał sprawdzić czas, z jakim pewna rzecz poruszać się będzie z punktu A do punktu B"

No mniej więcej na tym polega działanie stopera, tego się domyślaliśmy. Szczegóły są tajemnicą? Dziwne to gdy pytasz o porady na forum publicznym, ale spróbuję nie dociekać. Równie dobrze mógłbym napisać, że moja wiedza jest podobnie cenna i zniknąć z tematu, ale nie martw się, początkujący tak mają, może kiedyś Ci przejdzie i się wygadasz. Wiesz, chodzi oto, że inaczej projektujesz program mający mierzyć mikrosekundowe przejście pocisku między dwoma fotokomórkami a inaczej zjazd autobusu do bazy po zakończeniu zmiany. To nie jest tak, że jedno i drugie zrobisz tak samo "na przerwaniu" a potem się pomyśli.

Proponuję taki plan:

1. Znajdujesz dobrą książkę lub po prostu kartę katalogową procesora użytego w Twoim Arduino. Możesz zacząć od przeczytania na jego obudowie jak się nazywa.

2. Czytasz rozdział o przerwaniach zewnętrznych. Dowiadujesz jakimi wejściami przerywającymi dysponuje ten procesor, w jakiej ilości i czy to wystarczy dla Twojej aplikacji. Możesz założyć, że jedna fotokomórka to jedno wejście. Znajdujesz rozdział o przerwaniach od zmian stanu pinów - to osobna rzecz i rozkminiasz to. Jak to działa, jakie ma rejestry i jak to widać od strony programu.

3. Czytasz o timerach, w szczególności o ich trybach pracy. One nie mogą mierzyć bardzo długich czasów no i jest ich tylko kilka, więc tutaj też wiele zależy od długości czasów, jednoczesności pomiarów w kilu torach itp. Najprawdopodobniej będziesz musiał skorzystać z trybu CTC i jednego wspólnego timera dla wszystkich stoperów jako odmierzacza równiutkich kwantów np. 10ms (czyli 100 razy na sekundę). Musisz dowiedzieć się o tym jak taki timer ustawić w żądany tryb by zgłaszał Ci upłynięcie takiego kwantu czasu i jak podpiąć się do jego przerwania swoją funkcją. Poczytaj o preskalerach i ustawianiu okresu.

4. Dokładnie zastanawiasz się jak to urządzenie będzie działało z punktu widzenia użytkownika.

Masz trzy tory i sześć bramek? Trzy startowe i trzy końcowe? Czy aktywacja dowolnej startowej zaczyna pomiar na tym torze a sygnał z końcowej kończy? Jakie to będą czasy? Bo jeśli np. 0.25s to nie ma sensu zastanawiać się jak w czasie trwania pomiaru możesz wysyłać dane na smartfon skoro nic nie zdążysz wysłać. A jeśli masz na pomiar np. jakieś minuty, to wtedy zliczanie musi odbywać się w tle, by system był responsywny na przyciski. Co one mają robić? Czy będzie osobna blokada torów, czy jakieś guziki KASOWANIE/START, pomiary kolejnych okrążeń itp.

Piszesz to wszystko tutaj plus swoje wnioski: które wejścia przerywające chcesz wykorzystać, który timer i jak itd. Poczytamy, zobaczymy co wymyśliłeś i ew. skorygujemy błędy lub złe decyzje. Masz pole do popisu i szansę na zdobycie mnóstwa wiedzy, ale to Twój projekt, my poobserwujemy z przyjemnością. Powodzenia 🙂

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

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.