IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Gpiozero, controle d'un Servo DS3218


Sujet :

Raspberry Pi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut Gpiozero, controle d'un Servo DS3218
    Bonjour

    J'ai un Raspberry Pi 3 et je souhaite connecter un servomoteur DS3218mg via le GPIO.

    J'ai donc :
    - alimenté le servo avec 4 piles AA
    - relié le servo au pin GPIO17 avec une résistance de 1Kohms
    - relié les GND ensemble


    J'utilise pour cela l'interface GPIOZERO, et j'ai donc suivi les exemples disponibles sur le site GPIOZERO Servo.

    Cependant je n'arrive pas à commander le servo-moteur.
    Pourriez vous m'aider ?

    Voici, un de mes scripts de test, issue de GPIOZERO

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    from gpiozero import Servo
    from time import sleep
     
    servo = Servo(17)
    while True:
       servo.min()
       sleep(1)
       servo.mid()
       sleep(1)
       servo.max()
       sleep(1)

    Je n'ai pas d'erreur particulière en lançant le script.
    A mon avis, il s'agit des paramètres par défaut de la classe Servo, qui ne sont pas adapté au DS3218. Cependant, je n'arrive pas à trouver les bons paramétrages.

    Merci de votre futur aide.

    Cordialement

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 205
    Billets dans le blog
    48
    Par défaut
    Bonjour,

    - relié le servo au pin GPIO17
    Afin de lever un doute... la GPIO17 est la 11ème broche du port, tu as bien câblé comme il faut de ce côté-là ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Oui j'ai bien câblé sur le GPIO17, la broche numéro 11.

    J'ai testé avec un petit servo, celui fourni par le kit Adeept Ultrasonic Distance Sensor, et j'avais bien la rotation de celui ci.
    Mais pour le même code, le servo DS3218, ne fait rien du tout.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 205
    Billets dans le blog
    48
    Par défaut
    Je ne trouve pas de doc précise de ce servo, sinon qu'il est présenté comme un servo de modélisme "standard".

    Est-ce que tu arrives à faire tourner le servo hors-alimentation à la main (en faisant levier) ?
    Essaie avec d'autres valeurs de résistance (voire sans resistance)

    As-tu un oscillo pour voir les signaux de commande ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Oui, j'arrive a le faire tourner à la main, sans problème.

    Ce soir j'essayerais sans résistance et je vous ferais un retour.

    Et non, je n'ai pas oscilloscope à ma disposition. J'ai juste un voltmètre comme outil de mesure.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour

    Je n'ai pas tilté hier, mais c'est peut-être un simple problème de tension.
    Un servo c'est prévu pour travailler avec un signal de 5V, même si la plupart doivent être tolérant au 3.3V.
    Si: - Le programme fonctionne avec un autre servo et si: - le servo fonctionne sur une autre commande en 5V. Il est fort possible que cela soit ce simple problème.

    Plein de solution simple dans ce cas, faut juste faire les mesures, être capable de les dimensionier et déterminer les quels sont réalisables en considérant tous les paramètres:
    - Deux transistors pour faire un adaptateur de niveau (un pour le changement de niveau et le second pour ré-inverser le signal).
    - Diodes (oui au pluriel) et pull-up pour faire un décalage de signal.
    - Masse non commune apportant ce même décalage de tension.
    - etc...

    Edit: A oui tu n'as pas ce qu'il faut pour les mesures...
    Pour le décalage en tension: Brancher la masse du PI non pas sur le 0V du servo, mais sur la première pile (donc à 1.5V) cela donnera un signal (pour le servo) qui va de 1.5V à 4.8V ce qui devrait déjà mieux passer.
    Mais attention à ce que le 0 des batteries soit bien flottant et relié à rien d'autre, sinon boom pour le Pi!

    Delias

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Par défaut
    Bonjour

    J'ai réussi a faire marcher en partie mon code.
    Pour cela, j'ai du changer de librairie, maintenant c'est RPi.GPIO et de pin, maintenant je suis branché sur le GPIO18.

    Le code qui marche permet de faire des aller retour .
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import RPi.GPIO as GPIO
    import time
     
    def setAngle(angle):
        duty = float(angle) / 10 + 2.5
        p.ChangeDutyCycle(duty)
        time.sleep(0.015)
     
    servoPin = 18
     
    GPIO.setwarnings(False)
     
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(servoPin, GPIO.OUT)
     
    p = GPIO.PWM(servoPin, 100)
    p.start(5)
     
    #Code qui marche
    for angle in range (0, 270):
        setAngle(angle)
     
    for angle in range (270, 0, -1):
        setAngle(angle)

    Le seul soucis, c'est que je veux pouvoir donner un angle et y aller directement.
    Si je fais uniquement setAngle(90), rien ne ce passe

    Cordialement.

Discussions similaires

  1. [Électronique] Avis, retour d'experience pour controle de moteurs pas à pas, servos-moteur
    Par Invité dans le forum Embarqué
    Réponses: 7
    Dernier message: 05/06/2015, 19h20
  2. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  3. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  4. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  5. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo