servo comandati a distanza
Moderatore:
Paolino
0
voti
non preoccuparti per il programma, me lo aggiusto io
.. 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?
0
voti
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/
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/
0
voti
grazie vecchio
sei un grande
prossimamente modificherò il listato in base alle mie esigenze, dopodichè te lo allego per sottoporlo alla tua critica
ancora grazie mille di tutto...
sei un grande
prossimamente modificherò il listato in base alle mie esigenze, dopodichè te lo allego per sottoporlo alla tua critica
ancora grazie mille di tutto...

0
voti
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..
1
voti
ecco qui, come promesso, il programmino..
una volta compilato non mi da errori e mi dà build succeed, quindi errori di sintassi non ce ne sono
, però sicuramente ce ne saranno di altro genere..per questo lo sottopongo alla vostra perizia.. la funzione del progr è scritta sopra il codice..
spero riesca ad aiutarmi ancora.. grazie mille
, 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 BTFSS PORTB,3 ;TESTA PULSANTE COLLEGATO A RB3
GOTO SET3
BTFSS PORTB,4 ;TESTA PULSANTE COLLEGATO A RB4
GOTO SET1
BTFSS 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

0
voti
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.. 
qualcuno sa aiutarmi nella programmazione

0
voti
Intanto c'è un problema qui
- Codice: Seleziona tutto
BANKSEL TRISA ; CONFIGURA RA0 COME INGRESSO GLI ALTRI COME USCITE
MOVLW B'00000001'
MOVWF TRISB
"Computers, operating systems, networks are a hot mess. They're barely manageable, even if you know a decent amount about what you're doing. Nine out of ten software engineers agree: it's a miracle anything works at all."
@fasterthanlime
@fasterthanlime
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 8 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




