Ansteuerung von einem Servo

Gast #936732
Lesenswert?

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!!!
Gast #936854
Lesenswert?

@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...
Gast #938939
Lesenswert?

@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!
Gast #938944
Lesenswert?

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.
Gast #938971
Lesenswert?

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!
Gast #938982
Lesenswert?

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.)
Gast #939000
Lesenswert?

> 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
Gast #939011
Lesenswert?

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
Gast #939014
Lesenswert?

> 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
Gast #939025
Lesenswert?

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;
        }
      }
   }
}
#939030
Lesenswert?

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.

...
Gast #939586
Lesenswert?

@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
Gast #939671
Lesenswert?

@ 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.
Gast #939730
Lesenswert?

@ 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
Gast #939990
Lesenswert?

>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.
#940115
Lesenswert?

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.

...
#940897
Lesenswert?

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.

...
Gast #940972
Lesenswert?

>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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren