Skocz do zawartości

Pomiar prędkości z czujnikiem odległości HC-SR04


Adder

Pomocna odpowiedź

@marek1707 Muszę przyznać, że trochę przykro mi się zrobiło, ale nie za bardzo, a to dlatego, że pomimo całkowicie racjonalnej oceny, z którą się w 100% zgadzam 🙂 nie bierzesz pod uwagę irracjonalnej strony natury ludzkiej. Wszyscy, ty też, pragniemy Wolności. Chcemy robić rzeczy, tylko dlatego, że możemy, a nie dlatego, że mają głębszy sens. Dlatego rokrocznie iluś tam ludzi pokonuje wpław kanał La Manche, zamiast popłynąć promem. Zjeżdża tylem na rowerze ze skoczni narciarskiej, pomimo, że mogliby zjechać wyciągiem. Chodzi na szpilkach, zamiast w wygodnych trampkach... Ludzie robią to, bo wtedy czują się wolni, silni i szczęśliwi... Tak też jest z budowaniem bezsensownych urządzeń. Chociaż ja akurat nie uważam, że mierzenie prędkości tym czujnikiem jest bez sensu...

Jeśli jesteśmy już przy analogiach filmowych, to jeśli będziesz miał okazję obejrzyj "Wyspę Róży". Świetny włoski film o wolności właśnie. Wynalazca bez sukcesów, inżynier, buduje wyspę u wybrzeży Riminii i ogłasza jej niepodległość. Historia jest oparta na faktach autentycznych. Naprawdę był ktoś taki. Osobiście bardzo się utożsamiam z tym bohaterem. Mój wyraz twarzy na koniec tego serialu będzie taki sam jak jego na koniec filmu. Mam nadzieję. 

Co do techniki pomiaru zamierzam wydrążyć "komorę pomiarową" wewnątrz gąbki do mycia samochodów i w niej umieścić czujnik. Brzmi wystarczająco bezsensownie? 🙂🙂🙂😉

I bez urazy. Bardzo mnie zainspirowałeś!  👍

Link do komentarza
Share on other sites

8 godzin temu, marek1707 napisał:

Druga opcja to pyrrusowe zwycięstwo: ogromnym nakładem sił i czasu zrobił pomiar, który działa jakoś. Teraz stoi dumny przed swoim dziełem, a uciekający przed deszczem ludzie nie zauważają ani jego ani tego czegoś co sklecił.. Napisy końcowe, To be continued?

ten cytat to można odnieść do 99% projektów hobbystyczntch i to nie tylko na tym  forum. 

Choć uważam, że zawsze należy szukać optymalnych rozwiązań postawionych przed nami problemów, to całe diy opiera się na amatorszczyźnie. Przecież każdy z tych układów które tu budujemy można kupić gotowe, profesjonalnie działające, och i ach. 

Komu na planecie potrzebny robot jeżdzący po linii, a po co budować kolejny zegar, może centralka alarmowa, odkurzacz? 

Mało tego w sklepach? Nie lepiej kupić i zachwycać się kunsztem inżynierów? Brak problemów z zasilaniem, sterowaniem, programowaniem. Same plusy;) 

  • 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

Obaj macie rację, ale też i sobie muszę jej trochę zostawić. Nie będę zaśmiecał wątku i rozpisywał się długo. W mojej krytyce (jak dobrze, że nie dostałem po głowie kilkoma dosadniejszymi zdaniami - doceniam i szanuję, bo to rzadkość ostatnio) nie miałem na celu dyskredytowania działalności szanownego Autora wątku jako takiej. Niech sobie wyciska ostatnie soki z tej zabawki, na pewno nauka z tego będzie nieoceniona i kiedykolwiek zabierając się (może po nabraniu trochę doświadczenia i ogłady elektronicznej, nigdy nic nie wiadomo) za własnoręczny czujnik ultradźwiękowy, będzie sporo o zjawisku wiedział. Na zdjęciu zobaczyłem jednak jakiś zestaw plastikowych klocków, może jakiś tor do budowania czy fragment flippera(?) w którym kulka stanowi co prawda element kluczowy, ale wygląd i estetyka całości jest niemniej ważna. I teraz wybór ad hoc metody ultradźwiękowej, z jej słabościami i ograniczeniami (szczególnie w wykonaniu tego HC-cośtam) wymusi montaż na tej skądinąd ładnej rzeczy jakiejś badziewnej płytki i zasłonięcie tych fajnych wielokątów paskudnym czujnikiem. Chodziło mi o efekt końcowy. Oczywiście metoda przecinania wiązki US pod kątem też jest słaba, ale w końcu wiele czujników działa na odbiciach pod kątem i jakoś żyją. W pewnych przypadkach, mając nie wiem jak dobre chęci i poświęcając nawet nieskończenie dużo czasu, przyjęta metoda prowadzi na manowce: albo nie zadziała, albo zadziała słabo albo będzie okupiona jakimiś poważnymi stratami (energii, wyglądu, funkcjonalności itd). I mam podejrzenie graniczące z pewnością, że to ten przypadek. Także.. nie będę więcej swoich groszy wrzucał w te tryby (czy jakoś tak to było) a chrupek starczy mi na długo 🙂

