Challenge

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

!.AIM: Your Answers Implement 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. Goals: Implement a system on simulator for Controlling the DC motor using L293 motor driver. Displaying the running status of DC motor AIM: Your Answers Implement 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. Goals: Implement a system on simulator for Controlling the DC motor using L293 motor driver. Displaying the running status of DC motor on the LCD display. Key Highlights of the Project: 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 Deliverables of this project: Implement the system for controlling DC motor. Controlling the speed of the DC motor using PMW. Displaying the present running status of DC machine on LCD display. code: #include avr //preprocessor directive #define F_CPU 16000000ul #include "avr/interrupt.h"//Preprocessor directive of an avr interrupt #include #define sw_dir (PIND&(1<<1)) #define sw_spd (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); //Masking 4 bits for 4 bit LCD mode// RS_low;//reset EN_low;//enable _delay_ms(1); EN_high;//enable high lcd_port=((cmd<<4)&(0xf0)); RS_low; EN_low; _delay_ms(1); EN_high; } void lcd_data(char data)//void of lcd delay { lcd_port=(data &0xf0); //masking 4 bits for bit LCD mode// RS_high;//reset high EN_low;//enable 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(0x02);_delay_ms(5); //return the cursor to home// lcd_cmd(0x01);_delay_ms(5); //clear screen // lcd_cmd(0x0C);_delay_ms(5); //display ON cursor OFF// lcd_cmd(0x06);_delay_ms(5); //increment cursor// lcd_cmd(0x80);_delay_ms(5); //force cursor to begin 1st line // lcd_cmd(0x28);_delay_ms(5); //used for 4 bits lcd mode // } void lcd_out(char x, char y, char *str) { cursorpos(x,y);//cursor pay of x,y while (*str)//while string pointer { lcd_data(*str); str++; } } void cursorpos(char x, char y) { if ((x<1||x>2)||(y>16)||(y<1))//execution of if loop { x=1;//initialising x=1 y=1;//initialising y=1 } if (x==1) { lcd_cmd(0x7f+y); } else { lcd_cmd(0xBF+y); } } int main()//execution of main function { DDRB=0xFF;//datadirective register Bb is enabled DDRA|=((1<<0)|(1<<1));port 0 and 1 is enabled DDRD&=~(1<<1);//port D1 is reest  DDRD&=~(1<<2); DDRD|=(1<<5); DDRD|=(1<<6); DDRC&=~(1<<3); PORTD|=(1<<2); PORTC|=(1<<3); i=64; TCCR0=0X61; GICR=(1<
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.