Ein einfacher Roboter

Danke Dino! In Zukunft werde ich versuchen häufiger in der Bascom-Hilfe nachzuschauen :rolleyes:

Leider funktioniert der Befehl nicht so recht, egal welcher Wert die Variable hat, aus der der Binär-String bebildet wird. Ich erhalte immer "00000000"... Ist aber sonst auch nicht soo wichtig, vielleicht werde ich später mal wieder drauf eingehen :D

Momentan arbeite ich an einem kleinen Modul, welches eine RS-232 Schnittstelle besitzt, einen MAX 232 und 5 Elkos. Ich kann problemlos über UART Daten zum PC senden, aber empfangen geht einfach nicht. Ich habe nahezu alle im Internet zu findenden Codeschnipsel ausprobiert, auch viele selbstgeschrieben, aber keins hat funktioniert. Ich habe auch ca. 4 verschiedene Terminalprogramme ausprobiert, wovon auch eins selbstgeschrieben ist. Empfangen geht bei allen, aber senden nicht. Oder es ist eben so, das der Controller es nicht empfängt, ob der PC tatsächlich sendet, lässt sich ja schwer feststellen.. Verschiedene Baudraten habe ich auch ausprobiert, ebenfalls verschiedene Max's und µC. Ich verwende ein Nullmodemkabel mit dieser Schaltung:

rs232_max232_atmega8_nullmodem_v04.gif


Mit ISCHARWAITING() überprüfe ich, ob ein Zeichen im Buffer ist. Leider ist dort nie eins, egal ob ich Wörter zum µC sende, oder Zeichen..

Meine Schaltung habe ich auch schon des öfteren überprüft, leider bin ich immer der Meinung, das sie funktionieren "sollte"...

Ich bin grade irgendwie am Verzeifeln.. Könnt ihr mir helfen?

Fynn
 
Hi Fynn,

Ich kann problemlos über UART Daten zum PC senden, aber empfangen geht einfach nicht. Ich habe nahezu alle im Internet zu findenden Codeschnipsel ausprobiert, auch viele selbstgeschrieben, aber keins hat funktioniert. Ich habe auch ca. 4 verschiedene Terminalprogramme ausprobiert, wovon auch eins selbstgeschrieben ist. Empfangen geht bei allen, aber senden nicht. Oder es ist eben so, das der Controller es nicht empfängt, ob der PC tatsächlich sendet, lässt sich ja schwer feststellen..

1. Beim Terminalprogramm das Handshaking ausschalten. Kein Software- oder
Hardwarehandshaking aktivieren weil es sonst nicht geht. Das ergibt dann
genau dein Fehlerbild weil der PC meint das sein Gegenüber nicht bereit für
den Empfang ist.

2. Pack dir an die TxD und RxD am Atmel LEDs mit 2,2k nach +5V ...
siehe hier ...
dann sieht man ob Daten raus und rein gehen.

Gruß
Dino
 
ja okay.. Handshaking war aus..

Die LEDs sind nun dran, mit meinen VB Programm wird nahezu die ganze Zeit was gesendet. Leider leuchtet die RxD Lampe nicht. Wenn der Controller sendet, leuchtet die TxD Lampe kurz auf... :mad:

Manno.. ich werde wohl noch etwas rumbasteln müssen ;)
 
Die LEDs sind nun dran, mit meinen VB Programm wird nahezu die ganze Zeit was gesendet. Leider leuchtet die RxD Lampe nicht. Wenn der Controller sendet, leuchtet die TxD Lampe kurz auf... :mad:
Na dann hast du jetzt wenigstens ne Debug-Möglichkeit bei der du sehen kannst
ob der PC wirklich was sendet. ;)

Also scheint das Problem beim PC zu liegen.

Gruß
Dino
 
kann das vielleicht an meinem 3m Nullmodemkabel liegen, dass das irgendwie zu lang ist? :eek:
 
kann das vielleicht an meinem 3m Nullmodemkabel liegen, dass das irgendwie zu lang ist? :eek:
ich hab schon 57,6kBit/s über 20m Schaltdraht geleitet. Da mach dir mal keine
Sorgen. Deine 9,6kBit/s laufen auch noch über ne 120m Cat5-Leitung ohne
Probleme. Selbst schon ausprobiert.

Was mir grad auffällt ...
Sendest du eigentlich über dein VB-Programm und hast für den Empfang
gleichzeitig das Terminalprogramm offen ? Kollidiert das nicht bei der
Resourcenanforderung für die COM-Schnittstelle ?? Hast du das Handshake
nur beim Terminalprogramm abgeschaltet oder auch für das VB-Script ?

