PDA

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



giftzwerg95
26.02.2010, 18:13
Hallo
Ich habe jetzt schon sehr viele gesehen die dem Asuro Greifer angebaut haben. Ich würde das jetzt auch gern mal machen, wieß aber gar nicht wie ich dem Servomotor an den Asuro bekomme. Ich weiß das viele den Servo an den Back Led anschleißen. Aber ich weiß nicht ob man noch irgendwelche Wiederstände auslöten muss und wenn ich welche asulöten muss, dann weiß ich nicht welche. Hätte irgendjemand vielleicht eine Art Anleitung dafür? Wäre sehr nett.

Gruß Giftzwerg95

Thund3r
27.02.2010, 02:08
Hallo

Es muss nichts dazwischngelötet werden! Das PWM Kabel einfach an eine LED packen und los gehts.

Siehe: https://www.roboternetz.de/phpBB2/viewtopic.php?p=478395#478395

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

Gruß Thund3r

giftzwerg95
27.02.2010, 09:41
Und ich muss auch nix auslöten?? :-s

erik_wolfram
27.02.2010, 11:09
also ich habe meinen Servo an den PIN "Con2" gelötet - damit kann man den Servo über die Status-LED ansprechen - funktioniert bestens und man erhält eine Rückmeldung!
Habe lediglich noch 1k OHM dazwischengelötet um alles abzusichern.

Einschränkungen gibt es dadurch nicht, und man muss auch nichts auslöten!

Thund3r
27.02.2010, 11:12
Hallo


Lediglich das PWM Kabel an eine der LEDs und diese dann im Programm passend blinken lassen. So steuerst du auch den Servo (ohne Widerstand o.ä.).
Das ist ja das Gute daran es wird nichts verändert bzw ausgebaut werden muss und wenn du keine Servos mehr habn willst lötest du einfach das PWM Kabel wieder aus und alles ist beim Alten.

Gruß Thund3r

Valen
27.02.2010, 11:43
Nur den pwm signal von dem servo anschluss (1 von 3 leitungen) muss and dem backled. Die 5v leitung von dem servo nicht. Die atmega8 chip kan die strom nicht leisten. Das pwm signal ist nur ein spannungswechsel. Das braucht kaum strom, das ist vernachlassbar.

giftzwerg95
27.02.2010, 18:13
Ich hab da noch 2 andere Kabel am Servo. Soll ich die jetzt nicht anschleißen?

Thund3r
27.02.2010, 18:20
Hallo

Also das PWM Kabel an die LED und die andern (das schwarze und rote) an die Stromversorgung des Asuros.
Natürlich Polung beachten!

Gruß Thund3r

giftzwerg95
27.02.2010, 18:38
Danke! Jetzt hab ich's verstanden.

Valen
27.02.2010, 18:38
Doch, sonst lauft er gar nicht. Einer ist das pwm signal (meistens gelb oder weiss). Die zwei andere sind 0v (GND, meistens schwärz) und 5v (Vcc, meistens rot). Die 2 anschlussen vorne von und zwischen den motoren (out+ und out-) sind fur die experimentier platte, und kannst du gut als stromversorgung benutzen.

http://www.rn-wissen.de/index.php/Servos

Thund3r
01.03.2010, 15:39
Hallo

Halt uns über dein Projekt auf dem laufenden ;)

Gruß Thund3r

giftzwerg95
01.03.2010, 18:56
Entschuldige. Ich hab nur nicht geschrieben, da mein Servo noch nicht da ist, der müsste morgen kommen.

Gruß Giftzwerg

giftzwerg95
02.03.2010, 17:08
Es geht!!! O:) O:)
Danke für die viele Hilfe war echt nett!!

Gruß Giftzwerg

Thund3r
02.03.2010, 17:12
Hallo

Das freut mich!
Zeig doch mal Fotos und n Video ;)

Gruß Thund3r

giftzwerg95
03.03.2010, 20:34
ähmm ich hab doa noch eine eine frage wie Programmiere ich ihn jetzt.
Ich weis das ich dem jeztz nur kurz sagen soll das die Back Led an ist, aber wenn ich das mit eine for-schleife mache geht das leider nicht.

Gruß Giftzwerg

Thund3r
03.03.2010, 20:43
Hallo

Zeig mal deinen Programmausschnitt.

Gruß Thund3r

giftzwerg95
03.03.2010, 20:51
das war mein erster Versuch:

#include "asuro.h"

