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
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
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.
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.
Steg 5, styrsystemet
Bilden visar första prototypen på styrsystemet.
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…
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.
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’.
Senaste kommentarer