Skocz do zawartości

Ćwiczenia z Arduino nano, zagadnienia, problemy.


Pomocna odpowiedź

(edytowany)
8 godzin temu, ethanak napisał:

pisałeś że "skoro uno widzi to i z nano nie powinno być problemu"

Oczywiście, ponieważ Uno i Nano są w IDE instalowane podstawowo i automatycznie wraz z instalacją Arduino IDE. A że IDE nie widzi portu COM Nano to insza inszość.

1) W pierwszej kolejności należy podłączyć Nano do PC oraz sprawdzić listę aktualizacji, czy chociażby przejrzeć menedżera urządzeń pod kontem drivera komunikacji szeregowej. 2) Sprawdzić który numer portu COM przypisała winda. Jeżeli większy niż 10 zmienić na numer w zakresie do 10 z pominięciem numerów portów sprzętowych. Nie wiem jak jest w IDE Arduino, ale miałem w przeszłości przypadki w których apka nie widziała portów COM powyżej 10.

Edytowano przez rafal220

Spokojnie jakoś to obejdę. Tak naprawdę to chciałem kupić same uC Atmega328 a moja piękność coś taniego znalazła ... Jak sam nie zrobisz to w 90 % są takie efekty.  Lenistwo nie popłaca.

(edytowany)

Jak Nano to może być również CP2102 albo FT232.

Nie wiem jak pod innymi systemami, ale pod Linuxem poleceniem lsusb.

Edytowano przez ethanak

Ponieważ ESP stosunkowo szybko zasuwa z odczytem ADC postanowiłem sobie jeszcze zrobić funkcję uśredniającą którą później rozbuduję do docelowej funkcji realizującej pomiar z wybranych portów ADC. Na razie wygląda to tak;

void pomiarADC_AND_konwersja(int iloscProbek) {

  static long usrednionyPomiarNapiecia = 0;
  static int i0 = 0;

  usrednionyPomiarNapiecia += analogRead(A4);
  i0++;

  if (i0 >= iloscProbek) {
    napiecie = usrednionyPomiarNapiecia / iloscProbek;
    usrednionyPomiarNapiecia = 0;
    i0 = 0;
  }
}

Czy wyliczana średnia dla zmiennej globalnej "napiecie" jest technicznie prawidłowo realizowana? Mógłbym dorzucić jeszcze jedną funkcję która by określała co ile (ms) byłby odczytywany pomiar z ADC, ale myślę, że w zależności od tego ile pętla będzie trwać +/- wpisanie ilości próbek do wyliczenia średniej powinno wystarczyć. Wiem że fachowo powinno się to realizować w pętli for, ale te ESP tak szybko się kręcą, że chyba sposób j.w. będzie wygodniejszy.  Ponadto próbkowanie/ wyliczanie średniej w pętli for będzie spowalniać pętlę główną.

1 godzinę temu, rafal220 napisał:

Na razie wygląda to tak;

Gdybyś czytał dokumentację nie byłoby potrzebne kolejne wynajdywanie koła - podobna funkcja jest opisana w dziale "przetwornik ADC" oficjalnego dokumentu Espressifa. Dodatkowo jest tam coś jeszcze... a na to nie wpadłeś.

Poza tym jeśli chcesz odczytać napięcie to nie stosujesz analogRead() bo przetwornik w ESP32 wcale nie jest liniowy, istnieje funkcja pozwalająca przeliczyć ten pomiar na miliwolty... ale kto by tam dokumentację czytał.

31 minut temu, ethanak napisał:

Poza tym jeśli chcesz odczytać napięcie to nie stosujesz analogRead() bo przetwornik w ESP32 wcale nie jest liniowy, istnieje funkcja pozwalająca przeliczyć ten pomiar na miliwolty..

W PDF doczytałem się tego, że ref może mieć różne wartości i potrzeba kalibracji ADC. Jeżeli faktycznie ADC nie jest liniowe, to możesz polecić jakąś bibliotekę pod Arduino? (względnie wzór) Bo polecenia które są w dokumentacji ESP jakoś nie działają w IDE Arduino. Bynajmniej to co tam piszą mało mi mówi odnośnie fizycznego zastosowania w Arduino. Krucze pierwsze słyszę o nieliniowości ADC. Zazwyczaj przelicza się to względem Vref, ale sam przetwornik jest liniowy tylko jego zakres może być przestrzelony w lewo albo prawo xd.

@ethanak Jak masz coś ciekawego, to powiedz. Ja na razie kończę tą kanapkę, bo chcę to zdać do końca tygodnia. >> Pomijając fakt, że mam na nowo robić koło kalibracji i przeliczeń mV/ A/ mA  ADC w kodzie na razie dokonam manualnie. 

1.thumb.jpg.22316bd6e49f145c4fc228b39c11cd14.jpg2.thumb.jpg.2c722a4835e8dbe8c22c6b3fff24380e.jpg

Usmarkane pisakiem, ale ważne aby nie było innych problemów technicznych. Przekaźnik jak widać jest już odpowiedni. 🙂

21 minut temu, rafal220 napisał:

przeliczeń mV/ A/ mA  ADC w kodzie na razie dokonam manualnie. 

 

A wiesz jak? Bo wątpię. A w dokumentacji jest wszystko ładnie opisane...

24 minuty temu, ethanak napisał:

A wiesz jak? Bo wątpię.

Przecież to już mi przelicza na 0,0V i 0,00A. Robi się dokładnie tak samo jak w klockach lego (tam chyba wcześniej wstawiłem kod z użyciem funkcji map). Ale faktycznie odczyt jest nieliniowy i raczej nic z tym nie zrobię. Charakterystyka jest poszarpana i bez użycia tablicowania nic z tym nie zrobię. W tym przypadku akurat aż takiej dokładności nie potrzebuję, ale ADC nie jest mocną stroną ESP. Lepiej kupić S3 i dołączyć jakiś przetwornik zewnętrzny. XD Można dodać ew. jakieś współczynniki korekcyjne które i tak będę musiał dodać z innych powodów.

@rafal220 przecież każdy egzemplarz esp32 jest fabrycznie kalibrowany, wystarczy to zastosować i dostajesz napięcie w mV. I nie drzyj się że po angielsku nie umiesz bo akurat to jest bardzo ładnie po polsku opisane

No, ale dokumentacja to dla cieniasów jest.

Czytałem, że są kalibrowane, dlatego nie chcę tego ruszać ani rozdzielczości. Ale nie bardzo wiem która funkcja zwraca wartość w mV. Patrzę po innych forach i nigdzie tego nie ma. Ludzie jadą na piechotę twierdząc, że ESP mają kiepskie ADC. (może stare artykuły).

(edytowany)

Wpisz w gógla esp32 adc - dostaniesz link do oficjalnej dokumentacji i link do polskiego artykułu bardzo dobrze to opisujacego. No, ale nie każdy potrafi korzystać z wyszukiwarki, niektórzy wolą marudzić po forach.

Aha, mój pseudomiernik na esp32 mierzy napięcie -10..10V z dokładnością 50mV. Bez zewnętrznych przetworników.

Edytowano przez ethanak

wpisywałem. I wszystko widzę oprócz polecenia na odczyt mV. XD Na chwilę obecną z funkcją "map" pomiędzy 12 a 18V różnica wynosi ok 110mV To dużo. 

1 minutę temu, farmaceuta napisał:

ja znalazłem odrazu coś takiego

Czyli znalazłeś to co ja znalazłem tylko nie próbowałem jeszcze opcji analogReadMillivolts. Myślisz że ta funkcja posiada w sobie korekcję?

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