Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
de:examples:motors:servo [2009/04/23 17:04] nierhoffde:examples:motors:servo [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== RC Servomotor ======
 +Servomotoren werden oft in ferngesteuerten (radio-controlled/ RC) Modellen eingesetzt und sind aufgrund ihrer Kompaktheit und ihres günstigen Preises nützlich für viele Anwendungen im Bereich der Robotik. Ein RC Servomotor beinhaltet einen eigebauten Gleichstrommotor, ein Getriebe, eine Messeinrichtung zur Bestimmung der genauen Rotorposition (meist ein Potentiometer) und die Fahrelektronik.
 +RC Servomotoren werden mit einem externen Pulsweitenmodulierten Steuersignal (PWM) angesteuert. Das Steuersignal gibt eine (Ziel)Position für die Servo-Elektronik an, welche die angegebene Position der Motorwelle mit der geforderten vergleicht und bestmöglich anpasst. Das Steuersignal ist ein stetiges Rechtecksignal (siehe Bild)
  
 +Servomotoren haben drei Kabel:
 +  * Rot = Stromversorgung VCC (4.8–6V)
 +  * Schwarz = Masse
 +  * Weiß/Gelb = PWM-Signal (variiert je nach Typ)
 +
 +Das PWM Signal hat folgende Form:
 +
 +{{:examples:actuator:pwm_signal.jpg|?400}}
 +
 +1.0ms = weiteste linke Position
 +
 +1.5 ms = Center Position
 +
 +2.0 ms = weiteste rechte Position
 +
 +===== Elektrische Verbindung =====
 +{{:examples:actuator:servo_schema.jpg?250|}}
 +
 +Tabelle Steuersignale vom ATmega128 zu dem Actuator-Board.
 +
 +{{:examples:actuator:servo_connection_table.jpg}}
 +
 +  - Schalte den Strom ab.
 +  - Verbinde Actuator-Board und Main-Board mit einem 26-pin Kabel.
 +  - Verbinde den RC Servomotor mit dem Actuator-Board (siehe Bild 2). Anmerkung: Das Signal-Kabel (normalerweise Geld oder Weiß) befindet sich am äußeren Rand des Boards.
 +  - Verbinde den JTAG Converter mit dem ATmega128 Main-Board und dem PC.
 +  - Schließe Actuator- und Main-Board an den Strom an.
 +
 +{{:examples:actuator:servo.jpg?500|}}
 +
 +===== Beispiel Code =====
 +
 +<code c>
 +/*-------------------------------------------------------------
 +Title: RC Servo motor with Actuator Board
 +Date: 080327
 +Ver.: 1.1
 +Compiler: AVR-GCC
 +Target: ATmega128
 +Hardware: ATmega128 controller board, Actuator board, RC servo motor
 +Author: Raivo Sell 2008
 +
 +Notes: Description: Moves slowly RC motor shaft from one edge to another.
 +---------------------------------------------------------------*/
 +#define F_CPU 14745600UL //CPU Frequency (influences delay function)
 +
 +#include <avr/io.h>
 +#include <util/delay.h>
 +
 +///////////////// Main function //////////////////////////////////
 +int main (void){
 +
 + // Set timer control registers
 + TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM11);
 + TCCR1B = _BV(CS11) | _BV(WGM13) | _BV(WGM12); 
 +  
 +    DDRB = 0x30;  // PB5 & PB6 output
 + ICR1   = 36000; // Sets the upper limit to Timer1 
 +    //(creates 50 Hz signal) XTAL/8/256*50   14745600
 + OCR1A  = 2700;  // Sets when the PWM signal should toggle.
 +
 + while(1){
 + for(OCR1A=500;OCR1A!=5000;OCR1A++)  {_delay_ms(3);}
 + for(OCR1A=5000;OCR1A!=500;OCR1A--)  {_delay_ms(3);}
 + }
 +}
 +</code>
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0