Skocz do zawartości

Problem z pomiarem długości impulsu Arduino Nano i pikami wysokiego napięcia


1234

Pomocna odpowiedź

 

Cześć!

Ostatnio próbuje zrobić prosty miernik indukcyjności. Wzorowałem się na  tym  poradniku. Z pozoru wydawaje się, że prosty projekt, ale rzeczywistość zweryfikowała. Ze względu na funkcje pulseIn pomiar nie jest za precyzyjny. Sygnał wejściowy do arduino ma stan wysoki, a gdy oscylator LC zaczyna oscylować pojawia się kilka impulsów stanu niskiego i wysokiego. Mierzę długość trwania pierwszego wysokiego impulsu i mnoże go przez 2, aby otrzymać okres, który zamieniam na częstotliwość. Tylko, że pulseIn ma rozdzielczość 1uS i nie wiem jak inaczej to zmierzyć z większą dokładnością. Próbowałem różnych kodów i bibliotek (FreqCounter też). Podawałem nawet zwykły sygnał prostokątny kilkaset Hz i wyniki były dalekie od rzeczywistości, albo wogóle ich nie było. Próbowałem też z timerem1, ale nie wyszło. Szukałem dużo w internecie i jedyne sensowne projekty tego typu mierników były na mikrokontrolerach PIC, a narazie średnio mi się widzi kupowanie PICKita i uczenie się zupełnie nowego środowiska. Dodam, że przewiduje maksymalną częstotliwość oscylatora na ok 200kHz, nawet kilkanaście kHz mniej.

I tu moje pytanie, a tak właściwie kilka. Jak to zmierzyć, czego użyć? Może zmienić coś w układzie pomiarowym? Bardzo proszę, żeby ktoś pomógł jeżeli wie, bo już długo nad tym siedzę.

A i tak przy okazji jak pozbyć się wysokonapięciowych pików napięcia, gdy podłącze cewkę o dużej indukcyjności? Przy użyciu dwóch diod, które by obcinały napięcie powyżej 0.7v? Zmniejszyć czas ładowania kondensatora?

Do dyspozycji oprócz zwykłego multimetru mam jeszcze co prawda raczej zabawkowy, ale oscyloskop - DSO138, jeżeli byłaby potrzeba sprawdzenia przebiegu. Od razu dodam, że częstotliwość którą oscyloskop pokazuje zgadza się z wyliczeniami dla testowanej cewki.

Z góry wielkie dzięki za każdą pomoc  

Link do komentarza
Share on other sites

32 minuty temu, 1234 napisał:

Tylko, że pulseIn ma rozdzielczość 1uS i nie wiem jak inaczej to zmierzyć z większą dokładnością

A jaka dokładność jest potrzebna? Bo ta 1 µs to nawet nie teoria (o ile pamiętam - nie chce mi się zaglądać w różne zakamarki internetu - to 4 µs). Bezpośrednio na Arduino raczej większej dokładności nie osiągniesz.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Jak teraz sprawdziłem to różnica pomiędzy okresem oscylatora z cewką 998uH i 999uH (a chciałbym chociaż zakres 1-999uH) to jedyne około 0,1uS. Żałuje, że nie przeliczyłem tego wcześniej to nie próbowałbym tak długo z arduino, widocznie AVRy muszę porzucić. Myślisz, że taki STM32F103C8T6 dałbym sobie radę, bo jak patrzę po znanym serwisie aukcyjnym to ceną na podobnej płytce co arduino nano bardzo nie odbiega, tak samo jak STlink?

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.