hm..als ich heute einen Servo, den ich heute neu bekommen habe, nämlich den es 05, ausprobieren wollte, tat er nicht. und kurz danach ging mein Robby nicht mehr. woran liegt das? die Sicherung ist heile und der Akku ist voll.
![]()
ja genau ich hab da ein lager gemacht mit einer Reißzwecke, so wie Radbruch es bei dem Domino-Day gemacht hat
joa also wenn ich es schaffe, bis Donnerstag den Greifer zu bauen, dann bekomm ich eh die M32 von meinem Bruder geschenkt, das war nämlich die Wette, die ich angesprochen hatte.
Da er hier keinen Wert auf die Programmierung legt, hab ich auch keine Lust, bzw. Zeit mich damit außeinanderzusetzen, und bei der M32 soll das ja eh mit der PWM viel leichter sein ;-P
LG Marcel
hm..als ich heute einen Servo, den ich heute neu bekommen habe, nämlich den es 05, ausprobieren wollte, tat er nicht. und kurz danach ging mein Robby nicht mehr. woran liegt das? die Sicherung ist heile und der Akku ist voll.
![]()
hmm.... Kannst du das näher erklären?und kurz danach ging mein Robby nicht mehr![]()
ohh ne also der Robby war doch nicht kapput sondern die Sicherung... aber ist der Servo schrott?
edit: Wahrscheinlich war da irgendwo ein Kurzschluss oder?
ich meine, wieso sollte die sicherung sonst durchschmoren, obwohl ich immoment nix anderes angeschlossen habe...
Gibt es irgendeine Möglichkeit herauszufinden, ob ein Servo funktioniert?
Geändert von Morpheus1997 (27.07.2011 um 19:33 Uhr)
hm.. gibts denn eine möglichkeit einen motor an die base ohne größeren aufwand anzuschließen... d.h. ohne motortreiber?
vielleicht mit nem transistor?
bitte schnell antworten, weil ich nur noch eine woche zeit habe und ich muss noch den kompletten greifer bauen....
LG Marcel
Ich bins Virus, habe Email Addresse löschen müssen deswegen mein neuer Nickname
Ich habe viele von Thunders Projekten mit ihm verwirklicht, ich hab ihm nachprogrammiert und er hat mir nach gebastelt. Ich hab dann aber Irgandwann das Interesse an Robotern verloren, bis vor ein paar Wochen, denn nach den Sommerferien wird es an meiner Schule eine Robotik AG geben. Diese Ag haben die Lehrer zusammen mit mir eingerichtet. So, denke an Infos über mich reicht es jetzt, nun zu deinem Problem:
Ja man kann einen Motor an die Base anschließen. Es gibt aber ein paar Punkte zu beachten: Es muss eine Diode parallel zum Motor geschaltet sein. Und zwar so, dass sie wenn der Motor sich richtig herum dreht also + und - richtig angeschlossen sind, nicht leitet. Der Grund: Im Motor sind Spulen. Diese geben nach Abschalten der Versorgungsspannung einen Strom genau umgekehrt zur Versorgugsspannung ab. diesen muss man abfangen.
Dann braucht man einen großen Elektrolyt-Kondensator der den Anlaufstrom des Motors abfedert. Vergisst man diesen Kondensator, resettet der Rp6 sich sobald der Motor anläuft selber weil die Bordspannung abgefallen ist, er also für ein paar Millisek aus war.
Und als letztes der Transistor muss ne Menge Strom abkönnen und zwischen Basis und I/0 sollte ein ausrechender Widerstand sein.
Wenn man das so zusammenfasst kann man also sagen ja es geht, es lohnt sich aber ab einer bestimmten motorgröße nicht mehr.
Und Morpheus, Robotik braucht Gedult und Zeit, da sind Wetten und erst recht zeitlich begrenzte absolut fehl am Platz.
@ Virus..
danke schon mal für die schnelle Antwort... allerdings bräuchte ich noch ein wenig mehr infos...
zum Beispiel was soll das für ein Transistor sein, ist der BF881 okay?
http://www.datasheetcatalog.org/data.../502801_DS.pdf
Das ist ein Datenblatt zu dem Transistor...
oder liegt das daran wie stark der Motor ist?
Als diode reicht wahrscheinlich die 1n 4007 aus,oder?Die packt 1 ampere.
Ähm und was soll das für ein elko sein?
Reichen 10 mikrofarad oder soll das mehr sein?
und wieso hast du dir dann sogar mit thunder den feuerwehrbot wettbewerb ausgedacht, was wohl ein wesentlicher grund der wette warUnd Morpheus, Robotik braucht Gedult und Zeit, da sind Wetten und erst recht zeitlich begrenzte absolut fehl am Platz.
und außerdem kann ich unter Druck viel besser arbeiten![]()
Der Wettbewerb hatte nicht das Ziel alle Teilnehmer zu stressen sondern eine zeitliche Beschränkung, die übrigends recht übermäßig bemessen war, war nötig damit alle Teilnehmer auch etwa gleichzeitig fertig werden.
Aber das ist ja eigendlich nebensache.
Natürlich kommt es darauf an wie stark der Motor ist. Also der Transistor sollte so das 1,5 - 2fache des Anlaufstromes und ca 10volt abkönnen. Dann bist du da eigendlich recht sicher. Die Diode muss natürlich an den Motor angepasst sein, ich verwende immer die etwas stärkeren Modelle aus der 1n 4000der Serie für Motoren so ca in der Carrera-auto-motoren-größe Scheiß Wort. Den Elko würde ich schon größer ansetzten vll so bei 200-500μF. Zeitweise hab ich bei größeren motoren sogar Goldcaps benutzt, aber ich denke mal 200-500μF wird reichen. Solltest du extra bestellen müssen würde ich mir auch zur sicherheit mal nen 1000der mitbestellen. Aber viel größer als ne SD Karte oder so sollte der motor sowieso nicht sein.
hey, Virus...
Ich habe heute den Strom von meinem Motor gemessen.Bei 6 Volt hat der Strom 0,055 Ampère betragen.
dann ist meine 1n 4007 ja eigenltich ok, weil der Motor kommt ja nicht mal annährend an die 1 ampère dran.ich verwende immer die etwas stärkeren Modelle aus der 1n 4000der Serie für Motorealso elkos hab ich genügend da, dann werd ich wahrscheinlich einen 390 µF elko nehmen...Den Elko würde ich schon größer ansetzten vll so bei 200-500μF. Zeitweise hab ich bei größeren motoren sogar Goldcaps benutzt, aber ich denke mal 200-500μF wird reichen. Solltest du extra bestellen müssen würde ich mir auch zur sicherheit mal nen 1000der mitbestellen.
Vielen Dank erstmal, dass du mir bei meinem Projekt so aus die Klemme hilfst
LG Marcel
übrigens: den Greifarm habe ich nun, einen Tag vor "abgabeschluß" der Wette fertig..
ich habe nur noch ein problem:
dieses programm benutze ich, um die Servos anzusteuern.Code:#include "RP6RobotBaseLib.h" // The RP6 Robot Base Library. // Always needs to be included! /*****************************************************************************/ // Defines: // RP6 Base Servo Connection: #define SERVO_OUT SCL // PINC1 XBUS Pin 12 // Servo movement limits (depending on servo type): #define LEFT_TOUCH 950 // Left servo touch #define RIGHT_TOUCH 154 // Right servo touch [max. 255] #define PULSE_ADJUST 4 #define PULSE_REPETITION 19 // Pulse repetition frequency #define MIDDLE_POSITION (RIGHT_TOUCH / 2) // Middle servo position /*****************************************************************************/ // Functions: /** * INIT SERVO * * Call this once before using the servo task. * */ void initSERVO(void) { DDRC |= SERVO_OUT; // SERVO_OUT -> OUTPUT PORTC &= ~SERVO_OUT; // SERVO_OUT -> LO startStopwatch1(); // Needed for 20ms pulse repetition } /** * PULSE SERVO * * This is the servo pulse generation. This function * must be called every 20ms (pulse repetition). * * position = 0 : Left touch * position = RIGHT_TOUCH : Right touch * * ATTENTION: ! This function is BLOCKING all other activities for about 1 ! * ! to 2ms (depending on the value of position)!!! ! * ! If you generate a pulse every 20ms 5-10% of the processor's ! * ! calculating time is wasted by this kind of pulse generation. ! * ! If this is a problem for the rest of your program, you ! * ! cannot use this method. ! * ! You will need an interrupt-based solution instead. ! * */ void pulseSERVO(uint8_t position) { cli(); PORTC |= SERVO_OUT; // SERVO_OUT -> HI (pulse start) delayCycles(LEFT_TOUCH); while (position--) { delayCycles(PULSE_ADJUST); } PORTC &= ~SERVO_OUT; // SERVO_OUT -> LO (pulse end) sei(); } /** * SERVO TASK * * This is the servo demo task. * The positioning demo shows the servo lever rapidly * moving to the left touch, then slowly moving to * the right touch and so on ... * */ void task_SERVO(void) {static uint8_t pos; if (getStopwatch1() > PULSE_REPETITION) { // Pulse every ~20ms pulseSERVO(pos); // Servo pulse [1..2ms] // --------------------------------------------------------------------- // Your test code for positioning the servo here: //if (getStopwatch2() > 48) { // Change position every ~50ms //pos=pos+5; // Next position to the right //if (pos > RIGHT_TOUCH) {pos = 0;} // pos: 0..RIGHT_TOUCH //setStopwatch2(0); //} // --------------------------------------------------------------------- setStopwatch1(0); } } /*****************************************************************************/ // Main function - The program starts here: int main(void) { initRobotBase(); // Always call this first! The Processor will not work // correctly otherwise. // --------------------------------------- // Write messages to the Serial Interface: writeString_P("\n\n _______________________\n"); writeString_P(" \\| RP6 ROBOT SYSTEM |/\n"); writeString_P(" \\_-_-_-_-_-_-_-_-_-_/\n\n"); writeString_P("################\n"); writeString_P("<<RP6 Base>>\n"); writeString_P(" Servo - Test 1 \n"); writeString_P(" Version 1.00 \n"); writeString_P("################\n\n"); mSleep(2500); setLEDs(0b111111); // Turn all LEDs on mSleep(500); // delay 500ms setLEDs(0b000000); // All LEDs off initSERVO(); startStopwatch2(); // Used for the demo task while(true) { task_SERVO(); task_RP6System(); } return 0; } /****************************************************************************** * Additional info * **************************************************************************** * Changelog: * - v. 1.0 (initial release) 03.10.2007 by D. Ottensmeyer * * **************************************************************************** */ /*****************************************************************************/
es funktioniert sozusagen so wie eine art rasensprenger: zuerst fährt er langsam zu der einen seite und dann bewegt sich der servo ruckartig zu der anderen seite.
wie muss man es umänderen, dass der servo einfach bis zum anschlag der rechten seite fährt (also für den greifarm)
wenn ich dieses problem gelöst habe kann ich auch gerne ein video posten.
LG Marcel
Lesezeichen