-         

Ergebnis 1 bis 8 von 8

Thema: Servos mit ATmega32

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.10.2008
    Beiträge
    234

    Servos mit ATmega32

    Anzeige

    Hi.
    Habe vor in nächster Zeit ein Controllerboard, wie in diesem Tutorial aufzubauen: http://www.roboternetz.de/wissen/ind...ieg_startet.3F
    Meine Frage: Wird es möglich sein damit 8Servos anzusteuern? Da irgendwann daraus vllt mal ein Roboter enstehen soll.
    Danke für eure Antworten!

    mfg murdocg

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Ja das sollte problemlos möglich sein.
    Signatur??? kann ich mir nicht leisten!!!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Voraussetzung ist nur, dass du einen schnelleren Quarz nimmst. Wenn du den internen verwendest gibt es schnell mal Probleme. Also am besten gleich einen externen 16MHz Quarz anlöten.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.10.2008
    Beiträge
    234
    Ok Danke.
    Das wollte ich nur wissen. Will mir(bin noch Anfänger) ein Controllerboard bauen, was ich dann später halt auch in nem Bot verwenden will.

    mfg murdocg

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Ach, noch etwas:
    Regel am besten die Spannung der Servos über einen extra Spannungsregler oder nimm gleich nen eigenen Akku für die Servos. Die Anschaltströme der Servos sind recht ordentlich, sodass es dazu kommen kann, dass sich der µC resettet oder andere Hardware wie US oder IR Sensoren gestört wird.

    jon
    Nice to be back after two years
    www.roboterfreak.de

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557

    Re: Servos mit ATmega32

    Hallo murdocg,

    Zitat Zitat von murdocg
    ... in nächster Zeit ein Controllerboard... aufzubauen ... Frage: Wird es möglich sein damit 8Servos anzusteuern? ...
    8 Servos - das sind acht Pinne des Controllers. Jeder Servo braucht einen Pin, dessen Signal an den SIG-Eingang (Signaleingang) des Servos geht. Vermutlich hattest Du schon hier nachgesehen, da steht für diesen Servoanschluss "PWM". Es MUSS aber keine übliche Hardware-PWM sein. Man kann die Rampe(n) auch softwaremässig machen.

    Man kann einen Servo sehr einfach und praktisch mit einer PWM ansteuern, dann hat man kaum Softwareaufwand. Es gibt z.B. bei Atmel ja Controller mit bis zu 16 PWM-Ausgängen; wie das bei anderen Controllern ist, weiss ich auf die Schnelle nicht. Wenn Du aber keinen Controller mit 8 PWM-Ausgängen hast, wirst Du das Ganze softwaremässig machen müssen. Dazu gibts etliche Threads hier im Forum.

    Jon hat schon etwas als "... am besten ..." genannt, das ist m.E. unabdingbar. Sprich: Du solltest dringend die Servos aus einer getrennten Spannungsquelle versorgen. Andernfalls werden die 8 Servos - vermutlich sogar auch dann, wenn es die kleinsten Größen sind - Deine Controllerversorgung massiv stören.

    Beim Aufbau des Controllerbords solltest Du Dich über geeignete Entstörungsmassnahmen in Controllernähe (Abblockkondensatoren, Entstördrossel, Widerstände) vorsehen. Dazu steht viel in den Datenblättern - oder bemühe die Suchfunktion hier im Forum.

    Viel Erfolg
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    375
    Auch der Mega32 kann problemlos 10 Servos ansteuern. Wichtig dabei ist das verwende von Interrupts und Timer. Ich habe das gemacht mit Timer1 (16bit). Der Interrupt Routine (ISR) von Timer 1 werd den ersten Mal durchlaufen und dan werd die Pin von erste Servo hoch gesetzt. In ISR wird dan die Pulslaenge von diesen Servo in OCR Register von Timer 1 uebertragen. Damit wird diesen ISR wiederum activiert exact nach ablaufen diesen Zeit. Beim diesen Durchlauf wird dan Servo1 low gesetztn Servo2 hoch. Und Pulslaenge von Servo2 wiederum in OCR schreiben. So wird die ganse Reihe von Servos durchlaufen, wo das die letzte Zeit so berechnet werd das das ganze nach 20 mS wieder anfangt (nicht kritisch). Diesen Ablauf hat nur eine sehr geringe Belastung von µ : die ISR wird nach 1 bis 2 mS wieder aufgerufen. Da sind bei 8 MHz so um die 8000 Cyclen !! (siehe code bei forum RP6, Servo mit 4 µS Auflosung)

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.12.2005
    Ort
    Nähe Mainz
    Alter
    26
    Beiträge
    3.467
    Das ganze ist sehr von der Programmiersprache abhängig. Wenn Bascom genutzt werden soll, dann ist die Ansteuerung ganz einfach, da Bascom das alles regelt und für einen macht. Da muss man nur noch die Position des Servos angeben.
    Soll aber C verwendet werden, so kann das so gemacht werden wie RP6conrad oder, wie oberallgeier es vorgeschlagen hat. Aber das sind bestimmt nich die beiden einzigen Möglichkeiten. Da kann man seiner eigenen Kreativität freien Lauf lassen und sich selbst etwas überlegen.

    Aber wie gesagt, der Aufwand ist von der Programmiersprache abhängig. Bei Bascom infach, bei C etwas schwerer, aber bestimmt nicht schlechter.

    jon
    Nice to be back after two years
    www.roboterfreak.de

Berechtigungen

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