Skocz do zawartości

Pomiar napięcia przez Arduino - szum na wejściu


PAJ123

Pomocna odpowiedź

Witam, Mam problem z pomiarem napięcia a mianowicie zanim podłączę baterię - tak jak jest opisane w poradniku to już w terminalu pojawiają się napięcia z zakresu od 0,20V do nawet 2V. Przy podłączonej baterii napięcie się stabilizuje jednak chciałbym wyeliminować te śmieciowe odczyty. Możecie coś podpowiedzieć? Arduino UNO zasilane z USB.

screen1.jpg

Link do komentarza
Share on other sites

Przede wszystkim pokaż w jakim układzie to mierzysz. Wejście ADC nigdy nie może zostawać niepodłączone, zawsze musi być jakiś obwód który nim steruje. No i niebezpiecznie jest podłączać baterię (czy cokolwiek) wprost do delikatnych wejść mikrokontrolera. Jeżeli nie chcesz mieć odczytów "z powietrza", to zapewnij odpływ ładunków i mikroprądów do masy przez wstawienie opornika np. 100k od wejścia ADC do GND. Powinieneś też w jakikolwiek sposób zabezpieczyć pin przed spaleniem, np. przez opornik szeregowy 1k. W sumie najlepiej, gdybyś zrobił na wejściu dzielnik rezystorowy, bo to załatwia obie te sprawy za jednym zamachem a jednocześnie ustawia zakres pomiarowy na dowolny (większy) a nie tylko taki, jaki wynika z użytego napięcia referencyjnego.

 

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Już mi się udało podłączyłem na stałe źródło napięcia, wygląda na to że wejście analogowe nie podłączone wariuje.

Teraz mam kolejną sprawę, szukam algorytmu/funkcji za pomocą zamienię napięcie wejściowe na sterowanie przekaźnikiem ma to wyglądać tak: przy napięciu 0,3V przekaźnik ma się załączać na 1s co 10s i linowo podnosząc napięcie ma się zmniejszać czas przerwy (z 10s do 1s).

Edytowano przez Treker
Poprawiłem formatowanie.
Link do komentarza
Share on other sites

No ale zapewne pamiętasz z podstawówki to, że aby jednoznacznie określić oba współczynniki funkcji linowej to potrzebujesz co najmniej dwóch punktów. Musisz zatem podać czas dla napięcia minimalnego i czas dla napięcia maksymalnego. Czekamy na cztery liczby, trzy (tj. 0.3V, 1s i 10s) nie wystarczą. Brakuje jeszcze jednego napięcia.

  • Lubię! 1
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

Wiem, że się czepiam, ale po pierwsze czy ta dyskusja na pewno ma związek z kursem Arduino? Może jednak lepiej tego typu wątki umieszczać w oddzielnym temacie?

A druga sprawa to jakaś epidemia programowania deklaratywnego. Nie wiem co się dzieje, ale teraz wszyscy programują pisząc na forum co by chcieli żeby ich program robił i liczą, że to się automagicznie zmieni w program. Masakra jakaś - chociaż to widocznie działa skoro tyle tematów sprowadza się do takiego podejścia 😞

  • Lubię! 1
Link do komentarza
Share on other sites

Masz rację Elvis, to ciekawe podejście i faktycznie działa więc nie dziwię się ludziom. O godzinie 16, po wyjściu ze szkoły zapominają po co tam byli - to przecież nuda i same bzdety, nos w smartfon i filmiki z YT. A gdy zobaczą coś fajnego, po prostu chcą to mieć. Wrzucają pytanie w kilka miejsc i proszę, po chwili jest odpowiedź. Nie ma to jak Arduino 🙂

PAJ123, poniższe równanie prostej  pewnie poznasz po kombinacji liter do której rozpoznania wystarczy prosta sieć neuronowa a cóż dopiero mózg:

y = A*x + B

gdzie y to czas który chcesz policzyć, powiedzmy, że wyrażony w milisekundach,

x to wynik z pomiaru ADC przeliczony na miliwolty,

A i B to współczynniki jakich szukasz.

Podając dwa punkty na prostej, czyli (350, 10000) i (2900, 1000) możesz  jednoznacznie określić A i B:

A = (y1-y2)/(x1-x2)

oraz

B = ((x1*y2)- (x2*y1)) / (x1-x2)

a to w prostej linii (nomen omen) prowadzi do:

A = -3.53

B = 11235

Teraz wystarczy, że:

a. Napiszesz pomiary napięcia i będziesz ich wyniki oddawał w [mV]. My nie znamy Twojego Vref więc nie możemy tego zrobić.

b. Przeliczysz wg właśnie wyznaczonych współczynników napięcie na czas wg równania prostej.

c. Napiszesz kawałek kodu generujący PWM o zadanym czasie wyłączenia liczonym w [ms] i stałym czasie włączenia.

Proste, prawda? 🙂 Powodzenia.

EDIT: Mam nadzieję, że te kreski przed napięciami jakie podałeś to tylko taki ozdobnik artystyczny a nie rzeczywisty znak minus, bo to wszystko zmienia. Także sposób podłączenia ADC do źródła tego sygnału. Nigdy nie umieszczaj takich myślników przed liczbami. Rozumiesz, prawda?

Edytowano przez marek1707
  • Lubię! 1
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.