Skocz do zawartości

Zliczanie czasów rozwartych obwodów


z1em

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!

 

Link do komentarza
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. 

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

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
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.