PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Hilfe!)Jahresarbeit: Roboter mit autonomer Linienverfolgung



raimarc
20.01.2005, 21:49
Hallo,

wir müssen dieses Jahr in der Schule eine "technische Übungsarbeit" durchführen. Wir haben uns die Aufgabe gestellt einen Roboter zu entwickeln, der einer vorgezeichneten schwarzen Linie (auf weißem Untergrund) autonom nachfahren kann.
In unserem Profilfach IT haben wir zwar schon einiges über die Technik und die Programmierung von Mikrocontrollern der 8051er-Familie in Assembler erfahren, aber eben alles nur in der Theorie. #-o

Bisher haben wir in unserem Projekt mangels Know-how eher nach der Trial-And-Error Methode gearbeitet: Bauteile bestellt, Platinen zusammengelötet, geschaut ob es funktioniert und meistens wieder von vorne angefangen...

Mittlerweile hat sich das Projekt etwas festgefahren. Doch nun der Reihe nach:


Aktueller Projektstand

Der Roboter besteht aktuell aus drei Platinen:

- Spannungsversorgungsplatine
- Controllerplatine
- Sensorplatine
- Motorplatine

Die Spannungsversorgungsplatine hat lediglich die Aufgabe, die Spannung des Akkupacks herunterzuregeln und auf die einzelnen Platinen zu verteilen.
Die Controllerplatine arbeitet mit dem ATMEL AT89S8252 aus der 8051er-Familie und verfügt über vier 8x2-Pfostenstecker für die Ein-/Ausgabeports.
Die Motorplatine bietet Anschluss für zwei Servomotoren. Wir haben uns für die Conrad 5€ Servos entschieden und haben diese modifiziert, so dass sie sich um 360° drehen können (genaue Beschreibung siehe Motoren). (Gibt es geeignetere Lösungen?)
Die Sensorplatine soll über fünf Optokoppler(CY70) die schwarze Linie erkennen und Signale an den Mikrocontroller weitergeben. Die Schwellenwerte der Sensoren bzw. letztendlich die Farbe welche die Sensoren erkennen sollen, werden einzeln über fünf Potis geregelt. Das analoge Signal der Sensoren wandelt ein Schmitt-Trigger (40106) in digitale Zustände. (Genauere Informationen siehe Anhang: Schaltpläne)


Probleme

Motoren

Wir verwenden die modifizierten Conrad 5€-Servos (Hersteller: Carson), bei denen der Hacken entfernt sowie die Kopplung von Zahnrad und Poti gelöst wurde. Das Poti dreht also nicht mehr mit und bleibt in seiner Mittelstellung stehen.
Alle zwei Motoren sind uns bereits während der Testphase schon nach wenigen Minuten Betrieb kaputt gegangen. Möglicherweise weil die Dauer des Testimpulses zu lang war (?). Alle anderen Werte wurden nach Spezifikation eingehalten.
Wir haben jetzt ein neues Programm geschrieben, hatten aber noch nicht die Möglichkeit es zu testen.


Sensoren

Die Sensoren unterscheiden keine Farben, bzw. melden nicht bei schwarzer Farbe. Ein reflektierender Gegenstand ist bereits ausreichend damit am Ausgang des Schmitt-Triggers ein Highpegel messbar ist (?).
Der Mikrocontroller registriert diesen Highpegel allerdings noch nicht einmal als solchen. Vermutlich weil der Schwellenwert für den Highpegel nicht erreicht wird (?). Unser Fachlehrer hat uns empfohlen einen anderen Schmitt-Trigger zu verwenden (IC SN7414 N), also ein Umstieg von der CMOS-Serie auf die TTL-Serie (bringt das was?).


Wir sind natürlich dankbar für jeden Vorschlag zur Problemlösung und für jede Anregung zu unserem Projekt. :wink:

Über den weiteren Projektfortschritt halten wir euch weiter auf dem laufenden. Wir hoffen, dass wir mit eurer Unterstützung bis März diesen Jahres unser abgeschlossenes Projekt hier posten können.

Gruß
raimarc

RCO
20.01.2005, 22:03
Alle zwei Motoren sind uns bereits während der Testphase schon nach wenigen Minuten Betrieb kaputt gegangen.

Also meine Laufen noch einwandfrei, vielleicht war die Spannung zu hoch!?
Allerdings gibt es auch keinen Grund nicht andere Motoren zu verwenden und diese über nen PWM und H-Brücken anzusteuern.


Die Sensoren unterscheiden keine Farben,

