closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

AVR mit zwei Schrittmotoren ?

StepperIOS

jomixl offline
Benutzer
Avatar
Gender: male
Location: GERMANY 
Age:
Posts: 190
Registered: 02 / 2008
Private message
Subject: AVR mit zwei Schrittmotoren ?  -  Posted: 10.04.2019 - 09:29   -  
Hallo,
ich muss zwei Schrittmotoren mit einem AVR ansteuern von denen jeweils nur einer läuft.
Die Endstufen benötigen nur Takt und Dir, also ideal für einen UserDevice.
Da der AVR ja nur einen Motor handeln kann muss ich eine Umschaltung der Signale vornehmen.
Nun meine Frage:
muss ich das mit Hardware machen oder kann ich in der StepperIOS die Unterscheidung vornehmen
und dort mit dem richtigen Takt-Pin wackeln ?

Hat das schon jemand gemacht?

Gruß Joachim
This Message Was Entirely Written Using Recycled Electrons
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 10.04.2019 - 10:01   -  
Hallo Joachim,

nein ich hab das noch nicht gemacht, aber solche Endstufen benötigen doch normalerweise auch ein Enable. Also wenn du Takt und Dir beider parallel schaltest und den Enable steuerst ..... ;)

Gruss
Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
jomixl offline
Benutzer
Avatar
Gender: male
Location: GERMANY 
Age:
Posts: 190
Registered: 02 / 2008
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 10.04.2019 - 11:32   -  
hallo Harry,
werden die Motoren ohne Enable stromlos ? Das wäre nicht gut, denn die Position muss erhalten bleiben.
Ich hoffe Rolf kann meine Frage beantworten......

danke
Joachim
This Message Was Entirely Written Using Recycled Electrons
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5450
Registered: 03 / 2002
Homepage Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 11.04.2019 - 18:32   -  
Hallo Jo,
ich habe da keine Erfahrung. Ich nehme bei uns hier jeweils
ein kleiner XMega pro Motor.
Wie Harry geschrieben hat wäre so ein Enable Pin sinnvoll.
Aber wenn damit ein Motor/Treiber stromlos wird dann hilft
da nur en externes Gatter, vermute ich.

rolf
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
TheBeginner offline
Benutzer
Avatar
Gender: n/a
Location: GERMANY  Wunsiedel Bayern
Age: 62
Posts: 452
Registered: 06 / 2013
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 11.04.2019 - 20:20   -  
Also wenn nur einer der beiden laufen soll, dann würde ich den Code
nehmen der hier schon mal besprochen wurde. Ich weiß jetzt nicht mehr
wer es war der mir dabei geholfen hatte.

Joachim ich poste mal meinen Code, vllt kannst was gebrauchen.
Bei mir haut es 100% hin mit den Code.


Code


  Takt_X    [@PortB,5] : bit; // X6 
  DIR_X     [@PortB,2]: bit;  // X10 

  Takt_Y    [@PortA,7] : bit; 
  DIR_Y     [@PortA,4]: bit;  



Code

procedure onTickTimer;                 //
begin
  //Takt X ausgeben
  if X_Step = true then
      incl(Takt_X);
      uDelay_1(3);   //alt 3 uS
      excl(Takt_X);
  endif;
  //Takt Y ausgeben
  if Y_Step = true then
      incl(Takt_Y);
      uDelay_1(3);   //alt 3 uS
      excl(Takt_Y);
  endif;
  //Takt Z ausgeben
  if Z_Step = true then
      incl(Takt_Z);
      uDelay_1(3);   //alt 3 uS
      excl(Takt_Z);
  endif;

  Tick_True:= true;
end;



Code

