Page 1 of 1

Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 16 Nov 2021, 11:22
by Borhen
Hallo,

Ich bin Student und mache gerade mein Praktikum.
Die Hauptaufgabe ist ein Beatmungsgerät aufzubauen.
Die Hauptkomponente sind :
- 2 RevPi core
- 2 Stepper oder BLDC Motoren
- Druck Sensoren
-Pumpe

Es wurde mir bereits mehrere AIO Modulen zur Verfügung gestellt, um die Sensoren anzusteuern.
Aber was brauche ich für die Motoren? ist ein DIO Module die Lösung ?
Ich brauche eure Hilfe, bevor ich das DIO Modul bestelle !

Danke im Voraus !

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 23 Nov 2021, 14:01
by c.baumann
Hallo Borhen,
Schrittmotoren oder BLDC Motoren sind nicht direkt über DIOs oder AIOs anzusteuern.

Von Faulhaber zum Beispiel gibt es aber Controller für BLDC-Motoren (z.B. MCBL 3002) die sich per PWM (DIO) oder einem Analogsignal (AIO) ansteuern lassen, die könntest du dir mal anschauen.

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 23 Nov 2021, 15:45
by Borhen
Hallo C.Baumann,
Danke für die Rückmeldung!
Ich habe mir das DIO Module bestellt und ist heute angekommen :D
Ich benutze gerade den TB6600 Treiber für den Stepper Motor NEMA 17.
Ich wollte jetzt den Treiber mit dem DIO Modul anschließen.

Ein Prototyp liegt vor und enthält die folgenden Komponente: Raspberry Pi 3+ , zwei Nema 17 Motoren , Treiber TB6600.
Den Treiber ist mit dem Pi wie folgt verbunden : https://imgur.com/a/j9o34mZ
- Pin 39 (Ground) mit ENA-
- GPIO 26 mit ENA+
- GPIO 19 (PCM_FS/PWM1) mit DIR+
- GPIO 13 (PWM1) mit PUL+
- GPIO 12 (PWM0) mit PUL-
- Pin 34 (Ground) mit DIR-

Es wurde das folgende Code benutzt, um die Motoren zu kalibrieren (Das ist nur einen Schnitt vom gesamten Code, es soll als Beispiel dienen):

Code: Select all

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
from time import sleep
import RPi.GPIO as GPIO

def calibrate():
    
    print('\nCalibrating divice...\n')
    
    # GPIO setup
    GPIO.setmode(GPIO.BOARD)
    
    # Raspberry Pi pin set for TB6600 driver
    ENA = 37
    DIR = 35
    PUL = 33
    
    # set upward movement 
    #up = GPIO.HIGH
    # set down ward movemnt 
    #down = GPIO.LOW
    
    ENA_Locked = GPIO.LOW
    # ENA_Released = GPIO.HIGH
    
    GPIO.setwarnings(False)
    GPIO.setup(DIR, GPIO.OUT)
    GPIO.setup(PUL, GPIO.OUT)
    GPIO.setup(ENA, GPIO.OUT)
    
    # activate and hold motor
    GPIO.output(ENA, ENA_Locked)
            
    # set upward movement
    GPIO.output(DIR, GPIO.HIGH)
    
    # load and calculate microsteps for upward movement
    with open('./bin/config.yaml', 'r') as f:
        config = yaml.safe_load(f)
    
    mcsCal = int(config["McS"] * 1.10)    
    for i in range(mcsCal):

        # Puls modeling
        GPIO.output(PUL, GPIO.HIGH)
        sleep(0.0001)

        GPIO.output(PUL, GPIO.LOW)
        sleep(0.0001)
    
    # set downward movement
    GPIO.output(DIR, GPIO.LOW)
    
    # load and calculate microsteps steps of two total turns: ttTu
    with open('./bin/manSP.yaml', 'r') as f:
        manSP = yaml.safe_load(f)
    
    ttTu = manSP["stepsPT"] * 2
    for i in range(ttTu):
        
        # Puls modeling
        GPIO.output(PUL, GPIO.HIGH)
        sleep(0.0001)

        GPIO.output(PUL, GPIO.LOW)
        sleep(0.0001)
        
    # clear GPIO signals
    GPIO.cleanup()
Ich will nun den gleichen Aufbau auf dem RevPi erledigen. Ich habe das DIO Module mit dem RevPi, wie in den Tutorials, verbunden, die beiden OUT und IN LEDs von DIO sind dauernd Rot, Power ist Grün.
Was soll ich jetzt tun ?
Wie verbinde ich den Treiber mit dem RevPi ?
Wird das Beispiel-Code auf dem RevPi funktionieren ?

Danke im Voraus !

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 23 Nov 2021, 17:20
by nicolaiB
Hallo Borhen,

wenn sowohl IN als auch OUT dauerhaft rot sind, fehlt vermutlich die Spannungsversorgung am oberen Steckverbinder X2.