Nein, sie geben nur den analog-wert der zurückgeworfenen Strahlungsintensität zurück. Sie sehen also nur schwarz-weiß und graustufen, was bei einer andersfarbigen Linie aber kein Problem sein sollte.


Ein reflektierender Gegenstand ist bereits ausreichend damit am Ausgang des Schmitt-Triggers ein Highpegel messbar ist (?).

Also es sind natürlich mehrere Faktoren entscheidend:
Wie stark hebt sich die Helligkeit der Linie vom Boden ab,
Wie groß ist der Abstand zwischen Sensoren und Linie...

Ich verwende auch Schmitttrigger daür (LM324), beide Eingänge zusammen, Fertig! Ich würde über einen Poti die Intensität der Sendeled regulieren. Habt ihr denn überhaupt einen Pull-up/-down am Ausgang der Empfangsdiode? Wenn eure Controller nen DAC haben, könntet ihr auch die benutzten, dann könnte man noch feiner Differenzierungen machen:
Sensor ist noch halb über Linie...

MFG Moritz

21.01.2005, 23:24
Danke erstmal für die Antwort.

das Problem ist dass komischerweise kein unterschied zwischen einem schwarzen und einem weißen Blatt Papier erkannt wird.

Ein Pullup ist in unserem MC schon an 3 Ports integriert, daran sollte es eigentlich nicht liegen.

Gruß Alex

RCO
22.01.2005, 00:14
Das verstehe ich echt nicht! hast du mal einfach einen Finger davor geahlten und geguckt, wann der Trigger schaltet? kannst du vielleicht mal einen Schaltplans schicken, vielleicht bringt uns das weiter.

Wenn du zufällig einen besorgen kannst, dann verwenden doch einfach einen Operationsverstärker, z.B. den LM324, den ich auch verwende, damit funktionierts auf jeden Fall! Der hat auch direkt 4 OPAMPs inne, so dass du an einen 4 CNY70 hängen könntest.

Ähm ein Frage häte ich da noch, du hast CY70 geschrieben, ich bin einfach davon ausgegangen, dass du den Reflexkoppler CNY70 meintest, da ich unter CY70 nix gefunden habe. Stimmt das?

MFG Moritz

Michael
22.01.2005, 13:07
Hallo RCO,


kannst du vielleicht mal einen Schaltplans schicken,

Anhang angesehn?
@ raimarc:


Vermutlich weil der Schwellenwert für den Highpegel nicht erreicht wird

Und der wird nicht erreicht, weil deine CNY70 falsch herum eingebaut sind.
Emitter und Kathode gehören auf GND.
Gruß, Michael

RCO
22.01.2005, 13:32
Anhang angesehn?

:oops:


Emitter und Kathode gehören auf GND.

Theoretisch kann man sie auch in Sperrichtung betreiben, das macht man bei vielen Fotodioden, ob das hier sinnvoll ist kann ich nciht sagen. Ich betreibe sie auch nicht in Sperrichtung. Vielleicht sperren sie ja zu schnell?

MFG Moritz[/quote]

Michael
22.01.2005, 13:40
Hallo RCO,
Hast du überhaupt verstanden, wie der CNY70 funktioniert? (mitdemKopfschüttel)
Gruß, Michael

RCO
22.01.2005, 13:43
Scheinbar nicht, aber vielleicht kannst du es mir (uns) ja erklären.
(Ernst gemeint)

MFG Moritz

EDIT: ](*,)
Ok, ich nehm alles zurück!

Aber die Aussage:


Emitter und Kathode gehören auf GND.

Finde ich ein wenig missverständlich. O:)

Macht Eagle das automatisch, dass es die Bauteile intern einfach verdreht?
Das hat halt bei mir für verwirrung gesorgt:

http://img129.exs.cx/img129/3596/17af.jpg

Hier liegen beide Kathoden und Anoden auf einer Seite!

MFG Moritz

22.01.2005, 14:45
Hallo,

eingebaut ist es richtig, das habe ich nochmal überprüft. Die Belegung vom CNY70 ist auf dem Board und auf dem Schaltplan verschieden - es ist also schon leicht verwirrend.

Ich habe mal mit einem Oszi überprüft ob der Schmitttrigger überhaupt ein Signal ausgibt und habe festgestellt dass er hin und herschaltet je nachdem ob ich etwas vor dem sensor gehalten habe oder nicht. Zu Testzwecken habe ich meinen MC so programmiert dass er einfach Port0 (sensoren angeschlossen) nach Port 1(Leds angschlossen) weiterleitet. Komischerweise passierte da überhaupt nichts. Dann habe ich vermutet dass es vielleicht am Atmel liegt, habe mir ne Platine mit paar normalen schaltern gelötet und wieder getestet. Siehe da, es funktioniert.

Jetzt weiß ich nicht mehr weiter...habe mir mal einen anderen schmitttrigger bestellt der die gleiche Belegung aber andere schwellspannungen hat. Wenns dann wieder nicht funktioniert werde ich wohl den LM324 nehmen.

Gruß Alex

Michael
22.01.2005, 17:20
Hallo RCO,


Hier liegen beide Kathoden und Anoden auf einer Seite!

Hmm, da liegen aber im Schaltbild Kathode und Emitter, bzw. Anode und Kollektor nebeneinander. Keine zwei von jeder Sorte!?

@Gast-Alex(raimarc?):


eingebaut ist es richtig, das habe ich nochmal überprüft

Kannst du trotzdem mal ein Foto (*.brd) davon posten?

Zu Testzwecken habe ich meinen MC so programmiert dass er einfach Port0 (sensoren angeschlossen) nach Port 1(Leds angschlossen) weiterleitet

leider hast du das falsche Programm in deiner zip-Datei gepostet. Kannst du hier auch mal das "fehlerhafte" posten?
Gruß, Michael

blanco
22.01.2005, 18:22
Hallo,

Nein ich bin nicht raimarc sondern wir sind zusammen im Team. Aber jetzt bin ich hier auch angemeldet.


Das hier ist das einfache Programm mit dem ich teste, oder meinst du etwas anderes?

;test.asm

mov p2, #0ffh
mov p3, #0FFh

start:


mov a,p2
mov p3, a

jmp start


Im Anhang sind noch 2 screenshots vom Board und die *.brd datei, die du haben wolltest.

Gruß Alex

Michael
22.01.2005, 18:58
Hallo blanco,

Das hier ist das einfache Programm mit dem ich teste, oder meinst du etwas anderes?

ist es das wirklich? Fehlt da nicht noch was? (.include;.def;Stack?)

Dein "Anhang.zip" ist derselbe wie im ersten Post, :(.
Ein Foto von der *.brd -Datei von der Sensorplatine war gemeint.
Gruß, Michael

blanco
23.01.2005, 01:28
Also an dem Programmcode sollte alles stimmen - wir programmieren einen 8052-kompatibel MC, da gibt es die Befehle ".include;.def;Stack" gar nicht

Habe jetzt mal den richtigen Anhang hochgeladen

Sommer
23.01.2005, 11:42
Hi,

was ist das für ein Tiefenbach? das in der Oberpfalz?
Wenn ja wohnst nicht weit weg von mir und ich könnt mir das mal ansehen!

by Ulli

raimarc
23.01.2005, 12:05
Hallo Sommer,

danke für das Angebot! Leider wohn' ich etwas weiter weg. Aber vielleicht komm ich ja noch drauf zurück. :)

Gruß
raimarc

Michael
23.01.2005, 13:48
Hallo blanco,


Habe jetzt mal den richtigen Anhang hochgeladen

ahh, ja, danke.
Sofern die CNY70 zum Betrachter zeigen, sind sie richtig angeschlossen.
Ich würde auch die 100k Widerstäde weglassen, d.h. durch Brücken ersetzen. 100k vom Poti als Kollektorwiderstand sind mehr als ausreichend.


Also an dem Programmcode sollte alles stimmen

Dein Programm vom 22.01. 18:22 kann doch nicht alles sein?
ich glaube eher hier liegt der Haken, da du ja schreibst:


und habe festgestellt dass er hin und herschaltet je nachdem ob ich etwas vor dem sensor gehalten habe oder nicht.

Gruß, Michael

raimarc
23.01.2005, 20:55
Hallo,

wir hatten ursprünglich für den Antrieb unseres Roboters modifizierte Servomotoren vorgesehen. Wie bereits erwähnt, haben wir den Haken entfernt und die Kopplung von Poti und Zahnrad gelöst. Die Servos machen jedoch einfach nicht das was sie sollen. :-s
http://www.roboternetz.de/phpBB2/viewtopic.php?p=54989#54989

Wir haben uns jetzt daher für eine andere Lösung entschieden. Wir planen nun die Servos als normale DC-Getriebemotoren zu benutzen.
als Motortreiber soll der L293D verwendet werden.

Es wäre nett, wenn ihr euch mal den Schaltplan ansehen könntet. Fehlen Widerstände oder Kondensatoren? Stimmt die Beschaltung?

Gruß
raimarc

raimarc
23.01.2005, 20:57
Hier das Motorboard