En bra avkänning av begränsningsslingan är ett måste för en robotklippare. Denna version har fungerat fint hos mig. Här är en instruktion hur man kan applicera den på ett eget gräsklipparbygge.

 

 

BWF'n används bl.a. i denna Klippare v3 2014

 

 

Vi börjar bakifrån, en ArduinoUno laddas med följande program.

 

/*Avkodning av slingsändare.

Design av Per-Ola Johansson 2012-2014

Mottagare ansluts till pin0 på ArduinoUno

Inne/Ute/OK-signal på pin 11,12,13

mer info på www.pojpoj.se */



#include <LiquidCrystal.h>


// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int incomingByte = 0; // for incoming serial data

byte timer=0; //sekundräknare, nollas när den är inne, nollas inte om ute eller ingen signal

byte inne=0; //antal gånger byte-inne tagits emot

byte ute=0; //antal gånger ute-byte tagits emot

byte crap=0; //antal gånger annan byte tagits emot

long previousMillis = 0;



void setup() {

pinMode(13,OUTPUT); //OK/Error LED

pinMode(12,OUTPUT);//utanför LED

pinMode(11,OUTPUT);//innanför LED

//pinMode(10,OUTPUT);//LED backlight off

//digitalWrite(10,LOW);

Serial.begin(9600); // opens serial port, sets data rate to 9600 bps

UCSR0C = ( UCSR0C & ~_BV(UPM00) | _BV(UPM01) );

//Serial.print("I received:");

lcd.begin(16, 2); // LCD type 16x2

lcd.print("In Out Crap Tid");// Print a header to the LCD.

}


void loop() {

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > 1000) {

previousMillis = currentMillis;

//uppdaterar display 1ggr/sekund

lcd.setCursor(0,1);

lcd.print(" "); //rensar raden

lcd.setCursor(0,1);

lcd.print(inne,DEC);

lcd.setCursor(4,1);

lcd.print(ute,DEC);

lcd.setCursor(8,1);

lcd.print(crap,DEC);

lcd.setCursor(13,1);

lcd.print(timer,DEC);

timer=timer+1;

}

// send data only when you receive data:

if (Serial.available() > 0) {

// read the incoming byte:

digitalWrite(11,LOW); //släck kontroll LED's

digitalWrite(12,LOW);

incomingByte = Serial.read();

if (incomingByte == 107) { // 107 is inside fence

timer=0;

inne=inne+1; // counter on display

digitalWrite(13,LOW); //signal finns, ej fel

digitalWrite(11,HIGH); //tänd inne LED

}

if (incomingByte == 171) { // 171 is outside fence

ute=ute+1; // counter on display

digitalWrite(12,HIGH); //tänd ute LED

}

else

{crap=crap+1;} // counter for bad data

}

if (timer > 5) { digitalWrite(13,HIGH);} //rymt eller ingen signal

}

/*

UPM01=1 --> Parity on

UPM00=0-->Even

UPM00=1--> Odd


_BV(x) is a macro that returns a byte of all zeroes except for bit number 'x' which is a one.

It is probably the same as (1<<x)


The rest of it is just bitwise arithmetic.

& is bitwise AND

~ is bitwise NOT

| is bitwise OR

The end result is that you turn off UPM00, turn on UPM01, and leave the rest alone.

*/

 

Mottagarens utgång kopplas mot pin0=Rx. Båda korten matas med 12V.

3st LED på pin11-13 indikerar inne/ute/error.

 

 

Här är en film som visar hur det fungerar. Jag har aldrig mer än ca 5 meter till slingan, ca 150meter slingtråd i gräsmattan. Kabeln är 1,5mm2 FK-kabel.

Film:  https://www.youtube.com/watch?v=vunqVFfdPAw

 

Har du byggt en egen robotklippare kan pin 11 och/eller 12 kopplas till din klippare för att avgöra inne eller ute. Pin13, Röd LED, är tänkt som en (nöd-)stopp.

 

 

