Jump to content

Damla

Members
  • Gesamte Inhalte

    7
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von Damla

  1. Ist es vielleicht auch möglich, dass ich dem Programm sage, Gib mir nur dann eine Ausgabe, falls du Signale von Channel 1 kriegst. 

    Bisher habe ich selbst definiert, dass mein Channel_number=1 ist (siehe oben). Jedoch ist nun der Schritt, dass auch ein Signal B gegeben wird. 

    Ich habe es mit diesem Schritt versucht, aber irgendwie funktioniert es nicht so ganz:

    def channel_number (channel):
        if channel == BrickletIndustrialDigitalIn4V2.CHANNEL_0:
            # Configure rising edge count (channel 3) with 10ms debounce
            idi4.set_edge_count_configuration(channel=0, edge_type=1, debounce=1)
        elif channel == BrickletIndustrialDigitalIn4V2.CHANNEL_1:
            print('Falsche Richtung')

     

    leider kriege ich aber keine Werte so rausgespuckt..

    Hier nochmal der ganze Skript:

    HOST = "localhost"
    PORT = 4223
    UID = "PN5"  # Change XYZ to the UID of your Industrial Digital In 4 Bricklet 2.0
    
    import math
    import time
    
    from tinkerforge.bricklet_industrial_digital_in_4_v2 import BrickletIndustrialDigitalIn4V2
    from tinkerforge.ip_connection import IPConnection
    
    def channel_number (channel):
        global count
        if channel == BrickletIndustrialDigitalIn4V2.CHANNEL_0:
            # Configure rising edge count (channel 0) with 10ms debounce
            idi4.set_edge_count_configuration(channel=0, edge_type=1, debounce=1)
            count = idi4.get_edge_count(channel=0, reset_counter=False)
        elif channel == BrickletIndustrialDigitalIn4V2.CHANNEL_1:
            print('Falsche Richtung')
    if __name__ == "__main__":
        ipcon = IPConnection()  # Create IP connection
        idi4 = BrickletIndustrialDigitalIn4V2(UID, ipcon)  # Create device object
        ipcon.connect(HOST, PORT)  # Connect to brick
        b = 0.0
        endTime = time.time() + 60*60*8
        print(time.ctime() + "\tStart Logging..")
        print("-----------------------------------------------------")
        while time.time() < endTime:
            time.sleep(1)
            r = 0.03  # meter
            alpha = (count * 360) / 1024  # P = Anzahl Impulse, PPR = Impulse pro Umdrehung = 1024
            d = b
            b = (alpha / 360) * 2 * math.pi * r
            # - b_old
    
            if b > 0.0 and b != d:
                print(time.ctime() + "\t" + str(b))
    
        print("-----------------------------------------------------")
        print(time.ctime() + "\tEnd of the Log")
    
        # input("Press key to exit\n")  # Use raw_input() in Python 2
        ipcon.disconnect()

     

  2. Da hast du natürlich Recht :)

     

    hier ist mein Python Skript, wenn ich es über Python ausführe funktioniert alles einwandfrei. Nur wenn ich es "offline" durchführe bekomme ich nur Ergebnisse für n*360grad

     

    HOST = "localhost"
    PORT = 4223
    UID = "PN5" # Change XYZ to the UID of your Industrial Digital In 4 Bricklet 2.0
    
    import time
    
    from tinkerforge.ip_connection import IPConnection
    from tinkerforge.bricklet_industrial_digital_in_4_v2 import BrickletIndustrialDigitalIn4V2
    
    
    
    if __name__ == "__main__":
        ipcon = IPConnection() # Create IP connection
        idi4 = BrickletIndustrialDigitalIn4V2(UID, ipcon) # Create device object
        channel_number = 1
        ipcon.connect(HOST, PORT) # Connect to brickd
        # Don't use device before ipcon is connected
    
        # Configure rising edge count (channel 3) with 10ms debounce
        idi4.set_edge_count_configuration(channel=channel_number, edge_type=1, debounce=1)
    
        # Get edge count 10 times with 1s delay
        for i in range(10):
            time.sleep(1)
            count = idi4.get_edge_count(channel=channel_number, reset_counter=False)
            r= 0.03
            alpha= (count*360)*10/1000
            b= (alpha/360)*2*math.pi*r
            print("Count" + str(b) + time.ctime())
    
        input("Press key to exit\n") # Use raw_input() in Python 2
        ipcon.disconnect()

    Kurz als Input: Mein Messsystem ist ein Drehgeber Encoder und das Ziel ist es die Impulse aus dem Drehgeber in eine Längeneinheit umzuwandeln. 

    In Python selbst gibt er mir die Richtigen Werte raus. Aber in der Logs File im Brick Viewer rundet er die Daten bis auf eine ganze Umdrehung auf. 

    Siehe auch die Bilder als Vergleich:

    Hier sind die Ergebnisse in Python, er gibt mir unterschiedliche Werte für jede Sekunde aus

     

    1607668649_WhatsAppImage2020-10-15at12_30_27.thumb.jpeg.a64c5f972a8fa8a86fb94e369a771166.jpeg

    Und hier die Ergebnisse von Brick Viewer, welcher mir konstante Werte angibt, bis eine Umdrehung abgeschlossen ist.

    1405283580_WhatsAppImage2020-10-15at12_30_26.thumb.jpeg.212478a6a783c85f28f4368ddfbb7211.jpeg

  3. Hallo Liebes Community,

    Im Rahmen meiner Masterarbeit bin ich zur Zeit dabei ein Messsystem zu bauen. Das ganze soll in Tinkerforge gewährleistet werden. Ich habe das grobe System bereits vorbereitet : Red Brick, Masterbrick und ein Industrial 4IN Bricklet.

    Einen Programm habe ich auch in Python schon geschrieben. Jedoch will ich das Messsystem auch ohne ein Laptop benutzen. Dazu müsste ich ja auf dem RED Brick bzw. auf der darin integrierten SD-Karte programmieren oder?

    Nun stellt sich jedoch die Frage:

    - Wie kann ich es auf dem Red Brick umsetzen?

    --> Ich weiss, dass es mit einem Rasperry Pi möglich wäre, darf ich aber leider nicht benutzen. 

    Ich würde mich auf eure Antworten und Tipps freuen :)

     

    Viele Grüße

     

     

×
×
  • Neu erstellen...