Projet de débutant :)

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateurs : Francois, EVOTk

Avatar du membre
Oliver17
Raspinaute
Messages : 193
Enregistré le : lun. 18 avr. 2016 09:59

Re: Projet de débutant :)

Message par Oliver17 » dim. 3 juil. 2016 16:39

Pour le coup de l'essuie glace, l'idée est de "ralentir" le mouvement avant d'arriver à la position finale. Cela permet de préserver les servos (en fait les engrenages internes), surtout qu'il y a une bonne charge dessus.
Sinon, le "poids" entraîne le servos un peu plus "loin", avant qu'il ne reprenne la "bonne" position.

Pour les tremblements au repos, deux possibilités (voir ci dessus dans le présent thread) :
1. la position demandée au servo n'est pas "possible" pour ce dernier (problème de précision). Ajouter ou retirer 1us à la position demandée.
2. le servo galère à cause du poids appliqué dessus. Tu peux essayer de lui couper l'alimentation. Il se peut que tout ce passe bien, mais aussi que le couple appliqué dessus soit trop fort pour les caractéristiques du servo (et il se "repli").
Oui ok pour l'essuie glace, mais directement sur la carte pi, sans la pca9685, ça fonctionnait bien, mais avec la pca impossible.
Puis avec la pca c'est le contraire, tu lui indique une position et au moment de ralentir il l'atteint une fois sur 10 et sans charge.

Pour les tremblements Spourre l'avait expliqué, c'est du au pi, car avec la pca en revanche y en a pas.
Sinon pour mes positions c'est 100 - 600 ni plus ni moins.

je galère sinon Vaguenerd, tu a commandé une PCA9685 ?
Et as tu vu la vidéo avec tout les servomoteurs piloter par un arduino ?


@ Yoshi : Ca dépend de ce que tu prends :)
Perso j'ai suivi les conseils de Vaguenerd, j'ai pris des HD-1501MG avec 17 kg de couple :)
http://fr.aliexpress.com/item/Regester- ... 113.5lsCAH


Merci

Avatar du membre
vague nerd
Modérateur
Messages : 1471
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Projet de débutant :)

Message par vague nerd » dim. 3 juil. 2016 18:01

je galère sinon Vaguenerd, tu a commandé une PCA9685 ?
Non, mais je l'ai en tête. Ce qui me retient, c'est que j’achèterais bien d'autres servos en même temps.
Et comme c'est juste pour faire mumuse, ça fait cher ceux que tu as pris...

Sinon, je comprends pas ce que tu veux dire pour les positions. C'est du 500/2500us normalement la position des servos (certains des miens ne fond que du 600/2400).
par exemple, la valeur (2, 300, 600) si j'ai bien compris, aurait du me donner une impulsion à partir de la position 300 pour arriver à 600 (on est d'accord)
Ben non, je pense pas. Faut bien lire la doc...

Cdt.

EDIT : Dans la doc, je lis :
Example
The following example will cause channel 15 to start low, go high around 25% into the pulse (tick 1024 out of 4096), transition back to low 75% into the pulse (tick 3072), and remain low for the last 25% of the pulse:

Code : Tout sélectionner

pwm.setPWM(15, 1024, 3072)
Cordialement,

Vague Nerd

Avatar du membre
Oliver17
Raspinaute
Messages : 193
Enregistré le : lun. 18 avr. 2016 09:59

Re: Projet de débutant :)

Message par Oliver17 » lun. 4 juil. 2016 19:19

Ben je me suis penché sur le datasheet comme vous me l'avez conseillé, mais non, les valeurs que je peux entrer sont 100 tout à fait à gauche et 600 tout à fait à droite, en dessous ça fait rien et au dessus pareil.


Bah y a moins cher chez alie ;)


Merci

Avatar du membre
Oliver17
Raspinaute
Messages : 193
Enregistré le : lun. 18 avr. 2016 09:59

Re: Projet de débutant :)

Message par Oliver17 » mer. 13 juil. 2016 14:23

Bonjour tout le monde :)
Donc voici ce que j'ai pu faire (sachant que je ne suis pas toujours sur la pi), on m'a filé la formule map() de chez arduino et j'ai pu le refaire en python (suis assez content), me reste plus qu'à gérer l'accélération et décélération.

PCA9685 - Python 3 / Gestion des servomoteurs en degrés.

Code : Tout sélectionner

from Adafruit_PWM_Servo_Driver import PWM
import time

pwm = PWM(0x40, debug = False)
pwm.setPWMFreq(50)

servomin = 100
servomax = 600
anglemin = 0
anglemax = 180
degres = 0

def degress():
  result = int((degres - anglemin) * (servomax - servomin) / (anglemaxi - anglemin) + servomin)
  return result

while True : 
  if degres < 180
    pwm.setPWM(0, 0, degress())
    degres += 1
    print (degress(), " : ", degres)

  elif degres == 180:
    degres = 0
    pwm.setPWM(0, 0, degress())
    print (degress(), " : ", degres)
    
    break
A suivre ...

Merci

Répondre

Retourner vers « Débutants »