-         

Ergebnis 1 bis 6 von 6

Thema: Servo ansteuern

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2010
    Beiträge
    106

    Servo ansteuern

    Anzeige

    Hallo,
    Ich habe eine Frage,
    Ich weiß das ich Servos über PORTA ansteuern kann,
    nun möchte ich wissen, ob ich Servos über PORTC, PORTD und PORTB ansteurn kann. Ausprobieren wollte ich dies nicht weil ich angst hatte das mir mein controler durchbrennt.
    Vielen Dank

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    04.05.2010
    Beiträge
    88
    Ahh, mein lieblings Fragensteller.
    Alle Ports sind gleich (Push-Pull stufe), somit sollte es keine Probleme geben.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Zitat Zitat von Jada
    ... möchte ich wissen, ob ich Servos über PORTC, PORTD und PORTB ansteurn kann ...
    Wie so oft gilt: im Prinzip ja.
    Zitat Zitat von syn_error
    ... Alle Ports sind gleich ...
    Wie so oft gilt: im Prinzip - gleich. Da ist z.B. beim mega16/-32 zu beachten, dass auf PORTC einige Pins für JTAG vorgesehen sind (das kann man aber per Fuses abschalten), bei vielen Controllern gibts RX- und TX-Pinne, da gibts I2C-Pinne - also Etliches, das je nach Auslegung der Schnittstellen oder anderer Nutzer wenig oder keinen Sinn macht, es für einen Servo zu benutzen.

    Empfehlenswert für die Servoansteuerung ist ein Anschluss, auf dem man ein Hardware-PWM-Signal erzeugen kann. Diese Pinne heissen dann etwa OC0A, OC2B und ähnlich. Das brächte programmtechnisch eine Vereinfachung, weil dann ein Hardware-PWM-Signal erzeugt werden kann, für das nur minimaler Software- bzw. Code-Aufwand getrieben werden muss. Sprich: ne Hardware-PWM kann CPU-Zeit einsparen.

    Die jeweilige Portbelegung - mit Angabe der verschiedenen, möglichen, alternativen Nutzungen - ist in den Datenblättern, meist auf Seite 2 oder 3 angegeben. Datenblätter von Atmel kannst Du hier runterladen.

    Bitte denk daran, dass ein Servo möglichst mit einer vom Controller getrennten Versorgung, aber einem gemeinsamen GND, betrieben werden soll, um Störungen durch hohen Stromverbrauch des Servos zu verhindern. Der Servo hängt also üblicherweise mit seinem Signaleingang an einem Controller-Pin und ist mit dem GND des Controllers verbunden. Wenn keine getrennte Energiestation für den Servo verfügbar ist, bieten sich Elkos an zur Pufferung des Energiehungers der Servomotoren.
    Ciao sagt der JoeamBerg

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Empfehlenswert für die Servoansteuerung ist ein Anschluss, auf dem man ein Hardware-PWM-Signal erzeugen kann.
    Beispiele für Servoansteuerungen mit Hardware-PWM findet man eher selten. Grund dafür ist das sehr ungünstige Impuls:Pause-Verhältniss des Servosignals. Einfacher und resourcenschonender (Hardware-PWM ist eine sehr wertvolle weil rare Funktion zumindest bei den kleineren Microkontrollern) ist eine Ansteuerung mit Software-PWM die mit einem Timer (klassisch verschwenderisch mit 100kHz-Takt oder eleganter und etwas komplizierter mit einem Interupt pro Impuls) erzeugt wird.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Code:
    '-----------------------------------------------------------------------
    '                         (c) 2001-2005 MCS Electronics
    '                           servo.bas demonstrates the SERVO option
    '-----------------------------------------------------------------------
    
    'Servo's need a pulse in order to operate
    'with the config statement CONFIG Servos we can specify how many servo's we
    'will use and which port pins are used
    'A maximum of 16 Servos might be used
    'The SERVO statements use one byte for an interrupt counter and the TIMER0
    'This means that you can not use TIMER0 anymore
    'The reload value specifies the interval of the timer in uS
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
    $regfile = "2313def.dat"
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    'as an option you can use TIMER1
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
    
    
    'we use 2 Servos with 10 uS resolution(steps)
    
    'we must configure the port pins used to act as output
    Config Portb = Output
    
    'finally we must turn on the global interrupt
    Enable Interrupts
    
    'the servo() array is created automatic. You can used it to set the
    'time the servo must be on
    Servo(1) = 10                                               '10 times 10 = 100 uS on
    'Servo(2) = 20                                               '20 times 10 = 200 uS on
    Do
    Loop
    
    Dim I As Byte
    Do
     For I = 0 To 100
       Servo(1) = I
       Waitms 1000
     Next
    
     For I = 100 To 0 Step -1
     '  Servo(1) = I
       Waitms 1000
     Next
    Loop
    End
    Hat bei mir gut geklappt, Gruß Richard[/code]

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    05.05.2011
    Beiträge
    55
    Hallo erstmal an alle,die hier sind
    ich brauche dringen euer Hilfe,ich habe ein Projekt,
    man will viele Kleine glänzende Kugeln (Tennis ball grösse),jede einzelne kugel hängt je an einem Seil ( seil ist Unsichtig),die andere Seilende ist mit Servo gebunden,man will eine Bewegung von allen diesen Kugeln durch die Servos generieren und zwar so dass ein AutoKarroserie form am ende entsteht.Also rechts,links oben unten bewegungen bis ein Auto form entsteht. (es gibt auch ein Werbung im Fernsehen,die sowas zeigt)
    meine Aufgabe ist die Folgende :
    Ich muss ein Komplettes Chip board also ein richtiges Leistungsfähiges Board zusammen bauen das man auch mit PC verbindet.Das Board soll folgende Anschlüsse haben:isp,usb,I2C,RS232,JTAG,Resetknopf,power,UART ´s,SD-card,CAN,Led´s mit IR und LAN um ein hochleistungs Servomotor zu steuern.Wenn das Board fertigist dann kommt die nächste phase (C-programmierug),übrigens das Board sollte möglichst vielseitig einsetzbar also für halt viele aufgaben geeignet sein(man muss halt nur die Befehle also das setup neu schreiben oder anpassen wenn sein muss )
    Ich habe rescherschiert aber ich weiss gar nicht von wo ich
    anfangen soll.ich weiss nicht wie hoch die geschwindigkeit vom prozessor sein muss,oder die grösse vom Ram und soweiter .Es gibt schon fertige boards die man kaufen kann,aber der Professor will dass man die teile fertig kauft und selber stück nach stück reinstecken kann und danach mit Programmierung beginnen.Ich bin sehr dankbar für jede Hilfe,tipps und hinweise.Vieln Dank

Berechtigungen

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