- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: 22 Servos ansteuern

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Anzeige

    Praxistest und DIY Projekte
    Das packt schon ein ein ATmega8 mit 32 Servos:

    https://www.roboternetz.de/phpBB2/ze...ag.php?t=24100

    Die optimale Lösung sieht IMHO so aus:

    Man hängt 4 Portexpander hintereinander und hat so 32 Ports. An jeden dieser Ports (oder einige davon) ein Servo.

    Softwaretechnisch: Man aktualisiert im gewünschten Takt (wohl 20kHz-50kHz) die Expander. Bei Verwendung der HW-SPI braucht man ca 27 Takte, um ein Byte rauszukloppen (wegen Software-Overhead der Schleife). Wenn es noch schneller sein soll, könnte man die Schleife aufrollen.

    Die 4 Expander parallel zu betreiben wie bei dem Servo-Controller im verlinken Beitrag bringt m.E. nicht viel, das einzige was man davon hat, ist ein Jitter auf den Ausgängen. Wirklich gewinnen tut man da nix... Es ist viel wichtiger, die Ports zuverlässig zu definierten, äquidistanten Zeitpunkten zu aktualisieren.

    Selbst wenn man für jedes Servo nen eigenen Port hat, muss man für jedes Pin einen if-else machen und durch Hacks dafür sorgen, daß die Laufzeit unabhängig vom genommenen Zweig bleibt. Ansonsten jitterts. Und schneller ist man damit schwerlich...

    Da man zu jedem Tick die Soft-PWM neu berechnen muss, könnte man diese Berechnungen in die Ausgebe-Schleife integrieren, d.h. PWM-Werte berechnen anstatt auf den SPI zu pollen. Evtl ist es besser, die Werte nach(!) der Ausgabe zu berechnen.

    Den SPI im IRQ-Modus zu betreiben ist nicht angesagt, denn der ISR-Overhead ist zeitmäßig schon über der Dauer einer Loop-Umdrehung.

    Was den g-Sensor angeht: Der liefert was Analoges (liest du via ADC) oder ne PWM (liest du via InCapt), nutzt also die HW-Parallelität voll aus.

    Durch geschicktes SW-Design kannst du die IRQ-Respond-Times weiter drücken, vor allem wichtig für den InCapt.
    Disclaimer: none. Sue me.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    Vielen Dank für diene Antwort!
    der g-sensor ist digital (ADXL) ich lese ihn via int0 und int1 aus.

    des weitern sollte das board im 50ms takt über funk befehle erhalten...
    wäre es somit nicht sinvoller einen separaten ic für die Servosteuerung zu verwenden?

    die ganze elektronik sollte jedoch so klein und kompakt sein wie möglich, die Ports am Atmega128 zu benützen käme dann schon sehr gelegen...

    hmm, ich glaube ich probiere es einfach mal

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    50ms ist ja massig Zeit, wenn man nicht gut aufpasst wird einem in 50ms ja schon die Sahne sauer...

    Kommt drauf an, wie viel du in einen 50ms Frame reinpackst. Ich denke mal ein 128 sollte das locker packen. Der Übelstand ist, daß du IRQs nicht priorisieren kannst. Ich vermute mal die 50ms-Teile segeln über den UART.

    Ich selbst hab noch nie mit Servos gearbeitet weiß also nicht, wie groß der Jitter auf ihrem Signal sein darf und ab wann sie sich verschlucken und zappeln.

    Den ADXL liest du wahrscheinlich besser via InCapt, das gibt genaue Werte. Das ISR-Design kannst du auf 2 Ebenen machen: Eine Ebene ist offen für IRQs, die andere (höher priore) ist es nicht.

    Wenn du direkt an die Ports gehst macht du es so: Du berechnest erst alle Ausgaben und setzt sie dann (quasi) parallel, anstatt berechnen-setzen-berechnen-... Zudem muss der µC genug Strom für die Servos liefern. Aber 120mA oder so sollten für 32*TTL reichen.

    Evtl ist auch zu überlegen, in deiner Applikation auf die 50ms zu pollen. (Ein Programm hat niemals nicht irgendwo Warteschleifen!). Musst eben mal gegeneinander aufrechen, was wie lange warten kann/darf:
    -- 50ms-Baudrate
    -- min/max Duty des ADXL
    -- Jitter auf Servo-OUT
    Disclaimer: none. Sue me.

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    Vielen Dank für diene Antwort!
    bisher hatte ich 2 Atmegas, ein mega8 für die I2C Funkverbindung zum PC (mit RF04, easyradio), und einem kleinen 4bit Bus zu einem mega32. Auf dem lief der SD20 der ADXL und viel berechnungs schnigg schnagg .

    Jetzt will ich aber das RN-128-funk modul verwenden. Das ding hat alles schon drinn und ist kompakter/leichter.

    so nun auch mein Problem, ich habe noch nie was mir UART gemacht
    wegen dem Jitter mache ich mir weniger sorgen (villeicht auch desshalb weil ich nicht genau weiss was su meinst ), ich mus nie alle Servos miteinander bewegen

    den Funk brauche ich nur um Befehle für laufen etc. zu geben.
    die 50ms sind somit kein Problem ist ja wirklich ne menge Zeit
    für adxl T2 reichen 5ms.

    -> könnte ich über RS232 überhaupt ein SSC-32 Servocontroller ansteuern? das Funkmodul vom rn-mega128 funk läuft doch auch über rx/tx?

  5. #15
    Hallo Chriz,

    sag mal brauchst Du noch günstig ein paar Servos? Habe da einige noch ungebrauchte im Keller liegen (die Conradteile). Kann ich Dir günstig abgeben, bei Interesse einfachmal ne PM an mich schicken.

    Auch wenns jetzt nach angeben klingt, aber mit nem ATmega8 kann man locker 64 Servos gleichzeitig steuern. Theoretisch hätte es auch mit 512 geklappt.
    Aber kein IRQ, kein I2C, sondern mit Latches und 4to8bit-Registern (als Portexpander)

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    He he
    Vielen Dank für dein Angebot.
    Mittlerweile werde ich aber DC Motoren verwenden.

    das gibt dann ein neues Problem... kann ich die Hall Sensoren der Motoren (ca. 40'000 Impulse / min) sauber auslesen?
    und von 20 solchen Motoren gleichzeitig?


Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress