Tutorial No.: 4 Tutorial Name: DC-Motor Control
Tutorial No.: 4 Tutorial Name: DC-Motor Control
: 4
Tutorial Name: DC-Motor control
Content: page
1. Bill of Materials --------------------------------------------------- 3
2. Circuit connection------------------------------------------------- 4
2.1 Proteus components------------------------------------------4
3. Code----------------------------------------------------------------- 5
1-Bill of Materials:
# Name Quantity
1 ATmega16A-pu 40pin 1
2 Crystal Oscillator 8MHz 1
3 Resistance 10K 1
4 22pF Capacitor 2
5 DC-Motor 12V 1
6 L293D Motor driver (H-birdge) 1
2- Circuit Connection:
2.1 Proteus components:
1. ATmega16.
2. Resistance.
3. Capacitor.
4. Crystal.
5. Motor.
6. L293D motor driver.
3- Code:
#ifndef F_CPU
#define F_CPU 8000000UL // "set the clock to 8MHz"
#endif
#include <avr/io.h> //io.h is AVR ports Header file
#include <util/delay.h> //delay.h is Delay Function Header file
#include <avr/iom16.h> //iom16.h is atmega16 ports Header file
int main(void)
{
DDRC=0xff; // SET ALL PORTC pins as Output
PORTC=0x00; // Initialize PORTC to zero
while(1)
{
//Motor 'M1' control -------------------------------------------------------------
PORTC=(1<<PC0)|(0<<PC1); //Apply '1' on pin0 and '0' on pin1
_delay_ms(100); //Which make the motor "M1" rotate counter-clock wise
PORTC=(1<<PC0)|(1<<PC1); //Apply '1' on pin0 and '1' on pin1
_delay_ms(100); //Which make the motor "M1" stop rotating
PORTC=(0<<PC0)|(1<<PC1); //Apply '0' on pin0 and '1' on pin1
_delay_ms(100); //Which make the motor "M1" rotate clock wise
PORTC=(0<<PC0)|(0<<PC1); //Apply '0' on pin0 and '0' on pin1
_delay_ms(100); //Which make the motor "M1" stop rotating
//Motor 'M2' control--------------------------------------------------------------
PORTC=(1<<PC5)|(0<<PC6); //Apply '1' on pin5 and '0' on pin6
_delay_ms(100); //Which make the motor "M1" rotate clock wise
PORTC=(1<<PC5)|(1<<PC6); //Apply '1' on pin5 and '1' on pin6
_delay_ms(100); //Which make the motor "M1" stop rotating
PORTC=(0<<PC5)|(1<<PC6); //Apply '0' on pin5 and '1' on pin6
_delay_ms(100); //Which make the motor "M1" rotate counter-clock wise
PORTC=(0<<PC5)|(0<<PC6); //Apply '0' on pin5 and '0' on pin6
_delay_ms(100); //Which make the motor "M1" stop rotating
}
}