Lichtverfolgung Roboter: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(43 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Projekte]]  
[[Kategorie:Projekte]]  
[[Kategorie:ProjekteET MTR BSE WS2020]]
[[Kategorie:ProjekteET MTR BSE WS2020]]
[[Datei:2021 01 17 22 01 IMG 1384.JPG|400px|thumb|right|Werbeplakat des Lichtverfolgung Roboters <ref> Eigenes Dokument </ref>]]
'''Autoren:'''[[Benutzer:Mohamed Soliman| Mohamed Soliman]] , [[Jasmin Tewo Watio]],  <br/>
'''Autoren:'''[[Benutzer:Mohamed Soliman| Mohamed Soliman]] , [[Jasmin Tewo Watio]],  <br/>
'''Betreuer:''' [[Benutzer:Ulrich_Schneider| Prof. Schneider]]<br/>
'''Betreuer:''' Marc Ebmeyer<br/>
 




<br/>
<br/>
<br/>
<br/>
<br/>


== Einleitung ==
== Einleitung ==


Dieses Projekt ist Bestandteil des GET Fachpraktikums des Bachelorstudienganges Mechatronik im 5. Semester und wird hier genauer beschrieben. Der Lichtverfolgung Roboter soll mit Hilfe den gesteuerten Motoren sich bewegen können und der Lichtempfindliche Widerstände das Licht erkennen und verfolgen. Es werden auch mit Hilfe von dem Ultraschalsensor den Weg gescannt und die Hindernisse erkannt und somit vermieden werden.  
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 :
Hauptbestandteil des Roboter ist das Arduino Systems, was die Daten von den Lichtempfindliche Widerstände und den Sensoren erhält und bearbeitet und darauf hin die Motoren steurt.
 
Bei diesem Projekt werden bestimmte Fähigkeiten beansprucht, zum Beispiel:
    .Kenntnisse über Elektrizität
*elektrische Kenntnisse  
    .Programmierkenntnisse
*Programmierungskenntnisse 


