Skocz do zawartości

Stanowisko do badania prędkości - Raspberry Pi, Python, czujniki PNP


Czolgista

Pomocna odpowiedź

7 minut temu, Czolgista napisał:

a jaką korzyść da mi użycie przeglądarki zamiast innej formy uruchomienia programu?

Nie uruchomienia a prezentacji wyników. Po prostu odpada większość interfejsu który przeglądarka ma już w sobie. Ale...

7 minut temu, Czolgista napisał:

Niestety javasciprtu nie znam.

 

To żadną.

Link do komentarza
Share on other sites

45 minut temu, Czolgista napisał:

Jest to projekt laboratoryjny stąd duża dokładność i inne wymagania.

Jeśli jest to projekt laboratoryjny, to aż prosi się albo nawet bez tego nie można się obejść: szacowanie niepewności pomiarowej. Tutaj będzie to pewnie wielkość złożona, wielkości nieskorelowane. W sumie będzie wesoło, bo trzeba określić, np. z jaką dokładnością zmierzono czas.

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

@Czolgista przejrzałem z grubsza posty i chyba nie zauważyłem żadnej konkretnej propozycji co do programu do wizualizacji. Więc mogę coś polecić z niskim progiem wejścia: https://www.b4x.com/ możesz dosyć szybko i łatwo napisać aplikacje na PC. Wstawienie i opracowanie wykresu jest dosyć łatwe. Od czegoś musisz zacząć, proponowałbym zbudowanie prototypu wysyłającego dane tak aby można je dalej przetwarzać.

EDIT: padł JavaScript 😉

Edytowano przez _LM_
  • 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

No dobrze, czyli jak praktycznie ma to wyglądać. Wezmę np. taki mikrokontroler: UNO Mni albo Nano (wybrałem te ze względu na wyższą wartość zasilania - ok.20 V, tak jak czujniki optyczne. Choć wersji limitowanej wolałbym nie brać). Podłączę przewód czujnika (a raczej każdą z 3 żył) we właściwe miejsca: zasilania + i - oraz do wejścia cyfrowego żyła sygnałowa. Następnie połączenie z komputerem poprzez np. USB. Ustawienie wstępnych parametrów mikrokontrolera (wejść, wyjść...?).

Kwestię programu na komputerze na razie zostawmy, na etapie prototypu wystarczy aby pobrać dane w CSV czy innym pliku i potem sobie policzyć ręcznie.

Czy te mikrokontrolery mają już wbudowany układ timera, aby uzyskać czas między sygnałami (wartościami logicznymi)? I czy ten timer zadziała z dokładnością 0,05ms lub lepszą? Jeśli nie, to co tutaj zadziałać.

Powstaje jeszcze kwestia przebiegu napięcia w czasie, z wejścia cyfrowego raczej tego nie uzyskam...

Link do komentarza
Share on other sites

17 minut temu, Czolgista napisał:

Ustawienie wstępnych parametrów mikrokontrolera (wejść, wyjść...?).

Kwestię programu na komputerze na razie zostawmy, na etapie prototypu wystarczy aby pobrać dane w CSV czy innym pliku i potem sobie policzyć ręcznie.

Czy te mikrokontrolery mają już wbudowany układ timera, aby uzyskać czas między sygnałami (wartościami logicznymi)? I czy ten timer zadziała z dokładnością 0,05ms lub lepszą? Jeśli nie, to co tutaj zadziałać.

Mikrokontroler posiada peryferia sprzętowe, ale musisz zupełnie od zera napisać w języku podobnym do C++ cały kod programu. Obsługę wejść, wyjść, pomiar czasu, wysyłanie danych do komputera. Nie jest to trudne, ale musisz poświęcić trochę czasu na naukę. To nie jest składanie gotowych bloczków i wyklikiwanie ustawień. Musi powstać program. W przypadku RPi byłoby podobnie (poza językiem programowania).

Link do komentarza
Share on other sites

46 minut temu, Czolgista napisał:

Czy te mikrokontrolery mają już wbudowany układ timera, aby uzyskać czas między sygnałami (wartościami logicznymi)? I czy ten timer zadziała z dokładnością 0,05ms lub lepszą? Jeśli nie, to co tutaj zadziałać.

