Beiträge von Kartenmischa

    Hallo zusammen,

    ich betreibe mit meinem Raspberry Pi einen linearantrieb und habe folgendes Problem.

    Da ich keine Position des Servo-Motors abspeichern kann, brauche ich einen Mechanismus, um beim Start den Ausgangspunkt meines Programs anzufahren. Das restliche Program läuft dann relativ zum Startpunkt.

    Zu Beginn, war dieser Ausgangspunkt einfach am Ende des Linearantriebes, weshalb ich einfach einen Taster dazwischen gebaut habe. Nun brauche ich aber einen Punkt in der Mitte. Hier habe ich keine richtige Auflagefläche für den Taster und kann ihn nicht richtig befestigen. Da der Servo relativ stark ist, ist ebenfalls die Gefahr, dass der Schlitten den Taster ein Stück verschiebt.

    Die erste Idee war es nun eine Art 90 Grad Taster zu verwenden - also das man den Taster auf der Unterseite befestigen kann und der eigentliche Taster im 90 grad Winkel dazu absteht. Leider habe ich bisher so einen Taster nicht gefunden. Die üblichen Abstandssensoren sind leider auch zu groß um sie verwenden zu können.

    Kennt ihr noch eine Möglichkeit für das Problem? Also anders gesagt - ich brauche eine möglichkeit um beim Start einen Linear-Antrieb, betrieben durch einen Stepper-Motor, immer an die gleiche Position fahren zu lassen. Natürlich könnte ich am Ende des Programms immer wieder diesen Punkt anfahren - jedoch geht das bei Programabsturz dann verloren.

    Ideen?

    Danke!

    Hallo zusammen,

    ich weiß nicht, ob dies der richtige Platz für eine Hardware Frage ist, aber ich probiere es einfach mal.

    Ich bin auf der Suche nach einer Lösung, um meine Servomotoren mit einer Welle zu verbinden. Die einzige Lösung die ich bisher gefunden habe wäre folgende:

    Zuerst nutze ich ein Adapter wie diesen hie [Anzeige]r. Den verbinde ich diesen Adapter über Schrauben mit diesem Rundrohr, um die Rotation auf die Welle zu übertragen.

    Kent jemand einen Adapter den ich hierfür verwenden kann? Also der auf der einen Seite auf einen üblichen Servo passt und als Ausgang ein Rundrohr für eine Welle hat?

    Danke!

    Outlaw Danke für deine Antwort!

    Ich merke gerade ich hab mich etwas ungünstig ausgedrückt. Also es geht nicht darum, dass ich während des Betriebs dann plötzlich wieder einen Monitor anschließen möchte, sondern von Beginn an.


    Also mit der abgeänderten Zeile in der config.txt, oder auch mit den von Tigerbeere gezeigten Änderungen, zeigt der PI nichts mehr auf dem Bildschirm an, auch wenn ich das HDMI Kabel vor dem Booten einstecke.

    Sobald ich hdmi_force_hotplug wieder auskommentiere, zeigt er wieder alles normal auf dem Bildschirm.

    Das versteh ich nicht warum er das tut:D Ja ich brauche leider beide Varianten, also sowohl mit als auch ohne Monitor

    Hallo zusammen,

    ich habe eine Anwendung auf meinem PI die automatisch nach einem Boot startet. Deshalb möchte ich unterstützen, dass alles funktioniert, auch wenn der Pi nicht über einen Monitor angesteckt ist (über HDMI).

    Um das zu erreichen hab ich in dieconfig.txt folgende Zeile eingefügt:

    hdmi_force_hotplug=1

    Nun startet der PI auch ohne HDMI Kabel eingesteckt. Das Problem ist nun, dass wenn man wieder einen Monitor verbindet, nichts auf ihm angezeigt wird. Also der Pi bootet, aber nichts erscheint auf dem Monitor. Ist das normal wenn man die obige Zeile einfügt? Ich dachte eigentlich nicht, da diese ja den PI einfach nur zwingt immer den HDMI Ausgang zu verwenden, egal ob da was dran hängt oder nicht.

    Habt ihr Ideen was das Problem ist oder wie man es anders lösen kann?

    LG

    Hallo zusammen,

    ich habe auf meinem Raspberry Pi eine 64-bit Ubuntu 20.04 mit XUbuntu als Desktopumgebung installiert. Es funktioniert soweit alles wie gewollt.

    Von Zeit zu Zeit tritt aber ein komischer Effekt auf, den ich nicht erklären kann. Manchmal (habe kein Muster erkannt, wann es auftritt) färbt sich der Bildschirm violett oder schwarz und flackert kurz. Ich kann dann mit der Maus die eingefärbten Stellen "wegradieren" bis alles wieder normal aussieht (siehe Bild).

    Ich hatte die Idee, dass es irgendwie vielleicht an dem Bildschirmschorner/Energiesparmodus liegt, da ich schon gelesen habe, dass es beim Auto-Suspend auch Probleme gibt. Deshalb hab ich alle automatischen Aktivitäten (Bildschirmschoner, Auto-logout, Energiesparmodus) ausgeschalten, dennoch tritt der Effekt auf.

    Verbunden mit dem Bildschirm ist der PI über ein HDMI Kabel. Der Effekt ist erst aufgetreten, als ich von Ubuntu 19.10 auf Ubuntu 20.04 geupdatet habe. Da 20.04 aber deutlich schneller arbeitet, würde ich gerne das Problem lösen und nicht wie umswitchen, zumal 19.10 nicht mehr supported wird.

    Habt ihr eine Idee oder hattet ihr das schonmal?

    Lg,

    Micha

    Hallo zusammen,

    erst einmal möchte ich mich entschuldigen für mein Vorgehen, Ich bin relativ unerfahren was den Umgang mit dem Pi angeht und hatte von der Arbeit den Druck, dass Projekt möglichst schnell zum Laufen zu bekommen.

    Danke für eure vielen Antworten Bernd666  STF

    1. Ich habe alle vorgenommenen Änderungen in der config.txt und /etc/modules rückgängig gemacht

    2. ls -l /dev/spi* ergibt

    Code
    crwxrwxrwx 1 root root 153, 0 April 11 2019 /dev/spidev0.0
    crw------- 1 root root 153, 1 April 11 2019 /dev/spidev0.1

    3. Aus folgendem Grund habe ich versucht mit den manuellen Einträgen (welche ja falsch waren), das Problem zu beheben: Ich auf mehreren Seiten gelesen, dass für eine Kommunikation über SPI, lsmod das Modul spi_bcm2835 ausgeben sollte, was bei mir nicht der Fall ist. Ich habe gerade noch einmal nachgeschaut und ebenfalls festgestellt, dass diese Informationen sich auf ältere Modelle und andere OS bezogen haben. Also eventuell ist dies auch nicht mehr notwendig?

    4. Wie stelle ich fest das etwas nicht funktioniert?

    Ich habe mein LED-Band folgendermaßen mit dem PI verbunden:

    Ich brauche in diesem Fall ja den MISO Pin nicht, da das Gerät ja nur Input vom Master braucht, aber selbst nicht mit dem Master interagieren muss (soweit mein Verständnis von MOSI und MISO, korrigiert mich gerne wenn ich falsch liege).

    Also Testskript für das Ansteuern und Abspielen der LEDs verwende ich folgendes Skript von hier:

    Gestartet wird das Ganze dann mit sudo ./ledstrip test, wobei die test Datei so aussieht:

    Starte ich das Skript erfolgt zwar keine Fehlermeldung, aber es tut sich auch nichts auf dem LED Band. Aus diesem Grund habe ich daraus geschlossen, dass irgendetwas noch nicht richtig funktioniert.

    Ich habe als Validierung der Hardware, Verbindung und des Codes auf meinem alten Pi3 (hier läuft Ubuntu 18.04) über raspi-config SPI aktiviert. Hier zeigt das LED Band wie gewollt das Muster. Außerdem zeigt lsmod auch spi_bcm2835 an (deshalb auch meine Bemühungen, über die manuellen Einträge spi_bcm2835 irgendwie zu aktivieren)

    5. Ein Jumper-Kabel zwischen MOSI und MISO und das Ausführen des Test-Skripts, zu finden HIER ganz unten, liefert:

    Ich hoffe Vorgehen und das Problem ist nun etwas deutlicher. Der letzte Test zeigt ja eigentlich, dass die Kommunikation zwischen Master und Slave funktioniert, richtig?

    Vielen Dank für die Hilfe!

    Hey,

    Danke erstmal für eure ganzen Antworten.

    Ubuntu ist leider Vorgabe für das Projekt (da kann ich nicht abweichen:/)

    Ich hab auch nicht das raspi-config Menü zum laufen bekommen weshalb ich nicht über die GUI das SPI aktivieren kann, deshalb dachte ich, ich probiere es einmal mit den Einträgen in der config.txt

    Aber ja es stimmt, dass SPI und I2C eigentlich Standardmäsig aktiviert sind.

    Habt ihr noch Ideen woran es liegen könnte oder wie ich rausfinden kann was defekt ist?

    Hallo zusammen,

    ich versuche meinen WS2801 LED Stripe über das SPI Interface meines Raspberry Pi's 4 anzusprechen. Der grundsätzliche Aufbau und mein Test-Skript hab ich mit meinem altem RPI3 validiert, da funktioniert alles einwandfrei.

    Aktuell läuft der RPI unter folgendem Kernel: Linux ubuntu 5.3.0-1030-raspi2 #32-Ubuntu SMP Sun Jul 12 21:20:28 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

    Soweit ich es verstanden habe, sind für eine Kommunikation über SPI die Module spidev und spi_bcm2835 notwendig.

    Lsmod gibt folgendes aus:

    Code
    spidev                 28672  0

    Nach meinem Kenntnisstand sollten hier beide Module auftauchen. sudo modprobe spi_bcm2835 geht zwar ohne Fehler aber löst nicht das Problem. Unter /dev seh ich sowohl spidev0.0 und spidev0.1, wie es sein sollte.


    In /boot/firmware/config.txt hab ich folgendes eingetragen:

    In /etc/modules :

    Code
    i2c-dev
    spi-bcm2835
    spi-dev
    snd-bcm2835

    Das Modul wird auch nicht durch eine Blacklist blockiert. dmesg zeigt zwar eine Fehlermeldung dazu an:


    Code
    [    1.559971] spi-bcm2835 fe204000.spi: could not get clk: -517, 


    soweit ich es gelesen habe, kann dies aber ignoriert werden, da das Modul später nochmal geladen wird und der Fehler nur einmal auftaucht. Führe ich mein Testskript aus, so kommt zwar keine Fehlermeldung, aber es tut sich auch nichts an den LEDs.


    Ich habe echt schon so viele Seiten durchsucht nach Hinweisen, aber keiner hat geholfen.
    Habt ihr eine Idee?

    LG,

    Micha



    Hi:)

    Das hier ist mein Skript:

    Was ich zusätzlich noch versucht habe ist am Ende für alle pins dauerhaft PWM = 0 zusetzten, aber das hat auch nichts gebracht.

    Code
    while True:    
        pwm.set_pwm(7, 0, 0)
        pwm.set_pwm(4, 0, 0)
        pwm.set_pwm(2, 0, 0)

    Was mir außerdem aufgefallen ist, dass manchmal der Servo nicht reagiert also er fährt nicht an die Position. Trenne ich aber kurz die externe 5V Versorgung und schließe sie wieder, dann macht er die Bewegung. Ich bin sehr verwirrt, weil ich kein Muster erkennen, wann es funktioniert und wann nicht:/

    Hallo zusammen:S

    Ich bin gerade dabei mir einen Raspberry Pi 6 DOF Robot Arm zusammenzubauen.

    Ich habe mir 6 MG996R Servomotoren gekauft welche über ein PCA9685 Treiber Board gemeinsam angesteuert werden.

    Angeschlossen habe ich das ganze wie im angehängten Bild.

    Ich habe nun versucht die Motoren über folgenden Code anzusteuern:

    Ich habe folgendes Problem. Starte ich das Skript läuft es manchmal genau so durch wie ich es möchte, d.h. die Servomotoren drehen nacheinander an ihre max. Position und danach an ihre min.Position. Das Problem ist aber das manchmal (warum auch immer) ein Servomotor nach starten des Skripts nicht an der gewünschten Position stoppt sondern einfach immer weiter dreht, auch nach Beendigung des Skripts. Das einzige was hilft, ist die Stromzufuhr zu unterbrechen. Oft passiert das auch sobald das Skript fertig ist.

    Ich habe wirklich keine Ahnung woran das liegt, da es eben manchmal auch normal funktioniert.

    Kann das irgendwie an den time.sleep() liegen, dass ich hier größere Wert nutzen muss, damit ich mit dem nächsten Kommando erst weiter mache, wenn der Servo an der richtigen Position ist?

    Des Weiteren ist mir aufgefallen, dass nach Beendigung des Skripts manchmal die Servomotoren "fest" sind, also dass sie versuchen ihre Position quasi zu halten und manchmal nicht. Kann es irgendwie sein, dass da im Hintergrund ein Thread gestartet wird, denn ich extra noch beenden muss?

    Danke für eure Hilfe!!

    LG