Jump to content

jan

Members
  • Posts

    498
  • Joined

  • Last visited

  • Days Won

    2

jan last won the day on April 2 2023

jan had the most liked content!

About jan

  • Birthday October 9

Recent Profile Visitors

4328 profile views

jan's Achievements

Apprentice

Apprentice (3/14)

  • Conversation Starter
  • First Post
  • Collaborator Rare
  • Dedicated Rare
  • Week One Done

Recent Badges

2

Reputation

  1. Hallo, 2,7V heißt 2,7V. Bitte ein passendes Netzteil wählen. Warum nimmst du nicht ein 12V-Schrittmotor, weniger Spannung und Strom geht immer. Manchmal kann auch im Controller einer Spannung eingestellt werden. Der "TB6560A-Controller" kann von 10-35V. Das "Spiel" ist mit 0,36° angegeben. Wenn du weniger Spiel benötigst, dann eine größere Untersetzung. Ich habe 50:1 genommen. Da gibt es Null Spiel. Aber ja, die Spannung des Riemens hat immer mehr Spiel als der Schrittmotor, da er sich immer leicht durchdrücken / dehnen lässt. VG Jan
  2. #!/usr/bin/env python # -*- coding: utf-8 -*- HOST = "localhost" PORT = 4223 uid_io16 = 'xxx'; import time from tinkerforge.ip_connection import IPConnection from tinkerforge.bricklet_io16 import IO16 i2c_io16_port='a' #SCL = Port0 scl_port=0 #SDA = Port1 sda_port=1 #Adresse: 01110000 bis 01110111 def PortWert(bitstring=0, port=0): #ermittelt den Wert eines(!) Input-Ports anhand der kompletten Bitmaske wert =bitstring & (1<<port) wert =wert>>port return wert def send_start(): #Start: SDA und SCL = high, SCL geht auf low io.set_port(i2c_io16_port,(1 << scl_port) | (1 << sda_port)) io.set_port(i2c_io16_port,(1 << scl_port) | (0 << sda_port)) io.set_port(i2c_io16_port,(0 << scl_port) | (0 << sda_port)) #Start Ende def send_stop(): #Stop: SDA und SCL = high, SCL geht auf low io.set_port(i2c_io16_port,(1 << scl_port) | (0 << sda_port)) io.set_port(i2c_io16_port,(1 << scl_port) | (1 << sda_port)) #Stop Ende def send_ack(): #Acknowledge io.set_port(i2c_io16_port,(1 << scl_port) | (1 << sda_port)) io.set_port(i2c_io16_port,(0 << scl_port) | (0 << sda_port)) #Acknowledge Ende def send_dat(daten): #Daten for i in range(7,-1,-1): #Bit io.set_port(i2c_io16_port,(1 << scl_port) | (PortWert(daten, i) << sda_port)) io.set_port(i2c_io16_port,(0 << scl_port) | (0 << sda_port)) #Daten Ende send_ack() if __name__ == "__main__": ipcon = IPConnection() # Create IP connection io = IO16(uid_io16, ipcon) # Create device object ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before it is added to a connection #Ports als Ausgang definieren und erstmal low io.set_port_configuration(i2c_io16_port, (1 << scl_port) | (1 << sda_port), 'o', False) send_start() #Adresse 1110000r/w (r/w=1 für Write) ===> Adresse: 0b11100001 send_dat(0b11100001) #send_dat(0xD9) #TestMode send_dat(0x21) #turn on oscillator send_dat(0x7F) send_dat(0b11101111) #Display volle Helligkeit send_stop() pause=0.05 #time.sleep(pause) ipcon.disconnect() Das ist der Code von damals mit python. SDA und SCL werden einfach als Ausgang am IO bedient. Der Code müsste noch angepasst werden: neues IO-Bricklet, Adresse, etc...
  3. Heute möchte ich euch ein neues Projekt vorstellen. Es dient zur automatischen Ansteuerung eines Drehtellers für Photogrammetrie-Aufnahmen. Ziel war es: mind. 80kg Last tragen präzise Ansteuerung einbinden in Workflow Der Tisch wurde aus Stabilitätsgründen aus 40x40-Aluprofilen gebaut. Der Drehteller (2mm Aluminium) wird von 20x20-Aluprofilen gestützt. Als Antrieb wird ein Schrittmotor mit anschließender 50:1 Untersetzung verwendet. Der Riemen liefert noch einmal eine Untersetzung von 72:14. Für den Schrittmotor wird der "alte" Stepper-Brick verwendet, weil damit einfach höhere Stromstärken (2,2A) möglich sind. Dazu kommen 36V. Auf den Brick ist ein Lüfter montiert, der softwareseitig mit anspringt, sobald der Stepper "enable" erhält. Dies ist auch notwendig. Die Winkelauflösung beträgt somit 0,042' (Bogenminute) oder 2,5'' (Bogensekunde). Selbst nach mehreren Drehungen ist optisch kein Schrittverlust bemerkbar. Und Bilder - aufgenommen in verschiedenen Umdrehungen - liegen perfekt übereinander. Die Steuerung übernimmt der gute alte RED-Brick mittels python-Script. Auf dem Bild ist noch das erste Interface zusehen: Start- und Stoppknopf, Einstellungen (Rotary Encoder) für Bildanzahl und Pause in Millisekunden, sowie manuell "drehen" (vor- und rückwärts). Nachdem mehrere Änderungen an der Steuerung durchgeführt werden sollten, wurde sich entschieden, nicht noch mehr "bunte Knöpfchen" zu ergänzen, sondern auf das 128x64-LCD-Bricklet mit Touch zu setzen. Es können nun "Einstellungen" direkt vorgenommen werden, ohne jedes Mal den Quellcode anzufassen. Hinzugekommen ist noch das "Dauerdrehen mit variablen Geschwindigkeiten". Außerdem spart es wieder einen Master-Brick ein. Achja, der Distanzsensor dient dafür, dass man den Abstand Kamera <-> Objekt bequem messen kann. Da noch genug "Tabs" auf dem Display übrig sind, können noch weitere zukünftige Funktionen / Einstellungen implementiert werden. Das Industrial Quad Relay Bricklet löst direkt die Kamera aus (Port 0 => True --> Focus; Port 0 und 1 => True --> Shutter). Somit können x Bilder je Umdrehung aufgenommen, Kamera neu positioniert und erneut aufgenommen werden. Video Display Video 2 Die ersten Resultate könnt ihr hier sehen: sketchfab Mein Favorit ist bis jetzt die Blaubeere. Die angegebenen 432 Einzelaufnahmen setzen sich noch einmal jeweils aus einem Fotostacking über je 7 Bilder zusammen. Größere Objekte sind bereits geplant.
  4. Kann man an den Isolator Bricklet jeweils ein 2Meter-Kabel stecken oder ist die Gesamtlänge auf 2m beschränkt? Kann ich am Ausgang des Isolator Bricklet ein 7p-10p-Kabel anschließen und ein dann "altes" Bricklet anschließen? Geht anscheinend nicht. Habe ich getestet. Danke
  5. Das mit dem set_range klingt auch sehr gut. Für eine Menüsteuerung wäre es halt von Vorteil trotzdem zusätzlich ein rp.set_count(5) zu haben, damit ich den selben Menüpunkt (vom Hauptmenü) wieder einstellen kann, wenn ich das Untermenü verlassen habe.
  6. Hallo, für das Rotary Encoder Bricklet wünsche ich mir eine rp.set_count(position int). Dies würde vieles vereinfachen. Beim Stepper Bricklet ist diese Funktion eine riesige Hilfe (BrickletSilentStepperV2.set_current_position(position)). Das Rotary Encoder Bricklet könnte ich dann einfacher für eine Menü-Navigation verwenden, gerade weil nach oben hin dann einfach gesagt werden kann if rp.get_count()>10: rp.set_count(10) Vielen Dank Jan
  7. Hallo, ist es möglich auch 5V oder 12V Gleichstrom zu schalten? Auch bis 1,2A. Es wäre dann immerhin doppelt so viel Strom möglich wie beim Industrial Quad Relay Bricklet. Vielen Dank Jan
  8. Hat der RED eine SD-Karte mit TF-Image (https://www.tinkerforge.com/de/doc/Downloads.html#red-brick-images) drin?
  9. ja, der Master (oder viele oder ein Stack) kann einfach zusätzlich per USB angeschlossen werden.
  10. Es muss leider jeder Master einzeln (nicht im Stapel mit anderen Bricks) geupdated werden. Die Updates sind jedoch kein MUSS. Nur wenn neue Funktionen des Masters verwendet werden sollen, bedarf es eines Updates. Ich belasse meine Wetterstation bei aktuellen Updates für die Bricklets (Over-The-Air) und die Master laufen noch stabil mit Firmware 2.0.
  11. Du kannst die Sensoren an einen MasterBrick anschließen und diesen per USB mit dem Pi verbinden.
  12. Was ich mir noch als ein sehr universelles und notwendiges Bricklet wünsche, wäre eins an dem I2C und/oder SPI herausgeführt ist. Wie das One Wire Bricklet-Bricklet. Dann könnte man einfache Sensoren oder auch Displays direkt anschließen und verarbeiten. Noch eine praktische Bibliothek dazu und Tinkerforge ist wieder um viele nutzbare externe Sensoren und Displays "reicher".
  13. Ok. Jetzt nicht so ganz was ich mir erhofft habe. Aber, nunja. Gibt es irgendwann die Möglichkeit dies als Befehl zu implementieren? Oder spricht da etwas dagegen, wie bei Brick(let)s schon geschehen?
×
×
  • Create New...