annuncio

Comprimi
Ancora nessun annuncio.

aumentare estensione servi

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • aumentare estensione servi

    salve, so che quello che sto per scrivere riguarda l'elettronica, però credo che a qualcuno del volo FPV può far comodo auto costruirsi un servo extends, giusto per avere una maggiore roteazione della telecamera.
    Comunque il circuito da realizzare è semplice, un regolatore di tensione da 5 v , un PIC 16F628 e basta!

    il programma da inserire nel PIC potete copiarlo qui di seguito , l'ho fatto stamattina, fresco fresco, di giornata, estende con una ricevente 40 Mgz

    se volete farlo funzionare su una RX 2,4 GHz dovete sostituire infondo il ritardo di 26 con 20. Spero possa essere utile.



    ; EXTENDS.ASM - Dimostrativo di semplice estensione escursione servocomando
    ;
    ; created by Fausto Giudice
    ; www.openflight.it
    ;-----------------------------------------------------
    PROCESSOR 16F628
    RADIX DEC
    INCLUDE "P16F628.INC"
    __CONFIG 11110100010000B

    ATTESA EQU 32
    CL EQU 33
    HALF EQU 34
    H_COUNT EQU 35
    L_COUNT EQU 36

    #DEFINE PULSEIN PORTB,5
    #DEFINE PULSEOUT PORTB,0

    ORG 0

    BSF STATUS,RP0 ; ** GO TO BANK 1

    MOVLW b'00000000'
    MOVWF TRISA

    movlw b'11110010'
    movwf TRISB

    BCF STATUS,RP0 ; ** RETURN BANK 0
    ;
    ; _________________________________________
    ;
    ; START PROGRAM
    ; ------------------------------------
    ;
    LOOP BTFSS PULSEIN ; FINCHE NON LEGGE 1 RIMANE QUI
    GOTO $-1

    CALL PP ; ATTENTE UN MILLI SECONO

    YY BTFSS PULSEIN ;
    GOTO SHOW
    INCF ATTESA,F ; INCREMENTA COUNT
    GOTO YY

    SHOW MOVF ATTESA,W
    MOVWF HALF
    BCF STATUS,C
    RRF HALF,F
    MOVLW 118
    ADDWF HALF,F

    CALL PULSE_OUT ; ATTESA
    CALL DELAY_20 ; IMPULSO ESTESO
    CLRF ATTESA ; RESETTA COUNT
    GOTO LOOP ; TORNA A LEGGERE DALLA PORTA DI INGRESSO
    ; _________________________________________
    ;
    ; END PROGRAM
    ; ------------------------------------
    ; _________________________________________
    ;
    ; GENERA UN IMPULSO PIU ESTESO SU PORTA1 RISPETTO A QUELLO ENTRANTE IN PORTA0
    ; ------------------------------------
    ;
    ; 900 + 5 * ATTESA = da 900uS se ATTESA è = 0 , a max 2000uS se ATTESA = 200

    PULSE_OUT BSF PULSEOUT
    movf HALF,W ; 1uS |
    movwf CL ; 1uS | 4uS
    goto $+1 ; 2uS |

    goto $+1 ; 2uS |
    decfsz CL,F ; 1uS | 5uS * (178 - 1) = 885uS
    goto $-2 ; 2uS |

    nop ; 1uS

    movf ATTESA,W ; 1uS
    movwf CL ; 1uS
    btfsc STATUS,Z ; 1uS nel caso in cui ATTESA = 0 allora salta alla fine
    RETURN ; 2uS

    goto $+1 ; 2uS

    goto $+1 ; 2uS |
    decfsz CL,F ; 1uS | 5uS * (ATTESA - 1) =
    goto $-2 ; 2uS |
    BCF PULSEOUT

    RETURN
    ;
    ; _________________________________________
    ;
    ; GENERA UN RITARDO DI 1 mS
    ; ------------------------------------
    ;

    PP MOVLW 178 ; 1uS |
    MOVWF CL ; 1uS | 4uS
    GOTO $+1 ; 2uS | ****** ATTESA DI 0.9 mS ******
    GOTO $+1 ; 2uS |
    DECFSZ CL,F ; 1uS | 5uS * (177 - 1) = 885uS + 4 + 2 = 891 uS circa
    GOTO $-2 ; 2uS |
    RETURN
    ;
    ; _________________________________________
    ;
    ; GENERA UN RITARDO DI 20 mS
    ; ------------------------------------
    ;

    DELAY_20 movlw 26
    movwf H_COUNT
    movlw 10
    movwf L_COUNT
    decfsz L_COUNT,F
    goto $-1
    decfsz H_COUNT,F
    goto $-3

    RETURN

    END
    File allegati
Sto operando...
X