-         

Ergebnis 1 bis 8 von 8

Thema: Enfache Servosteuerung?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2007
    Ort
    Nördlinger Ries
    Beiträge
    7

    Enfache Servosteuerung?

    Anzeige

    Kennt jemand eine einfache Steuerung um 2 Servos mit je einem 4-Bit wert einen Drehbereich von 90 Grad fahren zu lassen?
    Ich möchte an der Schaltung pro Servo 4 Bit anlegen und der Servo soll den entsprechenden Winkel anfahren.

    Danke

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Schaltungstechnisch am einfachsten: einen Mikrocontroller nehmen. Dann reicht zb ein 14poliges IC, fast ohne Außenbeschaltung.
    Damit ist der Aufwand dann in die Software verlagert worden.

    Als SMD auf Briefmarkengröße unterzubringen. In THT auf ner großen Briefmarke.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2007
    Ort
    Nördlinger Ries
    Beiträge
    7
    Das waren meine Vorstellungen.
    Ich habe jedoch noch wenig Erfahrungen mit Mikrocontrollern und würde mir gerne mal einen fertigen Vorschlag ansehen. Sicher hat schon mal jemand so was gemacht. Kennst Du einen Link?

  4. #4
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    34
    Beiträge
    4.528
    Blog-Einträge
    1
    Werden Servos nicht über Pulsweite angesteuert? Die brauchen nur einen einzigen Pin und über den werden entsprechende Signale geschickt (Standartservos haben eh nur Plus, Ground und Signal Leitungen).
    Wie man das macht findet man zu den gängigen µControllern überall da es eine Standartaufgabe ist. Die Unterlagen musst du dir aber selber suchen, heißer Tipp ist aber unsere Wiki.

  5. #5
    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

    Meinen Langbein steure ich mit einem Attiny13 und programmiere ihn in C. Der tiny13 kostet ca. 1.15€, hat 8 Pins und steuert bei mir 5 Servos. Mein aktueller Code:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    //#define f_cpu 9,6 MHz
    
    uint8_t a, b, x, x2, y, y2, z, demo;
    volatile uint16_t count, time;
    
    void delay(uint16_t d)                                // Warteschleife
    {
    	d+=time; while(d>time);
    }
    
    ISR(TIM0_COMPA_vect)                                  // Servoansteuerung
    {
    	if (count>z) PORTB &= ~(1<<PB0); else PORTB |= (1<<PB0);
    	if (count>y) PORTB &= ~(1<<PB1); else PORTB |= (1<<PB1);
    	if (count>x) PORTB &= ~(1<<PB2); else PORTB |= (1<<PB2);
    	if (count>y2) PORTB &= ~(1<<PB3); else PORTB |= (1<<PB3);
    	if (count>x2) PORTB &= ~(1<<PB4); else PORTB |= (1<<PB4);
    	if (count < 1000) count++; else { count=0; time++; }
    }
    
    int main(void)
    {
    	y=y2=60;
    	x=x2=60;
    	z=95;
    	time=0;
    
    	DDRB = (1<<PB4)|(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0); // Servoausgänge
    	//PORTB= (1<<PB3);                                   // PullUp Taster ein
    
    	TCCR0A =  (0 << WGM00) | (1 << WGM01);					// CTC-Mode
    	TCCR0A |= (0 << COM0A0) | (0 << COM0A1);				// ohne OCR-Pin
    	TCCR0B = (0 << CS02)  | (0 << CS01) | (1 << CS00);	// prescaler /8
    	TIMSK0 =  (1 << OCIE0A); 									// Interrupt ein
    	OCR0A  = 11;  // nicht wissenschaftliche Frequenz(100kHz?)
    	sei();
    
    	delay(100);
     	{
    		for(a=0; a<10; a++) {x++; y++; delay(5);};
    		for(a=0; a<10; a++) {y--; delay(5);};
    		for(a=0; a<10; a++) {x--; x2--; delay(5);};
     	}
    while(1);
    	return(0);
    }
    Nur als Anregung, x,x2,y,y2,z sind die jeweiligen Servopositionen. Wertebereich vom -90° bis + 90° ist ca. 50-150. Vielleicht hilft/inspiriert dich das. Bei Problemen bei der Anpassung an 4-bit-Positionen kannst du gerne nachfragen.

    Gruß

    mic

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

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    13.12.2007
    Ort
    Nördlinger Ries
    Beiträge
    7
    Danke für die Info.
    Ich werde mir das morgen mal genauer anschauen.
    Wie gesagt möchte ich das dann anpassen und mit je 4 Bit ansteuern.

  7. #7

    ???

    Ich hätte da auch noch mal eine Frage! Also ich hab einen Atmega 16 und wollte mit dem über eine ADC Ausgang einen Servo steuern! Das Programm mit dem ich programmiere ist BASCOM-AVR!

    Die Frage ist nun wie schreibe ich das Programm?
    Wie sage ich ihm in welche richtung er das Servo lenkt?

    Ich hoffe sehr auf eine Antwort
    Danke vorab!

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    @Luca-33
    Das Wort "Servo" wird hier im Forum automatisch mit einem Link hinterlegt. Wenn du da einfach mal draufklickst, findest du wie ein Servo grundsätzlich angesteuert wird.
    Da findest du auch ein Codeschnipsel zur Ansteuerung eines Servos in Bascom. Genaueres dazu findest du auch in der Bascom Online-Hilfe.
    Ein Beispielprogramm ist ebenfalls in Bascom enthalten. Das würde ich einfach mal auf deinen Controller anpassen und ein bischen damit rumspielen.

Berechtigungen

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