Posts by rattiDOTcom

    Schönen Guten Abend,

    Erst einmal Danke das hier so viele mithelfen :)

    Ich habe mal ein bisschen mit dem Threading experimentiert:

    Soweit bin ich bis jetzt gekommen. Ich komme aber noch nicht aus der Schleife unten am Näherungssensor raus. Ansonsten kann ich überall abbrechen.

    Ich wollte mich nur zwischen durch mal melden nicht das ihr denkt ich hätte aufgeben.


    Thema Notaus:

    Das was ich hier machen will ist kein echter Notaus. Deshalb ja "Notaus". Ein Funktionsabbruchschalter mit anschließender Referenzfahrt trifft es glaube ich ganz gut.

    Ich werde auf jeden Fall noch einen richtigen Notaus Schalter einbauen: Also draufhauen Strom komplett weg.

    Deshalb habe ich Notaus in "" geschrieben. Der Taster/Notaus soll nur die aufgerufene Funktion A2Fahrt(): direkt beenden und den Wagen an der Linearführung langsam wieder zum Anfang zurück fahren lassen. Auf die Idee mit der If Abfrage kam ich weil ich etwas ähnliches mal gemacht habe. Dort war es aber eine for schleife die ein paar hundert mal wiederholt wurde und nach jedem Durchlauf getestet hat ob ein Taster betätigt wurde bzw ein GPIO einen Input bekommen hat.

    Also Interrupts und Threading übersteigen momentan noch meine Fähigkeiten.. Aber das ist ja schonmal eine Richtung in die ich gehen kann.

    der Einsatz von asyncio, denn damit wird das warten nicht zur “Falle”, sondern man bekommt einen cancelbaren task.

    Hört sich auf jeden Fall interessant an.

    Wartezeiten bis zu einer Sekunde

    Was ja bei der Lösung mit der If Abfrage heißen würde das man über diese Sekunde hinaus den Taster betätigen muss damit es im time.sleep nicht untergeht.

    Schönen Guten Abend,

    Ich arbeite momentan an einer Linearführung die per Schrittmotor und Riemen auf Knopfdruck nach vorne bis zu einem Induktiven Näherungssensor(INS) fährt und danach wieder auf Anfang(auch bis zu einem INS) zurück fährt. Das ganze hat auch noch ein UI das primär aber mit dieser "Achse" nichts zu tun hat. Die Fahrt bis zum Ende und zurück auf Anfang funktioniert einwandfrei. Was ich nun aber gerne noch einbauen möchte ist eine Art Notaus Schalter mit dem man die Fahrt abbrechen kann und der Wagen der Linearführung langsam zurück zum Anfang fährt.

    Momentan ist es so das ich per PWM bis zum hintern INS fahre und dann die nächste Funktion startet die wieder zum Anfang fährt. Da es mehrere Funktionen sind habe ich diese in einer Liste die nacheinander abgearbeitet wird:


    Hat jemand eine Idee wie ich das Ganze am besten realisieren könnte? Einfach den Strom für den Motor kappen möchte ich nicht, da die Software ja dann noch wartet bis der INS am Ende auf den Wagen wartet. Eine Idee von mir wäre noch vor jedem neu generierten PWM Signal ein If Statement einzufügen das checkt ob der Notaus Taster betätigt wurde. Das glaube ich aber, selbst wenn es halbwegs funktioniert nicht die richtige Lösung.

    Ich hoffe jemand kann mir helfen oder mich in die richtige Richtung leiten :)

    Schönen Guten Abend liebes Forum,

    Ich bräuchte mal wieder eure Hilfe: Ich habe mal alles andere rausgelöscht um es übersichtlicher zu machen. Habe ein Programm mit GUI geschrieben bei dem ich über mit TKinter erzeugte Button, Schrittmotoren von A nach B fahren lassen kann. Während ein Schrittmotor sich bewegt sollen die GUI-Button deaktiviert werden damit man nicht zweimal drauf tippen kann und sich die Befehle stapeln. Das sperren/ disablen von den Button funktioniert aber leider nur bedingt. Zwar sind sie auf dem GUI ausgegraut, nehmen aber trotzdem noch Befehle an die dann der Reihe nach abgearbeitet werden. Wenn ich den Button nach dem Ablauf der Funktion nicht wieder entsperre nimmt er auch keine Befehle mehr an, also so wie es eigentlich sein sollte:conf:

    Habe es bis jetzt auf diese zwei Arten versucht:

    1. Das Sperren und Entsperren als eigene Funktion und diese vor und nach der Funktion zum bewegen des Schrittmotors abrufen

    2. Das Sperren des Button direkt mit in die Funktion rein, also am Anfang und Ende der for-loop.


    Hat jemand eine Idee voran es liegt?

    Code
    def Plus():    
        b1["state"] = "disabled"    
        for i in range(200):        
            GPIO.output(A1S, True)        
            time.sleep(0.0018)        
            GPIO.output(A1S, False)    
        b1["state"] = "normal"

    Schönen Guten Abend liebes Forum,

    Bei meinem aktuellen Projekt betreibe ich mit dem Raspberry mehrere Schritmotoren über die DRV8825 Treiber Chips.

    Software technisch läuft das ganze auch ziemlich gut. Nun kamen zu den Treibern auch noch mehrere Sensoren dazu die erst ab 5V sauber schalten. Deshalb wollte ich mal sämtlichen Ströme zusammen rechnen die ich mit dem Pi steuere. Die Ausgänge der Sensoren habe ich bereits mit einem Widerstand und einer Zener Diode auf 3.3 bei 5ma beschränkt. Nun zu den DRV8825 und meiner eigentlich Frage:

    Wenn ich den GPIO, der an den Direction pin des DRV geht auf High setze und mit dem Multimeter vom Gpio-pin an das Kabel das zum Drv8825 geht messe komme ich laut Multimeter auf einen Strom von 39 Micro Ampere(nicht Milliampere!). Kann das sein oder mache ich bei der Messung etwas falsch? Ich bin zwar froh das es keine Milliampere sind weil das dann doch etwas viel wäre, aber so wenig Strom:/. Im Internet habe ich keine Angaben finden können die Aussagen wie viel Strom der Chip zieht.

    Hallo liebes Forum, ich wollte mal Fragen ob ihr Erfahrungen mit dem DRV8825 Stepper Motor Driver habt (https://www.pololu.com/product/2133)?


    Ich habe mir oben genannten Driver gekauft und einen Nema 17 bipolaren Schrittmotor mit 1,8Grad Schrittteilung (17HS13-0404S) angeschlossen. Das ganze dann mit dem Raspberry verbunden und über

    folgendes Programm zum laufen gebracht:



    Die Drehzahl des Motors ist nicht sonderlich hoch, circa 200 rpm. Sobald ich den pause Wert noch weiter verringere bleibt der Motor aber stehen und fängt garnicht erst an zu drehen.

    Über PWM habe ich auch noch keine höhere Drehzahl geschafft. Laut verschiedenen Seiten im Internet schafft er im Full Step Mode 3000rpm:conf: Da er sich bei mir mit 200 Schritten einmal dreht bin ich mir auch ziemlich sicher das ich nicht aus Versehen Micro Stepping verwende :)

    Kann die "time Bibliothek" vielleicht einfach keinen kleineren Wert als 0,0005 Sekunden?

    Hat jemand Erfahrungen mit dem DRV8825 und kann mir sagen wie ich mit diesem oder anderem Driver eine höhere Drehzahl erreiche?

    Oder mir sagen welches Bauteil mich hier ausbremst?


    Mit freundlichen Grüßen

    Hallo und danke für die Hilfestellung,


    das sind jetzt nur Auszüge aus dem ganzen Programm aber es funktioniert wie es soll:




    Schönen Guten Tag, ich bin mir sicher das ihr mir helfen könnt :)


    Ich habe ein Programm geschrieben das sobald ich in ein Entry Feld eine Zahl eingebe, diese mit 50 multipliziert wird und durch den Druck auf einen button das Ergebnis im Fenster ausgibt.

    Das funktioniert aus alles bestens. Wobei ich leider nicht weiter komme:

    Die berechnete Zahl soll für Einzelschritte eines Schrittmotors stehen(50 Schritte sind hier eine Umdrehung)




    Ziel ist es jetzt, die im Entry eingegebene Zahl mit 50 multipliert, in for i in range (50) eingetragen wird, wodurch sich dann der Motor

    z.B. mit 2*50 zwei Umdrehungen dreht. Das Programm für den Motor habe ich und das funktioniert auch bestens. Ich muss nur die

    gewünschte Umdrehungszahl mit 50 multiplizieren und sie bei range eintragen. Das ganze Soll aber in einer schlichten GUI durch das

    Entry Feld geändert werden können, also ohne das jemand/ich den python code öffnen muss.

    Ich bekomme es aber leider nicht hin die als result errechnete Zahl so umzuwandeln das sie bei range akzeptiert wird. Wenn ich es richtig

    deute liegt es daran das ich dort eine int Zahl benötige, die Rechnung mir aber eine Variable ausgibt.

    Stehe momentan total auf dem Schlauch und weiß auch nicht nach was ich noch weiter googlen soll..


    Hoffe ihr könnt mir helfen :)

    Schonmal Danke für die schnellen Antworten.


    Am besten fang ich mal von vorne an: Mein Ziel ist es einen in englisch "spectrum analyzer" zu bauen.
    Der soll am Ende ein Analog Signal das ich auf dem Weg zum Reciever abfange anzeigen. Zur Anzeige am
    liebsten ein LCD Display mit hoher Auflösung und Anzeigen wie db-Wert einer frequenz zb. 20hz , die nächste dann
    50 hz usw.
    Also ein Spektrum von ca 20hz bis ca 20.000hz oder höher. Hab schon viele Projekte und dazu passende
    Software gesehen bei denen ein Signal über eine DVBT Antenne eingefangen wird da geht es aber um den
    relativ hohen Mhz Bereich.
    Ich bin auf den VM205 gekomemen weil dort auch schon die passende Software dabei ist...
    Die Projekte die ich gefunden haben betreiben meistens am Ende ein Paar LED´s oder sind für einen für mich
    viel zu hohen Frequenz Bereich entwickelt worden.


    Habt ihr Ideen zu Alternativen oder kennt ihr fertige Projekte?