Gruß Nicolai

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 24 Nov 2021, 10:09
by c.baumann
Hallo Borhen,
Ich will nun den gleichen Aufbau auf dem RevPi erledigen. Ich habe das DIO Module mit dem RevPi, wie in den Tutorials, verbunden, die beiden OUT und IN LEDs von DIO sind dauernd Rot, Power ist Grün.
Was soll ich jetzt tun ?
Wie verbinde ich den Treiber mit dem RevPi ?
Wenn du den Treiber mit einem RevPi+DIO ansteuern möchtest wirst du hier vermutlich auf mehrere Probleme stoßen.
Zum einen musst du mit dem Pegel aufpassen. Die DIO Ausgänge liefern 24V, der Treiber vertägt aber vermutlich nur 5V, das heißt du müsstest da einen Spannungsteiler vorschalten.
Das zweite Problem das ich sehe wird die Cycletime des DIOs darstellen. Die Zykluszeit eines einzelnen DIOs ist zwischen 2ms und 3ms. Da du zum toggeln des Pins mind. 2 Cycles brauchst erreichst du im besten Fall max. 250 Pulse pro Sekunde. Bei einem Schrittmotor mit 200 Schritten pro Umdrehung wären das gerade 1.25 Umdrehungen pro Sekunde. Mit Microstepping wird dann natürlich auch die Drehzahl entsprechend kleiner.
Wenn das für deine Anwendung ausreichend ist spricht aber natürlich nichts dagegen.

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 30 Nov 2021, 13:13
by Borhen
Vielen Dank Für eure Rückmeldungen ! :D

@c.baumann Für meine Anwendung muss den Motor schnell und auch langsam drehen (Sinus kurve).
Was empfehlen Sie mir ? Ist in meinem Fall einen AIO Module besser als einen DIO Module geeignet ?
Ich habe die Dokumentation von REVPIMODIO 2 gefunden und muss auch mein Code gemäß diese Klasse anpassen, aber ich komme nicht mehr weiter, weil ich nicht weiß, wie ich den Motor mit den Modulen verbinde.
Ich brauche jede Hilfe, auch wenn es bezahlt werden muss ! :(

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 01 Dec 2021, 08:58
by c.baumann
Hallo Borhen,
ich persönlich würde dir nach wie vor eher zu einer Ansteuerung per AIO + Motion Controller + BLDC raten.
Denn ein weiteres Problem bei der Variante mit DIO+Schrittmotor ist das Drehmoment, dass mit zunehmender Geschwindigkeit geringer wird, was dann leicht zum stall führt. Du müsstest also bei deinem eigenen "Motion/Speed-Controller" auf dem RevPi noch Beschleunigungs- und Bremsrampen implementieren. Das macht es schlicht nochmal etwas komplizierter und anfälliger.

Bei der AIO Variante musst du nur eine Sollposition oder eine Geschwindigkeit vorgeben und musst dir über Beschleunigungen etc. nicht den Kopf zerbrechen, da all das schon vorkonfiguriert werden kann. Der vorgeschlagene Motion Controller hat dazu noch den Vorteil, dass er per Uart angesteuert werden kann, was es für dich noch flexibler macht, da du ihn auch nur per RS232-Dongle an den RevPi anschließen kannst.

Zum Schluss noch die Frage mit welchen Geschwindigkeiten, Frequenzen und/oder Winkeln denn zu rechnen ist in der Anwendung?

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 09 Dec 2021, 06:19
by crismancich
Hallo Borhem,

um sicher zu gehen, eine kurze Frage zum Anwendungsgebiet: Ich gehe hier von einem Proof of Conecpt aus, ist das richtig? Sollte auf Basis der Komponenten perspektivisch ein Beatmungsgerät für den Realeinsatz entwickelt werden, rate ich im Sinne der Festlegungen für die Sicherheit von Beatmungsgeräten zu Komponenten mit diversitärer Redundanz. Sollen dabei Industrieprodukte eingesetzt werden, solltest du den Einsatz von Safety Steuerungstechnik in Betracht ziehen. Geht es um eine Vernetzte Lösung, gibt es auch spannede Arbeiten vom BSI wie die "Cyber-Sicherheitsbetrachtung vernetzter Medizinprodukte", die sehr lesenswert sind. Der Revolution Pi ist ein tolles und zuverlässiges Produkt. Er ist allerdings nicht dafür ausgelegt, eine Person unterbrechungsfrei am Leben zu erhalten.

Viele Grüße,
Boris

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 09 Dec 2021, 12:13
by Borhen
Hallo Crismancich,

Das Beatmungsgerät soll als Prüfstand für eine Lungenanalyse dienen, also es wird damit kein Mensch beatmet, am Ausgang des Geräts wird eine künstliche Lunge mit mehreren Drucksensoren angeschlossen.

Liebe Grüße,
Borhen

Re: Stepper/BLDC Motoren mit Revpi ansteuern

Posted: 17 Dec 2021, 21:49
by ostermann
Hallo Borhen,

es gibt Schrittmotor-Controller, die 24V-tolerante I/Os haben, einige unterstützen neben der üblichen Takt-/Richtungssteuerung auch die Vorgabe einer Drehzahl über einen analogen Eingang. Damit dürfte für die Steuerung über den RevPi deutlich effektiver sein.

Mehr dazu siehe hier: https://www.mechapro.de/wp-content/uplo ... yer_DE.pdf

Mit freundlichen Grüßen
Thorsten Ostermann