Här kommer mer info om sändare och mottagare. Vill du istället köpa ett mönsterkort/laminat eller helt färdigbyggd kit så skicka ett mejl. pojpoj@live.se 

 

 

 

Schema mottagare. Notering, 5 volt är ökad till 9 volt för bättre prestanda.

 

 

Schema sändare. Notering D1 och D3 ej monterade, Mosfet IRF9Z24N /IRLZ24N, CPU=ATTINY2313A-PU.

SW sändare. Behöver du istället en färdigprogrammerad krets skicka ett mejl till pojpoj@live.se

 

 

 

 

 

 

Funktion.

Mottagaren känner strömmen i slingan runt gräsmattan, sändaren pulserar strömmen på ett sådant sätt att om mottagaren kopplas till serieport (TTL signalnivå 9600,8,even, 1) så tas en byte data emot. Mottagen byte ändras beroende på om man är innanför eller utanför slingan.

Signalen skickas ca var 30:e millisekund.


På sändaren kan man med en jumper ställa vilken byte som skall skickas

Jumper: Inne: Ute:

A 107 171

B 215 87

C 175 183

D 91 109

E 183 219


Laddstationen placeras rakt över slingan, då följer man slingan och signalen växlar mellan inne/ute tills man kör in i laddaren.


Dessutom kan följande bytes sändas, men de är samma både inne och ute, de kan användas t.ex. för att fjärrstyra klipparen eller t.ex. skicka en ”go home” signal om regnsensorn sitter på laddaren.


PB2 245

PB3 235

PB4 189

PB5 253

PB6 223

PB7 239

PD0 247

PD1 251



Injustering av mottagarspolens placering


För bra funktion är det viktigt att hitta en placering för mottagarspolen som inte påverkas så mycket av alla magnetfält från klipparens elmotorer.

Mottagarspolen placeras ca 10-15 cm över mark, stående rakt upp. Så långt ifrån elmotorer och switchade nätdelar som möjligt.

Stäng av sändaren. Mät spänningen över C8 på mottagarkortet, späningen skall vara när a noll. Starta alla motorer, nu skall spänningen helst ligga under 0,1V med alla motorer igång. Är det över 0,1V prova att flytta runt på spolen, den skall dock alltid stå rakt upp.

Min klippmotor ger kraftiga störningar men jag hittade ett ställe (+-5mm) som var ”helt” störningsfritt från klippmotorn.

Med sändaren igång stiger spänningen på C8, i mitten på gräsmattan där signalen är som lägst bör spänningen på C8 vara minst 0,2V. Några cm ifrån slingkabeln går den upp mot 2-3V. Om man har för hög insignal kan det bli datafel, därför kan det vara lämpligt att koppla t.ex. ett 5ohm motstånd i serie med slingan om man har en kort slinga (jag har ca 500m2 och har 2 ohm motstånd).

Vid korta slingor använd 5-10 ohm seriemotstånd (monteras i skruvplinten pin 2-3 på sändaren) , annars bränns motstånden på sändarkortet då de ej är dimensionerade för kortslutning av utgången.


Mottagaren matas med 12-30 Vdc ca 20mA. Utgången växlar mellan 0 och 4,5V och kopplas till RX in på en CPU. T.ex pin0 på en ArduinoUno.


Sändaren



Sändaren matas med ca 12Vac (ej DC) ca300mA. T.ex. brukade modem/routers levereras med en 12Vac 1Amp. nätadapter, denna typ fungerar fint.


Slingan kopplas in på den fyrpoliga kontakten mellan 1 och 4.

Ett anpassningsmotstånd, minst 0,5W kopplas in mellan 2 och 3. Vid mycket kort slinga välj ca 20ohm. Vid ca 500m2 tomtyta välj ca 5 ohm, vid större tomter byglas till 0 ohm.



Korten är utvecklingskort och är ej CE märkta, lämplig låda och avstörningsfilter kan behövas på utgången för att uppfylla alla EMC krav.

 

POJ © 2014 • j.po@spray.se • 

www.pojpoj.se