Zakupiłem czujnik, który według Chińczyka w miał być zamiennikiem HC-SR04. Pasują do niego uchwyty HC-SR04 ponadto czujnik jest wodo i pyłoszczelny co na pewno przemawia na plus w porównaniu do tego co było pisane negatywnie pod względem zastosowania HC-SR04 w rożnych zasobnikach czy studzienkach.
JSN-SR20-Y1 posiada 6 trybów działania w trybie 0 ma właśnie działać jak HC-SR04 no ale nie działa sprawdzone na GG i na testerze zdjęcie poniżej (czujnik pokazuje różne pomiary od 888 przez 078, 079, 083, 035). Pomyślałem, że może mam walniętą sztukę i możliwe, że tak jest ale pogrzebałem trochę i znalazłem różnicę w długości impulsu wyzwalającego HC-SR04 ma 10uS, a JSN-SR20-Y1 ma 20uS i tu dopatruję się istoty problemu w nieprawidłowym działaniu tego czujnika.
I tu kieruję swoje pytanie do @krycha88 czy jest możliwość skompilowania dla mnie wersji z tą zmianą, a jeśli okaże się ona trafna dodania jej do GG z możliwością zaznaczania w ustawieniach 10uS i 20uS.
Chyba, że pozostałe tryby komunikacji będą lepsze do implementacji tego czujnika w GG
Poniżej zdjęcie z działania czujnika i karty czujników w załączniku.
.
.
Wsparcie JSN-SR20-Y1 wodoszczelny i pyłoszczelny zamiennik i alternatywa w miejsce HC-SR04
-
- Posts: 1050
- Joined: Sun Apr 07, 2019 8:14 pm
- Location: Nadarzyn
You do not have the required permissions to view the files attached to this post.
-
- Posts: 1050
- Joined: Sun Apr 07, 2019 8:14 pm
- Location: Nadarzyn
Znalazłem rozwiązanie bawiąc się z arduino nano. I mój trop był prawidłowy.
zmieniając delayMicroseconds(20); miałem odczyty ale czasem w odczycie była luka 0 cm
dlatego ustawiłem jak w poniższym kodzie delayMicroseconds(40); i teraz nie było problemu z odczytem.
Wartość dla HC-SR04 10uS jest wartością minimalną tak jak dla JSN-SR20-Y1 ta wartość wynosi 20uS.
Po wpisaniu 40uS prawidłowo działały oba czujniki.
Więc mam prośbę aby w GG dokonać zmiany tego parametru na 40 mikrosekund.
PS. Fajna też była by możliwość ręcznego wpisywania parametru dla Delay_timer przy ustawieniach w GG dla HC-SR04 o czym wspomniano w HC-SR04 - częstotliwość pomiarów
zmieniając delayMicroseconds(20); miałem odczyty ale czasem w odczycie była luka 0 cm
dlatego ustawiłem jak w poniższym kodzie delayMicroseconds(40); i teraz nie było problemu z odczytem.
Wartość dla HC-SR04 10uS jest wartością minimalną tak jak dla JSN-SR20-Y1 ta wartość wynosi 20uS.
Po wpisaniu 40uS prawidłowo działały oba czujniki.
Więc mam prośbę aby w GG dokonać zmiany tego parametru na 40 mikrosekund.
PS. Fajna też była by możliwość ręcznego wpisywania parametru dla Delay_timer przy ustawieniach w GG dla HC-SR04 o czym wspomniano w HC-SR04 - częstotliwość pomiarów
Code: Select all
#include <Arduino.h>
const int TriggerPin = 8;
const int EchoPin = 9;
long Duration = 0;
int Delay_timer = 100;
void setup() {
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.begin(9600);
}
long Distance(long time){
long DistanceCalc;
DistanceCalc = ((time * 0.034) / 2); // centimeters
return DistanceCalc;
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TriggerPin, LOW);
delayMicroseconds(2);
digitalWrite(TriggerPin,HIGH);
delayMicroseconds(40);
digitalWrite(TriggerPin, LOW);
Duration = pulseIn(EchoPin,HIGH);
long Distance_cm = Distance(Duration);
Serial.print("Distance = ");
Serial.print(Distance_cm);
Serial.println (" cm");
delay(Delay_timer);
}
-
- Posts: 9704
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Mógłbyś sprawzić czy przy 25 lub 30 mikro sekund też działa stabilnie?dobo wrote: Tue Jan 10, 2023 11:38 pm Znalazłem rozwiązanie bawiąc się z arduino nano. I mój trop był prawidłowy.
zmieniając delayMicroseconds(20); miałem odczyty ale czasem w odczycie była luka 0 cm
dlatego ustawiłem jak w poniższym kodzie delayMicroseconds(40); i teraz nie było problemu z odczytem.
Wartość dla HC-SR04 10uS jest wartością minimalną tak jak dla JSN-SR20-Y1 ta wartość wynosi 20uS.
Po wpisaniu 40uS prawidłowo działały oba czujniki.
Więc mam prośbę aby w GG dokonać zmiany tego parametru na 40 mikrosekund.
PS. Fajna też była by możliwość ręcznego wpisywania parametru dla Delay_timer przy ustawieniach w GG dla HC-SR04 o czym wspomniano w HC-SR04 - częstotliwość pomiarów
Code: Select all
#include <Arduino.h> const int TriggerPin = 8; const int EchoPin = 9; long Duration = 0; int Delay_timer = 100; void setup() { pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); Serial.begin(9600); } long Distance(long time){ long DistanceCalc; DistanceCalc = ((time * 0.034) / 2); // centimeters return DistanceCalc; } void loop() { // put your main code here, to run repeatedly: digitalWrite(TriggerPin, LOW); delayMicroseconds(2); digitalWrite(TriggerPin,HIGH); delayMicroseconds(40); digitalWrite(TriggerPin, LOW); Duration = pulseIn(EchoPin,HIGH); long Distance_cm = Distance(Duration); Serial.print("Distance = "); Serial.print(Distance_cm); Serial.println (" cm"); delay(Delay_timer); }
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 1050
- Joined: Sun Apr 07, 2019 8:14 pm
- Location: Nadarzyn
Przy 25 potrafi od czasu do czasu pokazać 0 cm ale zauważam wtedy, że następuje również lekkie zacięcie przy wysyłaniu wartości na serial.
Czujnik ten ma 4 krotnie większy kąt pomiaru i zauważyłem dzisiaj, że ma problem z pomiarem bliskich odległości i potrafi również wskazać machając przed nim ręką, że pomiar jest większy niż może on dokonać i podaje 491cm choć jest skierowany na sufit do którego ma 192 cm.
Jutro postaram się zrobić mały test i dokonam przełożenia czujników na płytkach PCB może to da lepszy efekt.
Czujnik ten ma 4 krotnie większy kąt pomiaru i zauważyłem dzisiaj, że ma problem z pomiarem bliskich odległości i potrafi również wskazać machając przed nim ręką, że pomiar jest większy niż może on dokonać i podaje 491cm choć jest skierowany na sufit do którego ma 192 cm.
Jutro postaram się zrobić mały test i dokonam przełożenia czujników na płytkach PCB może to da lepszy efekt.
-
- Posts: 2718
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
Z twojego opisu wynika, że ten czujnik zachowuje się podobnie jak jsn-sr04t (nadajnik i odbiornik w jednej obudowie) i jest podobnie skonstruowany. Generalnie sieje dużo szerzej i zbiera masę niepotrzebnych odbić (w porównaniu do hc-sr504). Walczę od pewnego czasu ale ideału nie ma. W zmiękczaczu jest sporo odbić w małym zbiorniku i działa tyle o ile jak się spędzi dużo czasu i go idealnie ustawi. Lekkie "tyknięcie" i znowu wariuje. Drugi taki mam w szambie i działa lepiej z racji większego zbiornika ale też potrafi bzdurę pokazać. kolega @arkadp wskazał drogę do poprawy działania viewtopic.php?p=138612#p138612 no ale w zmiękczaczu to raczej nie zadziała z racji małej ilości miejsca.
Jedna uwaga: jeśli dobrze pamiętam ze specyfikacji to mój czujnik ma większą minimalną odległość działania - 20 cm vs 10cm (hc-sr504). Sprawdź specyfikację tego twojego czy też nie ma minimum 20 cm.
Jedna uwaga: jeśli dobrze pamiętam ze specyfikacji to mój czujnik ma większą minimalną odległość działania - 20 cm vs 10cm (hc-sr504). Sprawdź specyfikację tego twojego czy też nie ma minimum 20 cm.
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Coś czuję, że problem dla tego sensora jest gdzie indziej i wynika on z delay(16) w loop. Umiesz sam skompilować projekt usuwając to opóźnienie?
https://github.com/krycha88/GUI-Generic ... c.ino#L736
https://github.com/krycha88/GUI-Generic ... c.ino#L736
https://gui-generic-builder.supla.io/
-
- Posts: 9704
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Odczyt sensora odległości jest blokujący, więc ten delay nie powinien mieć wpływukrycha88 wrote: Fri Jan 13, 2023 4:33 pm Coś czuję, że problem dla tego sensora jest gdzie indziej i wynika on z delay(16) w loop. Umiesz sam skompilować projekt usuwając to opóźnienie?
https://github.com/krycha88/GUI-Generic ... c.ino#L736
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Tylko ja używam biblioteki NewPing więc może być to istotne. Ale nie mam trochę czasu aby to przetestowac.
https://gui-generic-builder.supla.io/
-
- Posts: 1050
- Joined: Sun Apr 07, 2019 8:14 pm
- Location: Nadarzyn
Spróbuję ale pewnie sporo bibliotek będzie mi brakowało bo już na starcie przy weryfikuj i kompiluj wyskoczył mi brak podstawowej biblioteki SuplaDeviceGUI.hkrycha88 wrote: Fri Jan 13, 2023 4:33 pm Umiesz sam skompilować projekt usuwając to opóźnienie?
https://github.com/krycha88/GUI-Generic ... c.ino#L736
Od zabawy w Primary GUI mnie to zawsze denerwowało ciągłe szukanie i dopasowywanie brakującej biblioteki
Na razie do NANO udało mi się dosztukować kod na obsługę OLEDA 128x32 i chcę sprawdzić jak to będzie się zachowywać na wolnej przestrzeni bo w pokoju pomiary nie są takie stabilne jak w HC-SR04.
Ponadto uchwyt na zdjęciu z pierwszego posta powoduje brak pomiarów - najprawdopodobniej przenosi drgania z nadajnika do odbiornika widziałem podobne czujniki z nakładką gumową na cały czujnik ten ma nakładkę gumową od strony PCB. Pewnie trzeba to będzie zamontować w uchwycie za pomocą śrubek.
.
Według specyfikacji minimum to 2cm, a max to 500cmYoMan wrote: Thu Jan 12, 2023 8:56 am Sprawdź specyfikację tego twojego czy też nie ma minimum 20 cm.
Jsn-sr04t u mnie działał dość dobrze i stabilnie (oczywiście wymagał chwili aby się w zbiorniku ustabilizować po wybraniu szamba) ale zbierające się skropliny na czujniku powodowały, że czujnik wariował dlatego pomyślałem, że jak będą dwa osobne nie będzie takiego problemu.
Zastanawiam się czy brak kwarcu w tym modelu i korzystaniu tylko z wewnętrznego oscylatora nie powoduje, że pomiar nie jest stabilny.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Wszystko jest na moim githubie nic nie musisz szukać
https://github.com/krycha88/GUI-Generic/tree/master/lib
https://github.com/krycha88/GUI-Generic/tree/master/lib
https://gui-generic-builder.supla.io/