PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bascom kann nur 14 Servos??!



JensK
24.03.2009, 10:17
moin, ich hab hier irgendwo im forum gelesen, dass man mit bascom nur 14 servos "steuern" kann. stimmt das? oder war das mit einer alten version von bascom. und ab wenn ja, ab welcher version ist das "gefixt" worden?

gruß
jens

PicNick
24.03.2009, 11:04
eigentlich sollte er 16 Servos zulassen (vers 1.11.8.1)
Das ist die Version, die ich hier habe.
Glaub nicht, dass das weniger geworden sind.

JensK
24.03.2009, 11:11
Wie kann ich dann 18 Servos steuern? Gar nicht mit bascom?

jeffrey
24.03.2009, 11:18
Wie kann ich dann 18 Servos steuern? Gar nicht mit bascom?
hallo,
du musst ja nicht die fertigen routinen verwenden. prog dir halt ne eigene, dann gehn so viele, wie du pins hast, sofern du gescheit progst.
mfg jeffrey

PicNick
24.03.2009, 11:18
uiui.
Naja, wenn du des Bascom-Inline-Assemblers mächtig bist, könnte dir das helfen
https://www.roboternetz.de/wissen/index.php/Bascom_Inside-Code#SERVO

JensK
24.03.2009, 15:41
Mh beim Inlien Assembler steht doch max 16 Servos.


Damit können bis zu 16 Servos an beliebigen Port-Pins versorgt werden.


Oder kann ich damit auch 18 steuern indem ich einfach:

Config Servos = 18 , Servo1 = Portb.0 , Servo2 = Portb.1 usw.
mache?

Oder sollte ich lieber auf C umsteigen?

Ich benutzte das Roboternetz Controll 1.4 und das sd21

PicNick
24.03.2009, 16:03
"Servos = 18" wird der Bascom wahrscheinlich nicht wollen, fürcht ich.

Ich meinte eigentlich, du baust dir den Code aus der Inside-Wiki auf 18 Servos um.

JensK
24.03.2009, 16:19
mh ich versteh gerade nicht was du meinst. sorry.

pinsel120866
24.03.2009, 17:11
Ich meine dass das SD21, wenn es nur mit I2C angesteuert wird, auch 21 Servos bedienen kann. Sonst würde der Lieferant es auch nicht für 21 Servos auslegen.

Schick doch einfach eine Anfrage an den Hersteller.

JensK
26.03.2009, 12:10
@ PicNick: https://www.roboternetz.de/wissen/index.php/Servoansteuerung#Quellcode

den für 18 servos umschreiben?

oder die ISR Routine weiter bis zum 18 servo schreiben?

gruß

PicNick
26.03.2009, 13:20
Zum Erweitern und Experimentieren ist das Bascom Beispiel aus der Wiki sicher ok, weil du da mit Cut & Paste gleich mal loslegen kannst.
Und das Grundmuster (Bascom weiss nix von Servos, Timer und ISR) brauchst du auch in beiden Fällen.

Hat der Micro ausser den Servos noch was zu tun ?

jeffrey
26.03.2009, 15:56
@ PicNick: https://www.roboternetz.de/wissen/index.php/Servoansteuerung#Quellcode

den für 18 servos umschreiben?

oder die ISR Routine weiter bis zum 18 servo schreiben?

gruß
hallo,
ich halte von dem code recht wenig. vorallem mschaffszt du damit maixmal 10 servo, wenn du dich an die servo signalkonventioenen halten möchtest.
meiner meinung wäre es sinnvoller, die servos dann nach der signallänge aufsteigend zu ordnen, und dann die servos gleichzeitig einschalten, und nacheinander dann wieder aus.
mfg jeffrey

JensK
26.03.2009, 17:50
Hat der Micro ausser den Servos noch was zu tun ?

nein bisher nicht. also das rnboard steuert nur über den sd21 die 18 servos. später sollen evtl. noch sensoren hinzukommen. aber erstmal reicht mir die servosteuerung.

ich seh schon da kommt mit bascom einiges auf mich zu. lohnt es sich nicht da lieber mit c zu beschäftigen?

@jeffrey: wie sähe denn deine idee ohne die signalkonventionen aus? (vllt ein beispiel mit 2 servos?!)

gruß

python_rocks
26.03.2009, 18:21
ich seh schon da kommt mit bascom einiges auf mich zu. lohnt es sich nicht da lieber mit c zu beschäftigen?
Hallo JensK!

Das bedeutet nur, dass du nicht den Bascom-Highlevelbefehl dafür verwenden kannst, außer du passt ihn dir selber (in Assembler) an.

Das bedeutet nicht, dass du dein Problem nicht in Bascom lösen kannst. Du musst nur auf den Highlevelbefehl verzichten und die Ansteuerung der Servos per Hand machen. Das müsstest du in C auch.

Anderer Vorschlag: Teile die Arbeit auf. Nimm zwei ATmega8 (das kostet dich drei Euro) und nimm den Bascom-Highlevelbefehl. Dann brauchst du dir keine Gedanken um das Timing machen -- macht alles Bascom für dich.

Oder du beschäftigst dich mit der Servoansteuerung (welche Signale erwartet werden) und programmierst die Servoansteuerung selbst. Nimm auf jeden Fall den schnellsten Quarz der zum µC passt. Auch wenn du Bascom-Highlevelbefehle dafür verwendest.

mfg
Gerold
:-)

JensK
26.03.2009, 18:41
ich würde schon gerne beim rncontroller und sd21 bleiben. da kann ich doch nicht 2 atmega8 benutzen oder?

im assembler stehen ja schon die anderen highlevebefehle. dann ist das doch im prinzip nur copy and paste anpassung oder?

gruß

python_rocks
26.03.2009, 20:42
ich würde schon gerne beim rncontroller und sd21 bleiben.
Hallo JensK!

Diese "höchstwichtige" Information habe ich überlesen. Das SD21 (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=65&products_id=198) steuert ja schon die Servos an. Also musst du gar nichts mehr dafür tun. Du musst nur die gewünschte Position der Servos per I²C an das SD21 übermitteln. Das war's schon.

mfg
Gerold
:-)

JensK
26.03.2009, 21:15
Ja also sollte doch Bascom das hinbekommen oder?
Also auch mit deren highlevel befehlen ?!

weil der Befehl

Declare Function Sd21_version() As Byte
Declare Sub Setzeservoposition(byval Servo As Byte, Byval Postion As Word)
Declare Sub Setzeservospeed(byval Servo As Byte, Byval Speed As Word)

Setzeservoposition 20, 500

hab den anderen kram der programms weggelassen. aber das steuert den 20 anschluss am sd21 auf die position 500.
Damit kann ich doch 18 Servos steuern oder?
also von kanal 1-18 dann alle

pinsel120866
27.03.2009, 07:21
Hallo Jens,

mach dir keine Sorgen, ich habe es gestern mit 21 Servos probiert und alles hat problemlos funktioniert.

Ich habe sowohl alle gleichzeitig, als auch gemischt drehen lassen und es lief einwandfrei.

JensK
27.03.2009, 09:15
Hi Pinsel,
das ist eine sehr gute Nachricht. :) Hatte schon "Angst" gehabt, das ich das nicht mit Bascom hinbekomme. Dann mach ich mich mal ans programmieren. (Hab ja noch nicht den starken akku für die 18 servos. daher konnte ich es nicht testen)

gruß und danke für eure hilfe!