Verbinde mal nur Pin 2,3,5 (also TxD,RxD,GND). Mehr habe ich bei mir auch
nie angeschlossen.

Notfalls mal NUR mit dem Terminalprogramm arbeiten (PuTTY oder Teraterm)
Wenn man da auf ne Taste drückt dann muß die LED auch ohne Atmel am
MAX232 leuchten. Also nur mit dem Pegelwandler. Oder mal den Atmel aus
dem Sockel ziehen und am Sockel mit nem Draht TxD und RxD verbinden.
Also ne Schleife bauen. Dann muß man die gesendeten Daten auch wieder
auf dem Terminal sehen können.

Gruß
Dino
 
:banghead: :banghead: :banghead:

Ich habe die Schaltung falsch gelesen, die Buchse dort: Ich bin davon ausgegangen, dass das die "Lötperspektive" ist, dabei ist es die Frontansicht. Ich hab einfach mal unendlich oft Müll senden lassen, und dann hab ich mal ne LED mit 10kOhm an die verschiedenen Pins des Seriellen Adapters gehalten, und plötzlich blinkte sie dort, wo sie eigentlich nicht blinken sollte :mad:

Naja.. Das wird mir eine Lehre sein ;)

Vielen Dank Dino, für deine Hilfe!!

Fynn :eek:
 
Hallo Leute,

mein Roboter ist jetzt soweit fertig. Ich muss noch etwas an der Software pfeilen und dann stell ich euch mal ein Video rein.

Momentan habe ich noch eine Frage:
Ich habe auf dem Roboter 2µC. Beide mit UART verbunden. Funktioniert auch alles perfekt. Nur konnte ich nicht bei beiden Controllern den Hardware-Buffer benutzen. So kommt es, dass ich bei dem "Haupt" Controller Input-Befehle benutzen muss. Also wartet der Controller bis der andere geantwortet hat. Sobald jetzt aber ein Timer-Interrupt kommt, kommt alles durcheinander. Kann es sein, dass der Timer-Interrupt auch den Inputbin-Befehl unterbricht? Das konnte ich schwer herausfinden.. Interessant wirds auch, wie ich das Problem beheben soll :D

Ich hoffe ihr könnt mir weiterhelfen!

Fynn
 
Hallo,

ein Interrupt (egal welcher) unterbricht alles was nicht innerhalb einer ISR
ist oder wo der Interrupt nicht abgeschaltet ist.

Innerhalb der ISR sind Interrupts deaktiviert. Die werden erst durch den RETI
(Rücksprung aus der ISR) wieder aktiviert.

Also wenn du die Interrupts nicht selber deaktivierst oder das Programm sich
nicht grade in einer ISR befindet wird dich der Timer-Interrupt treffen.

Das Problem hab ich bei einem Assemblerprogramm von mir gehabt. Die
PinChange-Interrupts der Tastatur haben immer das Timing der LCD-Routinen
durcheinandergewürfelt. Also hab ich vor der LCD-Ausgabe die Interrupts kurz
deaktiviert und danach wieder aktiviert. Die Ereignisse bleiben dabei in den
Flags gespeichert und werden nach der Aktivierung dann sofort ausgeführt.

Gruß
Dino
 
auf euch ist immer Verlass :)

Vielen Dank! Da wäre ich so nicht unbedingt drauf gekommen :eek:

Ich möchte nun meinen Roboter mit Solarzellen ausstatten. Die Zellen hab ich hier noch so rumliegen. Es gibt nur ein Problem: Wie soll ich sie schalten?

Zitat von http://www.hessenenergie.de/Info-Bereiche/Photovoltaik/pvtech2.pdf
Werden z. B. zwei Module in Reihe geschaltet, so erhält man eine
Verdopplung der Spannung bei gleichbleibendem Strom, schaltet man die
beiden Module parallel, verdoppelt sich die Stromstärke bei gleichbleibender
Spannung.

Meine Zellen:

2x : 0,5 V und 800mA
1x : 10V und 40mA
1x : 4V und 60mA

Wie soll ich sie schalten, wenn ich damit einen 5V Spannungsregler betreiben möchte, und ca. 100 - 200 mA verbrauche? Ich finde einfach keine gute Lösung :/ Ich denke, auf 7V sollte man da schon irgendwie kommen, sonst arbeitet der 7805 glaub ich nicht so gut.. :(

Nochmal vielen Dank für eure bisherige Hilfe! :)

Fynn
 
Hallo Leute,

ich habe bei dem Problem einfach keine Lösung gefunden. Ist aber auch nicht soo wichtig ;)

Auf jeden Fall möchte ich euch in diesem Beitrag meinen Roboter präsentieren.

Im Herbst 2009 habe ich angefangen. Damals war ich noch 14 1/2 Jahre alt. :D Mit 0 Kenntnissen zu Mikrocontrollern. Visual Basic konnte ich bereits gut programmieren, was mir den Umgang mit den Bascom-Befehlen doch um einiges leichter machte. Dann bin ich auf euer Forum gestoßen. Im ersten Post noch Konstantstromquelle mit Spannungsregler verwechselt, habe ich also angefangen. Und nun das Ergebnis. Ein Thema mit 3.600 Views und 150 Antworten und neuen Fragen. Eigentlich eine fast komplette Dokumentation, wie man mit wenig Wissen viel erreichen kann :D

So, Schluss mit dem Gerede hier ist er:

roboter1 [1024x768].jpg

roboter2 [1024x768].jpg

(Irgendwie bekomme ich die Bilder hier nicht rein, Dirk?? :D)

Im ersten Moment sieht er noch etwas Chaos-Mäßig aus, aber ich denke: Ein Roboter ist nie fertig! Ich werde auch weiterhin viel verbessern, besonders, was die Befestigung der Platine angebetrifft :D :rolleyes: Trotzdem denke ich, ein einfacher Roboter ist es nicht mehr :) Übrigens werde ich auch nochmal ein Video machen.

Folgende Features besitzt er bis jetzt:

- 2 Motor Getriebe, beide Motoren über PWM rückwärts und vorwärts steuerbar.
- Auf einem Servo befestigten Entfernungsmesser (10 - 80cm)
- Display-Anschluss. Kann derzeit nicht genutzt werden, da Reichelt mir die "Adaptersteckerleisten" nicht geliefert hat. Somit kann ich die beiden Buchsenleisten nicht verbinden. Funktioniert allerdings mit einem Kabel wunderbar!

Folgendes wurde verbaut:

- 3 Taster (zusätzlich noch 2 Resettaster)
- 2 Controller: 1 AtMega8 und 1 Tiny44(aus Platzgründen >.<)
- Beide mit UART verbunden
- UART-Schnittstelle für die Verbindung zum PC. (Auf dem Bild eine 4pol. Steckerleiste. Diese wird an ein selbstgebautes Modul angeschlossen, auf welchem dann der MAX sitzt, und letzten Endes zu PC führt.)
- 2 Status LEDs. Jeweils eine für einen Controller.

Geplante Features:

- Scheinwerfer: 14.000 MCD superhelle Weiße LEDs aus China. Stückpreis 10ct :eek:
- Linienverfolgung
- Abgrunderkennung

Es gibt so viel, was ich gerne noch machen würde :cool:

Und wenn ihr mich fragt, ja, ich bin stolz auf mich! :)

Nochmals, vielen vielen Dank!!


"Ein einfacher Roboter" - Fynn

EDIT: Danke Dino :)
 
Hi Fynn,

ich habe bei dem Problem einfach keine Lösung gefunden. Ist aber auch nicht soo wichtig ;)
Problem ... die Solarzellen sind zu unterschiedlich um sie zu einem Cluster
zu verbinden.


Im Herbst 2009 habe ich angefangen. Damals war ich noch 14 1/2 Jahre alt. :D Mit 0 Kenntnissen zu Mikrocontrollern. Visual Basic konnte ich bereits gut programmieren, was mir den Umgang mit den Bascom-Befehlen doch um einiges leichter machte. Dann bin ich auf euer Forum gestoßen. Im ersten Post noch Konstantstromquelle mit Spannungsregler verwechselt, habe ich also angefangen. Und nun das Ergebnis. Ein Thema mit 3.600 Views und 150 Antworten und neuen Fragen. Eigentlich eine fast komplette Dokumentation, wie man mit wenig Wissen viel erreichen kann :D
Ich würde mal sagen : RESPEKT ! :adore: Drangeblieben und viel gelernt.

(Irgendwie bekomme ich die Bilder hier nicht rein, Dirk?? :D)
ganz einfach ... hochladen wie gehabt und dann im Editor den Cursor an die
Stelle wo das Bild hinsoll. Dann mit der Maus bei der Büroklammer auswählen
welcher der Anhänge an die Cursorposition soll. Und fertig.

Im ersten Moment sieht er noch etwas Chaos-Mäßig aus, aber ich denke: Ein Roboter ist nie fertig! Ich werde auch weiterhin viel verbessern, besonders, was die Befestigung der Platine angebetrifft :D :rolleyes: Trotzdem denke ich, ein einfacher Roboter ist es nicht mehr :) Übrigens werde ich auch nochmal ein Video machen.
Ein Roboter wird wohl auch dauernd mit neuen Ideen vollgestopft und mit der
Arbeit an dem Ding kommen einem neue Ideen wie man was besser machen
kann. Ich nenne sowas "organisch gewachsen" :D

Geplante Features:

- Scheinwerfer: 14.000 MCD superhelle Weiße LEDs aus China. Stückpreis 10ct :eek:
ne normale 5mm oder nen Emittter ? Bei nem Emitter die Kühlung nicht
vergessen sonst gibts beim anpacken heiße Finger ;)

- Linienverfolgung
- Abgrunderkennung

Es gibt so viel, was ich gerne noch machen würde :cool:
Für Linienerkennung könnte man Reflexlichtschranken nehmen oder bei Pollin
mal bei den optischen Sensoren suchen ... PSD 1L5_CP1 (1,95) Best.Nr. 120 404
Evtl wär das was für dich ...

Und wenn ihr mich fragt, ja, ich bin stolz auf mich! :)
Kannst du auch ! ;)

Nochmals, vielen vielen Dank!!
"Ein einfacher Roboter" - Fynn
Dann hat sich die Arbeit ja gelohnt :D

Gruß
Dino
 
Und wenn ihr mich fragt, ja, ich bin stolz auf mich! :)

Nochmals, vielen vielen Dank!!


Hallo Fynn!

RESPEKT, RESPEKT !!!

Da kannst du wirklich gepflegt stolz auf dich sein, was du in den letzten sechs Monaten alles erreicht hast. :flowers:

Tja und danken musst du wohl dir selbst!
Schließlich hast du nicht aufgegeben und deinem Hirn jede Menge Input verschafft..... und dies sogar assoziiert angewendet. :party:

Ich drück dir die Daumen, dass du an deinem Projekt festhältst und es weiter wächst.


Was deine Solarzellen betrifft....
Es ist schon so wie Dino geschrieben hat: Sie sind leider alle zu unterschiedlich.
Eine sinnolle Kombination ist leider nicht möglich.
Eventuell kannst du sie ja einzeln für verschiedene Bereiche nutzen. Allerdings nicht im direkten Betrieb.... sondern immer als "Ladeeinheit" für eine passende Pufferbatterie.

Nun aber erst mal hoch die Tassen :cheers: auf deine bisherige Leistung! :)

Glück auf weiterhin ;)
Cassio
 
Hi Fynn,

herzlichen Glückwunsch zu deinem Robby! :birthday:
Ich bastel auch schon seit Monaten an meinem Robby,
ist aber noch nichts, auch nur halbwegs fertiges, dabei herausgekommen.
 
@ Dino:

Problem ... die Solarzellen sind zu unterschiedlich um sie zu einem Cluster
zu verbinden.

Das ist mir am Ende auch aufgefallen. Ich dachte aber die Profis hier hätten noch irgendwelche Geheimtipps :D

ganz einfach ... hochladen wie gehabt und dann im Editor den Cursor an die
Stelle wo das Bild hinsoll. Dann mit der Maus bei der Büroklammer auswählen
welcher der Anhänge an die Cursorposition soll. Und fertig.

Okay. Werde ich beim nächsten Mal versuchen! Danke.


ne normale 5mm oder nen Emittter ? Bei nem Emitter die Kühlung nicht
vergessen sonst gibts beim anpacken heiße Finger ;)

Ich glaub nen so hellen Emitter gibts nicht für 10ct. Wäre ja auch lustig. Nein, es sind halbwegs normale 5mm LEDs. ;)


Für Linienerkennung könnte man Reflexlichtschranken nehmen oder bei Pollin
mal bei den optischen Sensoren suchen ... PSD 1L5_CP1 (1,95) Best.Nr. 120 404
Evtl wär das was für dich ...

Ich hab mich gestern Abend mal ganz schnell in PSDs und Linienverfolgung mit einem Roboter eingelesen. Bei einem Projekt mit dem ASURO hat man am Ende doch die primitivste Lösung gewählt: Man hat 2 Fotodioden so platziert, dass sie genau am Rand der Linie sind. In der Mitte von den beiden gabs dann ne LED. Sobald eine Fotodiode keine Linie mehr unter sich hatte muss einfach gegengelenkt werden.

linienfolge_schema.png


@ Cassio:

Eine sinnolle Kombination ist leider nicht möglich.
Eventuell kannst du sie ja einzeln für verschiedene Bereiche nutzen. Allerdings nicht im direkten Betrieb.... sondern immer als "Ladeeinheit" für eine passende Pufferbatterie.

