Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

servo comandati a distanza

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[71] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 16 feb 2011, 1:16

non preoccuparti per il programma, me lo aggiusto io :D .. ho fatto gli adattatori per la telecamera e mi sono accorto che il motore non fa fatica a muoverla, anzi, ma in posizione parallela al suolo, a motore spento, per effetto gravità cade giù...perciò o ci metto una molla per tenerla in equilibrio in modo da contrastare la gravità ma non la coppia motore, oppure aggiungo un fermo e mi limito ad usarla in 2 posizioni...dipende dal tempo che ho...Ascolta, sapresti indicarmi un buon tutorial per rinfrescare la programmazione in assembly?
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

0
voti

[72] Re: servo comandati a distanza

Messaggioda Foto Utentedavidde » 16 feb 2011, 9:45

Ok, come preferisci ;-) .
Di tutorial ben fatti in italiano conosco questi, ma ce ne sono tanti altri :

http://stor.altervista.org/PIC/PIC.htm
http://www.areasx.com/index.php?D=1&page=articoli.php&id=207

Questo invece è per il C :

http://www.settorezero.com/wordpress/co ... ammazione/
Avatar utente
Foto Utentedavidde
12,8k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3885
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[73] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 16 feb 2011, 20:52

grazie vecchio :ok:
sei un grande :D
prossimamente modificherò il listato in base alle mie esigenze, dopodichè te lo allego per sottoporlo alla tua critica :D
ancora grazie mille di tutto... O_/
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

0
voti

[74] Re: servo comandati a distanza

Messaggioda Foto Utentedavidde » 16 feb 2011, 22:46

Prego e alla prossima :-) !

P.S.
... aspetto il programma ;-) ...
Avatar utente
Foto Utentedavidde
12,8k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3885
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[75] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 19 feb 2011, 2:28

secondo te... dato che la telecamera "cade" sotto l'effetto della gravità, è meglio compensare questo effetto con un sistema meccanico (molla antagonista) o via software ( l'angolazione voluta rimane quella fino a che non ripremo il tasto)? con la seconda possibilità però avrei il servo sermpe attivo perciò è un o spreco di energia..
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

0
voti

[76] Re: servo comandati a distanza

Messaggioda Foto Utentedavidde » 19 feb 2011, 11:17

Credo che una molla sia più adatta, il servocomando non è fatto per uso continuo, rischi di bruciarlo in breve tempo.
Avatar utente
Foto Utentedavidde
12,8k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3885
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[77] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 19 feb 2011, 19:19

era quello che volevo sentirmi dire... :ok:
grazie...
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

1
voti

[78] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 27 feb 2011, 3:05

ecco qui, come promesso, il programmino.. :D una volta compilato non mi da errori e mi dà build succeed, quindi errori di sintassi non ce ne sono :ok: , però sicuramente ce ne saranno di altro genere..per questo lo sottopongo alla vostra perizia.. la funzione del progr è scritta sopra il codice..
Codice: Seleziona tutto
; FUNZIONE: 3 pulsanti comandano 3 posizioni definite di un servocomando
;           E CONVERTE UNA TENSIONE ANALOGICA 0-5V IN DATO DIGITALE A 8 BIT SU PORTC,
;           ALLINEAMENTO A SINISTRA, CONVERTE IN CONTINUAZIONE.
;         ZAMBON GIOSUE 27/02/2011

#include P16F876.INC                         
__CONFIG    3FF2H


COUNT_1        EQU 20H                        ; REGISTRO Ton DEL PWM
COUNT_2        EQU 21H                        ; REGISTRO Toff DEL PWM
COUNT_3        EQU 22H                        ; REGISTRO DI RITARDO
COUNT_TIME     EQU 23H                        ; REGISTRO DURATA SEGNALE
ADCON0      EQU 1FH
ADCON1      EQU 9FH
ADRESH      EQU 1EH
C1         EQU 2DH                        ;INDIRIZZO REGISTRO PRIMO CONTATORE

BANKSEL     TRISA                            ; CONFIGURA RA0 COME INGRESSO GLI ALTRI COME USCITE
               MOVLW      B'00000001'
               MOVWF      TRISB

BANKSEL     PORTA                            ; CONFIGURA LE USCITE DELLA PORTA A LIVELLO LOGICO BASSO
               MOVLW       B'00000000'
               MOVWF       PORTA   

BANKSEL     TRISB                            ; CONFIGURA RB3,RB4,RB5 COME INGRESSI GLI ALTRI COME USCITE
               MOVLW      B'00111000'
               MOVWF      TRISB     
     
BANKSEL     PORTB                            ; CONFIGURA LE USCITE DELLA PORTB A LIVELLO LOGICO BASSO
               MOVLW       B'00000000'
               MOVWF       PORTB             
     
BANKSEL     OPTION_REG                       ; RESISTENZE DI PULL-UP INTERNE SU RB3,RB4 E RB5
               BCF         OPTION_REG,7


BANKSEL     TRISC                            ; CONFIGURA TRISC COME TUTTE USCITE
               MOVLW       B'00000000'
               MOVWF       TRISC
     
BANKSEL     PORTC                            ; CONFIGURA LE USCITE DELLA PORTC A LIVELLO LOGICO BASSO
               MOVLW       B'00000000'
               MOVWF       PORTC

ORG      40H

            MOVLW D'30'                   ; PRECARICA IL CONTATORE COUNT_TIME
             MOVWF COUNT_TIME             

START_ADC
            BCF   03H,07H
            BSF 03H,05H
            MOVLW 0EH
            MOVWF ADCON1
            BCF   03H,07H
            BCF   03H,05H
            MOVLW 81H               ;IN W CODICE FOSC/32, CANALE, A\D ON
            MOVWF ADCON0            ;SPOSTA IL CODICE IN ADCON0 BANCO 0
            CALL DELAY               ;CHAMA LA ROUTINE DI RITARDO

NUOVA         BSF ADCON0,2            ;PONE AD UNO BIT 2 DI ADCON0 E AVVIA CONV.
LOOP         BTFSC ADCON0,2            ;TEST BIT2 DI ADCON, SE 0 SALTA ISTRUZIONE SUCCESSIVA
            GOTO LOOP               ;SE BIT2 è 1 ESEGUI NUOVO CONTROLLO
            MOVF ADRESH,0            ;CARCA IN W PARTE DEL RISULTATO
            MOVWF 07               ;USCITA SU PORTC.VISUALIZZA DATO CONVERTITO

START_PWM      ucr    PORTB,3              ;TESTA PULSANTE COLLEGATO A RB3
               GOTO     SET3
            ucr    PORTB,4              ;TESTA PULSANTE COLLEGATO A RB4
               GOTO     SET1 
               ucr    PORTB,5              ;TESTA PULSANTE COLLEGATO A RB5
               GOTO     SET2           
            GOTO NUOVA               ;ESEGUI NUOVAMENTE CONTROLLI


SET1           MOVLW D'8'                     ; PRECARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1
               MOVLW D'247'                   ; PRECARICA IL CONTATORE COUNT_2
               MOVWF COUNT_2   
               MOVLW D'51'                    ; PRECARICA IL CONTATORE COUNT_3
               MOVWF COUNT_3               
               GOTO POSIZIONE1       

; POSIZIONE1: genera il segnale PWM con frequenza di 50Hz e Ton =0,6ms   
;             si attiva alla pressione del pulsante collegato a RB4.
;             Per variare la posizione assunta dal servocomando quando si preme RB4
;             variare i valori di ricarica dei contatori COUNT_1 e COUNT_2 facendo
;             attenzione che la loro somma deve sempre risultare 255.
;             Il COUNT_TIME serve per generare il segnale di pilotaggio del servocomando
;             per il tempo necessario all' albero per compiere la rotazione voluta.

POSIZIONE1     BSF PORTA,5                    ; SETTA A LIVELLO LOCICO ALTO RA5
               CALL DELAY_ON                  ; CHIAMA LA ROUTINE DI RITARDO DEL Ton DEL PWM 
               MOVLW D'8'                     ; RICARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1

               BCF PORTA,5                    ; SETTA A LIVELLO LOGICO BASSO RA5
               CALL DELAY_OFF                 ; CHIAMA LA ROUTINE DI RITARDO DEL Toff DEL PWM
               MOVLW D'247'                   ; RICARICA IL CONTATORE COUNT_2
               MOVWF COUNT_2

               DECFSZ COUNT_TIME              ; DECREMENTA IL COUNT_TIME
               GOTO POSIZIONE1               
               MOVLW D'30'                    ; RICARICA IL COUNT_TIME 
               MOVWF COUNT_TIME                           
               GOTO NUOVA


SET2           MOVLW D'28'                    ; PRECARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1
               MOVLW D'227'                   ; PRECARICA IL CONTATORE COUNT_2
               MOVWF COUNT_2   
               MOVLW D'51'                    ; PRECARICA IL CONTATORE COUNT_3
               MOVWF COUNT_3                 
               GOTO POSIZIONE2

; POSIZIONE2: genera il segnale PWM con frequenza di 50Hz e Ton =2.4ms
;             si attiva alla pressione del pulsante collegato a RB5.
;             Per variare la posizione assunta dal servocomando quando si preme RB5
;             variare i valori di ricarica dei contatori COUNT_1 e COUNT_2 facendo
;             attenzione che la loro somma deve sempre risultare 255.
;             Il COUNT_TIME serve per generare il segnale di pilotaggio del servocomando
;             per il tempo necessario all' albero per compiere la rotazione voluta.

