Jump to content

markus5766h

Members
  • Gesamte Inhalte

    155
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von markus5766h

  1. Moin.

     

    mal kurz gegoogelt :

    http://www.ebay.de/itm/like/301721768426?ul_noapp=true&chn=ps&lpid=106

     

    diese Spindeln haben eine Steigung von 8mm (im Gegensatz zu 1mm bei einem M8-Gewinde), somit erreichst Du auch eine 8-fache Geschwindigkeit der Linearbewegung bei gleicher Geschwindigkeit des Antriebs - und die Reibkräfte im Gewinde sind geringer.

     

    Als Alternative (falls konstruktiv möglich): benutze den Schrittmotor mit einem

    Zahnrad als Antrieb auf (bzw. unter) Deiner Abdeckung - die Du über eine Zahnstange laufen lässt, hierzu muss dann die Kabelverbindung zum Schrittmotor flexibel sein - es geht natürlich auch anders herum : Schrittmotor mit Zahnrad statisch unter der Abdeckung --> Zahnstange unter der Abdeckung montiert.

    Bei den Zahnstangen entspricht das Modul der Steigung, die Lineargeschwindigkeit ist dann von der Drehzahl und der Anzahl der Zähne des Zahnrades abhängig.

     

    Zahnstangen und auch Trapezgewindespindeln bekommt man gut sortiert bei Mädler:

    www.maedler.de

  2. Moin.

     

    Ganz so einfach ist dies wohl nicht - stelle Dir folgende Fragen :

    -wie ist die Holzabdeckung gelagert (Linearführung, einfache Gleitflächen ...)

    -wie hoch ist die Zugkraft, um die Abdeckung zu verstellen ...

    -der Reibwiderstand einer "normalen" Gewindestange in einer Mutter sollte auch nicht vernachlässigt werden - es ist schließlich ein Befestigungsgewinde und kein Bewegungsgewinde wie z.B. Trapez- oder Flachgewinde.

    -Wählst Du eine andere (oder zusätzliche) Übersetzung verlierst Du Drehmoment,

    d.h., Du treibst den Schrittmotor früher in die Auslastung, zu mal Schrittmotoren nicht für hohe Geschwindigkeiten ausgelegt sind.

    -Generell bei Schrittmotoren : das Drehmoment nimmt mit der Drehzahl ab !

    -eventuell können Trapezgewindespindeln aus dem Modellbaubereich genommen werden, diese haben eine höhere Steigung, womit sich auch die Geschwindigkeit erhöht.

    -ggf. muss ein Schrittmotor mit höherer Leistung herhalten

    . . .

  3. Moin aus Hamburg.

     

    Ich habe folgendes Problem :

     

    ich erstelle Objekte vom Typ TBrickMaster, TBrickAnalogOut, AnalogIn ... im Ereignis On Create des Formulars

    var
      HOST : String;
      PORT : Word;
      EnumBrick : array[1..128] of TEnumerateB;
      EnumCount : Word;
      ipcon : TIPConnection;
      ma : array[1..8] of TBrickMaster;
      mb : array[1..8] of TBrickDC;
      aa : array[1..8] of TBrickletAnalogIn;
      ab : array[1..8] of TBrickletAnalogInV2;
      ac : array[1..8] of TBrickletAnalogOut;
      ad : array[1..8] of TBrickletAnalogOutV2;
      ae : array[1..8] of TBrickletIndustrialDual020mA;
      da : array[1..8] of TBrickletIO4;
      db : array[1..8] of TBrickletIO16;
    
    procedure TfrmMain.FormCreate(Sender: TObject);
    var
      i : Integer;
    begin
      frmMain.ClientWidth := 1008;
      frmMain.ClientHeight := 730;
      Log := TStringList.Create;
      Log.Add(DateTimeToStr(Now) + ' Programm started');
      HOST := 'localhost';
      PORT := 4223;
      EnumCount := 0;
    
      ipcon := TIPConnection.Create;
    
      ma[1] := TBrickMaster.Create('6qY3SC', ipcon);
      ma[2] := TBrickMaster.Create('6JKRPw', ipcon);
    
      ab[1] := TBrickletAnalogInV2.Create('vfA', ipcon);
      ac[1] := TBrickletAnalogOut.Create('hPy', ipcon);
      ac[2] := TBrickletAnalogOut.Create('ikS', ipcon);
      ad[1] := TBrickletAnalogOutV2.Create('vn2', ipcon);
      ae[1] := TBrickletIndustrialDual020mA.Create('saE', ipcon);
      db[1] := TBrickletIO16.Create('snY', ipcon);
    
      ipcon.Connect('localhost', 4223);
    

     

    soweit so gut.

     

    Im Ereignis OnClose setze ich einige Einstellungen zurück und gebe die

    Objekte wieder frei :

     

    procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      SetIO16PortsToZero(1); // alle Ausgänge auf HIGH
      SetAnalogesToZero; // Analog Ausgänge auf 0V
      
      ab[1].Free;
      ac[2].Free;
      ac[1].Free;
      ad[1].Free;
      ae[1].Free;
      db[1].Free;
      ma[2].Free;
      ma[1].Free;
    
      Delay(100);
      ipcon.Destroy;
      Delay(100);
      Log.Free;
    end;
    

     

    dies funktioniert auch einwandfrei, solange ich von einem Bricklet-Typ

    nur ein Objekt erzeuge. benutze ich zwei Objekte vom z.B. Typ

    TBrickletAnalogOut

    gibt's eine Exception bei der Freigabe bzw. Destroy von ipcon

    an folgender Stelle :

     

    Unit IPConnection
    
    procedure TIPConnection.Disconnect;
    var callback_: PCallbackContext; meta: TByteArray;
    begin
      callback_ := nil;
      socketMutex.Acquire;
      try
        autoReconnectAllowed := false;
        if (autoReconnectPending) then begin
          { Abort pending auto-reconnect }
          autoReconnectPending := false;
        end
        else begin
          if (not IsConnected) then begin
            raise ENotConnectedException.Create('Not connected');
          end;
          DisconnectUnlocked;
          SetLength(pendingData, 0);
        end;
        { Destroy callback thread }
        callback_ := callback;
        callback := nil;
      finally
        socketMutex.Release;
      end;
      if (callback_ <> nil) then begin
        { Do this outside of socketMutex to allow calling (dis-)connect from
          the callbacks while blocking on the WaitFor call here }
        SetLength(meta, 2);
        meta[0] := IPCON_CALLBACK_DISCONNECTED;
        meta[1] := IPCON_DISCONNECT_REASON_REQUEST;
        callback_^.queue.Enqueue(IPCON_QUEUE_KIND_META, meta);
        if (not callback_^.thread.IsCurrent) then begin
          callback_^.queue.Enqueue(IPCON_QUEUE_KIND_EXIT, nil);
          callback_^.thread.WaitFor;
          callback_^.thread.Destroy; <-------------- hier tritt der Fehler auf
        end
        else begin
          callback_^.queue.Enqueue(IPCON_QUEUE_KIND_DESTROY_AND_EXIT, nil);
        end;
      end;
    end;
    

     

    kennt jemand das Problem bzw. hat eine Lösung ?

     

×
×
  • Neu erstellen...