Arduino 10: MIERZYMY NAPIĘCIA
HTML-код
- Опубликовано: 11 сен 2024
- O mierzeniu napięć przez Arduino. Przetworniki analogowo-cyfrowe wykorzystywane przez potencjometry - intuicyjne i wygodne elementy sterujące, jak również określające położenie części ruchomych.
Kod, na którym bazuje odcinek można pobrać stąd:
adamsmialek.co...
Zapraszam do wsparcia mojego kanału:
patronite.pl/s...
PayPal.Me/smialekadam
oraz do subskrybowania:
www.youtube.co...
#Arduino #potencjometry #analogowocyfrowy
😎👍🖐 Podziwiam, że pomimo długiego weekendu, pojawia się kolejny odcinek! Trzymam kciuki, by oglądających było równie wielu, a nawet więcej niż zazwyczaj! Ale coś mi nos mówi, że dziś będzie niestety skromniej... U siebie też widzę dużo mniejszy ruch...
Łapka w górę w ciemno bez oglądania!
Tak po cichu liczyłem, na to jak zastosować napięcie odniesienia. Ale po deklaracji, że w następnym odcinku będzie o zastosowaniu praktycznym już nie mogę się doczekać.
ciekawy materiał
Dziękuję za kolejny wspaniały materiał,wszystkiego dobrego.
Panie! Toż to siok, jak przyjemnie i rzeczowo przekazane. Więcej proszę :)
Istnieje wiele wspaniałych kursów Arduino. Poza tym polecam książki Pana Piotra Góreckiego traktujące o mikrokontrolerach (i nie tylko) . Warto je poznać nieco bardziej od środka.
Warte uwagi jest to że otwarcie terminala z poziomu IDE restartuje Arduino, sam się nieraz na tym naciąłem :) Więc wbijmy sobie do główek - otwarcie terminala resetuje Arduino.
Szanuję, za dzielenie przez 1024, a nie jak często się widuje, 1023 😉. W ogóle szanuję Pana pracę. Ostatnio zmieniono standard nadawania TV i przez kilka dni jedyne co mogłem odebrać, to programy TVP, a tam tylko odmóżdżające, tureckie seriale. Programów popularno-naukowych praktycznie brak. To właśnie ta misja telewizji publicznej.
Świetny materiał edukacyjny!
dziękuje - pomocne!!!
Jakbym uczyl elektroniki czy elektrotechniki to filmiki pana Adama byly by jako codzienna praca domowa. Informacje edukacyjne na najwyzszym poziomie do tego dobra elokwencja i umiejetnosc przekazywania informacji w przejrzysty sposob
Prawie jak u Adama Słodowego. Czy są transile na 5v ?? Chyba są szybsze ??
Panie Adamie lubię tworzone przez Pana materiały, ale port != wyprowadzenie
W tym przypadku wychodzi na to samo i tak się mówi potocznie.
@ Panie Adamie, owszem wychodzi na to samo, bo słowo jest używane w sposób powtarzalny(równie dobrze sprawdziło by się np. styk), ale takiego argumentu bym się nie spodziewał :) . W potocznym użyciu, w podobnej roli kojarzę "pin", za którego nieużywanie dziękuję. ATMega na, której bazuje Nano używa portów B, C, D, które są czymś innym. Określanie wyprowadzeń w ten sposób może zainteresowanych widzów wprowadzić w błąd przy samodzielnych poszukiwaniach. Naprawdę doceniam treści tworzone przez Pana i dlatego pozwalam sobie na tę uwagę.
Ale w świecie Arduino nie używamy natywnych portów ATMega, tylko po prostu portów 0-13 i A0-A7, jak to też mówią "wyprowadzeń". W zasadzie bez portu 0 i 1. Pin przyjął się bardziej, ale ma dobre, polskie określenie.
Nie 5 mikro woltów a miliwoltow czyli tysięcznych części wolta
Zgadza się, przejęzyczenie (ale w napisach już jest dobrze).
Czy jest możliwość takim potencjometrem. Wysterować czułość (próg zadziałania) MPU6050? MPU ma działać jako czujnik wstrząsu. Nie znalazłem nigdzie takiego rozwiązania.
Dane z potencjometru mają dziesięciobitową rozdzielczość (w praktyce ośmio-dziewięcio, po eliminacji stanów niestabilnych). Mamy zatem taką zmienną, której możemy już użyć do dowolnych celów, jakie sobie wymyśli twórca urządzenia. Zawsze też można tę daną rozciągnąć na niewielki przedział np. przy regulacjach progu zadziałania, a użycie dwóch potencjometrów może zrealizować prosty zespół "zgrubnie/dokładnie".
Pozdrawiam.#
Jak zmierzyć napięcie za pomocą wejścia Analog jeżeli mierzone napięcie jest jednocześnie źródłem zasilania płytki? Przedstawiona metoda zawsze da pomiar 1023 (docelowo mój projekt ma być na samej atmedze nie arduino).
Potrzebujesz mierzyć napięcie odniesienia. Np źródełko na 1,25V. Bo rozumiem, że dla przetwornika odniesieniem jest napięcie zasilania. Przy 5V przetwornik mierzący te 1,25 da Ci odczyt 1023/4. Zatem wynik pomiaru musisz przeliczyć. Uzas/Uref=1023/wynik pomiaru
Zawsze będzie wynik maksymalny równy 1023, tylko przeliczać będzie się w zależności od napięcia odniesienia. Można korzystać z wewnętrznego 1,1 V albo dołączonego do AREF (ale nie większego niż 5 woltów). Bez deklaracji źródła jest nim napięcie zasilające, co daje wyniki najmniej dokładne.
Skoro już mamy porządny miernik, to można było programowo skalibrować zbudowany na Arduino miernik. Sprawdzić ile analogRead() pokaże dla 0V i tyle zawsze odjąć, sprawdzić ile analogRead() pokaże dla 5V I odpowiednio dostosować mnożnik (5/1204). O ile oczywiście zależy nam na pomiarze voltów, a nie pozycji potencjometru.
Nie tędy droga, najpierw należałoby podłączyć referencyjne źródło napięcia, ponieważ domyślny sposób jest niestabilny. Ale o tym za jakiś czas.
Czasami podłącza się do wejść przetworników A/C przyciski (przez rezystory dzielące napięcie).
To popularny sposób na podłączenie kilku przycisków jednym przewodem (plus masa) bez angażowania elektroniki czynnej. Uprawiany często w pilotach przewodowych na kablu słuchawkowym.
Chciałem podłączyć do PCF8574 wiele diod świecących Ale okazuje się że natężenie podawane na pinach to mniej niż 20mA. Czy można jakoś podnieść ampery? Żeby podłączyć więcej niż jedną diodę np 4. Za pomocą diod czy tylko pozostaje przekaźniki podłączyć? Z innej beczki , za pomocą diód można do jednego gpio analogowego podłączyć więcej urządzeń. Trzeba tylko po kolei włączać napięcie urządzeniom. Bardzo dziękuję.
O podłączaniu dużych obciążeń będzie niebawem.
@ Bardzo dziękuję za materiały i będę czekać.
Po prostu podłączyć odwrotnie. Pcf ma prąd wsteczny rzędu 60mA. A tak to chyba 40uA. Można też zastosować mosfet na wyjściu.
@@polskizwiazeknaczelnychhej1100 Działa doskonale :) No ale i tak muszę ogarnąć rozdzielenie zasilania nodeMCU plus ledy na 5V i silników L239D na 9V z pakietu 18650x4 połączonych szeregowo. Jeszcze pasuje mi podłączyć do tego ładowanie. Kłaniają się podstawy elektroniki. Ale rozgryzanie tego jest fascynujące. Dziękuję.
Jedne źródła podają żeby napięcie mierzone liczyć tak:
V=N*Vref/1023
Inne znowu tak:
V=N*Vref/1024
Jeszcze inne tak:
V=(N+0.5)*Vref/1024
I jak tu nie zgłupieć z tym wszystkim?
Generalna zasada uniwersalna brzmi: odczytany ułamek z całości razy napięcie odniesienia. Jeśli odczytujemy 319, a całość obejmuje 1024 przedziały, to 319/1024 razy 5 woltów (w programie jest ten wzór przekształcony).
Trzeba jeszcze pamiętać, że stosujemy tutaj uproszczenia, zaokrąglając całość w dół (wynik może osiągnąć 0V, ale nigdy nie osiągnie 5V), więc teoretycznie należałoby dodać do wyniku połowę działki, czyli tutaj 5V/2048, ale biorąc pod uwagę marną dokładność pracy bez napięcia referencyjnego, to nie ma sensu. Zresztą i z referencyjnym dokładność całkowite jest chyba niższa niż dziesięć bitów i w przypadku jego doboru (wewnętrzne to też nie dokładnie 1,1V, gdyż zakładana jest pewna tolerancja) należy po prostu do wzoru przeliczającego dopisać dodatkowe współczynniki po zmierzeniu rzeczywistych wartości dobrej klasy miernikiem.
@ Z tego co czytałem to +/- 2 LSB. Używam dwóch mierników, DT-830B oraz analogowego YX-360TR i nie wiem czy jest jakikolwiek sens cokolwiek porównywać przy ich użyciu. W każdym razie dokładnych mierników bym na Arduino nie budował, choć ciekawą rzeczą jest możliwość oversamplingu w celu zwiększenia rozdzielczości aż do 16 bitów kosztem 4096 pomiarów z sygnałem randomizującym, dzięki czemu udało mi się nawet odczytać sygnał z termopary typu K.
A poza przypadków robienia multimetru o wysokiej dokładności z Arduino w praktyce znajdziemy niewiele. Nawet gdy trzeba liczyć minimalnie zmieniające się wartości, wystarczy narzucić offset i rozciągnąć skalę powiedzmy ośmiobitową na zakres przewidywanych zmian. W każdym razie do wszelkich potencjometrów nawet proste pomiary jak w filmie wystarczają aż za dość.
@@daro0352 Nawet wynik 8 bitowy (po odrzuceniu 2 LSB) i rezygnacji z oversamplingu to dokładność 0.5% - wystarczająco dużo do większości amatorskich i połprofesjonalnych zastosowań. A rakiet kosmicznych nikt na tym i tak nie buduje. Adam dobrze temat opisuje.
A jak ktoś chce na popularnym i tanim 10-bitowym ADC budować dokładny miernik ...to sam sobie wystawia świadectwo.
Wzór zależy od pojętności majstra. Jak ktoś nie myśli to kopiuje bezmyślnie co znajdzie w necie 🤪
Mylisz posty rownoległe z szeregowymi. USB jest szeregowe, a w 5:06 pokazaleś porty równoległe.
Zdjęcie z 5.06 pokazuje przede wszystkim RS232, zwane tutaj COM-em i ilustruje zdanie "dziś komputera z takimi portami już właściwie nie znajdziemy" :) USB jest szeregowe, ale ciężko go traktować w ten sposób wprost.
Kolejny super poradnik!
Pytanie: jak zmierzyć napięcie przemienne? Da się?
Każdy współczesny multimetr mierzy wszystko, sprowadzając wartości do napięć stałych, więc da się na pewno :)
@ to, to oczywiście wiem wiem ;) ale jak ma się sprawa z Arduino?
Można jak w starych multimetrach: prostownikiem, można też ograniczyć zakres do 5 woltów i przesunąć oś symetrii na poziom 2,5 wolta (dzielnikami z rezystorów), o ile zasilanie Arduino nie ma nic wspólnego z napięciem mierzonym - tak będzie bardziej liniowo. I pewnie jeszcze na kilka sposobów.
@@eRBartek Zależy od częstotliwości. Dla 50Hz będzie OK, ale przy dużej częstotliwości okaże się, że wejścia analogowe są za wolne. Dodatkowo wspomniana rozdzielczość 10bit może być czasem nieco mała. Nie wszystko stracone ponieważ istnieją układy ADC komunikujące się po np. i2c które do Arduino można w miarę prosto podłączyć.
@@bartoszcelmer właśnie chodzi mi o pomiar napięcia z przekładnika prądowego przez który bedzie zasilane z sieci urządzenie. Nie musi to być pomiar dokładny co powtarzalny.
Ciekawe ale 9:00 małe bubu, czy aby na pewno +10V można podłączyć do GND ? :)
Ale to inne +10V przez separację galwaniczną :)
No właśnie po to jest zabezpieczająca dioda Zenera, która w tą stronę pracuje jako zwykła dioda. Ściślej - troszkę wyższe napięcie się na niej odkłada (zwykle 0,8V) wobec deklarowanej maksymalnej (0,5V), ale raczej układ to przeżyje. Oczywiście ujemnego napięcia nie zmierzymy, to jest sytuacja awaryjna, gdy ktoś pomyli bieguny.
Raz można nawet i bez diody. To jak z patrzeniem w laser, można dwa razy. Raz jednym raz drugim okiem.
@ o coś innego chodziło koledze. Na płytce jest GND i bezpośrednio +10 zresztą -10V też by było źle. U góry powinna być cały czas masa a na dole +/-10V
A to zasilanie układu to inna inszość. Odwrócenie polaryzacji wyśle go do aniołków. Generalnie to ja bardzo nie polecam zasilania układu z wyższego napięcia niż 7-8 woltów (oczywiście mowa o wejściu VIN), bo na tych chińskich wersjach nano stabilizatory te łatwo padają.
Witam.
Jak zwykle materiał świetny i wspaniale zaprezentowany. Chcę więcej!
ALE
Wgrałem program z udostępnionego źródła do mojego A. UNO, i nie kompiluje się.
Dopiero po przełączeniu w ustawieniach edytora na NANO kompiluje się, no ale oczywiście nie mogę go wgrać do UNO.
Oniemiałem.
Pozdrwiam
Źle napisałem. Nie wgrałem do UNO, bo się nie da. Wgrałem do edytora ustawionego na UNO, i wtedy się nie kompiluje.
Po przestawieniu na NANO , kompiluje się.
Uno nie akceptuje A6 i A7 z tego co pamiętam, ale tu takich nie ma. Poza tym różnic brak (pojawią się przy wgrywaniu dopiero). Szczerze powiedziawszy, to nigdy UNO nie miałem, od razu te małe, Mega i na nie Atmelach.
@ Będę drążyć temat. Tego nie można tak zostawić. Dam znać o wynikach dochodzenia. Pozdrawiam.
Mam to !
Otóż działając rutynowo, kliknąłem w pobrany plik "arduino_mierzy_napiecia.ino", a ten uruchomił edytor, i tam się otworzył. Przed kompilacją edytor zapisuje plik, ale ponieważ ja po instalowaniu na nowo WIN10, jeszcze nie założyłem katalogu dla plików Arduino, ten plik zapisał się gdzieś w temp-ach. W efekcie edytor nie umiał go odnaleźć i skompilować.
Warto przed rozpoczęciem pracy założyć na dysku katalog dla plików Arduino, i wskazać go w preferencjach
Plik/preferencje/ustawienia/lokalizacja szkicownika.
Tak mi to wygląda na chwilę obecną.
Pozdrawiam
Zaczynam dopiero swoją przygodę z Arduino stąd moje może banalne ptanie. Jak zaokraglic wartość napięcia do jednego miejsca po przecinku?
@@potupecznikmrukowski3772 Dzięki, będę próbował.
@@potupecznikmrukowski3772 Wszystko działa ale mam kolejny problem. Załóżmy że chcę wyświetlić napięcieV z jednym miejscem po przecinku co jest w miarę proste. Ale... potrzebuję wartości tego napięcia do dalszych obliczeń i to właśnie z dokładnością jednego miejsca po przecinku. Jak sprawić żeby "napięcieV" było faktycznie wartością z jednym miejscem po przecinku a nie tylko taka wartośc była wyświetlana?
No dobra, ale jak zmierzyć napięcie wyższe np. 48V? Pozdro.
Za pomocą dzielnika napięcia i napięcia odniesienia.
@@polskizwiazeknaczelnychhej1100 Ewentualnie transformatora dla AC
Popsułem komuś zabawę?
Nie. Rozgość się. 😄
zupełnie nie rozumiem skąd ten ekstrawagancki pomysł robienia filmów o rzeczach, których nie było w PRLu! 😅
Bo to praktyczne, a nie modne :)
Łatwiej robić film o rzeczach, których nie było w PRL, niż film o rzeczach, które były w PRL, a już ich nie ma (n.p. prawdziwa szynka).
Opowiem Wam kawał o napięciu...
Na pięciu napadło dziesięciu.
Ciekawostka, zapis "5.0" oznacza double a nie float. Na 8bit AVR to i tak nie znaczenia, bo tam nie ma double (bo to tak na prawdę float), ale tam gdzie double jest, cała operacja będzie wykonana jako operacja na double (aka "dodanie zbędnego kodu obsługi operacji na double") a potem skonwertowana do float. Float to formalnie "5.0f". ;)
Oczywiście, tylko w Arduino jest uproszczone (acz nie do końca, bo niektóre klony mają podwójną dokładność). Z tego powodu nie zrobi się sensownego kalkulatora na Arduino.