물구나무 진자 시스템 설명

 : 
 :XS128

제어 객체에 대한 기본 설명


제어 목표

  • 플랭크는 처음에 가장 높은 위치까지 스스로 진동할 수 있고 가장 높은 위치에서 움직이지 않거나 아주 작은 범위에서 운동할 수 있다
  • 플랭크가 외부 간섭을 받았을 때(동전이나 손 등의 두드려서 수직으로 위로 향하는 위치에서 벗어날 수 있음) 자동으로 목표 위치로 회복
  • 개체 기본 매개변수 및 제어 방법 선택 제어

  • 모터 PWM 제어 주파수
  • 10KHz
  • 이유
  • 주파수 특별 시간에 전기 기계는 사구가 비교적 작지만 전기 기계의 특성이 비교적 딱딱하고 공간을 차지하는 비례가 적으면 비교적 큰 속도를 낼 수 있으며 속도 조절 정밀도를 제어하기 어렵다(조절 파라미터에 어려움을 가져온다).
  • 주파수 시간에 전기 기계가 전류가 끊긴 상태에서 작동할 수 있어 클릭에 해롭고 전기 기계가 발생하는 소음이 비교적 크다

  • 제어 주기
  • 0.5ms
  • 제어 시스템을 2 이벤트로 나누고 이벤트 1은 속도 제어(외환), 이벤트 2는 각도 제어(내환), 외환 제어 주기는 100ms, 내환 제어 주기는 1ms로 나눈다.이벤트 2에서 모터 PWM 출력이 수행됩니다.그러므로 1ms당 1회 PWM파
  • 를 출력하는 것과 같다
  • 이유
  • 제어 주기가 너무 작고 시스템이 흔들린다.제어 주기가 너무 크고 시스템 반응이 제때에 이루어지지 않는다
  • 이곳의 통제 주기는 참고 선배의 통제 주기

  • 레벨 2 PID 선택
  • 각도 루프
  • PID
  • 위치
  • 속도링
  • PID 증가
  • 속도링의 출력은 각도링의 입력으로 하고 이때 각도링의 초기 설정값은 250이기 때문에 위치식 PID 알고리즘을 사용하면 각도를 처리해야 한다
  • .

  • 기진
  • 진동대가 수직으로 아래로 내려갈 때 진동각이 어느 각도값보다 작을 때 고정된 비례를 차지하는 PWM파를 출력하고 진동각이 어느 값보다 크면 전기기계
  • 진동 과정에서 진동대의 방향을 판단하여 진동대가 어느 방향에서 진동하든 전기기의 회전 방향은 그 방향을 따라 계속 진동을 가속화시킬 수 있다.
  • 실현 방법: 플랭크의 각도와 운동 방향을 동시에 판단하고 제어
  • 코드
    if( (PID4Pend.GetVal < LimA) || ( PID4Pend.GetVal >= ( 500 - LimA ) ) )
    {
        OutDuty = 1200;
        if(PendDir==1) dir=2;
        else dir=1;
    }
    if( (PID4Pend.GetVal < (500 - LimA)) && (PID4Pend.GetVal > 260 ))
    {
        OutDuty = 0;
    }
    if( (PID4Pend.GetVal > LimA) && (PID4Pend.GetVal < 240 ))
    {
        OutDuty = 0;
    }
    SetMotorVoltage( OutDuty , dir );
    

  • 인코더 읽는 방식
  • 외부 중단
  • 고려 사항
  • 초기화 시 외부 중단 우선 순위를 최대
  • 로 설정
  • 직렬로 들어갈 때 중단되거나 정시에 중단될 때 다시 호출EnableInterrupts해야 중단
  • 진동대가 진동할 때 0의 편향이 생기기 때문에 인코더의 값이 점점 원점에서 멀어진다(진동이 발생하고 여기에 대응하는 250).해결 방법: Z로 복원하여 Z상 펄스 저전기가 평소에 대응하는 펄스 개수를 기록하고 Z상 외부에서 촉발을 중단할 때마다 펄스 계수의 값을 직접 바꾼다.
  • 인코더는 A, B, Z에 저항을 더해야 하기 때문에 소프트웨어를 통해 저항을 설정하면 된다.


  • 속도링의 출력 방식
  • 슬로프 출력
  • 현재 채택하고 있는 방식은 이런 방식으로 얻은 출력량을 비탈의 방식에 따라 계속 비틀어 출력한다
  • 단계 점프 출력
  • 아직 시도하지 않았음


  • 디버그 과정 중 발생한 문제

  • 전기 사구의 처리
  • 계산 출력의 차지 비례가 사구의 차지 비례보다 작을 때 전기 기계는 돌아가지 않는다
  • 현재 채택된 방법은 이런 방법
  • 모터의 출력 차지 비례가 사구 차지 비례보다 작을 때 모터는 최소 속도에 따라 운동
  • 계산된 점공비의 출력 점공비를 일차 함수 관계에 따라 출력한다. 예를 들어OutDuty = 0.94 * OutDuty + 0.06 그 중에서 0.06은 전기 기계 사구에 대응하는 점공비
  • 이다.
  • 시스템의 동태와 안정성에 대한 조화 문제
  • 문제설명: PI제어를 사용할 때 플랭크는 자유하수에서 수직으로 위로 올라가는 위치로 자동으로 플랭크할 수 있고 90도 범위(일반적으로 45도 범위내)에서 운동할 수 있다. 이는 시스템의 안정성이 요구에 도달한 것을 의미한다. 이때 외력으로 플랭크를 떨게 하면 떨림이 시간이 비교적 많고 플랭크는 안정으로 돌아갈 수 있지만 비교적 크면 안정으로 돌아갈 수 없다.예를 들어 PID의 제어 각도 범위를 초과하도록 방해를 가한다.PD 제어를 사용할 때 플랭크는 스스로 진동을 일으킬 수 있고 외부의 간섭을 받아 비교적 잘 회복될 수 있지만 90도 범위 내에서 유지할 수 없고 어느 방향을 따라 천천히 회전한다. 즉, 그의 성능이 요구에 도달하지만 안정적인 성능은 요구에 부합되지 않는다.
  • 해결 방법: 플랭크가 PID의 제어 모델에 있을 때 PI 제어를 사용하여 시스템의 안정적인 지표를 만족시키고 시작 모델에 있을 때(즉 세로로 위로 향하는 각도가 어느 값보다 크다) PD 제어를 사용하여 시스템의 동적 요구를 만족시킨다.


  • 일부 파이프 풋 정의


    직렬 포트

  • PS0 -> RXD0
  • PS1 -> TXD0

  • L298N 드라이브

  • IN1 -> PB1
  • IN2 -> PB0
  • ENA-> PP1

  • 코더

  • 플랭크 인코더
  • A상(블랙 라인): PA0(GPIO 읽기 방향)
  • B상(백선): PH0(외부 인터럽트 읽기 펄스)
  • Z상(오렌지선): PH1(외부 인터럽트 리셋 작업)
  • 블루 라인: GND
  • 브라운: VCC(5V~12V)
  • 회전기 인코더
  • 1,2:안 받아도 돼
  • pin3: VCC는 100옴의 저항(유동 제한)과 이 파이프 발을 통해 연결
  • pin4: PA1(GPIO 읽기 방향)
  • pin5: PH2(외부 인터럽트 읽기 펄스)
  • pin6 :GND


  • 프로그래밍 방법에 대한 설명


  • 네.c 파일에 정의되어 있습니다.h 파일에서 extern으로 설명하기
  • 이 변수를 인용하려면.h 파일에서 #include를 사용하거나 extern int value
  • 좋은 웹페이지 즐겨찾기