Timer na RP2040 jest w stanie wygenerować sygnał prostokątny z częstością kołową zmian równą taktowaniu rdzenia (większość można overclock'ować do 200MHz; większym problemem jest szybkość pamięci FLASH 😄). (Na nasze: bez problemu wygenerujesz sygnał prostokątny o częstotliwości 100MHz, więc dokładność takiego zegara sprzętowego jest lepsza niż 10ns) dla podanego przykładu. 

328P ma taktowanie maksymalne 20MHz (zwykle 16 lub 8MHz). Czyli wyciągniesz max. 62.5ns zakładając, że program będzie działał bez żadnych nieplanowanych opóźnień. Bo o ile timer wyciągnie bardzo dobrą dokładność to jeszcze masz różnice w czasie między odczytem sygnału przez mikrokontroler a odczytem wartości timera. Nawet na przerwaniach chwilę na to zejdzie... Szukałbym raczej mikrokontrolera o ciut większym taktowaniu rdzenia, np. tanie chińskie ESP32. Ma taktowanie 240MHz i 2 rdzenie, obsługuje Arduino IDE, więc IMHO powinno być lepsze (i tańsze). Tylko jest trudniejsze do nauki 😉 Jest też RP2040 np. Raspberry Pi Pico z bazowym taktowaniem 133MHz, które obsługuje Pythona, ale do aparatury pomiarowej Python się nie nadaje, bo jest za wolny. 

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

41 minut temu, Czolgista napisał:

Wezmę np. taki mikrokontroler: UNO Mni albo Nano (wybrałem te ze względu na wyższą wartość zasilania - ok.20 V, tak jak czujniki optyczne.

 

41 minut temu, Czolgista napisał:

Podłączę przewód czujnika (a raczej każdą z 3 żył) we właściwe miejsca: zasilania + i - oraz do wejścia cyfrowego żyła sygnałowa.

Ja przepraszam, ale to pytanie muszę zadać: czy Ty wiesz coś o elektronice oprócz tego, że słyszałeś gdzieś to słowo?

Bo po takiej operacji bierzesz Arduino, patrzysz na nie ze smutkiem i wyrzucasz do śmietnika. Przy okazji gratulując sobie wyboru, bo wyrzucenie RPi4 trochę bardziej uderza po kieszeni 😉

Jeśli w jakikolwiek sensowny sposób mamy Ci pomóc, raczej miło byłoby wiedzieć z kim mamy do czynienia...

@H1M4W4R1 Na małym Arduino możesz osiągnąć teoretyczną rozdzielczość 4 µs nie bawiąc się nawet w operacje na timerach (wystarczy umiejętnie odczytać micros()). Co do ESP32 czy RP2040 to oczywiście się zgadzam że są szybsze, ale jeśli  jak z ostatniego posta wynika chodzi tu o 50µs to wystarczy, a zaprogramowanie ESP32 do tego celu może być nieco trudniejsze (to że można się bawić w Arduino IDE nie oznacza, że wszystko się robi tak samo).

 

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

(edytowany)

@Treker To skoro i tak jest konieczność pisania w C, to sam tutaj nic nie wymyślę. W tej konfiguracji pozostanie zlecenie komuś napisania i zgrania tego.

Ciężki temat widzę. @H1M4W4R1 to wiele wyjaśnia. Ale czy na pewno Pythonem nie można tego rozwiązać na Raspberry, na jakiej podstawie wiesz że jest za wolny? 

@ethanak podstawowe/średnie, ale jakieś luki mogą być ;). A gdzie poczyniłem błąd? Czujnik PNP/NPN podłącza się do + i masy, a sygnał napięciowy do wejścia sink/source z tego co wiem, w zależności czy sterujemy plusem czy minusem (typ czujnika).

Edytowano przez Czolgista
Link do komentarza
Share on other sites

4 minuty temu, Czolgista napisał:

Czujnik PNP/NPN podłącza się do + i masy, a sygnał napięciowy do wejścia sink/source z tego co wiem, w zależności czy sterujemy plusem czy minusem (typ czujnika).

Tylko, że jeśli czujniki są faktycznie na 20 V to cały układ pójdzie z dymem, bo na wejścia Arduino można podać maksymalnie 5 V 😉

Link do komentarza
Share on other sites

@Treker to akurat wiem, ale nie pisałem tu wszystkich szczegółów :). Wystarczy jak myślę dołożyć odpowiednie oporniki co by zmniejszyły napięcie do wymaganej wartości, w tym przypadku 5 V. Próbuję na razie ustalić te rzeczy, które są dla mnie największą niewiadomą. Trudno opisywać takie detale, jak nawet nie wiem jaka platforma, jaki język itp. Na pewno jeśli dojdzie do ostatecznego prototypu to jeszcze wrzucę na forum do zatwierdzenia, czy gdzieś nie poszła gafa albo dym ;). 

Link do komentarza
Share on other sites

17 minut temu, Czolgista napisał:

Ale czy na pewno Pythonem nie można tego rozwiązać na Raspberry, na jakiej podstawie wiesz że jest za wolny? 

Zauważ, że wspomniałem o Pico, które nie jest tym samym co Raspberry Pi 3/4. To tylko biedny mikrokontroler z okrojoną wersją Pythona. I wiem z doświadczenia... Python na nim jest jakieś 10x wolniejszy od C/C++.

Link do komentarza
Share on other sites

@H1M4W4R1 Aha, to jak rozumiem Pico jest jakby odpowiednikiem Arduino bo bezpośrednio programujemy w nim C lub MicroPythona, zaś rozbudowane Raspberry (np. 4) to już inna bajka, bo mamy tam system Linuxa oraz lepsze parametry podzespołów, zgadza się? Czyli w takiej opcji (droższej oczywiście), można śmiało robić to Pythonem bo czasy obliczeń będą bardzo krótkie.

Link do komentarza
Share on other sites

1 minutę temu, Czolgista napisał:

Aha, to jak rozumiem Pico jest jakby odpowiednikiem Arduino bo bezpośrednio programujemy w nim C lub MicroPythona, zaś rozbudowane Raspberry (np. 4) to już inna bajka, bo mamy tam system Linuxa oraz lepsze parametry podzespołów, zgadza się?

Dokładnie tak, tylko, że lepsze podzespoły RPi4 wcale nie oznaczają lepszej wydajności w niektórych zastosowaniach - to po prostu zupełnie różne układy. RPi4 najlepiej porównać wprost do komputera PC, a Arduino do jakiegoś sterownika, który odpowiada za pracę konkretnego urządzenia np. expresu do kawy lub drukarki 3D.

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.