Benutzer:BerndS: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
Zeile 10: Zeile 10:
  
  
[[Datei:OsziUS260.JPG]]
+
[[Datei:OsziUS260.JPG|400px|timing diagram]]
  
  

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