Detaillierte Erklärung des Lenkgetriebes

Fügen Sie hier eine Bildbeschreibung ein

  Das Lenkgetriebe bezieht sich auf eine ausführende Komponente, die das Drehen der Ruderfläche (Steuerfläche) des Flugzeugs im Autopiloten steuert. Es gibt:
① Elektrisches Lenkgetriebe, das aus Elektromotor, Getriebeteilen und Kupplung besteht. Es akzeptiert das Befehlssignal des Autopiloten und funktioniert. Beim manuellen Fahren des Flugzeugs funktionieren die Getriebekomponenten nicht, da die Kupplung ausgekuppelt bleibt.
②Hydraulisches Lenkgetriebe besteht aus hydraulischem Stellantrieb und Bypassventil. Beim manuellen Fliegen des Flugzeugs öffnet sich das Bypassventil und der Hydraulikdruck auf beiden Seiten des Stellkolbens kommuniziert miteinander, ohne die manuelle Manipulation zu behindern. Darüber hinaus gibt es elektrohydraulische Servos, die als "elektrohydraulische Servos" bezeichnet werden.
  Die Größe des Lenkgetriebes wird durch die Ausstattung nach den Regeln der Klassifikationsgesellschaft bestimmt, und die Größe des Drehmoments wird hauptsächlich bei der Auswahl des Modells berücksichtigt. Eine sorgfältige und wirtschaftliche Auswahl gemäß den Anforderungen des Lenkgetriebes ist ebenfalls ein unverzichtbares Wissen.
[Baidu Encyclopedia]

  Das Servo ist eine Art Positions- (Winkel-) Servoantrieb, der für Steuerungssysteme geeignet ist, die den Winkel ständig ändern müssen und beibehalten können. Es ist weit verbreitet in High-End-Fernbedienungsspielzeugen wie Flugzeug- und U-Boot-Modellen sowie Fernbedienungsrobotern.
  Das Lenkgetriebe ist eine große Decksmaschine auf dem Schiff. Die Größe des Lenkgetriebes wird durch die Ausstattung nach den Regeln der Klassifikationsgesellschaft bestimmt, und die Größe des Drehmoments wird hauptsächlich bei der Auswahl des Modells berücksichtigt.
  In der Luft- und Raumfahrt sind Servos weit verbreitet. In der Luft- und Raumfahrt werden die Nick-, Gier- und Rollbewegungen der Fluglagenänderung des Flugkörpers vom Lenkgetriebe koordiniert. Das Lenkgetriebe findet in vielen Projekten Anwendung, nicht nur in Schiffen.

Struktur

Fügen Sie hier eine Bildbeschreibung ein
  Das Lenkgetriebe ist in der Robotik sehr nützlich. Wie in der obigen Abbildung gezeigt, sind diese Motoren sehr klein und verfügen über integrierte Steuerkreise. Standard-Lenkgetriebesysteme wie der Futaba S-148 haben ein Drehmoment von 42 Unzen (entspricht 1,2 Kilogramm Drehmoment), was für sein Volumen bereits sehr leistungsstark ist. Es kann auch die Leistung an Laständerungen anpassen. Daher verbraucht das Servosystem mit geringerer Last nicht zu viel Energie. Die interne Struktur des Lenkgetriebes ist in der obigen Abbildung dargestellt. Sie können den Steuerkreis, den Motor, einen Satz Zahnräder und das Gehäuse sehen. Sie können auch die 3 externen Verbindungen sehen.

Proportionalregelung des Servomotors

  Wie funktioniert das Lenkgetriebe? Das Lenkgetriebe verfügt über einige Steuerkreise und ein Potentiometer (einen variablen Widerstand), das mit der Abtriebswelle verbunden ist. Im Bild oben sehen Sie den variablen Widerstand auf der linken Seite der Leiterplatte, an der die drei roten Drähte angeschlossen sind. Der variable Widerstand ermöglicht es dem Steuerkreis, den Stromwinkel des Servomotors zu überwachen. Wenn der Winkel der Welle korrekt ist, wird der Motor ausgeschaltet. Wenn die Schaltung feststellt, dass der Winkel falsch ist, drehen Sie den Motor in die richtige Richtung, bis der Winkel korrekt ist. Die Abtriebswelle des Servosystems kann sich um 180 Grad bewegen.

Fügen Sie hier eine Bildbeschreibung ein

Wie steuere ich den Winkel des Servomotors?

  So steuern Sie den Lenkwinkel des Servomotors: Über die Steuerleitung wird das Winkelsignal übertragen. Der Winkel wird durch die Dauer des an den Steuerdraht angelegten Impulses bestimmt. Dies wird als Pulscodemodulation bezeichnet. Das Servosystem erwartet alle 20 Millisekunden einen Impuls (0,02 Sekunden). Die Länge des Impulses bestimmt, wie weit sich der Motor dreht.

Zum Beispiel bringt ein 1,5-ms-Impuls den Motor in eine 90-Grad-Position (oft als neutrale Position bezeichnet). Wenn der Impuls weniger als 1,5 ms beträgt, nähert sich der Motor axial 0 Grad. Wenn der Impuls größer als 1,5 ms ist, dreht sich die Achse um 180 Grad.

Einzelheiten finden Sie unter: Steuerprinzip des Servowinkels
Fügen Sie hier eine Bildbeschreibung ein

Wie in der obigen Abbildung gezeigt, bestimmt die Dauer des Impulses den Winkel der Abtriebswelle. Beachten Sie, dass die Zeit hier nur zur Veranschaulichung dient. Die tatsächliche Zeit hängt vom Motorhersteller ab. Das Prinzip ist jedoch dasselbe.

Fügen Sie hier eine Bildbeschreibung ein

Stm32-Antriebsservoprogramm

Das Quellprogramm des stm32-Servotreibers lautet wie folgt:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"



u16 led0pwmval;
int main(void)
{               

        delay_init();                     //延时函数初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);         //串口初始化为115200
         LED_Init();                             //LED端口初始化
         TIM2_PWM_Init(1999,719);        //100Khz的计数频率,计数到2000为20ms   
          while(1)
                        {
           LED1=0;         
         


            
                                                                                 TIM_SetCompare3(TIM2,50);
                    delay_ms(5000);                                         //延时多久很重要,自己一点点试。
                                                               
                                                       //延时多久很重要,自己一点点试。
                                                                                                

               
        }
      

                        }

Hauptfunktionsprogramm

#include "timer.h"
#include "led.h"
#include "usart.h"

//V1.1 20120904
//1,增加TIM3_PWM_Init函数。
//2,增加LED0_PWM_VAL宏定义,控制TIM3_CH2脉宽                                                                          
//////////////////////////////////////////////////////////////////////////////////  
            
//通用定时器3中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能

        TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值         计数到5000为500ms
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断

        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
        NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

        TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设
                                                         
}
//定时器3中断服务程序
void TIM3_IRQHandler(void)   //TIM3中断
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
                {
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
                LED1=!LED1;
                }
}




//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM2_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);        //使能定时器3时钟
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
        
//GPIO_PinRemapConfig(GPIO_PartialRemap_TIM2, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5   

   //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形        GPIOB.5
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO

   //初始化TIM3
        TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
        
        //初始化TIM3 Channel2 PWM模式         
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
        TIM_OC3Init(TIM2, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2

        TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器

        TIM_Cmd(TIM2, ENABLE);  //使能TIM3
        

}

32 Mikrocontroller Forum - Code zitiert >> >> Foren> Electronics Kategorie Diskussion> Aktieninformationen> STM32 Servo - Antriebsroutine http://www.51hei.com/bbs/dpj-150290-1.html

Arduino Drive Servo Programm

#include <Servo.h>

Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量

void setup() {
  myservo.attach(9);  // 控制线连接数字9
}

void loop() {
  for (pos = 0; pos <= 180; pos ++) { // 0°到180°
    // in steps of 1 degree
    myservo.write(pos);              // 舵机角度写入
    delay(10);                       // 等待转动到指定角度
  }
  for (pos = 180; pos >= 0; pos --) { // 从180°到0°
    myservo.write(pos);              // 舵机角度写入
    delay(10);                       // 等待转动到指定角度
  }
}
Veröffentlicht 153 Originalartikel · Gefällt mir 248 · Besuche 330.000+

Ich denke du magst

Origin blog.csdn.net/qq_45172832/article/details/105415675
Empfohlen
Rangfolge