Skocz do zawartości
z1em

Zliczanie czasów rozwartych obwodów

Pomocna odpowiedź

Witam szanowne forum,

na wstępie tego postu chcę powiedzieć, że dopiero rozważam zakup zestawu podstawowego Arduino forbota, a co za tym idzie jestem zupełnie zielony 😉.

Szukałem na forum i nie znalazłem, a mam do rozwiązania pewien problem. Czy z Arduino uda się rozwiązać następującą sprawę:

Potrzebuję skonstruować system, który by liczył czas rozwarcia obwodów, a następnie żeby można było odczytać wyniki na PC.

Wypiszę najważniejsze dla mnie funkcje takiego systemu:

-5 niezależnych linii z kontaktronami 

-z każdej linii musi być osobno liczony czas przerwania obwodu (wystarczy dokładność do 1s; z założenia może być tylko jeden rozwarty obwód jednocześnie)

-po zakończeniu sesji musi być możliwość odczytu i zapisania wyników (najlepiej bezpośrednio na PC) 

Przykładowy wynik na końcu:

Kontaktron 1: 1s

Kontaktron 2: 2s

Kontaktron 3: 4s

Kontaktron 4: 8s

Kontaktron 5: 16s

 

 

Z góry dziękuję za wyrozumiałość i informację czy coś takiego uda się uzyskać z podstawowego Arduino, a jeżeli nie to jakby Państwo do tego podeszli?

 

Pozdrawiam!

 

Udostępnij ten post


Link to post
Share on other sites

a) da się

b) zacząłbym od kursu Arduino na Forbocie

Czy taka informacja wystarczy?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

No jeszcze bym się zastanowił nad sposobem odbioru tych danych przez PC - własny program, jakieś gotowe narzędzie?

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, ethanak napisał:

a) da się

b) zacząłbym od kursu Arduino na Forbocie

Czy taka informacja wystarczy?

Dziękuję, w tym momencie taka odpowiedź zupełnie wystarczy i właśnie celuje w ten kurs. 

 

1 godzinę temu, Belferek napisał:

No jeszcze bym się zastanowił nad sposobem odbioru tych danych przez PC - własny program, jakieś gotowe narzędzie?

Jeszcze tego problemu nie rozważałem tak dokładnie. Po bardzo wstępnym zaznajomieniu się ze środowiskiem liczę na to, że program Arduino IDE da chociaż możliwość wyświetlenia wyników na monitorze szeregowym. 

Udostępnij ten post


Link to post
Share on other sites

Cześć,

prosto możesz to zrobić korzystając np. z bibliteki "Timer1" lub "Timer3" dla Arduino. Możesz sobie ustawić, co jaki czas ma być wywoływana procedura obsługi przerwania timera i w tej procedurze sprawdzać, czy piny zwarte, czy nie i inkrementować odpowiednie liczniki.

Tutaj masz taki prosty szkielet programu (nie piszę całego kodu , aby nie psuć Ci radości z tego, że zrobiłeś coś sam):

#include "TimerThree.h"

const int PulsePin = 2;

void setup()
{
  pinMode(PulsePin, INPUT);
  
  Timer3.initialize(20);            // initialize timer3, and set a 20 us second period
  Timer3.attachInterrupt(tim3Callback);  // attaches callback() as a timer overflow interrupt
}
 
void tim3Callback()
{
  //Tu sprawdzasz stan pinów i inkementujesz liczniki, oraz kończysz pomiar
}

void loop()
{
  //Tu np. ustawisz zmienną która rozpoczyna pomiar
}

A tutaj linki do biblioteki:

https://playground.arduino.cc/code/timer1

https://code.google.com/archive/p/arduino-timerone/

Oczywiście możesz zmieniać rozdzielczość pomiarów (czas co jaki jest wywoływane przerwanie od timera), oraz sposób dołącenia styków kontaktronu (możesz wykorzystać np. wewnętrzne rezystory PULLUP Arduino - zmieniasz wtedy typ wejścia na: INPUT_PULLUP a kontaktron podłączasz do masy). Jest też wiele innych bibliotek do obsługi timerów w Arduino.

Pozdrawiam

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

A nie lepiej skorzystać z obsługi przerwań zewnętrznych?

Udostępnij ten post


Link to post
Share on other sites

Cześć,

oczywiście można (z tym, że dostępnych jest tylko kilka pinów - różnych dla różnych wersji Arduino). Jak najbardziej jest to do zrealizowania.

Pozdrawiam

Udostępnij ten post


Link to post
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!

Gość
Napisz odpowiedź...

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