Aller au contenu


Photo
- - - - -

Utilisation DRV8825 derrière un MCP23017


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 Ritchy76

Ritchy76

    Nouveau membre

  • Membres
  • 2 messages

Posté 16 avril 2023 - 06:59

Bonjour à tous,

Je construis un petit robot et pour garder un certain nombre de I/O sur mon raspberry, j’ai connecté mes 2 drivers DRV8825 sur un MCP23017 i/o extender.

Je programme en python et j’utilise la bibliothèque https://github.com/g...epo/RpiMotorLib pour le DRV et https://github.com/r...h-Raspberry-Pi- pour le MCP.

Le MCP et le DRV semble bien connecté, et le voltage de ces derniers a été vérifié pour mes moteurs PAP nema17.

La où je bloque, et je pense que c’est une lacune en programmation, c’est comment dans les lignes de code du DRV je lui indique d’aller chercher sur le MCP (ou plus simplement comment intégrer l’un dans l’autre les 2 bibliothèques).

Je vous mets ci-dessous les 2 codes indépendamment.

MCP23017_I2C avec test de rotation sur ses ports GPIO

from time import sleep
from MCP23017_I2C import * # https://github.com/rpsreal/MCP23017_I2C-with-Raspberry-Pi-/

GPIO_CHIP_1 = GPIO_CHIP(0x27, 1)

GPIO_CHIP_1.setup( 4, 'OUT', 'B')
GPIO_CHIP_1.setup( 5, 'OUT', 'B')
GPIO_CHIP_1.setup( 6, 'OUT', 'B')

# normalement pin 4 = Enable // pin 5 =Step // pin 6 = Direction
# GPIO_CHIP.output(pin, hl, side)
GPIO_CHIP_1.output(4, 0, 'B') #pin enable = low pour activer // high pour désactiver
GPIO_CHIP_1.output(6, 0, 'B')

for x in range(600):
    GPIO_CHIP_1.output(5, 1, 'B')
    sleep(0.005)

GPIO_CHIP_1.output(4, 1, 'B')

RpiMotorLib mais connecté au GPIO du raspberry



import RPi.GPIO as GPIO

# import the library
from RpiMotorLib import RpiMotorLib
    
#define GPIO pins
# GPIO_pins = (14, 15, 18) # Microstep Resolution MS1-MS3 -> GPIO Pin

GPIO_pins = (-1,-1,-1) # You can Pass in (-1,-1,-1) if you wish to hardwire Ms-X to logic and save GPIO pins.

direction= 6       # Direction -> GPIO Pin
step = 5      # Step -> GPIO Pin

# Declare a instance of class pass GPIO pins numbers and the motor type
mymotortest = RpiMotorLib.A4988Nema(direction, step, GPIO_pins, "DRV8825")

# call the function, pass the arguments
mymotortest.motor_go(False, "Full" , 100, .01, False, .05)

Je le précise, je suis débutant en programmation.

Merci de vos retours et  de votre aide

Bonne journée

Ritchy76

 



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 16 avril 2023 - 06:24

Je pense que la librairie de base qui pilote les moteurs pas à pas n'est pas prévue pour utiliser le mcp en lieu et place des gpio classique... Du coup une des façon de faire serait d'ouvrir la librairie et de modifier le code de la librairie pour intégrer la gestion du mcp dedans ... 

Pour cela il faudra ajouter la ligne d'import de lib du mcp, et partout où ça gère un gpio il faudra remplacer la fonction appelée pour les gpio standard par la fonction qui pilote les sorties du mcp ...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 Ritchy76

Ritchy76

    Nouveau membre

  • Membres
  • 2 messages

Posté 18 avril 2023 - 09:12

Bonsoir,

 

Merci de votre réponse, effectivement je ne sais pas pourquoi je n'y pas penser avant, je vais regarder.

 

Encore merci et bonne soirée

 

Ritchy76






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users