Audi m8

Från Wikiversity
Hoppa till navigering Hoppa till sök

2 juni, 3008

Projektdeltagare (och roll i projektet)[redigera]

Vi har alla tagit del av projekted och gjort både programmering och att sätta ihop komponenter. Nedan syns en lista på vad vi har gjort:

  • Savvas och Viktor har gjort det fysiska med Arduino: Suttit ihop sladdar
  • Daniel har tagit del av programmeringen och ersatte tejp till lödtenn.
  • Saman har varit projektledare som kommit med idéer och hon har programmerat avståndssensorn.

Mål[redigera]

Att bygga en bil som kan köra, backa, svänga och väja för en vägg. Bilen ska, med hjälp av en Arduino kunna köra och sedan när den närmar sig en vägg ska den svänga så att den kan fortsätta utan att krocka.

Material[redigera]

Vi använde oss av en billig radiostyrd bil och en Arduino UNO, samt en Arduino motorshield. Vi använde oss också av massor av tejp och sladdar.

Arduino UNO

Arduino Motorshield

Magnet motor

1 meter sladd

Konstruktion[redigera]

Bottenchassit från en radiostyrd bil med en Arduino+Arduino Motor Shield. Elmotorerna från bilen är fortfarande original men är numera inkopplade till Arduinon. Antennen och det tidigare moderkortet är borttaget eftersom Arduinon hanterar alla dess tjänster.

Mekanik[redigera]

Elektronik[redigera]

Två separata batteri delar med ett 9v batteri och tre AA batterier driver Arduinon. De är inkopplade på två ställen i Arduino Motor Shield där 9v batteriet är inkopplat i VIN och GND näst intill 5v uttaget. De 3 AA batterierna inkopplade till skriv uttaget.

Programmering[redigera]

Koden vi använda kommer från kjell och kompanys exempelkod för avståndsensorn, medan den andra koden kommer från arduino shields hemsida. Det går att kolla in koden från pastebin eller nedan:


const int 
PWM_A   = 3,
DIR_A   = 12,
BRAKE_A = 9,
SNS_A   = A0;


void setup() {

  // Configure the A output
  pinMode(BRAKE_A, OUTPUT);  // Brake pin on channel A
  pinMode(DIR_A, OUTPUT);    // Direction pin on channel A

  // Open Serial communication
  Serial.begin(300);
  Serial.println("Motor shield DC motor Test:\n");
}

void loop() {
  

// Set the outputs to run the motor forward

  Serial.println("Forward");
  digitalWrite(BRAKE_A, LOW);  // setting againg the brake LOW to disable motor brake
  digitalWrite(DIR_A, LOW);    // now change the direction to backward setting LOW the DIR_A pin

  analogWrite(PWM_A, 150);     // Set the speed of the motor

  delay(3500);
  Serial.print("current consumption forward: ");
  Serial.println(analogRead(SNS_A));

  // now stop the motor by inertia, the motor will stop slower than with the brake function
  analogWrite(PWM_A, 0);       // turn off power to the motor

  Serial.print("current brake: ");
  Serial.println(analogRead(A0));
  Serial.println("End of the motor shield test with DC motors. Thank you!");


// Set the outputs to run the motor backward

  digitalWrite(BRAKE_A, LOW);  // setting brake LOW disable motor brake
  digitalWrite(DIR_A, HIGH);   // setting direction to HIGH the motor will spin backward

  analogWrite(PWM_A, 150);     // Set the speed of the motor, Value can be from 0-255 

  delay(700);                 // hold the motor at full speed for X milliseconds
  Serial.print("current consumption backwards: ");
  Serial.println(analogRead(SNS_A));
  
// Brake the motor

  Serial.println("Start braking\n");
  // raising the brake pin the motor will stop faster than the stop by inertia
  digitalWrite(BRAKE_A, HIGH);  // raise the brake
  delay(600);

  while(1);
}

Utvärdering[redigera]

Vi nådde våran mål!

Källor med källkritik[redigera]

våra hjärnaror