.: robotitaly.NET :. - la community italiana sulla robotica  

Vai indietro   .: robotitaly.NET :. - la community italiana sulla robotica > Robotica > Robotica Generale

Robotica Generale Questo Forum e' dedicato agli argomenti di Robotica Generale che comprende, quindi, sia la Meccanica che l'Elettronica.

Rispondi
 
Strumenti della discussione Modalità di visualizzazione
  #1  
Vecchio 12-07-2013, 05:22 PM
peppe89kl peppe89kl non è collegato
Nuovo Roboter
 
Registrato dal: Mar 2013
Messaggi: 8
predefinito Servomotore non risponde ai comandi.

Salve a tutti, ho programmato un microcontrollore per controllare un servomotore hitec hs422 deluxe, il quale, come da datasheet necessita un PWM a 50 Hz con duty cycle da 600 a 1500 us.
Per il controllo sto usando una scheda che monta STm32.
Ho osservato con l'oscilloscopio se mando i giusti comandi e sono certo dunque che non ho sbagliato nulla nel codice perchè visualizzo esattamente ciò che invio.
Il problema è che il servo non appena connesso si muove in senso antiorario di 90 gradi partendo dalla posizione dì iniziale qualunque sia il comando che io mando.
A questo punto essendo un neofita mi chiedo se sto sbagliando qualcosa secondo voi. Sul datasheet è indicata la tensione di alimentazione da 4.8 a 6 V, io per l'esattezza alimento a 5.5.
Il segnale di controllo è richiesto in un intervallo da 3 a 5 V e io invio direttamente l'uscita digitale dal microcontrollore che è a 3V.

Ecco i tentativi che ho fatto per risolvere il problema:
1)Alimentare a 6V ma ho è cambiata solamente la velocità con cui il servo si muove come mi aspettavo.
2) amplificare il segnale di controllo all'uscita del microcontrollore con un operazionale in configurazione non invertente e portare la tensione di uscita a 5V.
3) inviare ogni tipo di comando (Duty cycle 600 , 900 , 1500 , 2400 us) , ma il risultato è sempre lo stesso, ovvero indipendentemente dalla posizione iniziale che cambio a mano il servo ruota sempre in senso antiorario e si porta alla posizione estrema, ovvero -90°.

Qualcuno ha idea di quale possa essere il problema?
Grazie a tutti in anticipo.
Rispondi quotando
  #2  
Vecchio 12-08-2013, 10:20 AM
L'avatar di Emanuele Terrasi
Emanuele Terrasi Emanuele Terrasi non è collegato
Roboter Graduato
 
Registrato dal: Dec 2009
residenza: Palermo
Messaggi: 494
Blog Entries: 15
predefinito

Ho fatto una prova con un servo digitale GWS e mi risulta, come pensavo, che alimentando il servo senza mandare nulla sul filo del segnale, il servo non si muove e rimane nella posizione in cui era, qualunque fosse. Quindi se il tuo invece si muove allora c'è qualcosa nel servo. E' facile scambiare i fili, da me la massa negativa è il marrone.
Rispondi quotando
  #3  
Vecchio 12-08-2013, 10:41 AM
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Moderator
 
Registrato dal: Mar 2006
residenza: Roma
Messaggi: 2,133
Blog Entries: 1
predefinito

Quote:
Originariamente inviata da peppe89kl Visualizza il messaggio
Salve a tutti, ho programmato un microcontrollore per controllare un servomotore hitec hs422 deluxe, il quale, come da datasheet necessita un PWM a 50 Hz con duty cycle da 600 a 1500
Non è un PWM, è un PPM e il valore standard per quel servo è un impulso positivo compreso tra 900 e 2100 us ripetuto ogni ~20 ms, quest'ultimo valore non è critico e ha larghi margini di tolleranza.
Il segnale PPM deve essere costante nel tempo, oltre che preciso come periodo dell'impulso, se dai solo uno, pochi di più, impulsi è normale che il servo faccia cose "strane".
Rispondi quotando
  #4  
Vecchio 12-08-2013, 03:22 PM
peppe89kl peppe89kl non è collegato
Nuovo Roboter
 
Registrato dal: Mar 2013
Messaggi: 8
predefinito

Sul datasheet c è scritto che vuole impulsi da 600 a 2400 us, con 1500 posizione neutra.
Comunque è ovvio che invio un segnale continuo nel tempo... Lo mantengo quando voglio settare una posizione... Per esempio se voglio che giri di 90 gradi in senso orario mando un pwm con frequenza 50 Hz, cioè periodo 20 ms e duty cycle 2400us.
Rispondi quotando
  #5  
