• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czujnik odległości HC-SR04
#1
Witam !!
Podłączyłem czujnik odległości do Ardurino Uno , napisałem poniższy program

Kod:
#define trigPin A1
#define echoPin A0

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
pinMode(echoPin, INPUT); //a echo, jako wejście
}

void loop() {
long czas, dystans;

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

czas = pulseIn(echoPin, HIGH);
dystans = czas / 58;

Serial.print(dystans);
Serial.println(" cm");
 delay(500);
}

Problem polega na tym, żeby działał czujnik muszę pomiędzy trigPin a echoPin przylutować rezystor 10 kom. Inaczej czujnik nie działa. Może coś musze zmienić w programie, żeby czujnik odległości działał bez dodatkowego rezystora.
Pozdrawiam !!
 
Odpowiedź
#2
Jak na to wpadłeś by tam dodać akurat 10k w takiej konfiguracji? Nie słyszałem o takiej konieczności, jest to na kursie Arduino i nikt tam się nie skarżył, że coś nie działa. Program masz też identyczny: link.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
W zależności od miejsca gdzie kupiłem czujnik jedne działały a inne nie. Pomyślałem że nie mają sygnałów pociągniętych do +5V Próbowałem podciągać i zaczęły coś pokazywać ale niestabilnie. Więc wlutowałem rezystor 10k om pomiędzy trig a echo i łanie działa. Dziwne co ale prawdziwe. Tak samo jest z oryginalnym czujnikiem odległości z mBot /Makeblock/ . Na bibliotece z mBota działa bez rezystora ale już na powyższym programie nie.
 
Odpowiedź
#4
(02-05-2019, 09:22)robo1973 napisał(a): wlutowałem rezystor 10k om pomiędzy trig a echo i łanie działa.
Przez przypadek.
Zastanowiłeś się co tak naprawdę zrobiłeś?
Sprawdzałeś oscyloskopem jak wyglądają sygnały bez i z rezystorem?
 
Odpowiedź
#5
(02-05-2019, 11:11)es2 napisał(a):
(02-05-2019, 09:22)robo1973 napisał(a): wlutowałem rezystor 10k om pomiędzy trig a echo i łanie działa.
Przez przypadek.
Zastanowiłeś się co tak naprawdę zrobiłeś?
Sprawdzałeś oscyloskopem jak wyglądają sygnały bez i z rezystorem?
Po analizie przebiegów czasowych problem rozwiązany

Kod:
void loop() {
 long czas, dystans;

   pinMode(echoPin, INPUT_PULLUP);// dla czujnika mBot
   pinMode(echoPin, INPUT);// dla czujnika mBot
 
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);

 czas = pulseIn(echoPin, HIGH);
 dystans = czas / 58;

 Serial.print(dystans);
 Serial.println(" cm");
  delay(500);
}

trzeba zmienić stan przed pomiarem
 
Kod:
pinMode(echoPin, INPUT_PULLUP);// dla czujnika mBot
   pinMode(echoPin, INPUT);// dla czujnika mBot
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości