PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Asuro mit Greifer" Projekt



Thund3r
07.11.2009, 12:58
Hallo

Ich möchte hier mein Projekt zum Asuro mit Greifer vorstellen.
Hatte in dem Forum hier Anregungen gefunden und diese umgesetzt.
Der Asuro steuert einen Servo Motor der einen Greifer bedient. Der Servo Impuls wird über die rechte BackLED gesendet.


Video:
First Step: http://www.youtube.com/watch?v=QIkSxFbXF50
Fertig: http://www.youtube.com/watch?v=8gUOZ1lC8pY
[/URL]
Fotos:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2412 (http://gffstream-0.vo.llnwd.net/c1/mediathek/media/1live/krone/2011/konzerte/111207-1live-krone-konzert-philipp-poisel_web-m.mp4)
[URL]https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=2413


Quellcode:




#include <asuro.h>
int main (void)
{
Init();
StatusLED(YELLOW);
int x;
int i;
int p;
MotorDir(FWD,FWD);
MotorSpeed(175,175);
for(p=0;p<1000;p++)
{Sleep(72);}
MotorDir(BREAK,BREAK);
StatusLED(GREEN);

for(x=0; x<15; x++)
{
BackLED(ON,OFF);
Sleep(80);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(ON,OFF);
Sleep(80);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}
MotorDir(RWD,BREAK);
MotorSpeed(175,0);
for(p=0;p<1000;p++)
{Sleep(72);}
MotorDir(FWD,FWD);
MotorSpeed(175,175);
for(p=0;p<2000;p++)
{Sleep(72);}
MotorDir(BREAK,BREAK);
Sleep(72);
StatusLED(RED);
for(i=0; i<15; i++)
{
BackLED(ON,OFF);
Sleep(15);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(ON,OFF);
Sleep(15);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}
StatusLED(YELLOW);
MotorDir(RWD,RWD);
MotorSpeed(175,175);
for(p=0;p<1000;p++)
{Sleep(72);}

StatusLED(GREEN);
MotorDir(BREAK,BREAK);
return(0);
}


Nun wünsche ich mir von euch konstruktive Kritik oder Verbesserungsmöglichkeiten ;)

Andere Projekte sind in Arbeit...

Gruß Thund3r

pinsel120866
07.11.2009, 17:33
Gratuliere!

Tolle Arbeit, du könntest vielleicht die andere Back-LED für einen zweiten Servo verwenden um den Becher hochzuheben.

Thund3r
07.11.2009, 17:56
Danke :)

Jap hab ich mir auch überlegt oder eine art kran zu konstruieren mit hebe/senk vorrichtung und einem greifer.

Gruß Thund3r

pinsel120866
07.11.2009, 19:29
Ich mache dasselbe mit einem Servo:

http://www.youtube.com/watch?v=wQY2dqMZH3Y

Thund3r
07.11.2009, 19:56
Ja das video kenn ich :P
Wirklick sehr gut!
Ich will mir auch eine neue konstruktion bauen die ebenfalls hebt und greifen kann.

Ich dachte an einen schwenkenden Kopf mit dem IR-Abstandsmesser oder zB einem Ultraschall bauteil.
Fallen dir noch ein paar andere anwendungsmöglichkeiten für servos und asuro ein?

Gruß Thund3r

Bazibua
08.11.2009, 11:00
wie programmiert man sowas, das der asuro unterscheidet ob er gegen ein hindernis fährt oder dass es ein objekt is, dass er "wegheben" kann?
braucht man für sowas dann diesen Atmega32 ?

Thund3r
08.11.2009, 13:02
Hallo

Also vorab ich benutze den ATmega8.
Man kann zB einen Drucksensor(einen Schalter zB) an den Greifer bauen der erkennt ob etwas zwischen den zangen sitzt wenn er zugreift --> etwas zum wegheben. Allerdings ist es recht schwer für den Roboter zu unterscheiden ob zB eine Wand oder ein Becher vor ihm steht da die Taster oder das IR -oder Ultraschallabstanderkennungsbauteil im prinzip nur ein true oder flase ausgibt. Man könnte die breite vermessen um zu gucken ob es in die zange passt und dann greifen. Aber das Roboter kann so auf anhieb nicht so leicht erkennen ob er "es wegheben" kann.