Hmm.. das mit der "Pufferbatterie" muss ich mir mal überlegen. :rolleyes:

Fynn
 
Hallo Leute!

Nach etlichen Versuchen mit einer Linien-Erkennung habe ich erste Erfolge. Dazu werde ich bald mal was größeres schreiben.

Als ich nun endlich mal die Linienerkennungs-Logik in Bascom umgesetzt habe, und eine Auto-Kalibrierung programmieren wollte drehten die Motoren total durch. Es wirkte so, als hätten sie komplette 5V abbekommen, was eigentlich niemals passieren darf, und eigentlich auch nicht passieren kann. Siehe meinen Code unten. Um dem Fehler zu finden, habe ich mit der Motoren-Programmierung nochmal "angefangen".

Code:
$regfile = "m8def.dat"
$crystal = 8000000



Config Portb.7 = Output
Status Alias Portb.7

Config Portb.6 = Output
Config Portb.2 = Output

Config Portc.5 = Input                                      'Sharp

Config Portd.2 = Output                                     'Motor 1 Pin 1
Config Portd.3 = Output                                     'Motor 1 Pin 2
Config Portb.1 = Output                                     'Motor 1 PWM 1

Config Portc.1 = Output                                     'Motor 2 Pin 1 ACHTUNG: UMLÖTUNG!!!
Config Portc.0 = Output                                     'Motor 2 Pin 2
Config Portb.2 = Output                                     'Motor 2 PWM 1

Config Portb.2 = Output                                     'Schalter für Sharp

Config Portc.4 = Input    'Taster
Portc.4 = 1
Config Portc.3 = Input
Portc.3 = 1
Config Portc.2 = Input
Portc.2 = 1


Status = 0



Cls

Portb.2 = 1

Wait 1

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1

Compare1a = 240
Compare1b = 240


Status = 1


Enable Interrupts

Dim Menu As Byte
Dim Gedruckt_1 As Bit
Dim Gedruckt_2 As Bit
Dim Gedruckt_3 As Bit
Dim Sharp As Word                                           'wert
Dim Sharp_z As Byte                                         ' der zähler

Dim Gegenstandl As Byte                                     'Der letzte Gegenstand: links
Dim Gegenstandr As Byte                                     'Der letzte Gegenstand: rechts

Dim S_fertig As Bit                                         'Ob der Servo schon fertig gedreht hat
Dim Zahler_g As Byte


Do

Compare1a = 60
Compare1b = 70


'Rechts
'Portd.2 = 0
'Portd.3 = 1

'Portc.0 = 0
'Portc.1 = 1

'Links
'Portd.2 = 1
'Portd.3 = 0

'Portc.0 = 1
'Portc.1 = 0

'Geradeaus
'Portd.2 = 0
'Portd.3 = 1

'Portc.0 = 1
'Portc.1 = 0

Wait 1

Compare1a = 255 'Aus Testzwecken
Compare1b = 255

'Rückwärts
Portd.2 = 1
Portd.3 = 0

Portc.0 = 0
Portc.1 = 1

Compare1a = 60 'Abweichung, damit er einigermaßen geradeaus fährt
Compare1b = 70

Wait 1

Compare1a = 255 'Aus Testzwecken
Compare1b = 255

'Geradeaus
Portd.2 = 0
Portd.3 = 1

Portc.0 = 1
Portc.1 = 0

Compare1a = 60
Compare1b = 70


Wait 1

Loop

Ich denke, das Programm sollte klar sein: Rückwärts ... Vorwärts usw. Aber irgendwie haut das gar nicht mehr hin. Mal ist ein Motor schneller, mal der der andere. Für mich fast unerklärlich. Motortreiber habe ich bereits ausgetauscht.

Während ich den Beitrag hier schreibe kommt mir eine mögliche Ursache:

Die Motoren drehen ja noch etwas aus, wenn man ihnen den Strom "wegzieht". Wenn man direkt danach die Richtung ändert, erzeugen Motoren doch noch ihren ää "Ausroll"-Strom, oder nicht? Wenn man nun die Polarität ändert (Übergang von vorwärts auf rückwärts), könnte es nicht zu einem Kurzschluss oder so etwas kommen? Übrigens macht der µC während dieses Programms öfter mal einen Reset. Jetzt denkt man natürlich gleich an Störspannungen, aber kann sich diese Störspannung über den Spannungsregler hinweg bis zu Batterie ausbreiten? Denn µC und Motor haben getrennte 7805's.

Ich hoffe ich könnt mir heelfen! :help:

Fynn
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)