Problem z kodem Arduino

0

Witam. Wgrałem dość prosty kod do mojego Arduino RedBot i mam problem. Jest to samochodzik z czujnikiem odległości, gdy zobaczy przeszkodę która jest bliżej niż 10cm to ma wycofać i skręcić, w każdym innym wypadku ma jechać prosto. Użyłem w nim czujnika odległości HC-SR04, podpiąłem go do 5V i pokazuje w miarę poprawne wyniki. Ale gdy odepnę płytkę od PC to wykonuje się niewłaściwy warunek. Ciągle cofa i skręca. Wszystko działa idealnie kiedy płytka jest wpięta do PC albo gdy wyłączę silniki (słychać po brzęczeniu czujnika). Spotkał się ktoś z czymś takim? Niżej podaje kod. Pozdrawiam.

#include <RedBot.h>
#include <RedBotSoftwareSerial.h>
RedBotAccel accel;      
RedBotMotors motors;
int CM;        
long CZAS;     

void setup() {
  
  Serial.begin(9600);
  pinMode(A2, OUTPUT);  //Trig
  pinMode(A3, INPUT);   //Echo
  
}

void pomiar_odleglosci()
{
  digitalWrite(A2, HIGH);      
  delayMicroseconds(10);
  digitalWrite(A2, LOW);
  CZAS = pulseIn(A3, HIGH);
  CM = CZAS / 58;                
}

void loop(){
  pomiar_odleglosci();               
   Serial.print("Odleglosc: ");      
   Serial.print(CM);
  Serial.println(" cm");
 
  
  if(CM>10)                 
 {
  motors.drive(100);
 }
 else     
 {
  motors.drive(-100);
  delay(400);
  motors.stop();
 
  delay(400);
 
  motors.rightMotor(100);
  delay(700);
  motors.stop();
 
  motors.drive(100);
 }
}
0

Problem może leżeć w tym, że te czujniki mają zakres do ok. 200 cm, więc jak masz robota, który patrzy gdzieś w siną dal (tzn. przed sobą ma dwa metry bez przeszkód), to funkcja pulseIn nie dostawszy z powrotem impulsu poddaje się domyślnie po sekundzie i zwraca 0. Wtedy warunek CM > 10 nie jest spełniony i robot głupieje.

1

A może problem nie jest z oprogramowaniem tylko zasilaniem układu?

2
P C (PIOTRUSIO) napisał(a):

Wszystko działa idealnie kiedy płytka jest wpięta do PC albo gdy wyłączę silniki (słychać po brzęczeniu czujnika).

To jest wskazówka na to,że źródło zasilania jest zbyt obciążone.
Jak podpięty jesteś do PC, to PC dostarcza więcej prądu.
Jak silniki są odłączone, to nie ma spadku napięcia wywołanego obciążeniem.

Do weryfikacji użyj woltomierza, jak bardzo spada napięcie na czujniku, gdy włączone są silniki.
Porównaj to ze specyfikacją czujnika (tolerancja zasilania).

1 użytkowników online, w tym zalogowanych: 0, gości: 1