Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:examples:motor:stepper [2015/11/12 08:35] heikopikneren:examples:motor:stepper [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Stepper motor ====== ====== Stepper motor ======
  
-//Necessary knowledge: [HW] [[en:hardware:homelab:motor]], [AVR] [[en:avr:io]], [LIB] [[en:software:homelab:library:module:motor]]//+//Necessary knowledge:  
 +[HW] [[en:hardware:homelab:combo]],  
 +[AVR] [[en:avr:io]],  
 +[LIB] [[en:software:homelab:library:module:motor]], \\ 
 +[LIB] [[en:software:homelab:library:delay]]//
  
 ===== Theory ===== ===== Theory =====
Line 48: Line 52:
  
 ===== Practice ===== ===== Practice =====
 +The Combo Module has a H-bridges to control bipolar stepper motors and the transistor matrix for unipolar stepper motor.
  
-The goal of this exercise is to start a bipolar stepper motor, which can be replaced by unipolar stepper motor using the above described method. There are drivers, on the board of motors, which must be controlled via four input pins by the microcontroller. Each pin represents the polarity of one end of a winding.  The voltage of the end of the winding is positive if the pin is high and negative if the pin is low. To the ends 1A, 1B, 2A and 2B correspond the pins of the microcontroller PB0, PB1, PB2 and PB3. +There are functions //bipolar_init// and //unipolar_init// in the library of the HomeLab which sets the pins as output and functions //bipolar_halfstep// and //unipolar_halfstep// executes revolving by determined half steps. The commutation is done by the table of half steps, but more complex bit operations are used. Unipolar stepper motor is connected to a separate connector //Unipolar Stepper//, bipolar stepper motor is connected to a DC motor connector, where one of the bipolar motor occupies driver pins of two DC motor. The following code section is HomeLab II (ATmega2561) library functions.
- +
-There is function //bipolar_init// in the library of the HomeLab for controlling the bipolar stepper motors setting the pins as output and function //bipolar_halfstep// executes revolving by determined half steps. The commutation is done by the table of half steps, but more complex bit operations are used.    +
  
 <code c> <code c>
-// +// Preparing for controlling the bipolar stepper motor
-// Preparing for controlling the bipolar stepper motor+
-//+
 void bipolar_init(void) void bipolar_init(void)
 { {
Line 64: Line 64:
 } }
  
-// +// Moving the bipolar stepper motor by half steps
-// Moving the bipolar stepper motor by half steps+
-//+
 void bipolar_halfstep(signed char dir, void bipolar_halfstep(signed char dir,
  unsigned short num_steps, unsigned char speed)  unsigned short num_steps, unsigned char speed)
Line 82: Line 80:
  state2 += dir;  state2 += dir;
  
- // Creating the pattern.+ // Creating the pattern
  pattern = (1 << ( (state1 % 8) >> 1) ) |  pattern = (1 << ( (state1 % 8) >> 1) ) |
            (1 << ( (state2 % 8) >> 1) );            (1 << ( (state2 % 8) >> 1) );
Line 89: Line 87:
  PORTB = (PORTB & 0xF0) | (pattern & 0x0F);  PORTB = (PORTB & 0xF0) | (pattern & 0x0F);
  
- // Taking a break to wait for executing the step.+ // Taking a break to wait for executing the step
  sw_delay_ms(speed);  sw_delay_ms(speed);
  }  }
  
- // Stopping the motor.+ // Stopping the motor
  PORTB &= 0xF0;  PORTB &= 0xF0;
 } }
Line 101: Line 99:
  
 <code c> <code c>
-// +// The test program for the stepper motor of the HomeLab
-// The test program for the bipolar stepper motor of the motor'+
-//module of the HomeLab+
-//+
 #include <homelab/module/motors.h> #include <homelab/module/motors.h>
  
Line 110: Line 105:
 int main(void) int main(void)
 { {
- // Set up of the motor. + // Set up of the motor 
- bipolar_init();+ unipolar_init(0);
   
- // Endless loop.+ // Endless loop
  while (true)  while (true)
  {  {
  // Turning the rotor 200 half steps to one direction   // Turning the rotor 200 half steps to one direction 
  // at speed of 30 ms/step.  // at speed of 30 ms/step.
- bipolar_halfstep(+1, 200, 30);+ unipolar_halfstep(0,+1, 2000, 30);
  
  // Turning 200 half steps to the other direction   // Turning 200 half steps to the other direction 
  // at speed 30 ms/step.  // at speed 30 ms/step.
- bipolar_halfstep(-1, 200, 30);+ unipolar_halfstep(0,-1, 2000, 30);
  }  }
 } }
 </code> </code>
en/examples/motor/stepper.1447317333.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0