J'ai acheté une tarte aux râpes en pensant que je pourrais trouver un nouveau passe-temps que je peux pratiquer à l'intérieur pendant le verrouillage. Je pensais que si je pouvais contrôler le moteur, ce serait utile dans des expériences plus tard, alors j'ai acheté un moteur pas à pas ensemble, donc je vais essayer de le contrôler. Il est intéressant de le faire tourner à une vitesse constante, mais je voulais pouvoir faire n'importe quel exercice. Connaissance des circuits électriques et électroniques Je suis parti de presque zéro, mais je pouvais facilement le faire car il y avait beaucoup d'informations sur le net. J'apprécie vraiment cela. Il semble que cela puisse être contrôlé de différentes manières, mais j'aimerais vous présenter la méthode que j'ai trouvée la plus simple.
Vous trouverez ci-dessous une liste du matériel utilisé.
Le premier est la rotation de base à vitesse constante. Utilisez RpiMotorLib, A Raspberry pi python motor library sur GitHub. Il semble que vous puissiez contrôler non seulement les moteurs pas à pas, mais également les moteurs à courant continu et les servomoteurs. Vous pouvez l'installer depuis le terminal avec sudo pip install rpimotorlib
.
Après avoir installé la bibliothèque, connectez-la selon Tutoriel très poli, et copiez et collez simplement le code pour faire tourner le moteur. Je vais. J'ai câblé comme suit (désolé pour le dessin approximatif dessiné à la main).
La résolution de l'image est médiocre et difficile à voir, mais le câblage est comme indiqué dans le tableau ci-dessous.
GPIO Raspeye | chauffeur | moteur |
---|---|---|
17 | IN1 | - |
18 | IN2 | - |
27 | IN3 | - |
22 | IN4 | - |
- | OUT1 | A- |
- | OUT2 | B- |
- | OUT3 | A+ |
- | OUT4 | B+ |
La fonction principale est motor_run (GpioPins, wait, steps, ccwise, verbose, steptype, initdelay)
. L'explication de chaque argument est la suivante.
True '', l'état etc. sera affiché. La valeur par défaut est
False ''.plein '',
moitié '', `` vague ''. Consultez le didacticiel pour connaître les forces et les faiblesses de chacun.Par exemple, si vous souhaitez faire pivoter 5 Hz dans le sens antihoraire avec une vitesse de rotation de 0,5 Hz en mode demi-pas, le code est le suivant. C'est très simple.
python
import time
import RPi.GPIO as GPIO
from RpiMotorLib import RpiMotorLib
GpioPins = [17, 18, 27, 22] #Broche GPIO. IN1 de la gauche, IN2, IN3,Broche pour se connecter à IN4.
f = 0.5 #Vitesse rotationnelle[Hz]
Rev = 5 #Faire pivoter 5 fois
s_angle = 1.8 #Angle de pas[deg]
wait = (1/f)*(s_angle/360)/2 #Temps entre les impulsions. Moitié-Divisez par 2 pour le mode pas à pas
#Donnez le nom au moteur et précisez le type de moteur (Nema ou 28BYJ).
mymotortest = RpiMotorLib.BYJMotor('MyMotorOne', 'Nema')
#Principale. Les arguments sont la broche GPIO, l'attente, le nombre de pas, la rotation inverse, le mode détaillé, le mode pas à pas, le premier délai à partir de la gauche[ms]
mymotortest.motor_run(GpioPins, wait, Rev*50, True, False, 'half', 0.05)
#Enfin nettoyer les broches
GPIO.cleanup()
agréable!
Depuis que j'ai pu le tourner, je pense que je peux faire n'importe quel exercice en fonction du code. Je voudrais faire bouger le moteur arbitrairement. À titre d'exemple, faisons un mouvement de hauteur sinusoïdale.
7 en 1 étape.Puisqu'il tourne de 2 °, l'amplitudewait
Ne peut prendre qu'une valeur positive, alors prenez une valeur absolueccwise
À'True'
Tout ce que vous avez à faire est de réussir.
Le code est comme suit.
python
GpioPins = [17, 18, 27, 22]
T = 2 # Period [s]
N_period = 2 # No. of periods
amp = 72
unit_angle = 7.2
s_angle = 1.8 # [deg]
N = int(4*amp/unit_angle)
theta = amp*sin(np.linspace(0, 2*pi, N)) # Angle time history [deg]
dt = T/len(theta) # time-step [s]
omega = np.gradient(theta, dt)/360 # [Hz]
omega_pos = abs(omega)
pm = omega < 0 # boolean for CW/CCW
wait = (1/omega_pos)*(s_angle/360)/2
mymotortest = RpiMotorLib.BYJMotor, 'MyMotorOne', 'Nema')
time.sleep(0.002)
for _ in np.arange(N_period):
for k in np.arange(N):
mymotortest.motor_run(GpioPins, wait[k], 1, pm[k], False, "half", 0)
GPIO.cleanup()
l'a fait!
Recommended Posts