Benutzer:BerndS: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Husqvarna 260 ACX Ultra Sonic
 
Husqvarna 260 ACX Ultra Sonic
  
−
How tu use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.
+
How to use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.
 +
 
 +
Pin out JST:
 +
 
 +
pin1 GND
 +
 
 +
pin2 +5V
 +
 
 +
pin3 Signal out (yellow line in picture)
 +
 
 +
pin4 Signal in  (pink line in picture, Ultra Sonic burst)
 +
 
 +
 
 +
[[Datei:OsziUS260.JPG|400px|timing diagram]]
 +
 
 +
 
 +
Arduino Code:
 +
 
 +
_______________________________________________________________
 +
#define threshold 20
 +
#define Sonic_out 03 //10
 +
#define Sign_in 02 //25
 +
#define trigger 04
 +
#define Bumper 05
 +
#define nBumper 06
 +
 
 +
int i;
 +
unsigned long time_cnt_start;
 +
unsigned long time_cnt;
 +
float average_t;
 +
float distance;
 +
bool int_flag=1;
 +
bool valid = 0;
 +
 
 +
void setup() {
 +
  Serial.begin(115200);
 +
  pinMode(Sonic_out, OUTPUT);
 +
  digitalWrite(Sonic_out,0);
 +
  digitalWrite(trigger,0);
 +
  pinMode(Sign_in, INPUT);
 +
  pinMode(Bumper, OUTPUT);
 +
  pinMode(nBumper, OUTPUT);
 +
  Serial.println("Ultra Sonic Start");
 +
}
 +
 
 +
void loop() {
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
 
 +
  for (i=0;i<10;i++){
 +
    digitalWrite(Sonic_out,1);
 +
    delayMicroseconds(4);
 +
    digitalWrite(Sonic_out,0);
 +
    delayMicroseconds(9);
 +
  }
 +
 
 +
  digitalWrite(Sonic_out,0);
 +
  while(digitalRead(!Sign_in)) {    }
 +
  delayMicroseconds(1300);
 +
  attachInterrupt(digitalPinToInterrupt(Sign_in),start_cnt,RISING);
 +
  delay(25);
 +
 
 +
  if (!valid)stop_cnt();
 +
  average_t=average_t*0.95+time_cnt*0.05;
 +
  distance=average_t*33000/1000000;
 +
//  Serial.print(" Laufzeit: ");
 +
//  Serial.print(average_t);
 +
  Serial.print("  Distanz: ");
 +
  Serial.print(distance);        // +/- 20%
 +
  Serial.println();
 +
 
 +
  if( distance<=threshold){
 +
    digitalWrite(Bumper,1);
 +
    digitalWrite(nBumper,0);
 +
  }else{
 +
    digitalWrite(Bumper,0);
 +
    digitalWrite(nBumper,1);
 +
  }
 +
}
 +
 
 +
void start_cnt(){  // start time counting with rising trigger
 +
  valid = 0;
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
  time_cnt_start = micros();
 +
  //Serial.print("start ");
 +
  digitalWrite(trigger,1);
 +
  attachInterrupt(digitalPinToInterrupt(Sign_in),stop_cnt,FALLING);
 +
}
 +
 
 +
void stop_cnt(){    // stop time counting with first falling trigger
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
  time_cnt = micros()-time_cnt_start;
 +
  //Serial.print("stop ");
 +
  valid = 1;
 +
  digitalWrite(trigger,0);
 +
}
 +
 
 +
 
 +
_____________________________________________________________________________
 +
 
 +
Husqvarna 260 ACX Ultra Sonic Board
 +
 
 +
 
 
[[Datei:US260 01.JPG]]
 
[[Datei:US260 01.JPG]]

Aktuelle Version vom 12. Februar 2025, 12:32 Uhr

Husqvarna 260 ACX Ultra Sonic

How to use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.

Pin out JST:

pin1 GND

pin2 +5V

pin3 Signal out (yellow line in picture)

pin4 Signal in (pink line in picture, Ultra Sonic burst)


timing diagram


Arduino Code:

_______________________________________________________________

  1. define threshold 20
  2. define Sonic_out 03 //10
  3. define Sign_in 02 //25
  4. define trigger 04
  5. define Bumper 05
  6. define nBumper 06

int i; unsigned long time_cnt_start; unsigned long time_cnt; float average_t; float distance; bool int_flag=1; bool valid = 0;

void setup() {

 Serial.begin(115200);
 pinMode(Sonic_out, OUTPUT);
 digitalWrite(Sonic_out,0);
 digitalWrite(trigger,0);
 pinMode(Sign_in, INPUT);
 pinMode(Bumper, OUTPUT);
 pinMode(nBumper, OUTPUT);
 Serial.println("Ultra Sonic Start");

}

void loop() {

 detachInterrupt(digitalPinToInterrupt(Sign_in)); 
  
 for (i=0;i<10;i++){
    digitalWrite(Sonic_out,1);
    delayMicroseconds(4);
    digitalWrite(Sonic_out,0);
    delayMicroseconds(9);
 }
 
 digitalWrite(Sonic_out,0);
 while(digitalRead(!Sign_in)) {    }
 delayMicroseconds(1300);
 attachInterrupt(digitalPinToInterrupt(Sign_in),start_cnt,RISING); 
 delay(25);
 
 if (!valid)stop_cnt();
 average_t=average_t*0.95+time_cnt*0.05;
 distance=average_t*33000/1000000; 

// Serial.print(" Laufzeit: "); // Serial.print(average_t);

 Serial.print("   Distanz: ");
 Serial.print(distance);         // +/- 20%
 Serial.println(); 
 if( distance<=threshold){
   digitalWrite(Bumper,1);
   digitalWrite(nBumper,0);
 }else{
   digitalWrite(Bumper,0);
   digitalWrite(nBumper,1);
 }

}

void start_cnt(){ // start time counting with rising trigger

 valid = 0;
 detachInterrupt(digitalPinToInterrupt(Sign_in));
 time_cnt_start = micros();
 //Serial.print("start ");
 digitalWrite(trigger,1);
 attachInterrupt(digitalPinToInterrupt(Sign_in),stop_cnt,FALLING);

}

void stop_cnt(){ // stop time counting with first falling trigger

 detachInterrupt(digitalPinToInterrupt(Sign_in));
 time_cnt = micros()-time_cnt_start;
 //Serial.print("stop ");
 valid = 1;
 digitalWrite(trigger,0);

}


_____________________________________________________________________________

Husqvarna 260 ACX Ultra Sonic Board


US260 01.JPG