Newsgroup: it.hobby.elettronica.digitale
Titolo: Controllo RC Servo con PIC

Ciao,
torno per l'ennesima volta sull'argomento.
Come dicevo nei post precedenti devo controllare un Servo Digitale tramite
un PIC.
Credo che a questo punto userò un 16F84 quarzato a 4 Mhz.
A questo punto ottengo un periodo di Clock di 0.25 usec
Per far muovere il servomotore di 1° (con i servi digitali la cosa è
ottenibile con ottima precisione) devo dare un impulso al motore dato dalla
divisione dell'intervallo di 1 msec di controllabilità del motore per 180
che è l'angolo di apertura del motore.
In pratica per ogni 1° di movimento l'impulso deve valere 1 msec più un
multiplo di 5.5usec che corrisponde a 22 cicli di clock.
Dopo la spiegazione (che potete distruggere in ogni modo :o) ) la mia
domanda è:
come invio l'impulso al motore???
E' sufficiente un semplice ciclo for o uso il WDT.... ho molti dubbi in
riguardo, soprattutto nella configurazione del prescaler....
C'è inoltre da tenere conto che ad un impulso su un piedino il controllore
riceverà un interruzione che gli farà cambiare la durata dell'impulso per il
movimento.....
Grazie a chiunque mi sarà di aiuto
Walt


Al posto del 16f84,io ti consiglio di utilizzare 16f627 o 16f628 che oltre
ad avere la possibilità di abilitare l'oscillatore interno (eviti il quarzo
4MHz), è provvisto di modulo pwm: sembra fatto apposta per controllare
servo.
Caio, Robby

"Robby" <roberto...@LEVAMI2ainfo.it> ha scritto nel messaggio
news:c0t2qi$mos$1...@fata.cs.interbusiness.it...

Come Compilatori C cosa esiste per il 16F627. Ho usato spesso il PICCLite,
ma non so se supporta anche questo Chip....
Stesso discorso per il programmatore.... avevo pensato di farmi uno YAPP, ma
non saprei....
Ciao e grazie
Walt


Come linguaggio C, utilizzo PICC (non so se la versione lite supporta
direttamente questa famiglia)
Anche se il 99% delle volte per gestire al meglio le risorse ed i tempi,
preferisco utilizzare l'asm di mplab: ci metti un attimo di + in tempo, ma
hai tutto sotto controllo al 100%. I vari compilatori che ho avuto modo di
usare, hanno TUTTI dei piccoli problemi che sono via via risolti nelle
release successive, anche se ne spuntano sempre di nuovi :-((
Se vuoi sono errori che saltano fuori solo in particolari sequenze o
coincidenze di istruzioni, ma se ti trovi a scrivere il tuo codice e non
funziona per un errore del compilatore, di sicuro ci perdi un bel pò di
tempo.
Non conosco lo yapp, ma ho visto che il programma ic-prog li supporta,
quindi vai su 
http://www.ic-prog.com/index1.htm
 e scegli il programmatore
che + ti soddisfa.
Io utilizzo un programmatore professionale, che dopo la programmazione
effettua anche test a varie tensioni di alimentazione.
Ciao, Robby
Ciao, Robby


Credo che lo faccia anche lo YAPP, mi sembra di averlo letto tra le sue
caratteristiche....
Grazie ancora
Walt

 multiplo di 5.5usec che corrisponde a 22 cicli di clock.
Sì, ma fai attenzione: un "ciclo macchina" richiede quattro cicli di 
clock. Ciò significa che con un quarzo a 4MHz in 5.5usec puoi eseguire 
al massimo 5 istruzioni (e bada che alcune istruzioni richiedono 2 cicli 
macchina)!
Poi non mi è ben chiaro il discorso (chiedo scusa, ho appena iniziato a 
leggere questo newsgroup) dell'azionamento: da quello che leggo devi 
dare 1ms + 5.5usec * apertura, arrivando ad un massimo (180°) di 2ms, 
con risoluzione 5.5usec, giusto?
Una soluzione (che non ti dà la precisione assoluta, ma si avvicina) 
potrebbe essere utilizzare il modulo CCP ed il timer a 16 bit del 
PIC16F627. In questo modo otterresti una risoluzione di 1.0usec su di un 
range che va da 0 a 65535 usec, il tutto gestito dall'hardware. Pertanto 
avresti un errore MASSIMO di 0.5usec su tutta la scala. Se vuoi 
spiegazioni sul CCP basta che chieda!
Col PIC16F84 ti complichi la vita: se usi il 627 riesci a fare il tutto, 
in C o in assembly, praticamente al volo! Roba da un'ora di lavoro...
Ciao!
-- 
Talon
nospam...@email.it

 in C o in assembly, praticamente al volo! Roba da un'ora di lavoro...
Ho parlato di 16F84 perché è l'unico che ho usato finora e in effetti il
solo pensioro di usare WatchDog e Prescaler mi distruggeva psicologicamente
Le nuove soluzioni di cui mi avete parlato sono ben accette, per mia fortuna
ho la mentalità molto aperta e tutto il nuovo mi piace assimilarlo al volo
:o)
Come compilatore C ho pensato di usare PICCLite (l'ho scaricato giusto oggi
nella nuova versione) e lo YAPP3 come programmatore (questo lo ordino a
giorni), hai qualcosa di meglio da consigliarmi?
Grazie per l'aiuto
W@lt

 mia tesi di laurea :o)))
Perchè non pensare, allora, ad un movimento pilotato da un motore 
passo-passo accoppiato a demoltipliche? Otterresti precisioni 
infinitesimali.
-- 
'Profanity: the universal programming language'
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000

 mia tesi di laurea :o)))
0.5ľs non bastano? Sgurgle... Sei sicuro che la meccanica del servo
sia cosě accurata?
A presto,
Eugenio.


Perché purtroppo a suo tempo ho considerato ottima la soluzione del servo e
ora devo lavorare con quest'aggeggino che costa sui 200eurigli :o)
Bye
W@lt

 ha scritto nel messaggio
news:a1d23af9.04021...@posting.google.com...

Il modello che utilizzo č di livello industriale (non č per modellismo) e la
meccanica č di altissima precisione.... cmq proverň con 1 usec..... magari
l'errore non č poi cosě esagerato :o)
Bye
W@lt

 giorni), hai qualcosa di meglio da consigliarmi?
Io uso per lavoro il compilatore PIC18 (stessa software house del 
PICCLite) e mi ci trovo benissimo. Inoltre ho letto varie opinioni per 
cui pare che sia l'unico assolutamente sicuro per applicazioni "mission 
critical" :)
Ciao,
Alberto
-- 
Talon
nospam...@email.it