Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehle für Sensor Programmierung?
Da_Vinci13
14.01.2009, 18:15
Was für Befehle bräuchte ich um einen Hindernisserkennungssensor so zu Programmieren, dass ein Roboter (mit 2 Motoren!) sich um 10 Grad dreht (Natürlich der Sensor mit!), wenn es ein Hinderniss vor ihm hat? bzw. bräuchte ich da überhaupt Befehle?
Ich schätze mal man müsste einen Motor für ganz kurze Zeit laufen lassen, dann würde der Roboter sich drehen...
Ich hab ein Buch über C, inwelchem ich sehr viel über C gelernt habe...
Leider steht sozusagen nichts über Hardware Programmierung drin, sondern sozusagen nur über Software...
Weiss jemand wo ich vielleicht noch etwas über die Hardware Programmierung lernen kann?
Grüsse!
Hubert.G
14.01.2009, 22:20
Deine Software fragt deinen Sensor ob ein Hindernis vorhanden ist, wenn ja, dann verändert die Software nach deiner Programmierung z.B. den Pegel an einem Port des µC, worauf deine Motoren zurückdrehen.
Das nennt man Programmieren.
oberallgeier
14.01.2009, 22:49
Hallo DA_Vinci13,
mein Dottie dreht bei einem Hindernis um 60° - genau. (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196)
Bei dem Ding habe ich zwei Motoren - wenn ein Hindernis erkannt wird, stoppen erst beide Motoren und danach dreht der eine rückwärts. Zur Regelung der Motoren auf eine bestimmte Geschwindigkeit habe ich in jedem Motor einen Encoder. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=344432#344432) In diesem Fall ist der Encoder ein ganz einfacher, zweiflügeliger Unterbrecher für die Lichtschranke. Durch Tests (also Messung und Rechnung) habe ich festgestellt, dass der Encoder 1068 Tics zählen muss, damit die Drehung genau 60° ist. Die Drehung geht rückwärts, damit nicht ZUM Hindernis gedreht wird . . . Ist das so verständlich?
Der Codeschnippsel dazu ist äusserst simpel:
while ( 1 )
{
if ( Iencdr0 >= 1068) break;
}
Viel Erfolg für Dich
Da_Vinci13
15.01.2009, 19:23
Danke für die Antworten!
Das alles ist eigentlich ziemlich verständlich. Danke!
Kann ich dann an den beiden Motoren einen Encoder anschliessen welche dann direkt mit einem bzw. zwei der Pins am Microcontroller anschliessen kann?
Noch eine Frage hätte ich da doch zu dem Codeschnippsel:
Was bedeutet Iendr0?
Und was hast du bei deiner Dottie für einen µC?
Was hast du für einen Sensor verwendet? Irgendwie find ich bei deiner Dottie gar keinen?
Übrigens, cooles Design der Dottie!
Grüsse!
oberallgeier
15.01.2009, 23:36
Hallo,
im Dottie (heisst eigentlich R2_D03) läuft als Controller (https://www.roboternetz.de/phpBB2/viewtopic.php?t=40507) ein m168/20 MHz.
... Kann ich dann an den beiden Motoren einen Encoder anschliessen ...In beide Motoren habe ich je einen Encoder aus Gabellichtschranke und Unterbrecherbalken eingebaut, siehe den obigen Link das Bild mit dem schwarzen "U" unter dem Stahlmaß. Die Encoder sind an den beiden externen Interrupt-Pins angeschlossen: INT0 und INT1, also Pin 4 und Pin 5. Jede Unterbrechung der Gabellichtschranke ergibt einen "Tic", der in einer ISR gezählt wird (muss man eben die Drehrichtung kennen - das habe ich durch die Motorsteuerung in der Hand).
Iencdr0 ist eine Variable, mit der die Anzahl der Encoder-Ticks beim Motor, der an INT0 angschlossen ist, gezählt werden. VOR der zitierten Zählerei, also zu Beginn der Drehbewegung, hatte ich diesen Wert auf Null gesetzt.
Dottie hat neben den zwei Gabellichtschranken an den Motoren drei Näherungssensoren, die hier beschrieben sind (https://www.roboternetz.de/phpBB2/viewtopic.php?t=38009) und an den Strohhalm klammert sich noch ein Sharp GP2D120.
... Irgendwie find ich bei deiner Dottie gar keinen? ...Danke, aber die sind (leider noch) deutlich zu sehen: vom unfertigen Zustand gibt es dieses Bild der Sensoren. (http://oberallgeier.ob.funpic.de/zw-platine-def01.jpg)
Da_Vinci13
16.01.2009, 16:49
Ich bin mir eben am Überlegen ob ich vielleicht als uC einen AtMega 8 nehmen sollte mit der entsprechenden Entwicklungsplatine:
http://shop.embedded-projects.net/product_info.php?ref=2&info=p43
Da ich schätze mal damit wird es nicht so schwer sein den Microcontoller und die Sensoren in die Schaltung miteinzubeziehen...
Als Sensor hätte ich mir einen Ultraschallsensor vorgestellt:
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=357
Dieser würde ich sagen wäre einfach um ihn an den uC anzubringen...
Dazu kann ich später dann vielleicht auch mal Distanzen mit dem Teil messen...
Als Motore hab ich keine Ahnung was ich da nehmen sollte...
Am liebsten hätte ich natürlich Motoren wo der Encoder gleich drin ist...
Weisst du vielleicht wo ich solche Motoren kaufen könnte?
Vielleicht fragst du dich warum ich mir alles so einfach mache, das hat einen ganz simplen Grund:
Ich hab schon einpaar Schaltungen aufgebaut und ich hab gesehen wie schnell man da Fehler machen kann...
Und ich will mich bei dem Roboter hauptsächlich auf die Programmierung konsentrieren und nicht allzu grosse hardware Probleme haben...
Als Gehäuse werde ich verschiedene Bauelemente von Fischertechnik verwenden da ich einen Bausatz von Fischertechnik habe... so kann ich auch einfach weitere Sachen dazu bringen, da ich den Bot einfach vergrössern könnte...
Was denkst du, könnte dieses Projekt umsetzbar sein?
Grüsse!
oberallgeier
16.01.2009, 20:31
Hallo Da_Vinci13,
zu dieser Platine kann ich nichts sagen - außer, dass nach den Bildunterlagen die angegebene Pinleiste für die IO-Pins nicht zu sehen sind. Da könnte es sein, dass Du noch löten musst. Für meine Ansicht ist die Platine halt a bissl gross *gggg* - aber das kannst Du sicher selbst gut beurteilen.
Der mega8 ist bei mir nur auf dem asuro - ansonsten spiele ich mich mit dem m168 - gleiches Pinout aber mehr Funktionen. Auch mit US hatte ich noch nichts zu tun, also auch da kann ich keinen Rat abgeben. Na ja, und zu Motoren MIT Encoder - ich mache eben etwas viel selber. Ausserdem sind mir die meisten Motoren für meine derzeitigen Projektchen deutlich zu groß. Übrigens kannst Du Dir eine Odometrie leicht selbst machen und so Deine Wege messen. Schau mal in die Bedienungsanleitung des asuro. Vielleicht bringt Dich das auf Ideen.
Warum solltest Du Dir die Sache mit gekauften Platinen NICHT einfach machen. Ich habe auch eine RNControl hier rumliegen. Aber die ist eigentlich nur für Testaufgaben in Verwendung.
... und nicht allzu grosse hardware Probleme haben ...Ach - da hast Du völlig recht. Ich hänge derzeit an blödsinnigen Abstimmungsproblemen um meine Dottie-Elektronik/Sensorik an dem Autochen 1:20 ans Laufen zu bekommen. Das gibt Probleme über Probleme - aber es geht voran. Fischertechnik - ahhhh, ich habe auch einen (alten) Fischertechnik-Hobby-Kasten. DAS ist ein tolles Zeug, aber meine Projektchen stelle ich mir eben anders zusammen.
... Was denkst du, könnte dieses Projekt umsetzbar sein? ...Warum nicht - sauber planen - und sauber bauen. Dann wirds doch fast immer was.
Da_Vinci13
17.01.2009, 10:20
Danke für die vielen Antworten!
Beim Atmega 8 werde ich vorläufig bleiben, sowie auch beim US.
Aber ich werde mal noch im Unterforummotoren fragen ob jemand so einen Motor mit Encoder kennt.
Danke für die Hilfe!
Grüsse!
oberallgeier
17.01.2009, 19:22
Hi Da_Vinci13,
Ich wollte noch fragen, ob du mir helfen könntest, wie ich es fertig bringe, dass mein Motor vorwärts dreht? Denn so könnte ich machen, dass mein Roboter später einer Linie folgen könnte... Beim Asuro kann man ja einfach eingeben: MotorSpeed (255,255) ...Solche Anfragen als PN finde ich müssig. Die interessieren ja auch viele Andere.
Du könntest Dir den asuro-code der Library (und vielleicht hier lesen) (https://www.roboternetz.de/phpBB2/viewtopic.php?t=26594) vornehmen und den Code für den Motor durchgehen. Dann könntest Du das an Deinen Motor und Controller anpassen und in einem provisorischen Aufbau testen. Abschreiben alleine bringts wohl nicht. Und ich arbeite lieber an meinen eigenen Problemen als Software für andere zu entwickeln.
Da_Vinci13
17.01.2009, 21:54
OK.
Danke für die Antworten!
Grüsse!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.