POSIZIONE2     BSF PORTA,5                    ; SETTA A LIVELLO LOCICO ALTO RA5
               CALL DELAY_ON                  ; CHIAMA LA ROUTINE DI RITARDO DEL Ton DEL PWM
               MOVLW D'28'                    ; RICARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1

               BCF PORTA,5                    ; SETTA A LIVELLO LOGICO BASSO RA5
               CALL DELAY_OFF                 ; CHIAMA LA ROUTINE DI RITARDO DEL Toff DEL PWM
               MOVLW D'227'                   ; RICARICA IL CONTATORE COUNT_2               
               MOVWF COUNT_2
             
               DECFSZ COUNT_TIME              ; DECREMENTA IL COUNT_TIME
               GOTO POSIZIONE2
               MOVLW D'30'                    ; RICARICA IL COUNT_TIME
               MOVWF COUNT_TIME   
               GOTO NUOVA

SET3           MOVLW D'18'                    ; PRECARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1
               MOVLW D'237'                   ; PRECARICA IL CONTATORE COUNT_2
               MOVWF COUNT_2   
               MOVLW D'51'                    ; PRECARICA IL CONTATORE COUNT_3
               MOVWF COUNT_3                 
               GOTO POSIZIONE2


; POSIZIONE3: genera il segnale PWM con frequenza di 50Hz e Ton =1,6ms)
;             si attiva alla pressione del pulsante collegato a RB5.
;             Per variare la posizione assunta dal servocomando quando si preme RB5
;             variare i valori di ricarica dei contatori COUNT_1 e COUNT_2 facendo
;             attenzione che la loro somma deve sempre risultare 255.
;             Il COUNT_TIME serve per generare il segnale di pilotaggio del servocomando
;             per il tempo necessario all' albero per compiere la rotazione voluta.


POSIZIONE3     BSF PORTA,5                    ; SETTA A LIVELLO LOCICO ALTO RA5
               CALL DELAY_ON                  ; CHIAMA LA ROUTINE DI RITARDO DEL Ton DEL PWM
               MOVLW D'18'                    ; RICARICA IL CONTATORE COUNT_1
               MOVWF COUNT_1

               BCF PORTA,5                    ; SETTA A LIVELLO LOGICO BASSO RA5
               CALL DELAY_OFF                 ; CHIAMA LA ROUTINE DI RITARDO DEL Toff DEL PWM
               MOVLW D'237'                   ; RICARICA IL CONTATORE COUNT_2               
               MOVWF COUNT_2
             
               DECFSZ COUNT_TIME              ; DECREMENTA IL COUNT_TIME
               GOTO POSIZIONE2
               MOVLW D'30'                    ; RICARICA IL COUNT_TIME
               MOVWF COUNT_TIME   
               GOTO NUOVA

DELAY         MOVLW 0FH
            MOVWF C1
LOOP1         DECFSZ C1,1                  ;DECR.REG.E SALTA ISTRUZ. SUCCESSIVA SE è 0
            GOTO LOOP1            
            RETURN

DELAY_ON       DECFSZ COUNT_3
               GOTO DELAY_ON
               MOVLW D'51'                    ; RICARICA IL CONTATORE COUNT_3
               MOVWF COUNT_3                 
               DECFSZ COUNT_1                 ; DECREMENTA IL COUNT_1
               GOTO DELAY_ON               
               RETURN

DELAY_OFF      DECFSZ COUNT_3
               GOTO DELAY_OFF
               MOVLW D'51'                    ; PRECARICA IL CONTATORE COUNT_3
               MOVWF COUNT_3
               DECFSZ COUNT_2                 ; DECREMENTA IL COUNT_2     
               GOTO DELAY_OFF
            RETURN
END
            

spero riesca ad aiutarmi ancora.. grazie mille O_/
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

0
voti

[79] Re: servo comandati a distanza

Messaggioda Foto Utentegiozambi » 27 feb 2011, 20:10

buona... ho fatto il circuito, da segni di vita ma non funziona.. :( credo che il problema sia nel programma..
qualcuno sa aiutarmi nella programmazione :?: , purtroppo sono ancora alle prime armi e necessito di consigli e delucidazioni su come affrontare la stesura di un programma, perciò se qualcuno riesce a spiegarmi gli errori gliene sarei grato.. iOi
Avatar utente
Foto Utentegiozambi
310 3 9
Frequentatore
Frequentatore
 
Messaggi: 231
Iscritto il: 2 feb 2011, 10:42
Località: Rovigo

0
voti

[80] Re: servo comandati a distanza

Messaggioda Foto UtenteDonJ » 1 mar 2011, 20:12

Intanto c'è un problema qui

Codice: Seleziona tutto
BANKSEL     TRISA                            ; CONFIGURA RA0 COME INGRESSO GLI ALTRI COME USCITE
               MOVLW      B'00000001'
               MOVWF      TRISB
And now for something completely different.
[Monty Python]
Avatar utente
Foto UtenteDonJ
3.951 6 9 13
Master EY
Master EY
 
Messaggi: 2461
Iscritto il: 19 lug 2009, 22:13
Località: Croccamauria (Dublino)

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti