Challenge

Project 1 - Controlling a DC motor using PWM and monitoring its Running status

mplement a system on the simulator for controlling a DC motor using L293 motor driver, monitor its status and print the running status of motor on the LCD Display.

  • The DC motor can be controlled by using L293 motor driver.
  • The speed of a DC motor can be controlled by varying its input voltage, for doing this is to use PWM (Pulse Width Modulation).
  • L293D IC is a typical Motor Driver IC which allows the DC motor to drive on any direction.

code -

#include 
#define F_CPU 16000000L 
#include "avr/interrupt.h" 
#include  
#define sw_dir (PIND&(1<<1)) 
#define sw_dspd (PIND&(1<<2)) 
#define pw (PINC&(1<<3))

#define lcd_port PORTB 
#define RS_high PORTD|=(1<<5) 
#define RS_low PORTD&=~(1<<5) 
#define EN_high PORTD|=(1<<6) 
#define EN_low PORTD&=~(1<<6) 
unsigned char i; 

void lcd_cmd(char cmd) 
{
	lcd_port=(cmd&0xf0); 
	RS_low; 
	EN_low; 
	_delay_ms(1); 
	EN_high; 
	lcd_port=((cmd<<4)&(0xf0)); 
	RS_low; 
	EN_low; 
	_delay_ms(1); 
	EN_high; 
}

void lcd_data(char data) 
{
	lcd_port=(data & 0xf0); 
	RS_high; 
	EN_low; 
	_delay_ms(1); 
	EN_high; 
	lcd_port=((data<<4)&(0xf0)); 
	RS_high; 
	EN_low; 
	_delay_ms(1); 
	EN_high; 
}

void lcd_init() 
{
	lcd_cmd(0x28);_delay_ms(5); 
	lcd_cmd(0x02);_delay_ms(5); 
	lcd_cmd(0x01);_delay_ms(5); 
	lcd_cmd(0x0C);_delay_ms(5); 
	lcd_cmd(0x06);_delay_ms(5); 
	lcd_cmd(0x80);_delay_ms(5); 
}

void cursorpos(char x, char y)
{
	if ((x<1||x>2)||(y>16)||(y<1)) 
	{
		x=1; 
		y=1; 
	}
	if (x==1)
	{
		lcd_cmd(0x7f+y); 
	}
	else
	{
		lcd_cmd(0xBF+y); 
	}
}

void lcd_out(char x, char y, char *str) 
{
	cursorpos(x,y); 
	while (*str) 
	{
		lcd_data(*str); 
		str++; 
	}
}

int main() 
{
	DDRB=0xFF; 
	DDRA|=((1<<0)|(1<<1)); 
	DDRD&=~(1<<1); 
	DDRD&=~(1<<2); 
	DDRD|=(1<<5); 
	DDRD|=(1<<6); 
	DDRC&=~(1<<3); 
	PORTD|=(1<<2); 
	PORTC|=(1<<3); 
	i=64; 
	TCCR0=0X61; 
	GICR=(1<

motor run clockwise -

motor run anticlockwise -

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.