Wednesday, April 29, 2020

Controlling the bipolar stepper motor with ATMega32

Controlling the bi-polar stepper motor with ATMega32 Bipolar stepper motor give more precise stepping angle and higher torque. But the driving method is more difficult than the unipolar stepper motor.

Bipolar stepper motor (Model 42BYGH34-0400A)  with 1.8 degree step angle.

It is made of two distinct coils, but each coil is separated a much as possible around the rotor, to make stepping angle much smaller.


Diagram of common bipolar stepper motor.
This motor come from the Chinese company as shown in the picture above.

To make it step look at the time diagram below:

Timing Diagram for stepping clock wise and counter clock wise

Difference bipolar stepper motor has difference stepping angle. We can check its spec before use.

The example below just like the previous example. I use a switch connects to PD7 to control the stepping direction of the bipolar stepper motor.

A bipolar stepper motor connects to PORTC. PD7 is used for controlling
the direction.

Source code:

#include <avr/io.h>
#define F_CPU 16000000UL
#include "util/delay.h"
#define stepTime 100
//clock wise stepping
void stepCW(){
 PORTC=0b00001100;
 _delay_ms(stepTime);
 PORTC=0b00000110;
 _delay_ms(stepTime); 
 PORTC=0b00000011;
 _delay_ms(stepTime);
 PORTC=0b00001001;
 _delay_ms(stepTime);
}
//counter clock wise stepping
void stepCCW(){
 PORTC=0b00001001;
 _delay_ms(stepTime);
 PORTC=0b00000011;
 _delay_ms(stepTime);
 PORTC=0b00000110;
 _delay_ms(stepTime);
 PORTC=0b00001100;
 _delay_ms(stepTime);
}
int main(void)
{
    DDRC=0xFF;
 DDRD=0x7F;
 PORTD=0x80;
    while (1) 
    {
 if((PIND&0xFE)==0) stepCW();
 else stepCCW();
    }
}
Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.

No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)