Сонар Arduino и шаговый двигатель - PullRequest
2 голосов
/ 16 марта 2019

Я пытаюсь создать эхолот / радар с питанием от Arduino.В настоящее время у меня есть датчик гидролокатора, подключенный к двигателю и работающий над кодом.Проблема с циклом for ниже.Датчик будет пинговать, а затем двигатель будет двигаться, повторяя правильное количество раз.Однако значения, которые возвращает датчик гидролокатора, равны 0 или 1 независимо от расстояния.Любая помощь в выявлении проблемы будет очень признателен.

/*
   Nathan Verdonk
   3/15/2019
*/

#include <NewPing.h>
#include <Stepper.h>

const int stepsPerRevolution = 2048;                      // Steps per revolution
const int rotSpeed = 10;                                  // Speed of rotation in RPM
const int triggerPin = 7;                                 // Trigger pin on sonar sensor
const int echoPin = 6;                                    // Echo pin on sonar sensor
const int maxDistance = 300;                              // Max distance expected from sensor in cm; do not exceed 400

int val;


Stepper stepper1(stepsPerRevolution, 8, 10, 9, 11);           // initialize the stepper library on pins 8 through 11:
NewPing sonar1(triggerPin, echoPin, maxDistance);             // initialize the new ping library with predefined values

void setup() {

  stepper1.setSpeed(rotSpeed);

  Serial.begin(115200);

}

void loop() {

  for(int i = 0; i < 50; i++){
    delay(50);

    val = sonar1.ping_cm();
    Serial.println(val);

    stepper1.step(1);
  }

  delay(3000);

}

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Проблема не с кодом.

Как выяснилось, датчик требователен к тому, что для его работы требуется почти ровно 5 В.Если сервопривод и датчик используют один и тот же источник питания, то при работе сервопривода напряжение упадет ниже 5 В.

Спасибо всем, кто помог.

0 голосов
/ 16 марта 2019

Если вы хотите отследить расстояние, вы можете выполнить этот процесс, чтобы проверить, что у вашего датчика нет проблем (я предполагаю, что проводка правильная):

// defines pins numbers
const int triggerPin = 7;
const int echoPin = 6;
// defines variables
long duration;
int distance;
void setup() {
    pinMode(triggerPin, OUTPUT); // Sets the trigPin as an Output
    pinMode(echoPin, INPUT); // Sets the echoPin as an Input
    Serial.begin(115200); // Starts the serial communication
}

void loop() {
    delay(50);
    // Clears the triggerPin
    digitalWrite(triggerPin, LOW);
    delayMicroseconds(2);
    // Sets the triggerPin on HIGH state for 10 micro seconds
    digitalWrite(triggerPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(triggerPin, LOW);
    // Reads the echoPin, returns the sound wave travel time in microseconds
    duration = pulseIn(echoPin, HIGH);
    // Calculating the distance
    distance= duration*0.034/2;
    // Prints the distance on the Serial Monitor
    Serial.print("Distance: ");
    Serial.println(distance);
}

Для генерации ультразвука вам необходимо установитьТриггер в высоком состоянии в течение 10 мксЭто отправит звуковой импульс с 8 циклами, который будет двигаться со скоростью звука, и он будет получен в выводе Echo.Вывод Echo будет выводить время в микросекундах, пройденное звуковой волной.

скорость звука составляет 340 м / с или 0,034 см / мкс, поэтому вы делите на 2, чтобы поймать расстояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...