Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Pilotaggio Servo Motore SG90

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Pilotaggio Servo Motore SG90

Messaggioda Foto Utentedaniele1996 » 9 set 2020, 3:01

Ciao a tutti, ho la necessità di pilotare un servo motore (per quindi gestire un movimento angolare) purtroppo provando quello che ho trovato in rete non funziona, perché?

Codice: Seleziona tutto

   TCCR1A |= (1 << WGM11);
   TCCR1B |= (1 << WGM12) | (1 << WGM13) | (1 << CS10); //| (1 << CS12);
   TIMSK1 |= (1 << OCIE1A);
   ICR1 = 19999;
.
.
.
while(1){
       if(TCNT1 >= 5000 && (PORTC & (1 << PC3))) PORTC &= ~(1 << PC3);
}

.
.
.

ISR(TIMER1_COMPA_vect){
   PORTC |= (1 << PC3);
}




Il micro è L'atmega324PA e da quello che vedo nel datasheet tutto sembra corretto, ma il servo esegue movimenti non corretti, Dove può essere il problema?
Avatar utente
Foto Utentedaniele1996
575 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1195
Iscritto il: 29 ago 2011, 11:29

0
voti

[2] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto UtenteWALTERmwp » 13 set 2020, 23:29

Non mi pare un'esposizione circostanziata, forse manca qualche informazione.
Ad esempio sapere come alimenti il servomotore, qual è il comportamento che riscontri e quale quello che invece ti aspetti, non sarebbe male.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,4k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6905
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[3] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto Utentedaniele1996 » 19 set 2020, 15:32

Per quanto riguarda l'alimentazione sto utilizzando un alimentatore ATX dove i +5Vsb (Max 2A) alimenta il micro e la linea +5V (Quella attivata ponticellando a massa il filo ON/OFF) la uso per tenere grossi carichi tipo il servomotore ed altro.
Dando una guardata al Datasheet secondo me potrebbe essere un problema nell'impostazione del timer, nel senso che il segnale PWM deve necessariamente avere una frequenza di 50Hz, ma il periodo di ON deve essere un multiplo di 1ms, questo risulta corretto? o bisogna fare qualche altra osservazione? Attualmente non ho provato ad implementare questa soluzione, ma lo farò nei prossimi giorni. Grazie per la partecipazione al mio topic.
Avatar utente
Foto Utentedaniele1996
575 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1195
Iscritto il: 29 ago 2011, 11:29

0
voti

[4] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto UtenteEcoTan » 19 set 2020, 19:23

daniele1996 ha scritto:il periodo di ON deve essere un multiplo di 1ms.

Deve andare da 1 a 2 msec, il resto del tempo serve per gli eventuali altri servo.
Avatar utente
Foto UtenteEcoTan
5.788 4 10 13
Expert EY
Expert EY
 
Messaggi: 3669
Iscritto il: 29 gen 2014, 8:54

0
voti

[5] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto UtenteWALTERmwp » 20 set 2020, 13:50

WALTERmwp ha scritto:(...) qual è il comportamento che riscontri e quale quello che invece ti aspetti (...)

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,4k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6905
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[6] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto Utentedaniele1996 » 24 set 2020, 2:03

WALTERmwp ha scritto:qual è il comportamento che riscontri e quale quello che invece ti aspetti

In pratica all'inviio del segnale fa un movimento secco verso destra o sinistra e all'invio successivo anche dello stesso segnale si sposta nuovamente avanti, oppure sembra quasi fermo in un punto di indecisione tra l'andare avanti o indietro al posto di posizionarsi al punto preciso dell'angolo... Secondo me il problema sta nell'impostazione del timer sia in frequenza che in duty cycle... voglio fare qualche prova per vedere se il problema sta lì... Grazie!
Avatar utente
Foto Utentedaniele1996
575 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1195
Iscritto il: 29 ago 2011, 11:29

0
voti

[7] Re: Pilotaggio Servo Motore SG90

Messaggioda Foto UtenteWALTERmwp » 24 set 2020, 10:06

Per mantenere una posizione il segnale(l'uscita attivata in duty-cycle) deve essere perpetuato, questo accade?
Verificalo sul pin con un oscilloscopio(nel farlo scollega il servo dal micro), se ne disponi.
Ti occorre la conferma ovvero il riscontro della ripetizione ininterrotta dell'alternanza on-off e dei relativi tempi.
Se qualcosa non ti torna il problema è ovviamente nel codice altrimenti è il servo che ha qualche problema o non è interfacciato correttamente.
Più probabile la prima.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,4k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6905
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti