Autonom buggy

20160922_192907

Chassit

Detta projekt ska bli ett autonomt fordon med ett chassi från en radiostyrd bil som bas. Chassit är 4-hjulsdrivet och har en 6V motor som drivning. Styrsystemet är en Arduino Nano och den kommer att ha några IR-sensorer för avståndsmätning, en accelerometer och kompass för att märka om den slår runt och sedan kanske någon mer sensor. Strömförsörjningen blir från början 4 vanliga AA-batterier eller mitt nätaggregat.

 

Steg 1, test av motorstyrningen

20160924_142809

Kopplingsdäcket med Arduinon och ansluten H-brygga och motor. Motorn matas nu från mitt nätaggregat.

Jag tog loss motormodulen i chassit och körde motorn via en H-brygga och styrning från Arduino Nano.  Det fungerade direkt.

int IN1=8;
int IN2=9;
int ENA=3;

void setup()
 {
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT);
 }
 void loop()
 {
 analogWrite(ENA, 200);// motor speed
 digitalWrite(IN1,LOW);// rotate forward
 digitalWrite(IN2,HIGH);
 delay(2000);
 digitalWrite(IN1,HIGH);// rotate reverse
 digitalWrite(IN2,LOW);
 delay(2000);
 }

 

Steg 2, test av mini-servot

Jag lät även Arduino Nano provköra kod för att styra servot. Även detta funkade felfritt med den exemplekod jag hittade.

#include <Servo.h>

int IN1=8;
int IN2=9;
int ENA=3;
int SERVO = 7;
int START=4; //start race via the remote
int KILL=5; //cut power to the motor
// analog inputs from ir-sensors
// analog input from US sensor
// i2c bus, accelerometer and compass

Servo myservo; // create servo object to control the servo
int pos = 0; // variable to store the servo position

void setup()
{
 pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT); 
 myservo.attach(SERVO);
}

void loop()
{ 
 setSpeed(255);
 forward();
 for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
 // in steps of 1 degree
 myservo.write(pos); // tell servo to go to position in variable 'pos'
 delay(15); // waits 15ms for the servo to reach the position
 }
 setSpeed(150);
 reverse();
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
 myservo.write(pos); // tell servo to go to position in variable 'pos'
 delay(15); // waits 15ms for the servo to reach the position
 }
}

void setSpeed(int speed)
{
 analogWrite(ENA, speed); // motor speed 
}

void forward()
{
 digitalWrite(IN1,LOW);// rotate forward
 digitalWrite(IN2,HIGH);
}

void reverse()
{
 digitalWrite(IN1,HIGH);// rotate reverse
 digitalWrite(IN2,LOW);
}

void setServo(int POS){
 myservo.write(POS); 
 }

Nästa steg blir att sätta ihop chassit igen med riktiga kullager och en vanlig bakaxel. Parallellt funderar jag på hur ett kretskort ska se ut för att koppla ihop de olika delarna. Jag vill kunna ansluta varje del för sig så att det är lätt att byta ut om det behövs. Någon form av ’moderkort’ med stift för resp. komponent kanske…

Jag ska även skapa ett nytt github projekt så fort jag får ihop lite ’riktig’ kod.

Steg 3, nya kullager

 

20160927_194245

Pyttesmå hjullager…

Nu har chassit fått riktiga kullager till alla hjul. Det var pilligt att få dit dom men det gick till slut.

Jag har även riktiga kullager till diffarna och drivaxeln men dom har jag inte bytt ännu.

Tyvärr fattas det lite delar för att jag ska kunna sätta ihop chassit helt men det får jag fixa på nåt sätt.

 

20160927_194220

Bakaxeln utan övre reaktionsstag. Dom jag hade var lite för korta.

Steg 4, Chassit komplett

Nu är chassit komplett med alla hjul och hel ’drivlina’. Även framaxeln och styrningen är ihopsatt men servo-länkaget saknas fortfarande. Nu kan jag börja göra lite prototypdetaljer, tex kretskort i väntan på att ir-sensorer ska dyka upp i brevlådan.

20160928_194351

Chassit med arduino nano (ovanpå) och en motorstyrningskrets.

Steg 5, styrsystemet

Bilden visar första prototypen på styrsystemet.

20160930_200925

Styrsystemet med kontakter för Servo, motorstyrning, IR-sensorer, startsignal och en I2C-buss. Kontakten för I2C-bussen har plats för två givare och där sitter nu en kompass och en accelerometer/gyro.

Steg 6, Plattformen

Nu finns en första prototyp på ’plattformen’ dvs det som ska hålla allt på plats. Jag valde att göra den av en bit hyllplan som jag hade liggande. Den är i ek så det är stadigt, hårt och bra men kanske lite för tungt. För montering av sensorer och kretskort använder jag kardborreband som är självhäftande. Det är nästan lika underskattat som smältlim…

20161016_125126

Plattformen med monterade sensorer.

Nu kan jag sätta ihop alltihopa men kan inte ansluta strömförsörjningen ännu pga att jag saknar några kontakter och en strömbrytare. Såå fort jag får ordning på det så ska jag göra ett litet testprogram som kör fram och tillbaka bara för att se hur fort den går.

En annan sak som saknas är servolänkaget. Servot inklusive styrningen fungerar men inte den lilla biten emellan.

20161016_124822

Nu börjar det likna något. Nästa steg är en provkörning.

Steg 7, Ett första test

Upp-pallad på en ask med batterier så kör den mha av Arduino-koden som nu finns på GitHub. Den saknar fortfarande ett servo-länkage men det ska jag försöka fixa snarast så att jag sedan kan börja prova på riktigt.

Steg 8, Hårdvaran fungerar

Nytt test. Denna gång med fungerande servolänkage och kod som nu också vrider på framhjulen. Allt sensordata läses in och skickas till seriekanalen så nu kan jag se vad som händer och snart fortsätta implementeringen av själva ’föraren’.

Sensordatat på seriekanalen

Sensordatat på seriekanalen