== Anforderungen ==
== Anforderungen ==
Folgende Rahmenbedingungen und Anforderungen wurden an die Projekt gestellt
* 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. 
 
 
[[Datei:Konzeptionsentwurf des Lichtverfolgungsroboter.jpg|600px|thumb|links|Konzeptionsentwurf des Lichtverfolgungsroboter:https://www.slideshare.net/divay_khatri/report-light-sensing-robot?next_slideshow=1 <ref> Eigenes Dokument </ref>]]
 
[[Datei:Konzeptionsentwurf des Lichtverfolgungsroboter.JPG|600px|thumb|rechts|Konzeptionsentwurf_des_Lichtverfolgungsroboter <ref> Eigenes Dokument </ref>]]
 
[[Datei:Stromversorgungskonzept.JPG|600px|thumb|links|Stromversorgungskonzept_des_Lichtverfolgungsroboter <ref> Eigenes Dokument </ref>]]
 
 
 
 
 
 


*eindeutige Lichterkennung
*präzise Erkennung von Hindernisse
*eigenständige Terminierung des Motorwerks bei Hindernisse
*Warnungssignal durch einen Ton bei Hindernisse
*Die Hindernisse zu vermeiden durch einen Umweg


 


== Funktionaler Systementwurf/Technischer Systementwurf ==


*Diese Systematische Darstellung dient als ein Basiskonzept für die Konstruktionen des Roboters
*Zwei Servomotoren werden die VCC und GND vom Arduino bekommen, die beiden PWM Pins werden auf 11,10 oder 9 angeschlossen .Und es gibt 4 Photowiderstände, die die VCC vom Arduino erhalten und mit einem Pull-Down-Widerstand an die analogen Eingänge A1, A3, A4 und A4 angeschlossen werden.
<br/>
<br/>
[[Datei:Konzeptionsentwurf des Lichtverfolgungsroboter.JPG|500px|thumb|links|Konzeptionsentwurf des Lichtverfolgungsroboters <ref> Eigenes Dokument </ref>]]
<br/>
<br/>
<br/>
<br/>


<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/>
 
<br/>
<!-- Füllen Sie Ihre Projektskizze bis hierher aus. Fügen Sie einen Projektplan unten ein.  -->
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>


== Komponentenspezifikation ==
== Komponentenspezifikation ==
* Arduino (Uno R3) bearbeitet die ganzen Signale und kontrolliert die Motoren
{| class="mw-datatable"
* Widerstände  
! style="font-weight: bold;" | Komponente
*Photoresistoren reagieren auf die Lichtquellen und schicken die Signale weiter an dem Arduino
! style="font-weight: bold;" | Beschreibung
*Ultraschallsensor erkennt die Hindernisse im Weg.  
! style="font-weight: bold;" | 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.
|[[Datei:Funduino Uno R3.jpg|126px|mini|zentriert|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.
|[[Datei:Motor Drive Shield Dual L293D.jpg|126px|mini|zentriert|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.
|[[Datei:Gear Motor.jpg|126px|mini|zentriert|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.
|[[Datei:Fotowiderstand.jpg|126px|mini|zentriert|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.
|[[Datei:Komplettes 2WD Car Chassis mit Motoren und Rädern.png|126px|mini|zentriert|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. 
|[[Datei:Step-Down Modul.jpg|126px|mini|zentriert|Step-Down Modul]]
|}


== Umsetzung (HW/SW) ==
== Umsetzung (HW/SW) ==
'''Hardware''' <br/>
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.
[[Datei:Motor Shield Modul .JPG|600px|thumb|links|Motor Shield Modul  <ref> Eigenes Dokument </ref>]]
[[Datei:Schaltung der Photowiderstände .JPG|600px|thumb|rechts|Schaltung der Photowiderstände  <ref> Eigenes Dokument </ref>]]


== Komponententest ==
 
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
'''Software''' <br/>
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“. <br>
 
==== Definierung von den DC_Motoren und die analogen Pins ====
<pre>
//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);
</pre>
 
====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.
 
<pre> 
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);
 
}
</pre>
 
====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.
 
<pre>
  Serial.println(analogRead(lefts));
  Serial.println(analogRead(rights));
  //Licht wird von beiden Widerständen erkannt
  if(analogRead(lefts)<=350 && analogRead(rights)<=350){
    //Forward
    motor1.run(FORWARD);
    motor2.run(BACKWARD);
 
  }
  //Licht kommt von der linken Seite
else if(analogRead(lefts)<=350 && analogRead(rights)>=350){
    //turn left
    motor2.run(BACKWARD);
    motor1.run(RELEASE);
    delay(30);
      motor1.run(FORWARD);
    motor2.run(BACKWARD);
  }
  //Licht kommt von der rechten Seite
else if(analogRead(lefts)>=350 && analogRead(rights)<=350){
    //turn right
  motor1.run(FORWARD);
    motor2.run(RELEASE);
  delay(30);
motor1.run(FORWARD);
motor2.run(BACKWARD);
   
 
 
  }
  //Es wird kein Licht erkannt
  else if(!analogRead(lefts)<=350 && !analogRead(rights)<=350){
    //stop
    motor1.run(RELEASE);
    motor2.run(RELEASE);
 
</pre>


== Ergebnis ==
== 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.Die Aufgabe des Projekts ist es, einen Lichtverfolgungsroboter mit dem Arduino-Board zu realisieren. Nach Erhalt der notwendigen Hardware konnten diese montiert und mit den elektrischen Komponenten verbunden werden. Nachdem das Programm fertiggestellt war, musste der Lichtverfolgungsroboter gründlich getestet werden, um sicherzustellen, dass er auch den Anforderungen der Aufgabe gerecht wird. Schließlich wurde ein Video über den Lichtverfolgungsroboter erstellt und auf der Plattform Youtube veröffentlicht. Damit wurden die Anforderungen der Projektaufgabe erfüllt.


== Zusammenfassung ==
== Lessons Learned ==
=== 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 ==
== Projektunterlagen ==
 
=== Projektplan ===
[[Datei:Projektplan1.PNG]]


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


== Weblinks ==
== Weblinks ==


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

Aktuelle Version vom 21. Januar 2021, 13:01 Uhr


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.

 
  Serial.println(analogRead(lefts));
  Serial.println(analogRead(rights));
  //Licht wird von beiden Widerständen erkannt 
  if(analogRead(lefts)<=350 && analogRead(rights)<=350){
    //Forward
    motor1.run(FORWARD);
    motor2.run(BACKWARD);
  
  }
  //Licht kommt von der linken Seite
 else if(analogRead(lefts)<=350 && analogRead(rights)>=350){
    //turn left
    motor2.run(BACKWARD);
    motor1.run(RELEASE);
     delay(30);
      motor1.run(FORWARD);
    motor2.run(BACKWARD);
 
  }
  //Licht kommt von der rechten Seite
 else if(analogRead(lefts)>=350 && analogRead(rights)<=350){
    //turn right
  motor1.run(FORWARD);
    motor2.run(RELEASE);
   delay(30);
 motor1.run(FORWARD);
 motor2.run(BACKWARD);
    

   
  }
  //Es wird kein Licht erkannt
  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.Die Aufgabe des Projekts ist es, einen Lichtverfolgungsroboter mit dem Arduino-Board zu realisieren. Nach Erhalt der notwendigen Hardware konnten diese montiert und mit den elektrischen Komponenten verbunden werden. Nachdem das Programm fertiggestellt war, musste der Lichtverfolgungsroboter gründlich getestet werden, um sicherzustellen, dass er auch den Anforderungen der Aufgabe gerecht wird. Schließlich wurde ein Video über den Lichtverfolgungsroboter erstellt und auf der Plattform Youtube veröffentlicht. Damit wurden die Anforderungen der Projektaufgabe erfüllt.

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