int main(void)
{
unsigned char taste;
int i;

Init();
StatusLED(GREEN);
MotorDir(FWD,FWD);

while(1){
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;
taste=PollSwitch;

if(taste==12){
BackLED(OFF,ON);
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
for(i=1;i>200;i++){
Sleep(2);}

BackLED(OFF,OFF);
MotorDir(FWD,RWD);
MotorSpeed(100,100);
for(i=1;i>2000;i++);{
Sleep(2);}

BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(180,180);
for(i=1;i>200;i++);{
Sleep(2);}

BackLED(OFF,ON);
MotorDir(RWD,RWD);
MotorSpeed(180,180);
for(i=1;i>2000;i++);{
Sleep(2);}

BackLED(OFF,OFF);
MotorDir(RWD,FWD);
MotorSpeed(100,100);
for(i=1;i>200;i++);{
Sleep(2);}

BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(200,200);
for(i=1;i>300;i++);{
Sleep(2);}

}

else if(taste==33){
MotorDir(RWD,RWD);
MotorSpeed(100,100);
for(i=0;i<9999;i++){
Sleep(10);}
MotorDir(BREAK,RWD);
MotorSpeed(0,125);
for(i=0;i<9999;i++){
Sleep(10);}
MotorDir(FWD,FWD);
MotorSpeed(150,150);
for(i=0;i<9999;i++){
Sleep(10);}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(200,200);
}
}
return 0;
}


da das icht funktoinierte hat habe ich einfach erstmal probiert den Servo auszulesen

#include "asuro.h"

int main(void)
{
int i;
Init();
BackLED(ON,ON);
for(i=1;1>1;i++){Sleep(1);}
BackLED(OFF,OFF);
while(1);
return 0;
}

Thund3r
03.03.2010, 21:17
Hallo

In beiden Programmen sind n Haufn Fehler daher zeig ich dir einfach mal die Methode die ich benutzt habe:

Max an der einen Seite:


void RichtungA(void)
{BackLED(OFF,OFF);
StatusLED(GREEN);
BackLED(OFF,ON);
Sleep(15);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(15);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}

und


void RichtungB(void)
{BackLED(OFF,OFF);
StatusLED(GREEN);
BackLED(OFF,ON);
Sleep(80);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
BackLED(OFF,ON);
Sleep(80);
BackLED(OFF,OFF);
Sleep(255);Sleep(255);Sleep(255); Sleep(255);Sleep(255);Sleep(255);
}


Im Hauptprogramm werden diese dann so aufgerufen.



....
int c;
for(c=0; c<15; c++)
{RichtungA();}
for(c=0; c<100; c++)
{Sleep(100);}
for(c=0; c<15; c++)
{RichtungB();}
...

Versuchs mal so

Gruß Thund3r

giftzwerg95
09.03.2010, 19:38
Tschuldigung das ich so lange nicht mehr geschrieben habe, aber ich hatte viel mit dem Programm code rumprobiert, aber leider geht es nicht. Ich glaube das es mehr an mir liegt als am Code.

Gruß giftzwerg

Thund3r
09.03.2010, 22:03
Hallo

Mach doch mal ein Foto deiner Konstruktion

Gruß Thund3r

Valen
10.03.2010, 18:27
Ein servo braucht einer puls länge zwischen 0,5 und 1,5 milisekunden das sich ungefehr 50 mal wiederholt (pro sekunde). Jeder sleep tick dauert 1/72000 von einer sekunde. Deshalb ist deine
for(i=1;1>1;i++){Sleep(1);} schleife viel zu kurz.

giftzwerg95
11.03.2010, 20:20
Das ist er!!

Gruß Giftzwerg

Valen
11.03.2010, 21:27
Das ist einer pfad auf deiner festplatte. Dammit kannst du kein bild auf dan internet zeigen. Du muss es erst irgendwo hochladen.

Thund3r
12.03.2010, 14:18
Hallo

Ich meinte eher die Anschlussstellen des Servos also wo du welches Kabel angbracht hast.

Sieht aber schonmal fein aus; )

Gruß Thund3r

giftzwerg95
12.03.2010, 20:17
Danke
bloß geht das Programm für den Servo immer noch nicht!! :(

Gruß Giftzwerg

Valen
12.03.2010, 21:17
Hast du das program bis jetzt geändert. Bitte zeigen.

giftzwerg95
13.03.2010, 13:11
Nein hab ich nicht wirklich. Ich hab nur am Sleep und an der For-Schleife rumprobiert.

Gruß Giftzwerg

Thund3r
13.03.2010, 13:19
Hallo

Hast du nich meine Methode ausprobiert?

Gruß Thund3r

Valen
13.03.2010, 16:08
Ok, diesen code geht eigentlich auch nicht. Ich habe das bist jetzt nicht aufgemerkt. Meine verzeihung dafur.



...
for(i=1;1>1;i++){Sleep(1);}
...
Was macht er hier? Er geht in einer schleife das i hochzählt. Es startet mit i gleich 1. Bis 1 ("eins") grösser ist als 1 ("eins"). Nah, das wird naturlich nie passieren. Und deshalb wird Sleep(1) immer wiederhölt. Also ist das einer art von endloss-schleife. In deine code auf den 1ste seite von diesen thread söllte er nie die backleds ausschalten können. Hat er das tätsachlich auch nicht getan?

Hier ist ein beispiel wie das klappen soll. Ich habe das aber noch nicht mit einer compiler ubersetzt. Könnte deshalb fehler drin stehen. Und es wurde auch schöner sein wen das ganze als einer funktion arbeitet. Nun muss du fur jeder andere winkel wert eine neue hex datei compilieren.


/* Ein Pegel-breidte-modulation pegel (pulse-width-modulation oder PWM aufs Englisch) fur ein servo söll sich (ungefehr) 50 mahl pro sekunde wiederholen. */
/* Den Asuro timer fur Sleep hat einer takt von 72000 zeit-einheiten pro sekunde. */
/* Also ein PWM pegel soll 1440 Sleep zählen später anfangen dan der letzte pegel angefangen hat. */
/* Den PWM Pegel dauert 1 millisekunde fur völlig links (mindestens wert), oder 72 Sleep zählen fur Asuro. */
/* Den PWM Pegel dauert 2 milisekunden fur völlig rechts (maximal wert), oder 144 Sleep zählen fur Asuro. */
/* Nach dem ablauf von den pegel söllte der BackLEDS ausgeschalted bleiben bis der nächste PWM pegel started. */


#include "asuro.h"

int main(void)
{
int Winkel=0; /* den semi-drehwinkel wert, zwisschen -36 und 36, 0 ist den mittelstand. Den wirkliche winkel in grad ist aber abhängig von den drehwinkelspecifikationen der servomotor. Grössere auflössung geht nicht mit den Sleep Function bei dem Asuro./

int AnSleep=0; /* Den zeit in Sleep zahlen das den servo signal hoch/an ist. */
int AusSleep=0; /* Den warte-zeit zwisschen das ende einer pegel und den start den volgende pegel. Also den dauer dass das servo signal niedrig/aus ist. */

int k=0,r=0; /* einiger (schleife) zahler fur Sleep*/

Init();
BackLED(OFF,OFF);

AnSleep=72+36+Winkel; /* 72: mindestens ein milisekunde fur völlig rechts, */
/* 36: von völlig rechts bis 0 stand, */
/* Winkel: ein bisschen mehr oder weniger fur das winkel, kan zwischen -36 und 36 sein */

AusSleep=1440-AnSleep; /* 1440: anzahl von Sleep pro PWM wiederholung */

/* Den AusSleep werden wir aufteilen in ein kurzes stuckchen (zähler "r"), und eine langeres teil von mehrfache Sleep(255); anrufen (zähler "k") */

k= AusSleep/255; /* wie oft muss man Sleep(255) warten bis mann in die nähe von AusSleep kommt? Kein rest-wert weil es integer werten sein. */

r= AusSleep - k*255; /* Den rest warte zeit dammit wir eine richtige 50 Hz wiederhollungfrequenz haben. */

/* Den oben ausgerechnette variabelen unter den BackLED(OFF,OFF); mussen wieder neu ausgerechnet werden wenn du irgendwo im mitten dein program die winkel wert ändern möchtest. */

/* Ok, hier gehts die Pegel wiederhollungs-schleife */

While(1){
BackLED(ON,ON); /* !!! nur die BackLED seite wo ein servo angeschlössen ist muss an. Den andere kann aus bleiben. !!! */
Sleep(AnSleep); /* Backled/PWM-pegel an! */
BackLED(OFF,OFF); /* PWM-pegel hat lang genug gedauert, entsprechent der winkel wert */
for(i=0;i>k;i++){
Sleep(255);
} /* k mal Sleep(255) warten */
Sleep(r); /* ein bisschen länger warten dammit den PWM-pegeln jeder 20milisekunden wiederholen */

} /* Ende von einer PWM pegel, wiederhole das immer in diesem beispiel.*/

while(1); /* Darf es niemahls erreichen, aber um sonnst */
return 0;
}

giftzwerg95
15.03.2010, 08:33
Ja hab. Aber irgendwie krieg ich das nicht hin. Troßdem danke Thund3r.

Gruß Giftzwerg

Thund3r
15.03.2010, 13:48
Hallo

Die Led blingt doch und du hast das orange (PWM) Kabel an den Kontakt der LED gehalten während die stromversorgung des Servos am Asuro hängt und der Servo macht nichts?!

Dann muss der Servo kaputt sein egal in welchem Takt die LED blink der Servo muss dann zumindest minimal zucken. Wenn das nicht der Fall ist hast du was falsch angeschlossen oder der Servo is kaputt.
Guck nochmal nach.

Gruß Thund3r

Thund3r
23.03.2010, 14:11
Hallo

Hast du nochmal nachgeschaut?

Gruß Thund3r

giftzwerg95
03.04.2010, 21:54
Hallo
Ich habe noch einmal überprüft ob mein servo geht. Er geht!!!
Mir aber aufgefallen das keine BackLed geblinkt hat. Also hab ich noch ein etwas rumprobiert und sie blinkt aber leider bewegt sich der Servo immer noch nicht.

MFG Giftzwerg

Thund3r
04.04.2010, 15:44
Hallo

Sicher das alles richtig angeschlossen ist?
Das Rote und Schwarze hast du an die Stromversorgung (+ Bat - Bat) des Asuros angeschlossen? Und das Orange Kabel an die LED?

Versuch mal wenn die LED blinkt das Orange Kabel an beide Kontakte der LED zu packen irgendwas muss der Servo ja dann machen.

Gruß Thund3r

giftzwerg95
04.04.2010, 22:06
okay mach ich. Bei mir ist das PWM Kabel weiß.

Gruß Giftzwerg

Thund3r
05.04.2010, 01:16
Hallo

Nebenbei welchen Servo verwendest du ?

Gruß Thund3r

giftzwerg95
28.04.2010, 20:59
wieso ist das wichtig

Thund3r
28.04.2010, 21:20
Hallo

Ja es gibt Servos die ziehen besonders viel Strom oder lassen sich anders ansteuern etc

Gruß Thund3r

Tanscha
09.05.2010, 19:28
Also liebe Roboterfreunde
Ich bin ein absoluter Nichtskönner und bitte darum um eine komplett idiotensichere und einfache erklärung wie ich das Kabel vom Servomotor an den Asuro anschließe. Weil das Plastikteil am Ende von den drei Kabeln passt ja nirgens wirklich hin.
Wär super vielleicht mit Bild oder so?

http://www.rn-wissen.de/index.php/Bild:Servo.jpg
Mein Servomotor hat halt braun-rot-orange Kabel... sonst sieht er so eben aus... und der muss jetzt an den asuro ran damit ich ihn damit irgendwie ansteuern kann...
jor, bin ziemlich an verzweifeln also bitte hilfeeee

Thund3r
09.05.2010, 23:10
Hallo

Das steht allein in diesem Thread 3 mal.
Also etwas genauer suchen vorher ;)


Hallo

Also das PWM Kabel an die LED und die andern (das schwarze und rote) an die Stromversorgung des Asuros.
Natürlich Polung beachten!

Gruß Thund3r

Gruß Thund3r

josua
10.05.2010, 14:16
die frage wer auch: "Was für einen servo hast du?"
vielleicht lässt sich deiner anders ansteuern!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

gruß josua

giftzwerg95
01.06.2010, 19:31
Diesen hab ich MODELCRAFT DIGITALSERVO TS-12

Cruser12
07.06.2010, 12:42
Hallo,
ich mache auch einen greifer mit diesem Servo: http://www.conrad.de/ce/de/product/230500/

ich hab den so angesteuert wie es in diesem Beitrag beschrieben wird. Bei mir funktioniert das einwandfrei...
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=54168

probier da mal ein programm aus...

Cruser12

giftzwerg95
09.06.2010, 20:19
danke
Leider geht dieses Programm auch nicht.
Ich werd mir einfach auch den Servo kaufen.

Giftzwerg