Gruß Thund3r

Bazibua
08.11.2009, 13:08
ok, also man könnte den asuro nur so programmieren dass er etwas weghebt, mit dem risiko dass er gegen die wand fährt und versucht sie zu greifen? also nur entweder oder? oder? xD

Thund3r
08.11.2009, 13:13
Hi

Als man könnte den Asuro rumfahren lassen und wenn ein Hindernis zB durch IR Abstandsmesser gefunden wurde (Wand oder Becher) ihn vorsichtig anfahren und greifen lassen. bestätigt der tastsensor am greifer das etwas erfolgreich gegriffen wurde kann das programm weiter abgearbeitet werden wenn nicht dreht sich der roboter und sucht was was er greifen kann.

Man könnte auch (komplizierter) den gegnstand ausmessen --> zählen wie oft sich der roboter um eine bewegungseinheit (muss man selber festlegen) drehen muss bis kein hidnerniss mehr da ist das gleiche dann in die andere richtung und man kann ungefähr wissen das hinderniss was auch immer passt in den greifer oder nicht.

Gruß Thund3r

Virus
08.11.2009, 13:57
ich glaube nicht das der asuro das schafft weil wenn er sich vor einem becher oder einer wand wegdreht wird der abstand größer. asuro müsste dann die nicht sehr genau messbare Abstand mit dem winkel der drehung verrechnen.

Thund3r
08.11.2009, 13:59
Hallo

Das vermessen könnte man aber auch so machen:

Den IR Abstandsmesser (oder Ultraschall) auf einen Servo montieren so verändert sich die distanz nich alzusehr da sich nur die messeinheit dreht nicht der ganze roboter.

Gruß Thund3r

Virus
08.11.2009, 14:22
ich meine das wiefolgt:
X ist der gleichbleibende sensor, auf einem servo.
die schwarzen striche sind die unterschiedlichen messungen der sensoren.

der bescher oder bauklotz ist rot, die wand grau.

wie man sieht ist in beiden fällen eine zunahme der entfernung zu erkennen. jetzut ist die frage wo man die grenze setzt zwischen wand und becher, und ob der asuro nicht mit dem vergleichen und errechnen der entfernungen zu beschäftigt ist.

Thund3r
08.11.2009, 14:44
Hallo

Also bei der IR Abstandsmodifikation kann man eh nur von einem true oder false ausgehen. man wüste dann das der Roboter oder der servo der schwenkt sich meientwegen 6 mal nach links ausrichten muss bis er das signal verleirt und 8 mal nach rechts also is das objekt ca 14 einheiten breit diese könnten dann zB 6 cm entsprechen. man weiß: mein greifer ist zB 8 cm breit also weiß der asuro das objekt kann ich greifen.

Gruß

Bazibua
08.11.2009, 19:20
ok, aber mit welchem befehl willst du das programmieren?
gibts sowas wie eine if then else schleife?
also grob gesagt

if objekt<8 (angenommen greifer packt 8cm)
then "pack zu"
else turn around an drive away
:P so ungefährt müsste des doch funktionieren oder?

Thund3r
08.11.2009, 21:12
Hallo

ja sicher das ist einfach zu realisieren

while(1) // Endlosschleife
{
if(messwert<8 && messwert>3) //Kriterium damit der asuro greifen kann
{
Servo.zu(); // Methode damit der Greifer schließt
}

else { Asuro.weiter(); } // Asuro sucht weiter
}
die eiznelnen methoden beschreibe ich jetz nicht ausführlich da es ja hier ums prinzip geht^^

Gruß Thund3r

KleinerAsuro
15.12.2009, 09:09
Ich mache dasselbe mit einem Servo:

http://www.youtube.com/watch?v=wQY2dqMZH3Y

