Lichtverfolgung Roboter

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Werbeplakat des Lichtverfolgung Roboters [1]

Autoren: Mohamed Soliman , Jasmin Tewo Watio,
Betreuer: Marc Ebmeyer








Einleitung

Dieses Projekt ist Teil des GET-Praktikums des Bachelor-Studiengangs Mechatronik im 5. Semester und wird hier näher beschrieben. Unser grundlegendes Ziel ist es, einen Roboter zu bauen, der sich in die Richtung bewegt, in der die größte Lichtintensität herrscht. Unser Roboter (Auto) würde zwei LDRs haben, einen auf der linken und einen auf der rechten Seite, so dass die Lichtintensität auf jeder Seite gemessen werden kann. Anhand dieser Messwerte kann die Richtung unseres Fahrkorbs geändert werden. Die Hauptkomponente des Roboters ist das Arduino-System, das die Daten von den lichtempfindlichen Widerständen und Sensoren empfängt und verarbeitet und dann die Motoren steuert. In diesem Projekt werden bestimmte Fähigkeiten benötigt, z. B :

   .Kenntnisse über Elektrizität
   .Programmierkenntnisse

Anforderungen

  • Sofortige Erkennung der Lichtquelle
  • Zuverlässige Definierung der Richtung der Lichtquelle
  • Die Ansteuerung der Motoren in der Richtung des Lichts
  • Genaue Lenkweise, um die Lichtquelle zu folgen
  • Stoppen der Motoren, sobald keine Lichtquelle zu erkennen ist

Funktionaler Systementwurf

Der Roboter wird durch 2 Motoren betrieben, die über ein Motortreiber funktionieren und angesteuert werden. Durch die 2 Fotowiderstände werden die Lichtquellen erkannt und die Daten erfasst.

Die 2 Widerstände werden an der Vorderseite des Roboters angebracht. Das System, das den Roboter antreibt, liest den Analogwert der beiden Sensoren, führt einen Vergleich durch und trifft eine Entscheidung über die zu ergreifenden Maßnahmen, um die Lichtquelle zu erreichen.

Der Widerstand, der das meiste Licht empfängt, gibt die Richtung vor, die der Roboter einschlagen soll. Wenn der linke Fotowiderstand mehr Licht empfängt als der rechte Fotowiderstand, sollte der Roboter nach links drehen oder zielen. Wenn beide Sensoren den gleichen Wert liefern, d. h. die gleiche Lichtmenge empfangen, sollte der Roboter geradeaus fahren.

Das Step-Down Modul ist für Reglung der Versorgungspannung verantwortlich. Über das Modul wird die die Eingangsspannung von den Akkus gedrosselt und an die passende Spannung für den Roboter angepasst.


Konzeptionsentwurf des Lichtverfolgungsroboter:https://www.slideshare.net/divay_khatri/report-light-sensing-robot?next_slideshow=1 [2]
Konzeptionsentwurf_des_Lichtverfolgungsroboter [3]
Stromversorgungskonzept_des_Lichtverfolgungsroboter [4]





























Komponentenspezifikation

Komponente Beschreibung Bild
Arduino UNO R3 Der Arduino UNO ist der Hauptcontroller in diesem Projekt. Die Daten von den Sensoren (LDR) werden an den Arduino gegeben und dieser gibt entsprechende Signale an den Motortreiber.
Fundiono Uno R3
Motor Drive Shield Dual L293D L293D ist ein typischer Motortreiber oder Motortreiber-IC, der den Antrieb von DC-Motoren in beiden Richtungen ermöglicht. L293D ist ein 16-Pin-IC, der einen Satz von zwei DC-Motoren gleichzeitig in jeder Richtung steuern kann. Es bedeutet, dass Sie zwei DC-Motor mit einem einzigen L293D IC.In einem einzigen L293D-Chip gibt es zwei h-Brücke Schaltung im Inneren des IC, die zwei DC-Motor unabhängig drehen kann.H-Brücke ist eine Schaltung, die die Spannung in jede Richtung geflogen werden kann.H-Brücke IC sind ideal für den Antrieb eines DC motor.Due seiner Größe ist es sehr viel in Robotik-Anwendung zur Steuerung von DC-Motoren verwendet.
Motor Drive Shield Dual L293D
Gear Motor Wir haben zwei Getriebemotoren an der Rückseite des Linienverfolgungsroboters verwendet. Diese Motoren bieten mehr Drehmoment als normale Motoren und können auch zum Tragen einer gewissen Last verwendet werden.
Gear Motor
Fotowiderstand(LDR) Wir haben für unser Projekt lichtabhängige Widerstände, LDRs oder Fotowiderstände verwendet. Das sind elektronische Bauteile, die zur Erkennung von Licht verwendet werden und den Betrieb eines Schaltkreises entsprechend der Lichtpegel ändern.
Fotowiderstand
Komplettes 2WD Car Chassis mit Motoren und Rädern Das Gehäuse ist aus stabilem Acryl gefertigt und hat viele Bohrungen zur sicheren Befestigung von Komponenten. Er besteht aus 2 Getriebemotoren, die mit einer Spannung zwischen 3 und 9 V betrieben werden, einer in einem Kugelgelenk befestigten Metallkugel, die als drittes Rad dient und es dem zukünftigen Roboter ermöglichen wird, praktisch auf der Stelle zu drehen, 2 Rädern und Zusätzlich ist ein Ein-/Ausschalter für die Spannungsversorgung integriert. Ein Batteriehalter ist ebenfalls im Lieferumfang enthalten.
Komplettes 2WD Car Chassis mit Motoren und Rädern
Step-Down Modul Automatischer Schutz gegen thermische Überlastungen und Überströme. Dieses Modell hat einen elektronischen Schutzschalter. Dies funktioniert nicht durch die Begrenzung des Ausgangsstroms, sondern durch die Anpassung der Ausgangsspannung auf ihren Minimalwert jedes Mal, wenn der Ausgangsstrom den Schwellenwert (500 Hz Aktualisierungsrate) überschreitet.
Step-Down Modul

Umsetzung (HW/SW)

Hardware
Durch das intensive Recherchieren konnte entschieden werden, welche Hardware Teile für das Projekt benötigt sind. Die Regulierung der Versorgungsspannung erfolgt durch das Step-Down Modul, um das Arduino Modul und die Motoren vor einer hohen Spannung einen Kurzschluss zu schützen. Durch das Step-Down Modul kann immer kontrolliert werden, wie viel die Einganagsspannung betragen soll. Die 2 DC Motoren werden an dem Motor Shield Modul angeschlossen und auch dadurch angesteuert.

Das Verbinden von dem Arduino Modul und das Motor Shield Modul erfolgt über das zusammenstecken von den beiden Teilen. Das Motor Shield Modul hat dann auch die gleichen Pins wie bei dem Arduino bzw. digitalen und analogen Pins.


Motor Shield Modul [5]
Schaltung der Photowiderstände [6]




















Software
In unserem Projekt wurde die Software mit der Arduino IDE umgesetzt. Die Software besteht dabei aus den Standard-Blöcken „setup“ und „loop“. Beim Starten des Microcontrollers werden jedoch zuerst die Bibliotheken und Variablen geladen. Nachdem der Microcontroller gestartet ist und die „setup“-Routine durchlaufen wurde, startet die Endlosschleife „loop“.

Definierung von den DC_Motoren und die analogen Pins

//including the libraries
#include <AFMotor.h>

//defining pins and variables
#define lefts A0
#define rights A1

//defining motors
AF_DCMotor motor1(1, MOTOR12_1KHZ); 
AF_DCMotor motor2(2, MOTOR12_1KHZ);

Setup

Das Setup wird bei jedem Neustart oder Reset des Arduinos aufgerufen. In der Konfiguration werden die Motoren gestartet, sowie das Empfangen von Daten von den Photowiderständen. Hier werden die Pins initialisiert, wodurch festgelegt wird, ob ein Pin als Eingang oder Ausgang verwendet wird. Außerdem wird dem Servo der Pin für das Steuerungssignal und dem Schrittmotor die Geschwindigkeit zugeordnet.

  
void setup() {
  //Setting the motor speed
  motor1.setSpeed(150);
  motor2.setSpeed(150);

  //Declaring PIN input types
  pinMode(lefts,INPUT);
  pinMode(rights,INPUT);
  //Begin serial communication
  Serial.begin(9600);
  
}

Hauptprogramm

Mit der Arduino Software wurde das Programm mit einer weiterlaufende If Schleife mit den verschiedenen Bedingungen umgesetzt. Bei dem Programm geht's darum, bei jedem Mal, wo eine Lichtquelle erkannt wird , eine Anfrage zu schicken und kontrollieren welche If Bedingung zum Einsatz kommt. Daraufhin werden die Motoren angesteuert und es folgt eine Verfolgung hinter der Lichtquelle her. Um eine reibungslose Lenkung zu schaffen, werden die Motoren bei der Lenkung einzeln angesteuert. Es wird bei der Lenkung zu einer bestimmten Richtung ein Motor für 30 Millisekunden durch die Funktion 'Delay' gestoppt, während der andere Motor weiter fährt. Sobald kein Licht zu erkennen ist, kommt die 'Release' Funktion zum EInsatz und die Motoren werden gestoppt, bis eine weitere Lichtquelle erkannt wird.

 //Printing values of the sensors to the serial monitor
  Serial.println(analogRead(lefts));
  Serial.println(analogRead(rights));
  //light detected by both
  if(analogRead(lefts)<=350 && analogRead(rights)<=350){
    //Forward
    motor1.run(FORWARD);
    motor2.run(BACKWARD);
  
  }
  //light detected by left sensor
 else if(analogRead(lefts)<=350 && analogRead(rights)>=350){
    //turn left
    motor2.run(BACKWARD);
    motor1.run(RELEASE);
     delay(30);
      motor1.run(FORWARD);
    motor2.run(BACKWARD);
 
  }
  //light detected by right sensor
 else if(analogRead(lefts)>=350 && analogRead(rights)<=350){
    //turn right
  motor1.run(FORWARD);
    motor2.run(RELEASE);
   delay(30);
 motor1.run(FORWARD);
 motor2.run(BACKWARD);
    

   
  }
  //light detected by none
  else if(!analogRead(lefts)<=350 && !analogRead(rights)<=350){
    //stop
    motor1.run(RELEASE);
    motor2.run(RELEASE);
   


Ergebnis

Der Roboter erfüllt seine Funktion und erkennt das Licht sobald eine Lichtquelle auf ihn gerichtet wird. Durch die beiden Photoresistors kann die Lichtquelle von Links und Rechts erkannt werden. Alle Anforderungen wurde auch erfüllt

Zusammenfassung

Am Ende dieser Arbeit konnten wir unser durch die GET-Praktika und die verschiedene Uni Module erworbenes Wissen in dem Projekt umsetzten, um einen funktionsfähigen Roboter zu erhalten.

Lessons Learned

Dieses Projekt hat uns ermöglicht, mehr Wissen über Robotik und Elektronik zu erlangen. Wir haben auch gelernt, wie man auf Arduino programmiert, was sehr angenehm war. Schließlich haben uns die Probleme, die während dieses Projekts aufgetreten sind, geholfen, noch selbständiger zu arbeiten, aber auch zu wissen, wie man sich gemeinsam Situationen stellt, die für ein Projekt beängstigend erscheinen könnten, und erfinderisch zu sein, wenn es darum geht, Lösungen für sie zu finden.

Projektunterlagen

Projektplan

YouTube Video

https://www.youtube.com/watch?v=TMNkOM5votc

Weblinks

Literatur

https://www.slideshare.net/divay_khatri/report-light-sensing-robot?next_slideshow=1

  1. Eigenes Dokument
  2. Eigenes Dokument
  3. Eigenes Dokument
  4. Eigenes Dokument
  5. Eigenes Dokument
  6. Eigenes Dokument