Guide de connexion Pi Servo Hat
Introduction
Le SparkFun Pi Servo Hat permet à votre Raspberry Pi de contrôler jusqu'à 16 servomoteurs via une connexion I2C. Cela économise le GPIO et vous permet d'utiliser le GPIO intégré à d'autres fins. De plus, le Pi Servo Shield ajoute une connexion de terminal série qui vous permettra de faire apparaître un Raspberry Pi sans avoir à le connecter à un moniteur et à un clavier.
Matériel requis
Voici ce que vous devez suivre avec ce tutoriel. Nous vous suggérons d'acheter une carte microSD vierge plutôt qu'une carte compatible NOOBS, car les cartes compatibles NOOBS peuvent ne pas avoir un système d'exploitation suffisamment nouveau pour prendre en charge le Pi Zero W.
- En-têtes séparés – Droit
- Alimentation pour adaptateur mural – 5,1 V CC 2,5 A (USB Micro-B)
- Carte microSD avec adaptateur – 16 Go (Classe 10)
- En-tête Grand Raspberry Pi GPIO - 2 × 20
- Raspberry Pi Zero W
- CHAPEAU Servo SparkFun Pi
De plus, vous aurez besoin d'une sorte de servomoteur pour tester la configuration. Essayez d'abord de tester les exemples fournis plus loin dans le didacticiel avec le servomoteur sub-micro générique.
- Servo - Générique (taille sous-micro)
Outils requis
Aucun outil spécial n'est requis pour suivre cet assemblage de produit. Vous aurez besoin d'un fer à souder, de soudures et d'accessoires de soudure généraux.
- Soudure sans plomb - Tube de 15 grammes
- Fer à souder - 30W (US, 110V)
Présentation du matériel
Il n'y a que quelques éléments intéressants sur le tableau, car il s'agit d'un chapeau conçu pour être le moins difficile à utiliser.
Connecteur USB Micro B – Ce connecteur peut être utilisé pour alimenter uniquement les servomoteurs, ou pour alimenter les servomoteurs ainsi que le Pi qui est connecté au chapeau. Il peut également être utilisé pour se connecter au Pi via une connexion par port série pour éviter d'avoir à utiliser un moniteur et un clavier pour configurer le Pi.
Cavalier d'isolement de l'alimentation – Ce cavalier peut être effacé (il est fermé par défaut) pour isoler le rail d'alimentation servo du rail d'alimentation Pi 5V. Pourquoi voudriez-vous faire ça ? S'il y a plusieurs servos, ou de gros servos avec une forte charge sur eux, le bruit créé sur le rail d'alimentation par les servomoteurs peut provoquer un fonctionnement indésirable dans le Pi, jusqu'à une réinitialisation ou un arrêt complet. Notez que tant que le Pi est alimenté, l'interface série fonctionnera toujours quel que soit l'état de ce cavalier.
En-têtes des broches du servomoteur – Ces embases sont espacées pour faciliter la fixation des servomoteurs dessus. Ils sont épinglés dans le bon ordre pour la plupart des connecteurs de servomoteurs de type hobby.
Assemblage du matériel
Nous vous suggérons de souder les connecteurs mâles sur le Pi Zero W.
Mon astuce préférée pour ce type de situation consiste à souder une broche, puis à faire fondre la soudure sur cette broche avec le fer tenu dans ma main droite et à utiliser ma main gauche pour ajuster l'en-tête jusqu'à ce qu'il soit à plat, comme indiqué ci-dessous. Assurez-vous que vous soudez avec le côté le plus court de l'en-tête et que les broches les plus longues sont du côté du composant. Après avoir cloué une broche, finissez de souder toutes les broches au Pi Zero W.
Répétez les étapes avec l'en-tête femelle et le Pi Servo Hat.
Assurez-vous d'insérer les broches courtes du bas de la carte et d'ajouter de la soudure du côté des composants de sorte que le Pi Servo Hat s'empile sur les broches d'en-tête mâles du Pi Zero W. Vous devrez également vous assurer que l'embase est à niveau avant de souder toutes les broches.
Une fois les embases soudées, empilez le Pi Servo Hat sur le Pi Zero W. Connectez ensuite un servo hobby à un canal « 0 » en fonction du servo que vous utilisez. Essayez de consulter la fiche technique du servomoteur de loisir ou de vous référer à certains des brochages de connecteur de servomoteur standard répertoriés dans ce didacticiel. En utilisant un adaptateur mural 5V suffisant, nous pouvons alimenter le Pi Zero W. Branchez l'adaptateur mural dans une prise murale pour l'alimentation et connectez le connecteur micro-B étiqueté comme le port « PWR IN » sur le Pi Zero W.
Logiciel – Python
Nous verrons en détail ici comment accéder et utiliser le chapeau de servo pi en Python.
Un exemple de code complet est disponible dans le dépôt GitHub du produit.
Configurer l'accès aux ressources SMBus
Premier point :dans la plupart des interactions au niveau du système d'exploitation, le I
2
Le bus C est appelé SMBus. Nous obtenons ainsi nos premières lignes de code. Cela importe le module smbus, crée un objet de type SMBus et l'attache au bus « 1 » des différents SMBuses du Pi.
import smbus
bus =smbus.SMBus(1)
Nous devons indiquer au programme l'adresse de la pièce. Par défaut, il s'agit de 0x40, alors définissez une variable sur celle-ci pour une utilisation ultérieure.
addr =0x40
Ensuite, nous voulons activer la puce PWM et lui dire d'incrémenter automatiquement les adresses après une écriture (cela nous permet d'effectuer des écritures multi-octets en une seule opération).
bus.write_byte_data(addr, 0, 0x20)bus.write_byte_data(addr, 0xfe, 0x1e)
Écrire des valeurs dans les registres PWM
C'est toute la configuration qui doit être faite. À partir de maintenant, nous pouvons écrire des données sur la puce PWM et nous attendre à ce qu'elle réponde. Voici un exemple.
bus.write_word_data(addr, 0x06, 0)bus.write_word_data(addr, 0x08, 1250)
La première écriture se fait dans le registre "start time" du canal 0. Par défaut, la fréquence PWM de la puce est de 200 Hz, soit une impulsion toutes les 5 ms. Le registre de temps de démarrage détermine quand l'impulsion passe au niveau haut dans le cycle de 5 ms. Tous les canaux sont synchronisés sur ce cycle. Généralement, cela doit être écrit à 0. La deuxième écriture est dans le registre « temps d'arrêt », et il contrôle le moment où l'impulsion doit descendre. La plage pour cette valeur est de 0 à 4095, et chaque compte représente une tranche de cette période de 5 ms (5 ms/4095), soit environ 1,2 us. Ainsi, la valeur de 1250 écrite ci-dessus représente environ 1,5 ms de temps élevé par période de 5 ms.
Les servomoteurs obtiennent leur signal de commande à partir de cette largeur d'impulsion. De manière générale, une largeur d'impulsion de 1,5 ms donne une position "neutre", à mi-chemin entre les extrêmes de la plage du moteur. 1,0 ms donne environ 90 degrés d'excentrage et 2,0 ms donne -90 degrés d'excentrage. En pratique, ces valeurs peuvent être légèrement supérieures ou inférieures à 90 degrés, et le moteur peut être capable d'un mouvement légèrement supérieur ou inférieur à 90 degrés dans les deux sens.
Pour adresser d'autres canaux, augmentez simplement l'adresse des deux registres ci-dessus de 4. Ainsi, l'heure de début pour le canal 1 est 0x0A, pour le canal 2 est 0x0E, le canal 3 est 0x12, etc. et l'adresse d'heure d'arrêt pour le canal 1 est 0x0C, pour le canal 2 est 0x10, le canal 3 est 0x14, etc. Voir le tableau ci-dessous.
Channel # | Adresse de départ | Adresse d'arrêt |
---|---|---|
Ch 0 | 0x06 | 0x08 |
Ch 1 | 0x0A | 0x0C |
Ch 2 | 0x0E | 0x10 |
Ch 3 | 0x12 | 0x14 |
Ch 4 | 0x16 | 0x18 |
Ch 5 | 0x1A | 0x1C |
Ch 6 | 0x1E | 0x20 |
Ch 7 | 0x22 | 0x24 |
Ch 8 | 0x26 | 0x28 |
Ch 9 | 0x2A | 0x2C |
Ch 10 | 0x2E | 0x30 |
Ch 11 | 0x32 | 0x34 |
Ch 12 | 0x36 | 0x38 |
Ch 13 | 0x3A | 0x3C |
Ch 14 | 0x3E | 0x40 |
Ch 15 | 0x42 | 0x44 |
Si vous écrivez un 0 à l'adresse de début, chaque degré de décalage à partir de 90 degrés nécessite 4,6 comptes écrits à l'adresse d'arrêt. En d'autres termes, multipliez le nombre de degrés de décalage par rapport au neutre que vous souhaitez atteindre par 4,6, puis ajoutez ou soustrayez le résultat de 1250, en fonction de la direction du mouvement que vous souhaitez. Par exemple, un décalage de 45 degrés par rapport au centre serait de 207 (45 × 4,6) comptes soit plus ou moins de 1250, selon la direction dans laquelle vous souhaitez que le mouvement se fasse.
Lire plus d'informations…
Guide de branchement du chapeau Pi Servo
Processus de fabrication
- Guide du prototypage CNC
- Guide de connexion FLIR Lepton
- Guide de branchement du kit de démarrage Raspberry Pi 3
- Guide de connexion Qwiic HAT pour Raspberry Pi
- Guide de branchement Pi Wedge 40 broches pré-assemblé
- Robot Pi simple
- Guide des marteaux électriques
- Guide des forges de forge
- Guide de moulage de précision