=D> echt super tolle Konstruktion
bin neu im asuro bereich unf finde deinen asuro richtig toll
welche erweiterungen hat denn dein asuro noch?
Würde mich sehr freuen wenn du mir eine anleitung für den bau deines asuros mit dem greifer und der andreen Erweiterung die ich nicht erkenne schicken würdest
Gruß
Kleiner Asuro

PS: Würde mich darüber echt sehr freuen da ich dei konstruktion sehr toll finde und würde mich darüber echt freuen

Elu
15.12.2009, 10:20
Hallo Thund3r,

zur Funktion ist bereits einiges gesagt worden. Ich finde aber, dass die Greiferkonstruktion zu "grobschlächtig" aussieht. Meiner Meinung nach, sollte ein Robbi auch "technisch" aussehen. Vielleicht kannst Du die Holzkonstruktion des Greifers durch eine Konstruktion aus Alu-Profilen, die es in den Baumärkten gibt, ersetzen.

Das soll aber keine Kritik, sondern nur ein Hinweis sein.

Gruß Elu

Thund3r
15.12.2009, 15:19
Hallo

Ja das dachte ich mir auch und hatte eine metallkontruktion angefertigt die allerdings zu schwer für den asuro war, ich tüftle grade noch an einer ideallösung

@ KleinerAsuro meinst du jetz mich? das von dir ausgewählte video ist nicht von mir sondern die anderen oben. ich habeaber auch andere asuro projekte erfolgreich ertiggestellt: metalldetektor,sumo, ir sensor (nach waste) etc.

Gruß Thund3r

KleinerAsuro
15.12.2009, 20:04
Hallo

zum einen meine ich pinsel bei dem ich gerne wissen möchte wie er seinen asuro erweitert hat zum anderen aber würde mich dein metalldetektor auch sehr interesieren.

Gruß KleinerAsuro
PS: Würde mich echt freuen wenn ihr mir das bauuen erklären würdet

Thund3r
15.12.2009, 20:18
Hallo

Also hier der Beitrag zu meinem Asuro-Metalldetektor Projekt

https://www.roboternetz.de/phpBB2/viewtopic.php?p=474339

Zu dem Greifer egal für welche Kontruktion du dich entscheidest wichtig bzw das worum es geht ist das anschließen eines Servo Motor an den Asuro. Ich habe ihn an die zentrale Stromversorgung des Asuros angelötet und den Puls bekommt er über eine BackLed die dann im Programm für 15 bzw 90 ms angesteuert wird. So dreht er sich nach links bzw nach rechts. So kann man (inkl FrontLed) mind. 3 Servos anschließen und ansteuern ohne das dem Asuro irgendwelche wichtigen Eigenschaften genommen werden. Nur könnte dies viel Energie brauchen.
Dann kann man jede beliebe Konstruktion bauen Pinsels Greifer oder einen richtigen Greifarm der sich heben udn sekne lässt. Mit 3 Servos sind der Kreativität keine Grenzen gesetzt.

Gruß Thund3r

Thund3r
03.01.2010, 02:14
Hallo

Schaut mal in mein neustes Greifer Projekt:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=51874

Gruß Thund3r

schnellerblitz99
18.08.2011, 17:56
wlche Servos benutzt ihr für eure projekte?

powder999
29.11.2011, 16:20
Und wie wird das alles mechanisch umgesetzt? Ich wollte einen Fototransistor nehmen, in die Nähe von der BackLED platzieren und dann verdunkeln! Wenn das Licht angeht, schaltet der Transistor durch und der Motor dreht sich! Wie hast du das gemacht, ich komm ned weiter! Ist ein Abschlussprojekt der FOS! ich hoffe du kannst mir helfen Thund3r oder auch jemand anderes!
DANKE im voraus!

PS: Wo bekomm ich die Bauteile her! Reichelt wollt ich bestellen, doch der hat keine Servos!

Thund3r
29.11.2011, 16:59
Hallo

Ich habe meistens TOP-LINE MINI SERVO ES-05 von Co nrad benutzt.
Ich gebe den Servos den Impuls ueber die LEDs die am Asuro vorhanden sind. Dazu wird der Servo an die Stromversorgung des Asuros angeschlossen und das PWM Kabel direkt an eine Konstaktstelle der vorhandenen LEDs geloetet.
Wenn die LED im Programm dann angesteuert wird wird dieses Signal direkt an den Servo geleitet. Mit der richtigen Frequenz wird der Servo sich dann an die gewuenschte Position drehen (da ist etwas ausprobieren angesagt da sich ueber diesen Weg die Servos natuerlich nicht so zielsicher ansteuern lassen wie ueber einen I/O Port o.ae.).
Wenn du noch Anregungen und Details suchst guck dir das hier mal an :

https://www.roboternetz.de/community/threads/47864-Mobiler-Asuro-mit-fest-montiertem-Greifarm-Zum-nachbauen?highlight=asuro+greifer

andere Anwenungsmoeglichkeiten zB beim RP6: www.youtube.com/watch?v=VPqT5MsCGLM (http://www.youtube.com/watch?v=VPqT5MsCGLM)

Viel Erfolg!

Gruß Thund3r

powder999
29.11.2011, 17:20
Danke für deine schnelle Antwort, werd gleich ausprobieren! ;-)

powder999
02.12.2011, 15:26
Brauch ich sonst noch was, außer den Servo? Einfach nur an den Pin und fertig? Ich hab keine Ahnung! Wo finde ich dann das PWM-Kabel? Kannst du das noch mal für Doofe erklären, wie man vorgeht? Greifer hab ich schon, daran ist ein Seil, was mit dem Motor eingewickelt werden soll! Wie geh ich jetzt vor? Wäre sehr sehr sehr ned, wenn du mir helfen könntest!

Thund3r
02.12.2011, 17:20
Hallo

http://de.wikipedia.org/wiki/Servo
Schwarz und rot sind fuer Strom das andersfarbige is das PWM

Gruß Thund3r

powder999
21.12.2011, 14:42
Hallo, hier ist die Nervensäge schon wieder! ;-)
Ich hab jetzt alles so gemacht, wie du gesagt hast! Der Motor dreht sich einmal links- und auch rechtsherum!
Nur die Drehung ist nicht sehr lang, ca. 20°. Wie kann ich den Winkel vergrößern.
Außerdem, wenn ich halt mehrmals draufdrücke komm ich trotzdem nur auf ungefähr 150°. Der Motor macht noch nicht mal ne halbe Drehung! Wie kann ich das ändern!
Hoffe du oder jemand anderes kann mir helfen!

Danke im voraus!

Anbei noch einmal mein Programmcode!
20895

Thund3r
21.12.2011, 15:24
Hallo

Um die Servoposition zu veraendern muss die Impulsfrequenz angepasst werden.

zB wird aus


BackLED(ON,OFF); Sleep(80);
BackLED(OFF,OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);

-->

BackLED(ON,OFF); Sleep(100); // oder mehr oder weniger
BackLED(OFF,OFF); Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);

Hier ist ausprobieren und annaehren gefragt.

Gruß Thund3r

powder999
22.12.2011, 13:41
Danke für deine Hilfe, hier das erste Video als Beweismittel!
P.S. Sehr schlechte Qualität, aber man erkennt was, hoffe ich! ;-)

http://www.facebook.com/video/video.php?v=186225541472676&notif_t=video_processed[/url]

Thund3r
22.12.2011, 13:56
Hallo

Der Link ist nicht einsehbar lad es am besten bei YouTube o.ae Seite hoch

Gruß Thund3r

powder999
22.12.2011, 14:58
So, nun die Links! Sorry!

http://www.youtube.com/watch?v=VSEfgQH63eU

http://www.youtube.com/watch?v=SVuFGdnhuZ4

http://www.youtube.com/watch?v=wARxcJ824qc

Thund3r
22.12.2011, 15:15
Hallo

Der Greifer sieht gut aus!
Pass aber auf dass wenn du den Servo ueber dem Admega platzierst eine Abschirmung drunter packst sonst geht der Controller auf Dauer vielleicht kaputt

Gruß Thund3r