//  S_Freq;     -> StartFreq
//  E_Freq;     -> EndFreq
//==============================================================================
Procedure Proc_Rampen_Fahrt;
begin
  TickTimerStop;
  rest:= 0;
  accel_count:= Start_rampwert;
  dly_alt  := S_Freq;
  newDelay := S_Freq;
  TickTimerTime(dly_alt);
  TickTimerStart;
  Tick_True:= false;

  step_half:=  step_count div 2;

  {Rampe anfahren}
  Repeat
    if Tick_True = true then
      accel_count:= accel_count + 1;
      newDelay := dly_alt - (2* dly_alt + rest) div (4 * accel_count + 1);
      TickTimerReload(newDelay);               
      Tick_True:= false;                       
      rest:= (2 * dly_alt + rest) mod (4 * accel_count + 1);
      dly_alt := newDelay;
      step_count:= step_count - 1;
    endif;
  until (newDelay < E_Freq) or (step_count = step_half);
  rampwert := longword(accel_count);

  {Fullspeed}
  Repeat
    if Tick_True = true then
      Tick_True:= false;                       
      step_count:= step_count - 1;
    endif;
  Until (step_count <= rampwert);

  {Rampe abbremsen}
  Repeat
    if Tick_True = true then
      accel_count:= accel_count + 1;
      newDelay := dly_alt + (2* dly_alt + rest) div (4 * accel_count + 1);
      TickTimerReload(newDelay);               // writing a new value
      Tick_True:= false;                       
      rest:= (2 * dly_alt + rest) mod (4 * accel_count + 1);
      dly_alt := newDelay;
      step_count:= step_count - 1;
    endif;
  until step_count = 0;


  //Alles beenden
  TickTimerStop;
  Tick_True:= false;
  X_Step:= false;
  Y_Step:= false;
  Z_Step:= false;
end Proc_Rampen_Fahrt;



Gruß Frank
------------------------------------------------------------------------
Als Gott mich schuf wollte er angeben.
This post has been edited 1-times. Last edit: 11.04.2019 - 20:27 by TheBeginner.
go down go up
jomixl offline
Benutzer
Avatar
Gender: male
Location: GERMANY 
Age:
Posts: 190
Registered: 02 / 2008
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 11.04.2019 - 22:17   -  
Hallo,
zunächst mal danke für die Antworten.
Ich bin mir nicht ganz sicher ob ich das mit der StepperIOS richtig verstanden habe, ich meine diese Routine wird bei jedem Schritt aufgerufen.
Dann kann ich doch abhängig von einem Flag den Takt für den eine bzw. andern Motor erzeugen. Die Rampen werden ja dann vom System erzeugt und beide Motoren bleiben bestromt.
Hab bisher nur ein kleines Testprogramm gemacht (nur für den Oszi) aber die Takte werden erzeugt.

Solange ich immer nur einen Motor bewegen will sollte das doch funktionieren .... oder hab ich da was übersehen?

Gruß Joachim
This Message Was Entirely Written Using Recycled Electrons
This post has been edited 1-times. Last edit: 11.04.2019 - 22:18 by jomixl.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1520
Registered: 03 / 2003
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 12.04.2019 - 09:41   -  
Hallo Joachim,

ja: wie selektierst du den Motor? Dazu bräuchtest du mindestens noch eine externe Logik, die den Takt und die Richtung auf die jeweilige Endstufe schaltet. Da der Motor nicht ohne Strom sein darf, kannst du den Enable natürlich hart verdrahten.

Gruss
Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
go down go up
jomixl offline
Benutzer
Avatar
Gender: male
Location: GERMANY 
Age:
Posts: 190
Registered: 02 / 2008
Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 12.04.2019 - 11:23   -  
Hallo Harry,
ich denke es reichen die 2 Takt und 2 Dir Signale. Enable ist ständig an.
Wenn sich Motor 1 bewegen soll dann Takte ich mit Takt 1, bei Motor 2 mit Takt 2 in der
stepperIOS abhängig von einem Auswahlflag. Dir wird vorher richtig gesetzt.

... wie gesagt, bisher sieht es so aus als würde das funktionieren.
Muss vielleicht noch erwähnen dass ich den Stepperport nur als Userdevice deffiniert habe:

StepType = UserPort;

ohne Angabe der Ports.

Gruß Joachim
This Message Was Entirely Written Using Recycled Electrons
This post has been edited 1-times. Last edit: 12.04.2019 - 11:28 by jomixl.
go down go up
rh offline
Administrator
Avatar
Gender: male
Location: GERMANY  Germany
Age:
Posts: 5450
Registered: 03 / 2002
Homepage Private message
Subject: Re: AVR mit zwei Schrittmotoren ?  -  Posted: 12.04.2019 - 14:55   -  
Moin
ich denke dass das Stepper-IOS der richtige Weg ist.
rolf
Cars don't buy cars -- Autos kaufen keine Autos.
Henry Ford
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 20.06.2019 - 15:34