Vecchio 12-08-2013, 03:25 PM
peppe89kl peppe89kl non è collegato
Nuovo Roboter
 
Registrato dal: Mar 2013
Messaggi: 8
predefinito

Se non invio nessun segnale di controllo il servo non si muove. Quindi il fatto che si muova anche erratamente fa intendere che riceve il segnale che invio e che so per certo essere corretto perchè l ho visualizzato con un oscilloscopio ed è anche molto preciso
Rispondi quotando
  #6  
Vecchio 12-08-2013, 03:44 PM
peppe89kl peppe89kl non è collegato
Nuovo Roboter
 
Registrato dal: Mar 2013
Messaggi: 8
predefinito

Comunque non vuole um ppm. Ma un segnale pwm.
Ecco il datasheet:
http://www.dfrobot.com/wiki/index.ph...o_(SKU:SER0002)
Rispondi quotando
  #7  
Vecchio 12-08-2013, 04:29 PM
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Moderator
 
Registrato dal: Mar 2006
residenza: Roma
Messaggi: 2,133
Blog Entries: 1
predefinito

Quote:
Originariamente inviata da peppe89kl Visualizza il messaggio
Comunque non vuole um ppm. Ma un segnale pwm.
Quello non è un datasheet, è solo la descrizione fornita da un venditore, sul fatto che i servo usano il PPM e non il PWM non è in discussione, sopratutto se mi parli di duty cycle di tot us visto che quello è un parametro che si esprime sotto forma di percentuale, il periodo dell'impulso è proprio per il PPM.
Il PWM è un segnale dove l'informazione è veicolata dal rapporto tra il periodo in cui il segnale rimane a 0 e 1, non ha senso parlare della sola durata di uno due due cambi di stato.
Nel PPM l'informazione è veicolata esclusivamente dalla durata dell'impulso e/o dalla sua posizione, ovvero è indipendente dal suo periodo di ripetizione, quest'ultimo condiziona solo la velocità di aggiornamento dei dati e di conseguenza anche la reattività del sistema controllato.
Che poi un segnale PPM a singola informazione, può veicolarne più di una per ogni ciclo, può assomigliare ad un PWM è vero, ma sono comunque due cose diverse.
Rispondi quotando
  #8  
Vecchio 12-08-2013, 06:51 PM
L'avatar di Emanuele Terrasi
Emanuele Terrasi Emanuele Terrasi non è collegato
Roboter Graduato
 
Registrato dal: Dec 2009
residenza: Palermo
Messaggi: 494
Blog Entries: 15
predefinito

Quote:
Originariamente inviata da peppe89kl Visualizza il messaggio
riceve il segnale che invio e che so per certo essere corretto perchè l ho visualizzato con un oscilloscopio ed è anche molto preciso
Non è che stiamo scambiando i livelli 0 e 1 ? Questo spiegherebbe il comportamento.
Per quanto riguarda la nomenclatura, il segnale all'uscita di un trasmettitore pluricanale è indubbiamente PPM, ma poi il segnale che la ricevente manda ad un singolo servo non ci vedo niente di male a chiamarlo PWM visto che W sta per width cioè appunto larghezza dell'impulso.
Rispondi quotando
  #9  
Vecchio 12-08-2013, 08:04 PM
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Moderator
 
Registrato dal: Mar 2006
residenza: Roma
Messaggi: 2,133
Blog Entries: 1
predefinito

Quote:
Originariamente inviata da Emanuele Terrasi Visualizza il messaggio
ma poi il segnale che la ricevente manda ad un singolo servo non ci vedo niente di male a chiamarlo PWM visto che W sta per width cioè appunto larghezza dell'impulso.
No, rimane sempre un PPM perché l'informazione è veicolata dalla durata/posizione dell'impulso e non dal rapporto tra i due stati che è una caratteristica del PWM.
Non è una semplice questione di terminologia, sono proprio due segnali diversi con diverse caratteristiche.
Rispondi quotando
  #10  
Vecchio 12-08-2013, 11:04 PM
peppe89kl peppe89kl non è collegato
Nuovo Roboter
 
Registrato dal: Mar 2013
Messaggi: 8
predefinito

Per ruotare a sinistra di 90 mando un segnale a 50 hz che sta alto per 600us e basso per il resto del periodo.
Rispondi quotando
Rispondi

Segnalibri

Tag
arduino, microcontrollori, motore, servo, stm32

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilie sono attive
Il codice IMG è attivo
il codice HTML è disattivato

Salto del forum


Tutti gli orari sono GMT. Attualmente sono le 10:49 PM.


Powered by vBulletin versione 3.8.7
Copyright ©: 2000 - 2018, Jelsoft Enterprises Ltd.