powder999
23.12.2011, 09:06
Der Servomotor ist hinten, wo die Batterien eig. sind, Ein Draht geht nur nach vorne! Was würde passieren, wenn der in der Nähe wär und wie würde ich abschirmen müssen!
UND: (ich weiß ich nerv) Wenn ich nach vorne, rechts, links oder hinten fahr, dann geht der Greifer zu, Was ist da los und wie kann ich das ändern, war bei dir doch auch nicht so, oder?
Danke wieder mal im voraus!

Thund3r
23.12.2011, 11:47
Hallo

Wenn der Servo ueberm Controller haengt kann das elektromagnetische Feld was von dem ausgeht den Controller zerstoern hm ich hab die immer abgeschirmt indem ich ne kleine metallplatte uebern controller gepackt hab die an GND angeschlossen war.
Wenn der Servo was macht wenn ers nich soll dann wird die LED wohl irgendwie angesteuert beim bewegen. Versuch mal das Servo PMW Kabel ans andere Beinchen der LED zu befestigen. Koennte klappen^^

Gruß Thund3r

powder999
23.12.2011, 12:05
Meinst du, ich muss auch abschirmen, wenn der Servo hinten bei der Batterie ist?

Thund3r
23.12.2011, 12:21
Hallo

Ich hatte die Servos auch oefter mal hinter dem Batteriefach platziert und hatte damals nicht abgeschirmt.
Ich hab die Abschirmung nur benutzt wenn der Servo in unmittelbarer Naehe des Controllers oder anderer empfindlicher Bauteile war.

Gruß Thund3r

powder999
23.12.2011, 12:27
Gut, danke, dann bin ich ja beruhigt! Dann kann ich jetzt erstmal in Ruhe die Weihnachtszeit genießen!
Danke schonmal für alles und bis zur nächsten nervenden Frage von mir!
Ich wünsch dir und deiner Familie ein schönes Weihnachtsfest und einen guten Rutsch ins neue Jahr!

Thund3r
23.12.2011, 12:43
Hallo

Dankesehr! Dir natuerlich auch und guten Rutsch ;)

Gruß Thund3r

powder999
24.12.2011, 09:53
Jetzt dreht sich der Motor schon beim Einschalten. Liegt wohl doch an was anderem! Muss ich halt wieder umlöten. Schade! Wenn dir noch was einfällt kannst du mir ja noch mal antworten!

powder999
03.01.2012, 16:52
Hier noch einmal die Videos zum Verständnis!

http://www.youtube.com/watch?v=Vy5psj-OvmA&context=C3f570b9ADOEgsToPDskIomhyXOk57F2-yk6BgOc3H
http://www.youtube.com/watch?v=tOEeS37SY4A&feature=context&context=C3f570b9ADOEgsToPDskIomhyXOk57F2-yk6BgOc3H

Soll noch spektakulärer werden, sind nur die Anfänge!

powder999
15.05.2012, 15:41
Hallo thund3r und alle die mir bei meinem Projekt geholfen haben.

Ich wollte hiermit euch allen noch mal danken, die mir bei meinem ASURO-Projekt geholfen haben, hatte heute meine Abschlusspräsentation der FOS über den ASURO gehalten und eine "1" bekommen.
Dank eurer Hilfe hatte ich endlich Erfolg mit dem Greifer! :D

Nun hätte ich noch mal eine Frage, will nicht extra einen neuen Thread öffnen:

Ich kam heute nicht von dem ASURO weg und wollte deshalb das "nachprogrammieren" --> http://www.youtube.com/watch?v=Me5blu9WzzI

Jetzt ist meine Frage, wie kann ich die Linienfolge für eine bestimmte Strecke ausführen?
Ich will den Becher (anstatt ihn runterzuschmeißen) dann stehen lassen, herum fahren und ihn wieder zurückfahren.

Thund3r
15.05.2012, 19:20
Hallo

Freut mich das du mit den Projekten erfolgreich warst! weiter so!
Ich denk mal das hier im Programm beim druecken der Taster (wenn der Asuro gegn den Becher faehrt)
oder bei einem anderen Abbruchsignal (IR Signal, durch Odometrie gemessene Distanz o.ae.) der Linienfolge-part abgebrochen wird und in einen andere Handlungsroutine gewechselt wird.
So oder so aehnlich kann man das auf jedenfall realisieren.

Gruss Thund3r

powder999
16.05.2012, 11:38
ja, mein Problem ist nur noch, was kann ich in die while-Schleife für die Linienfolge schreiben. Sleep geht ja ned rein und wie kann ich überhaupt eine bestimmte Strecke fahren. Kann da mir einer mal einen Tipp geben, wie überhaupt eine bestimmte Strecke gefahren werden kann, den Rest kann ich mir vielleicht durch Ausprobieren erschließen!
Hier schon einmal mein bisheriges Programm, bei der zweiten Linienfolge will ich ihm dann eine bestimmte Strecke auf der Linie fahren lassen!

22372

DANKE!!!

P.S. Der ASURO macht irgendwie süchtig, wollte eigentlich den ASURO nach meinem Abschlussbericht erst einmal ruhen lassen, aber youtube und die ganzen ASURO-Videos geben immer neue Ideen und ich versuche das mit meinem minimalen Programmierwissen nachzuspielen!

maikel510
02.06.2012, 14:31
hallo
also mir geht es ähnlich wie powder999 =D ich mach den asuro auch als schulprojekt un das zählt dann ins abi rein. meine idee für das eigene projekt war ebenfalls ein asuro mit greifer. ich hab in youtube einen gesehen, der mit einem servo einen gegenstand hochgehoben und gegriffen hat das hab ich jetzt mal nachgebaut. mechanik funktioniert aber mein problem ist das programm ich bin gerade dabei die frequenz von meinem servo rauszufinden aber ich krieg sie nicht raus xD ich hab einen modelcraft Y-3009 Mini Servo vom Conrad. wie ist das mit der frequenz sind das immer 10er schritte? weil so hab ichs getestet also
BackLED(OFF,ON);
Sleep(10);-->Sleep(20);-->Sleep(30);-->usw
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
aber mitlerweile bin ich bei 320 un es tut sich immernoch nichts was mach ich falsch?

radbruch
02.06.2012, 15:51
Hallo

Je nach Servotyp liegt die Mitte des Drehbereichs bei Impulslängen von ca. 1ms bis 1,5ms Dauer (ms bedeutet Millisekunden oder 1/1000 Sekunde). Der Impuls sollte alle 20ms wiederholt werden.

In der orginalen asuro-Library von der CD dauert ein Sleep(1) genau 1/72000 Sekunde, Sleep(72) dauert entsprechend eine 1ms. (Bei den neueren Libs wird ein 36kHz-Timer verwendet, deshalb dauert hier Sleep(36) eine Millisekunde.) Für 20ms Impulswiederholung müßte man Sleep(20*72-Impulslänge) warten. Da Sleep() aber einen 8bit-Parameter benötigt, muss man die Impulspause auf mehrere Aufrufe von Sleep verteilen. 20*72 wären 1440 Sleep(1)-Aufrufe, davon muss man noch die Impulsdauer abziehen und den Rest auf 255er Sleep()-Aufrufe verteilen:


#include "asuro.h"

#define libversion 72 // 72kHz oder 36kHz Library

int Impulspause;
char Servoimpuls = libversion; // 72 (oder 36) für eine Millisekunde (Servomitte?)

int main(void)
{
Init();
while(1)
{
BackLED(OFF,ON); // Impulsstart
Sleep(Servoimpuls);
BackLED(OFF,OFF); // Impulsende

Impulspause=libversion*20-Servoimpuls; // Anfang Pause; Dauer berechnen
while(Impulspause > 255) // 255er-Schritte
{
Sleep(255);
Impulspause -= 255;
}
Sleep(Impulspause); // Restpause
}
return(0);
}(ungetestet)

Gruß

mic

