Wheel Encoders for complet newbies

Hi,

I’ve hesitated posting here for some time because I really am a complete newbie but desperation now forces.

I wanted a project to get my sons attention and use the computer for something other than gaming.

I’ve bought an arduino based robot (http://www.robotshop.com/eu/dfrobotshop-rover-tracked-robot-basic-kit-15.html), and we very quickly reached its limits because both turning and distance are governed by time.

It was suggested that we should add wheel encoders and so I’ve bought these 2 codeurs pour plateforme robot mobile 2 et 4 roues

The problem is that I cannot find any very simple guide to programme them, we just want to make the robot go forward a given distance, turn a certain number of degrees etc.

Any help or advice would be much appreciated.

Thankyou in advance.

You just break things into their parts.

The wheel encoder gives you a way to know how much the wheel has turned. Sort out simply getting a report of that information.

Once you know how to tell how far the wheel has turned, you then build your program to make the vehicle do what you want...

Start wheel turning (turn motor on)
Watch turning of wheel
When it has turned as far as you need it to, turn motor off.

hth

Thanks for breaking things down somewhat tkbyd,
I realise that I am going to have to take very small steps in order to bring this project to fruition.
I'll let you know when I complete step 1. :wink:

read this leaflet, page 6 shows a nice picture - http://products.cui.com/CUI_AMT103-V_Product_Training_Presentations.pdf?fileID=6203

Using a treaded base you won't get a lot of accuracy in turns even with an encoder (though the encoder won't hurt if it's there). The agility in turns for a tank-type robot depends on the surface it's going over. The rubber treads used on this kit -- and many like it -- is very compliant, meaning it literally sticks to hard surfaces. That means it may skate unpredictably if the tread simply skips over the surface in turns.

Over carpet and other slippery surfaces the treads won't skate, but the amount of turn is very hard to determine.

You can still play and experiment using the kit you have, but the turns will seldom be as accurate as what you may be looking for. Instead of worrying about odometry, maybe apply a different type of project. A line or wall follower doesn't need encoders, for example.

Thks for the info robtillaart, I think that I have bitten off a little more than I can chew :sweat_smile:

You are probably right Gordon a line or wall following robot probably would of been more sensible but I'm not good at sensible =(

I'm not good at quitting either, so I'm going to try and continue as far as I can (probably not very far), whilst starting another project in paralelle.

This is the code I have so far:

// Wheel encoder/LED/Motor
#define LED 13 //pin for LED
#define ECOD 7 //pin for encoder pulse
int transistorPin = 11; // sends current to transistor/motor

int val = 0; // store state of encoder

void setup(){

pinMode(LED, OUTPUT); //led is output
pinMode(transistorPin, OUTPUT); // motor is output
pinMode(ECOD, INPUT); //encoder is input
}

void loop()
{
val = digitalRead(ECOD); //read value of encoder and store it
if (val == HIGH)
{
digitalWrite(LED, HIGH); // turn led on during pulse
digitalWrite(transistorPin, HIGH); //turn Motor on during pulse
} else {
digitalWrite(LED, LOW); // turn led off when pulse stops
digitalWrite(transistorPin, LOW); // turn motor off when pulse stops
}
}

So at the moment when I turn the encoder it turns the motor and Led on and off (at least if I move it very slowely).

Now I need to get it to count the pulses and turn off after a predifined number?

I did a nice little schematic to show the wiring but with no web space I don't seem to be able to post it =( If anyone where interested I'll e-mail it.

Thanks again for your interest.