Ich habe mit Microkontollern leider noch keine Erfahrung! Habe aber jemanden, der mir ein Programm auf einen Chip brennen kann! Mir geht es um folgendes: Ich habe ein Servo aus dem Modellbaubereich(HITEC HSR-1422) welches 360 Grad dreht! Nun möchte ich es über einen Microkontroller und zwei Taster steuern. Wird der Taster "UP" gedrückt, so fährt das Servo einen bestimmten Weg ab und stoppt dann. Wird die Taste "UP" erneut betätigt, so fährt das Servo von der letzten Stellung den selben Weg wieder ab! --> Fährt also bei erster Betätigung von 0 Grad auf 20 Grad und bei erneutem Betätigen von 20 Grad auf 40 Grad und so weiter!!! Wird nun der Taster "DOWN" gedrückt, so soll das Servo den selben Wert von seiner aktuellen Position in die andere Richtung fahren! --> Steht es also auf 40Grad so soll es bei Betätigung von "DOWN" auf 20 Grad fahren und so weiter! Ist soetwas möglich? Vielen Dank schonmal!!!
Ich schliesse mich Magnus an: Es ist möglich. (Für mancheinen auch Pippifax...)
Wie die Vorredner schon festgestellt haben: Ja, das ist möglich. Aber was genau willst du nun wissen ? Gruß Stefan
(Blick in die Kristallkugel) Ich vermute mal, er möchte wissen, welches PWM-Verhältnis dem gewünschten Drehwinkel entspricht, und wie man das mit dem Mikro erzeugt.
Ohne eine Kristallkugel zu befragen kann ich dir sagen: Er will fertigen Code.
Helft ihm doch und sagt ihm gleich, daß im Forum 514 Einträge zum Thema "Servo" gefunden werden!! "Was ist eine Suchfunktion?" ;D
@Gerhard: ich schliesse mich meinen Vorredner an, und stelle dir mal die wichtigsten Fragen. - willst du fertigen Code, den man nur noch flashen muss? Wirst du mit an Sicherheit grenzender Wahrscheinlichkeit von keinem hier bekommen, sondern musst dir schon selbst erarbeiten. Wenn da Fragen auftauchen, die nicht im Tutorial (http://www.mikrocontroller.net/articles/AVR-Tutorial) und (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial) zu finden sind, so kannst du diese Fragen im Forum stellen. Da unter den beiden Quellen man jedoch alles findet, wird dieser Fall nicht eintreten. In sochen Fällen ist folgende Seite sehr hilfreich: http://www.gidf.de - willst du jemanden beauftragen, Hardware und Software für dich zu entwickeln. Da finden sich bestimmt einige, aber unterschätze die Preise nicht. Selbst soetwas simples macht hier keiner für 20 EUR... Für das 10-fache vielleicht. Selber machen ist meist günstiger und lehrreicher. Vielleicht findest du ja sogar Spass daran...
Falls Du jemanden suchst, der das für Dich macht, was ist es Dir denn wert?
@Gerhard (Gast) wenn du es mit einen Pic versuchst, mal sehen ob ich es als Miniübungsprogramm machen kann.
@juppi Hast du ne Mailadresse? @ the rest Ich ha mich schon durch die Suchfunktion gewurschtelt. Nur leider habe ich nicht die Zeit dazu mich in die Materie einzuarbeiten! Es gibt hier bestimmt einige für die das ein Pippifax ist solch ein Programm zu schreiben!
Zeit ist wohl bei fast allen das Problem. Es gibt genug Anderes zu tun. Wenn ich es machen müsste, würde ich einen Tiny15 oder Tiny25 einsetzen. Aber ich muss ja nicht, Juppi wirs's schon richten. K.-H.
loool, genau. Juppi wird es schon richten. Gerhard, du weisst schon, dass Juppi unser Forentroll ist??? Gruss: Dennis
Das mit dem Forentroll weiß ich noch nicht! Was ist eigentlich ein Forentroll? Ich denke, jemand der absolut Ahnung hat, wird sicher wesentlich weniger Zeit investieren müssen als jemand, dem die Materie komplett fremd ist und der sich erst einmal einarbeiten müsste, gerade bei so einem komplexen Thema!
Ich sehe da nur das Problem des Testens. Ich bin zwar Modellbauer, aber nur wegen dieses Programms würde ich mir nicht dieses spezielle Servo besorgen. Es muß ja ausprobiert werden, mit welchen Impulslängen das Servo arbeitet, um ein entsprechendes Zeit-Inkrement zu programmieren. Dass der Standard-Impuls zwischen 1ms und 2 ms liegt ist mir klar; nur wird dieses Intervall auch gerne nach oben und unten stärker ausgenützt. Ich hab aber eh keine Zeit...(und wenn dann nur für meine Freundin und AVR.)
@ STK500 Besitzer Gibts ne Formel um die Impulslänge für eine bestimmte Gradzahl zu berechnen? Wie müsste das Programm aufgebaut sein um die Impulse auszugeben?
> Das mit dem Forentroll weiß ich noch nicht! > Was ist eigentlich ein Forentroll? Ich vermute, das ist Der, dem es nur darauf ankommt, andere Leute aufeinander zu hetzen und zu provozieren. > Ich denke, jemand der absolut Ahnung hat, wird sicher wesentlich weniger > Zeit investieren müssen als jemand, dem die Materie komplett fremd ist > und der sich erst einmal einarbeiten müsste, gerade bei so einem > komplexen Thema! Sieh' es mal so: Wer da etwas Ahnung hat, der hat diese Zeit bereits investiert (und dafür auf andere schöne Dinge des Lebens verzichtet), denn von nix kommt nix. Um das zu realisieren, muss natürlich auch ein entsprechendes Servo zur Verfügung stehen. Aber Juppi macht das auch ohne... KH
Als Servo hab ich mir folgendes rausgesucht: http://www.robonova.de/store/product.php?productid=16148&cat=249&page=1 Hier noch ein paar Daten: # 138008 HiTEC-Robotics Servo HSR-1422 ohne Umdrehungsbegrenzung für Robotikanwendungen. Das Servo eignet sich sehr gut als Antrieb für kleinere Roboter. · 900 - 1500us/CCW, 1500us/Stop, 1500-2100us/CW · PWM-Interface (RC Standard) · Neutralposition: 1500µs · Neutralzone: 10µs · Betriebsspannung: 4,8-6V · Stromaufnahme: - 8mA angehalten - 150mA Bewegung ohne Last - 640mA bei Blockierung · Blockiermoment: 2,8kgcm bei 4,8V · Drehzahl: 43,4rpm · Größe: 40,6 x 19,8 x 36,6mm · Gewicht: 42g Details Lager/Bearing: Geschwindigkeit/Speed (sec/60°): 43.4 rpm at no load Drehmoment/Torque (kg/cm): 2.8
> Gibts ne Formel um die Impulslänge für eine bestimmte Gradzahl zu > berechnen? Nein, zumindest keine einfache allgemein gültige, dazu sind die Servos zu unterschiedlich. > Wie müsste das Programm aufgebaut sein um die Impulse auszugeben? Das Programm muss mittels Timer den Impuls erzeugen, also alle etwa 20 ms einen variablen Impuls von 1,0 ms bis 2,0 ms (0,7 ms bis 2,3 ms) erzeugen. Es muss weiterhin alle etwa 20 ms (also mit dem selben Timer) die Tasteneingänge abfragen und entprellen und bei Tastendruck die variable Impulsbreite ändern. Das Programm besteht demnach aus der Initialisierung und zwei Timer-Interrupts. Der erste Timer-Interrupt macht die Tastenentprellung, das Berechnen (und Setzen) der gewünschten Impulsbreite und den Impulsbeginn, der Zweite Timer-Interrupt beendet den Impuls. Der zweite Interrupt lässt sich auch einsparen, indem man die Hardware-PWM des Timers benutzt, aber bei den langsamen Impulsen für Servos ist das nicht nötig. KH
Ich hab jetzt hier mal ein Programm gefunden. Wenn ich richtig liege müsste das bei mir doch funktionieren....muss nur noch ein wenig angepasst werden oder? Hier wird zur STeuerung allerdings die RS232 Schnittstelle verwendet! #include <16F877a.h> #use delay (clock=20000000) #fuses HS, NOWDT, NOPROTECT, NOLVP #use RS232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) #include <stdlib.h> int8 pos; int8 zaehler = 0; #INT_TIMER2 void isr() { zaehler++; if(zaehler == 180) { zaehler = 0; output_high(PIN_C2); } if(zaehler == pos) output_low(PIN_C2); } void main (void) { char empfangen = 'a'; setup_timer_2(T2_DIV_BY_4, 125, 1); set_timer2(0); enable_interrupts(INT_TIMER2); enable_interrupts(GLOBAL); while(true) { if(kbhit()) { empfangen=getc(); switch (empfangen) { case 'a': pos=20; break; case 'd': pos=10; break; case 's': pos=15; break; } } } }
Vorschlag: Sponsere mir zwei dieser Servos (ein Servo kostet 16,20 Euro), ich schicke Dir dafür zwei fertig programmierte Mikrocontroller (AVRs), den zugehörigen Schaltplan und natürlich auch den kommentierten Quelltext des Programms. Das ist zwar etwas teurer als die erwähnten 20 Euro, dafür bekommst Du aber auch etwas mehr. Hier kannst Du Dir ein Urteil bilden, ob Du mir die Sache zutraust: http://www.hanneslux.de/avr/mobau/index.html Weitere Details können per Mail (Benutzerinterface dieses Forums) geklärt werden. ...
@Hannes (und alle Anderen): Schon bemerkt, dass das Servo kein echtes Servo mehr ist? Das Servo wurde scheinbar modifiziert. D.h. dass das Servopoti entweder von der Servoachse getrennt wurde, bzw. durch einen normalen Trimmer/Spannungsteiler ersetzt wurde, um das Servo bei einer Pulslänge von 1,5ms zum stehen zu bringen. Das Einzige was dem Ding gesagt werden kann ist "dreh nach links", "dreh nach rechts" und "halt die Klappe". Die Lösung der Aufgabe (Anfahren von definierten Positionen) dürfte damit gelinde gesagt schwierig werden. Auf jeden Fall ein großes Lob an Hannes. Das Angebot "2 Servos für 2 programmierte AVRs incl. 'Entwicklung'" ist fair. Gruß, Magnetus
@ Kachel-Heinz (Gast) Datum: 28.07.2008 09:36 > Das mit dem Forentroll weiß ich noch nicht! > Was ist eigentlich ein Forentroll? >>Ich vermute, das ist Der, dem es nur darauf ankommt, andere Leute >>aufeinander zu hetzen und zu provozieren. Meinungen sich anhören, aber sich selbst eine Meinung bilden, das ist wichtig! >Aber Juppi macht das auch ohne... wie erwartet,die Daten sind gekommen.... Immerhin wurden endlich seriöse Angebote gemacht.
@ juppi (Gast) Datum: 28.07.2008 21:05 Ich verstehe nicht, was Du mit Deinem Beitrag ausdrücken willst. Deine halben Sätze sind so konkret wie die Aussage einer Wahrsagerin. Man kann so ziemlich alles oder aber auch gar nichts hinein interpretieren. KH
@Magnus Müller (magnetus) Du hast mit dem Servo recht. @Kachel-Heinz (Gast) Nur so nebenbei.. wenn du es nicht verstehst ,dann antworte BITTE nicht.
>Schon bemerkt, dass das Servo kein echtes Servo mehr ist? Das Servo >wurde scheinbar modifiziert. D.h. dass das Servopoti entweder von der >Servoachse getrennt wurde, bzw. durch einen normalen >Trimmer/Spannungsteiler ersetzt wurde, um das Servo bei einer Pulslänge >von 1,5ms zum stehen zu bringen. Das Einzige was dem Ding gesagt werden >kann ist "dreh nach links", "dreh nach rechts" und "halt die Klappe". Also ein Getriebemotor mit elektronischem Drehzahlsteller im Servo-Gehäuse. Ohne expliziten Drehgeber wird das nichts mit 20° hierhin und 20° dahin; aus dem einfachen Grund, dass man die Belastung des "Servo" nicht kennt.
Das Servo soll mit 6kg belastet werden, wobei zwischen Motor und Kraft noch eine 3:1 er Untersetzung ist! Folglich wird das Servo mit 2kg kurzzeitig belastet!
Da es sich nicht um ein klassisches Servo (mit interner Positionsregelung) handelt, sondern um einen Fahrantrieb für Spielzeug-Robbi (oder RC-Modelle), ziehe ich mein Angebot erstmal zurück. Vielleicht lässt sich ja ein externes Poti an die interne Elektronik anklemmen, aber vielleicht auch nicht. Da auch nichts über den erforderlichen Gesamt-Drehwinkel bekannt ist, weiß ich nichtmal, ob der Drehbereich eines Potis da ausreicht. Es wird also alles etwas komplizierter als zuvor gedacht. Sollte der Fahrantrieb mit geringem Aufwand zum Servo umfunktioniert werden können, dann stehe ich zu meinem Angebot. Aber mit der Mechanik (Poti an das Getriebe anbauen) will ich nichts zu tun haben. Mein Angebot bestand/besteht darin, mittels AVR einen Servoimpuls zu erzeugen, dessen Impulsbreite (also die Servoposition) einer Liste entnommen wird, in der per Tasten geblättert werden kann. Ich wollte auch noch einen Lernmodus (weitere Tasten oder Jumper) einbauen, damit jede Position exakt justiert werden kann. Ich hatte auch eine Anzeige der Position mittels LED-Lichtschachtanzeige in Erwägung gezogen. ...
Ich "glaube" durch die PWM wird eine Geschwindigkeitsteuerung erreicht, dann hat das ganze ein wenig Sinn. Aus den Daten kann ICH es nicht erkennen. ...Testen.
Richtig, "Testen" ist eine akzeptable Möglichkeit. Doch wer trägt das Risiko? Ich kaufe mir doch nicht das Servo, um dann festzustellen, dass es für diesen Zweck nicht geht. Ich rate auch dem Auftraggeber nicht, das Servo auf das Risiko hin zu kaufen, dass es ungeeignet ist. Es gibt mit Sicherheit Alternativlösungen (auch robuste und trotzdem bezahlbare), aber solange keine klare Aufgabenstellung vorliegt, werde ich nicht weiter darüber nachdenken. Habe genug Anderes zu tun, "brauche" also diesen "Auftrag" nicht... Ich bin damit 'raus. ...
>Ich "glaube" durch die PWM wird eine Geschwindigkeitsteuerung erreicht,
Glauben kann man in der Kirche...
Wie ich oben schon geschrieben habe, handelt es sich um einen
Getriebemotor mit elektronischem Drehzahlsteller (geregelt wird da
i.d.R. nichts, da der entsprechende Sensor fehlt) im Servo-Gehäuse.
Dabei wird es sich - wie von Magnus schildert - um ein modifiziertes
Servo handeln.
Das Poti im Servo ist ja der Positionsistwert-Lieferant. Der dem
Regelkreis die aktuelle Position des Rotors liefert, damit dieser
wiederum die Drehzahl des Motors anpasst. Je größer die Entfernung
zwischen Soll (Pulsweite, die vom Sender kommt) und Ist (Pulsweite, die
das Monoflop im Servo durch das Poti liefert) ist, um so grösser die
Stellgeschwindigkeit.
Gleiches Prinzip eines elektronischen Drehzahlstellers.
Mit der Positionsregelung hat das natürlich nichts mehr zu tun...
Ich "glaube", juppi sollte nun endlich mal das Problem lösen, anstatt hier immer nur klug daher zu reden und andere Leute anzustacheln. KH
Ich "glaube" das Problem ist schon gelöst. Man braucht nicht alles zu wiederholen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.