Archiv verlassen und diese Seite im Standarddesign anzeigen : Servoansteuern in Bascom-Basic
Chriss123
17.03.2007, 16:46
hi,
-ich bin mir unsicher wie ich meine servos ansteuern muß!
deswegen wollt ich zur vorsicht euch fragen!!!
-und noch ne frage: wie kann ich per resettaster nen mechanismus auslösen, dass das programm erst später läuft??
-ich bin mir unsicher wie ich meine servos ansteuern muß!
Schau mal bei der BASCOM-Hilfe unter "Config Servo" Da wird alles erklärt.
-und noch ne frage: wie kann ich per resettaster nen mechanismus auslösen, dass das programm erst später läuft??
Weiß ich nicht.
jon
Chriss123
17.03.2007, 17:04
danke Jon.
wenn jemand anderes noch ne idee hat bitte sagen!!!
Chriss123
17.03.2007, 17:19
ich hab da noch was für andere die kurz reinschaun:
Die einfachste Art, einen Servo mit Bascom anzusteuern, ist folgender Befehl:
Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
Config Portb = Output
Enable Interrupts
Servo(1) = 100
Servo(2) = 100
waitms 1000
Wobei 100 die Mitte ist. 50 ist der linke bzw. rechte Anschlag und 150 der entsprechend andere.
Wobei die Werte vom Servo abhängig sind.
Bei mir ist die Mitte z.B. "12", "0" links und "24" rechts.
Zu deiner anderen Frage:
Wie wäre es, wenn du am Anfang des Programms eine Pause einfügst?
jon
@Jon, Wie hast du die Werte für deinen Servo rausgefunden ? aus einem Datenblatt ? Ich habe nämlich einen alten Modellservo an die RNControl angeschlossen und denke dass die werte aus dem Beispielprogramm bei mir auch nicht 100%ig passen.
mfG
Tippo
Chriss123
17.03.2007, 17:32
das meine ich so. dass ich auf einen resettaster drücke,dann sich mein roboter ca. 5 sekunden nicht bewegt und dann beginnt er sich zu bewegen(er fährt zB einen kreis)
Ausprobiert. :)
Ich verwende diesem Miniatur-Servo von Conrad, der 4,95€ oder so kostet.
jon
@Chriss123
Gib am anfang deines Programms die Zeile "waitms 5000"
Dann wartet er beim Einschalten doch 5 Sekunden ?!
@Jon, danke. Muss erst ein bisschen damit rumspielen.
mfG
Tippo
Warum "waitms 5000"?
Du kannst doch auch gleich "wait 5" schreiben. Geht schneller zu schreiben ;)
jon
Ja, wusst nur nicht ob dann der Syntax richtig ist und das waitms beispiel steht schon weiter oben im Thread ;)
minium :)
17.03.2007, 18:47
hi,
@jon, meinst du diesen Servo Art.Nr.: 227726 - 62 oder diesen 230500 - 62 ?
(Sonst ist das vielleicht auch der den ich benutze)
Viele Grüße
Ich habe diesen (http://www.conrad.de/goto.php?artikel=230500). Ich habe aber auch festgestellt, dass die Werte bei jedem Servo anders sind.
jon
Das Problem der Servoansteuerung unter Bascom ist das folgende:
Der Servocode ist nicht besonders effektiv. So richtig funktioniert er erst ab 8 MHz. Zumal ändern sich die relevanten Werte je nach Programmstruktur und Taktfrequenz.
Meines Erachtens nach ist es das beste die komplette Servoansteuerung auf einen extra Mikrocontroller mit optimiertem Code zu verlagern.
Grüße,
Hanni
Meines Erachtens nach ist es das beste die komplette Servoansteuerung auf einen extra Mikrocontroller mit optimiertem Code zu verlagern.
Sehe ich auch so.
Als gutes Beispiel gibt es ja das RNSI2C Projekt von PicNick, das eine Ansteuerung von 10 Servos über I2C mit einem 2313 realisiert.
Gruß Dirk
Chriss123
18.03.2007, 11:47
Chriss123
18.03.2007, 18:18
noch ne frage: wie muss ich die infrarotsensoren,damit ich sie sehe(damit mein roboter sie erkennt und er dann auswichen kan)?????
Hä?
Kannst du das nochmal schreiben. Den Satz verstehe ich nicht.
was willst du mit den IR-Sensoren machen?
jon
Chriss123
18.03.2007, 18:32
ich will ein hinderniss erkennen! ich will das mein roboter eine beliebige strecke fährt und wenn er ein hindernis sieht, genau auf das hindernis drauf los fährt
ich brauch das für sumo bei der RobotChallenge in wien
Den Sensor ließt du so aus:
$regfile = "m32def.dat"
$crystal = 1000000
$baud = 1200
Dim Result As Word
Dim Channel As Byte
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
Result = Getadc(0)
Print " Count: " ; Result ;
Wait 1
Loop
End
jon
Chriss123
20.03.2007, 20:25
meine sensoren kennen nur 1 und 0
Achso. Dann musst du das so machen:
$regfile = "m32def.dat"
$crystal = 1000000
$baud = 1200
Config Pina.0 = Input
Porta.0=1
Do
If Pina.0 = 0 then print "Gegenstand"
If Pina.0 = 1 then print "FREI!!"
Loop
End
Sollte so stimmen.
jon
Hallo,
wo gibt es denn das RNSI2C? Hab es im Wiki nicht gefunden.
MfG jeffrey
Such mal hier im Forum, es gibt ein Topic dazu.
MfG
Chriss123
21.03.2007, 16:34
Ich hab noch ein problem, jedes mal wenn ich "Porta,c,d" schreib, dann wird das Wort nicht färbig. Wenn ich aber "Portb" schreib dann wird das Wort färbig .
Portb -ist braun
Porta -nicht braun
Portc -nicht braun
Portd -nicht braun
Gibt es denn einen Portb an deinem µC? Weiß ich nicht.
jon
...Meines Erachtens nach ist es das beste die komplette Servoansteuerung auf einen extra Mikrocontroller mit optimiertem Code zu verlagern...
Wozu?
Wenn man sich beschränkt oder ausreichend HardwarePWM-Kanäle zur Verfügung hat kann man problemlos auf letztere zurückgreifen. Mit mit einem 16 Bit-Timer lässt sich die gesamte Periode so fein auflösen das die Mechanik des Servos ungenauer als das Steuersignal ist.
Der Programmablauf wird dann auch nicht mehr unterbrochen.
Chriss123
21.03.2007, 18:25
Natürlich gibs ein Portb. das is auf meinen atmega drauf und das hab ich schon in vielen Büchern gelesen, dass es sowas gibt.
Welche Port.... hast du.
Als kleiner Beweis ist das Servoansteuerungsprogramm was ich auf der seite 1 hingeschrieben hab
Was für einen µC verwendest du mit welchem Quarz?
Ich werde es aber mal bei mir ausprobieren. Geht denn das Programm, wenn du Portb verwendets?
jon
Chriss123
22.03.2007, 15:17
ob mein Programm geht weiß ich noch nicht weil ich mit dem Controllerboard noch ein paar Probleme habe.
Quarz: 16MHz
Microcontroller: ATmega16
was genau heißt baud??
gibt es verschiedene methoden einen servo anzusteuern??
ob mein Programm geht weiß ich noch nicht weil ich mit dem Controllerboard noch ein paar Probleme habe.
Dann poste doch mal das Programm hier. Dann kann ich es testen
quote="Chriss123"]was genau heißt baud??
Baud sagt nur etwas über die Geschwindigkeit aus, in der die Daten über RS232 gesendet werden.
gibt es verschiedene methoden einen servo anzusteuern??
Eigentlich nicht.
jon
minium :)
15.04.2007, 19:46
Hi,
@Hanni & Dirk, könnt ihr mal dieses Programm hier posten (für Pins)?
Viele Grüße
...Meines Erachtens nach ist es das beste die komplette Servoansteuerung auf einen extra Mikrocontroller mit optimiertem Code zu verlagern...
Wozu?
Wenn man sich beschränkt oder ausreichend HardwarePWM-Kanäle zur Verfügung hat kann man problemlos auf letztere zurückgreifen. Mit mit einem 16 Bit-Timer lässt sich die gesamte Periode so fein auflösen das die Mechanik des Servos ungenauer als das Steuersignal ist.
Der Programmablauf wird dann auch nicht mehr unterbrochen.
Hallo,
also im generell ist dieses natürlich eine Möglichkeit.
Aber:
bin ich mit einem extra Servocontroller schlicht und einfach flexibler. Anstecken und gut ist.
geht es gerade bei Servos um ein zum Teil doch recht kritisches Timing.
geht es wenn ich mich recht entsinne hier nicht um 3 oder 4 Servos sondern um eine Möglichkeit quasi beliebig viele Servos mit einem µC anzusteuern und das mit einer möglichst hohen Genauigkeit (halt in etwa soviele wie der µC Beine hat).
Durchsuche mal das Forum, ich hab hier schonmal was über Servos geschrieben .... unter anderem ging es am Ende auch um Interuptlast und Auflösung
Im übrigen bin ich gerne Bereit meine Fähigkeiten zur Entwicklung einer entsprechenden Software zur Verfügung zu stellen. Allerdings sollten dazu vorher ein paar kleine Details geklärt sein etc.
Ich rede hier z.B. von einem sinnvollen Protokoll den Schnittstellen und gewissen gewünschten Features.
Ach ja, eins noch mit Basic wird der Controller eher wenig zu tun haben ... schon alleine deshalb weil ich mit Bascom eher auf Kriegsfuß stehe.
@minimum: Einfach mal im Forum suchen, hier gibt es recht viele Treads zum Thema Servo ...
Grüße,
Hanni
plusminus
16.04.2007, 00:14
ob mein Programm geht weiß ich noch nicht weil ich mit dem Controllerboard noch ein paar Probleme habe.
Dann poste doch mal das Programm hier. Dann kann ich es testen
quote="Chriss123"]was genau heißt baud??
Baud sagt nur etwas über die Geschwindigkeit aus, in der die Daten über RS232 gesendet werden.
gibt es verschiedene methoden einen servo anzusteuern??
Eigentlich nicht.
jon
BAUD = Geschwindigkeit der Datenkommunikation in BPS Bytes pro Sekunde
Servo-Ansteureungsmöglichkeiten:
1. PWM (=Pseudo-Analog-Spannung)
2. Analog-Spannung (sollte doch auch gehen, die dinger heißen wahrscheinlich nicht ganz umsonst Analog-Servos, oder :?: )
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.