BTW: Nie zgadzam się z oceną, że większość projektów DIY jest tak.. bezcelowa. Podziwiam procesory robione z przekaźników czy układów TTL, mam szacun dla tych wszystkich stacji pogodowych czy jeżdżenia po linii (nawet robotami 10cm/s zbudowanymi ze znanych klocków). Tu jednak mam wrażenie, że Adder wie, że brnie, zrozumiał już ograniczenia i jak na dłoni widzi (bo my na pewno), że to będzie słabe. Albo nie znam założeń (mierzymy z dokładnością +/-50% od czasu do czasu?) albo ich zwyczajnie nie ma i jedyną ideą jest po prostu zabawa bez presji na efekt końcowy. To też rozumiem, ale chiałbym to gdzieś tu przeczytać.

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

15 minut temu, marek1707 napisał:

Nie zgadzam się z oceną, że większość projektów DIY jest tak.. bezcelowa.

Ja też nie, dlatego przytoczyłem ten Twój ostatni akapit z poprzedniego posta, bo z niego można by wyciągnąć taki wniosek :). 

My, amatorzy wiemy, że to co budujemy nie koniecznie spełnia kryteria profesjonalnego wyrobu, ale, parafrazując klasyka, mamy nadzieję "że przy Waszej wiedzy i nasza urosnąć może" 😉

Link do komentarza
Share on other sites

(edytowany)

@marek1707 Twoje uwagi są bardzo celne. Dziękuję. Ale, 

1 godzinę temu, marek1707 napisał:

mierzymy z dokładnością +/-50% od czasu do czasu?

czas nie ma żadnego znaczenia. Brak pomiaru- próba nieudana. Jeden pomiar - próba nieudana. 2 pomiary - prędkość. Dokładność odległości od czujnika? Nieistotna, z mojego punktu widzenia. Tu nie chodzi o to jaka jest rzeczywista prędkość. To można zmierzyć, jak wspomniałeś, w inny sposób. Tu chodzi o to, CZY można zmierzyć prędkość jednym czujnikiem HC cośtam i jak to logicznie zrobić, żeby uzyskać wynik leżący w granicach jego możliwości. Mam nadzieję, że kiedyś będę umiał (myślę, że szybko) porównać prędkość uzyskaną w wyniku tego eksperymentu z wynikami bardziej miarodajnymi. Ciekawy jestem co wyjdzie... To są próby po zapoznaniu się z I częścią kursu arduino. Miej litość na Św. Tranzystor. 😅

Chcę w końcu zacząć czytać część drugą. Chociaż w międzyczasie przyszedł mi do głowy nowy pomysł z HC. Napiszę w odrębnym wątku jak skończę ten pomiar (chyba w tym tempie za miesiąc). Będę czekał na Twoje uwagi. 🥶🙂

Edytowano przez Adder
Link do komentarza
Share on other sites

Dzień dobry!

Chciałem Wam przedstawić wyniki badań pomiaru prędkości czujnikiem HC-SR04.

Zacznę od wniosków:

1) Tym czujnikiem da się zbadać prędkość obiektu poruszającego się pod dowolnym kątem w warunkach domowych. 

2) Okupione jest to jednak, żmudnym procesem ustawień pomiarów, prób i eksperymentów, a otrzymywane wyniki obarczone są dużym błędem;

3) Świat fal dźwiękowych to nieokiełznany żywioł. Próby pomiarów prędkości pojedynczym czujnikiem, przyniosły mi w pewnej chwili skojarzenie z próbą oceny jak daleko sięgnie plaży morska fala. Wydaje się, że wiadomo gdzie się ona pojawi, ale raz uderza z wielką siłą i mknie głęboko w głąb lądu, a raz słabiutko, a zagrzebane w piasku muszle schną na słońcu. Stoi za tym tak wielka Matematyka, że ja nie jestem w stanie jej ogarnąć, a otrzymane wyniki można analizować tylko prymitywną Statystyką.

4) Czujnik ten niezadowalająco wprawdzie mierzy prędkość, ale bardzo dobrze wykrywa jakikolwiek ruch, nawet bardzo małych obiektów, i jako taki może w pewnych warunkach nieźle się sprawdzić. 

Pomiary:

90% czasu związanego z pomiarami spędziłem na budowie odpowiedniego środowiska. Początkowo zasugerowałem się koncepcją pochłaniania i rozpraszania fal dźwiękowych, co skłoniło mnie do budowy różnych konstrukcji z gąbki. Niestety nie przyniosło to oczekiwanych rezultatów. Być może nie miałem właściwych materiałów (jak np. wysokiej klasy gąbka akustyczna), być może przyczyna leży gdzie indziej. Mogłoby to być przedmiotem dalszych studiów. 

W drodze dłuuuuuuugotrwałych eksperymentów doszedłem do konstrukcji, w której przed czujnikiem ustawiona jest bariera w kształcie trójkąta z wierzchołkiem skierowanym do czujnika i stopniem rozwarcia ramion, mniej więcej równym 30 stopniom (szerokości emisji fali przez czujnik). Odchylenie od średniej otrzymanych wyników stało  się dopiero wtedy względnie akceptowalne. 

Na wyniki pomiarów niewątpliwie wpływa precyzja konstrukcji urządzenia pomiarowego. Nie miałem ani czasu, ani środków żeby się tym przejmować. Wyszedłem z założenia: prymitywny czujnik - prymitywne środki. Niewątpliwie nieco tym obraziłem to baaardzo ciekawe urządzenie. 

Wyniki:

Zacząłem od pomiaru rzeczywistej prędkości toczącej się kulki, której ruch badałem. Specjalnie na potrzeby budowy urządzenia pomiarowego wybrałem elementy gravitraxa, bo pozwalały one na wyrzucanie kulki z relatywnie stałą prędkością. Pomiaru prędkości dokonałem techniką wideo rejestrując telefonem poruszanie się kulki od początku do końca rampy o długości 18 cm. Badając klatka po klatce video ustaliłem czas wejścia kulki na rampę oraz jej opuszczenia. Otrzymana prędkość nazwijmy to referencyjna wyniosła: 1,6 km/h

Teraz przynajmniej wiedziałem czego powinienem nie spodziewać. 

Następnie zrobiłem ok. 1000 prób rekonstruując urządzenie, aby uzyskać relatywnie powtarzalne wyniki zbliżone do tego zakresu. 

Oto efekt:

A oto zapis innych pomiarów 1,09km/h, 2,10km/h, 0,58km/h, 1,82km/h, 0,23km/h, 1,63km/h, 1,74km/h:

pomiary.thumb.png.c2592aebecaba18f41c48b0ff0b4c4df.png

Jak widać pomiary znacząco różnią się od siebie. Nie potrafię już ich wyeliminować. Co więcej różnice czasami są znacznie większe rzędu setek %. Wpływ na to ma na przykład fakt, co leży na biurku, w którym miejscu siedzę, czy w czasie pomiarów się ruszam, czy nie, mikro przesunięcie czujnika, dosłownie wszystko. Jednym słowem wspomniany nieokiełznany Chaos.

Chciałem podziękować wszystkim obserwującym ten wątek za wsparcie i konstruktywne komentarze. One popychały moje eksperymenty do przodu 🙂 

Chętnie odpowiem na wszystkie pytania oraz słowa krytyki. 👍

 

 

 

 

 

 

 

 

 

 

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

Kod:

 

#include <LiquidCrystal.h> 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); 

#define trigPin 12
#define echoPin 11

void setup() {
  
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  
  lcd.begin(16, 2); 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Speed: ");
  lcd.setCursor(0,1);

}


  float DistancetoDetector=0;
  float Distance;
  float Distance1=0;
  float Distance2=0;
  float DistancetoTrackend1=0;
  float DistancetoTrackend2=0;
  float Speed;
  unsigned long DetectionTime=0;
  unsigned long Time1=0;
  unsigned long Time2=0;
  unsigned long Time;

 
void loop() {


  DistancetoDetector=GetDistance();
  if (DistancetoDetector<=12.0 && DistancetoDetector>=10.0) {
  if (Distance1==0 && Distance2==0) {
  Time1=DetectionTime;
  Distance1=DistancetoDetector;
  } else if (Distance2==0 && DistancetoDetector<Distance1) {
    Time2=DetectionTime;
    Distance2=DistancetoDetector;
    DistancetoTrackend1=(-9.16+sqrt(83.9056-4.0*(100-Distance1*Distance1)))/2.0;
    DistancetoTrackend2=(-9.16+sqrt(83.9056-4.0*(100-Distance2*Distance2)))/2.0;
    Time=Time2-Time1;
    Distance=DistancetoTrackend1-DistancetoTrackend2;
    Speed=(1000.0/Time)*Distance/100.0;
    
    

    Serial.print("Speed (km/h): "); Serial.println(Speed*3.6);
    Serial.print("Error to 1.6km/h: ");Serial.print(-(100-Speed*3.6*100/1.6));Serial.println("%");
    

      lcd.print(Speed);
      lcd.print("   ");
      lcd.setCursor(0,1);
      delay(3000);
      Distance1=0;
      Distance2=0;
      
  }
  }    
  }
  
 float GetDistance() {

  float czas, dystans; 
  digitalWrite(trigPin, LOW);
  delayMicroseconds(20);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
 
  czas = pulseIn(echoPin, HIGH);
  DetectionTime=millis();
  dystans = czas / 58.0;


  return dystans;
 }

 

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.