maikel510
02.06.2012, 16:35
erstmal danke also ich hab das programm getestet un es funktioniert auch aber mein servo bewegt sich nur ca ein drittel. deshalb geht mein greifer auch nicht komplett zu danach hör ich nur noch ein zahnrädchen das vibriert und man kann es auch leicht erkennen wenn man genauer hinsieht aber der servo bewegt sich nicht weiter

maikel510
02.06.2012, 16:40
ich weis nicht ob das normal ist aber immer wenn ich den asuro ausschalte, egal was für ein programm drauf ist, dann dreht sich der servo ein stück

maikel510
02.06.2012, 17:13
okay also ich hab jez mal n programm geschrieben un des funktioniert sogar halbwegs =D
#include <asuro.h>
#include <myasuro.h>

int main(void)
{
Init();



int x;
for(x=0; x<15; x++)
{
BackLED(OFF,ON);
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}





while(1);
return 0;
}

die frequenz habe ich mir jez mal ausgerechnet und mir dadraus die zeit für die pausen ausgerechnet. soweit geht eig alles
also bei meim asuro läuft des programm so ab: es wird gestartet dann fängt der servo an er dreht sich fast um 90° etwas weniger vielleicht 80° oder so aber dann ist schluss weil der greifer+ das objekt noch zu schwer sind da werd ich noch etwas dran verbessern. mit nem leichteren objekt gehts aber dann hab ich das problem, dass der servo sofort nachlässt wenn in meinem programm x>15 ist. kann man den auch irgendwie feststellen dass er das gewicht hält? oder hängt das auch mit dem gewicht zusammen? das problem dass er sich nochmal um ein stück drehen will, wenn man ihn ausmacht ist immernoch da

radbruch
02.06.2012, 17:20
Sleep(0.125);

?

maikel510
02.06.2012, 17:42
hat mich ao gwundert xD ich hab die frequenz so ausgerechnet: Periodendauer =T Frequenz= f un dann mit der Formel T=1/f un mein prozessor hat 8000000Hz also muss ich 1/8000000= 0,000125 rechnen des isch dann T un weil T in sekunden angeben isch hab ich *1000 gmacht damit ich die ms rauskrieg un dann komm raus: T=0,125

radbruch
02.06.2012, 19:04
lol

Vergiss deine "Berechnungen". 0.irgendwas als Parameter für Sleep() mag der Kompiler ganz sicher nicht. Kannst du das fehlerfrei kompilieren?

Edit: Huch, das kann man fehlerfrei kompilieren. Fraglich ist natürlch, WAS da kompiliert wird. 0.125 ist ganz sicher kein ganzzahliger Parameter für Sleep()

maikel510
02.06.2012, 19:33
wundert mich auch aber solangs funktioniert ;D wie kann ich eigentlich den servo auf einer bestimmten position halten? meiner geht immer wieder zurück, sobald der teil im Programm abgelaufen ist und ich will ihn eigentlich für eine bestimmte zeit in dieser stellung lassen. er soll einen becher packen+hochheben und mit ihm losfahren aber sobald die frequenz beendet ist entlastet sich mein servo soweit, dass der becher abgestellt ist und der greifer leicht geöffnet ist wie kann ich das ändern?

maikel510
02.06.2012, 21:36
ich glaube dass ich dem servo solange strom geben muss wie er etwas halten soll kann das sein? un ich habe gleich noch eine frage ich weis nicht wie genau das funktioniert also ich habe ja mein programmabschnitt, dass er zupackt so geschrieben:

for(x=0; x<90; x++) //*for-Schleife um den Greifer zupacken zu lassen*//
{
StatusLED(RED); //*Rückmeldung Gegenstand gefunden*//
BackLED(OFF,ON); //*Start der Frequenz um den Servo an zu steuern: Greifer macht zu!*//
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}

muss ich damit er wieder öffnet einfach negative zahlen verwenden also:

for(x=0; x<90; x++) //*for-Schleife um den Greifer zupacken zu lassen*//
{
StatusLED(RED); //*Rückmeldung Gegenstand gefunden*//
BackLED(OFF,ON); //*Start der Frequenz um den Servo an zu steuern: Greifer macht zu!*//
Sleep(-0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(-0.125);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}

oder wie funktioniert das? sry wenn ich nerven sollte aber ich muss bald meine dokumentation von dem projekt abgeben =D

powder999
03.06.2012, 13:27
Ein Minus gibt´s auf jedenfall schon mal nicht im Sleep.
Beim Servo ist das so, dass in dem Servo ein IC steckt, dass den IST-Wert (mit Poti gemessen, also wo das Servokreuz grad steht) mit dem Soll-Wert(also wo das Kreuz hin soll) verglichen wird und dann alles nachgeregelt wird. Du tust sozusagen mit deinem Sleep dem Servokreuz ein Zielfähnchen (einen Winkel, der angefahren werden soll) stecken, wo dann das Kreuz "hinläuft" Du musst einfach mal ausprobieren, bei welchen Werten dein Servo vorwärts, bzw. rückwärts läuft. http://www.ermicro.com/blog/wp-content/uploads/2009/02/servo_01.jpg

Und wenn du gar nicht klarkommst, kannst du mich noch einmal ansprechen, dann schick ich dir mal meine Programmcodes, die wahrscheinlich jeden zum Schmunzeln bringen, da ich einfach noch ein C-Laie bin, aber hauptsache alles funktioniert.

P.S.: Schau dir einfach mal meinen Kanal an auf youtube --> http://www.youtube.com/user/takahashipowder999
Ich kann dir gerne mal alle Programmcodes bereitstellen, WIR BEIDEN ANFÄNGER meistern das schon! Jeder fängt mal klein an! :D

Auf jedenfall muss man noch einmal dem ganzen roboternetz und allen die einem helfen recht herzlich danken, ohne das alles wär ich niemals soweit gekommen. DDDDAAAANKKKKKEEEE!!!!!!!

maikel510
03.06.2012, 16:35
okay also muss ich probieren wann er sich in die andere richtung dreht alles klar =D
wie steuerst du deinen asuro fern? über das laptop? weil ich habe mir für mein projekt etwas ähnliches überlegt =D ich wollte ihn über eine tv-fernsteuerung oder ein laptop auf dosen zufahren lassen un ihn dann so auf die dosen fahren lassen, dass die taster gedrückt werden also die 2 in der kule von der platine. dann soll er zugreifen und die dose hochheben dann lass ich ihn wieder über die fernsteuerung irgendwo hinfahren und die dose absetzten.
ich hab mir überlegt die fernbedienung zu nehmen die wäre handlicher um sie in die schule mit zu nehmen =D
Aber irgendwie krieg ich selber kein programm dafür hin =( kannst du mir mal ein code schicken?
danke für die hilfe =D un du hasst recht man muss wirklich mal allen in dem forum danken man wird hier wirklich super unterstützt =D

powder999
04.06.2012, 09:49
Dann geb mir am Besten mal deinen Skype-Kontakt oder deine Mail, man muss ja nicht gleich jedem seine Codes preisgeben, hat ja auch Arbeit gekostet! Und außerdem sind die sehr einfach gestrickt, dass die Profis hier in dem Forum mich nur auslachen würden! :D :D :D :D :D :D :oops:
Und zu der Fernsteuerung, ich steuer den ASURO über meine IR-Schnittstelle am Laptop, in den Videos auf meinem Kanal siehst du das auch (Qualität ist halt schlecht, bin ja kein Fotograf und Kameramann! :D )

maikel510
05.06.2012, 14:14
alles klar =D ich schick dir meine email adresse. in deinem programm lässt du also den asuro über dein laptop in bestimmte richtungen fahren und öffnest/schliest auch den Greifer darüber? ich hab probiert ein programm zum fahren über eine fernseh-fernbedienung zu steuern aber das ist gar nicht so einfach xD und nochmal danke für die hilfe =D

WvB
15.04.2014, 17:18
Hi
jetzt hätte ich mal ne Frage: Wo finde ich den GND-Anschluss. Aber soll ich die wirklich am Prozessor hinlöten?
http://www.asurowiki.de/pmwiki/uploads/Main/processor.jpg
Danke schon mal