Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema pilotaggio servomotori

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 30 apr 2012, 11:48

Ciao a tutti!!io ho un servo della HITEC...l' HS311 e vorrei farlo girare ma quando cerco di farlo girare emette solo un suonino e si muove di pochissimo!!!

Codice: Seleziona tutto
void Apri_Porta()
{   
        Servo1 = 1;
        DelayUs(900);
        Servo1 = 0;
        DelayUs(19100);
return;
}




il comando di apertura deve partire quando arriva il carattere 'a' su seriale ( QUESTO PEZZO FUNZIONA) al che metto a 1 una variabile e nel main poi dovrà aprire
Codice: Seleziona tutto

void main ( void )
{
      for ( ;; )
      {
              if ( Apri == 1 ) Apri_Porta();
      }
return;
}




la variabile Apri diventa a uno quando:
....
case 'a':
Apri = 1;
break;
....




Per favore aiutatemi che devo finirlo per fine anno scolastico!!
Ultima modifica di Foto Utentelillo il 30 apr 2012, 11:55, modificato 1 volta in totale.
Motivazione: Modificato titolo. Scrivere in maiuscolo in un forum equivale a urlare.
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[2] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentesimo85 » 30 apr 2012, 15:47

Se metti a 1 la variabile Apri, cosa succede?
Codice: Seleziona tutto
        Servo1 = 1;
        DelayUs(900);
        Servo1 = 0;
        DelayUs(19100);

Non è troppo poco?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[3] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 30 apr 2012, 20:37

La variabile Apri è globale quindi vista da tutto!!!quando nell'interrupt generato dalla seriale riecevo la 'a' la variabile va a uno e nel main poi dovra andare a svolgere la funzione Apri_porta()
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[4] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentesimo85 » 30 apr 2012, 21:32

Questo lo avevo capito già da solo. Sbaglio o non hai capito cosa ho cercato di farti notare?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[5] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 30 apr 2012, 21:40

Può essere!!! :D :D :D accetto tutte le critiche possibili!
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[6] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentesimo85 » 30 apr 2012, 23:31

Quello che volevo dire io è che un ritardo 900µs mi sembra un po' poco per vedere il motorino girare..
Se ad esempio invii una sequenza di caratteri del tipo "qwertyuioasdfghjklñzxcvbnm'..
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[7] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 1 mag 2012, 4:12

Quindi?devo aumentare il tempo..a quanto?
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[8] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 1 mag 2012, 10:14

sul fatto della sequenza di cartteri tu dici che il PIC perde tempo quando si genera l'interrupt e non riesce a gestire il servo?
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[9] Re: Problema pilotaggio servomotori

Messaggioda Foto UtenteLelettrico » 1 mag 2012, 11:23

Calma ... quante volte mandi l'impulso al servo :?:
Deve essere una sequenza continua ininterrotta il cui duty determina la posizione, questo vale per HS311 ... altri servo hanno o possono avere altri comandi.
Quindi anche quando Apri NON e' uguale a 1 e non sono intervenuti comandi di "Chiudi" l'impulso deve restare tale e quale ...
Due variabili di stato una apre ed una chiude, loop di mandata degli impulsi perennemente in funzione magari gestito da interrupt, non il viceversa come mi sembra di capire.
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

0
voti

[10] Re: Problema pilotaggio servomotori

Messaggioda Foto Utentealle588 » 1 mag 2012, 11:32

io mando il carattere 'a' al che la variabile Apri va 1 e poi nel main se Apri = 1 continua ad eseguire Apri_Porta(); cosi che continui a generare impulsi
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti