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
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