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!!!
(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.
@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...
@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.
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
>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...