Aaron's Homepage Forum
Aaron's Homepage Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Electronics
 Basic Electronics
 Problems about Controlling DC motor

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

   Insert an Image File (GIF, JPG, JPEG, BMP, ZIP, PNG)

   

T O P I C    R E V I E W
milk1995 Posted - Aug 23 2017 : 04:16:36 AM
Greetings~
I am confusing about controlling DC motor by L298N. My program is as following:
#include <reg51.h>
#define uchar unsigned char 
#define uint unsigned int
sbit ENA=P1^2;
sbit IN1=P1^3;
sbit IN2=P1^4;
sbit ENB=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;

uint MA=0;  
uint speedA=50;
int flag=0;

void timeinit()
{
    TMOD=0x01;
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    EA=1;
    ET0=1;
    TR0=1;
}

void Ques1()
{
    switch(flag/10)
    {
        case 0: TR0=0;
                        if(MA<speedA)
                        {
                                ENA=1;ENB=1;
                                IN1=1;IN2=0;
                                IN3=0;IN4=1;
                        }
                        else
                        {
                            if(speedA<=MA<100) 
                            {
                                    ENA=0;
                                    ENB=0;
                            }
                            else   
                            {
                                    MA=0;   
                                    flag++;                                                                     
                            }                           
                        }
                        TR0=1;
                        break;
        case 1: TR0=0;
                        if(MA<speedA)
                        {
                                ENA=1;ENB=1;
                                IN1=0;IN2=1;
                                IN3=1;IN4=0;
                        }
                        else
                        {
                            if(speedA<=MA<100) 
                            {
                                    ENA=0;
                                    ENB=0;  
                            }
                            else
                            {
                                    MA=0;   
                                    flag++;                             
                            }   
                        }
                      TR0=1;
                        break;
        default : flag=0;
                            break;
    }
}

void time0() interrupt 1
{
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    MA++;   
}

void main()
{   
    timeinit();
    while(1)
    {
        Ques1();
    }
}
This is the datasheet of L298N: http://www.kynix.com/uploadfiles/pdf9675/L298N.pdf .
Why can’t this program control positive and negative rotation of motor at the same time. Now my question is the motor controlled by IN1 and IN2 work after pressing RESET,and the motor controlled by IN3 and IN4 will stop rotating after 5 seconds. Why? ? #65311;
Your help will be appreciated!
1   L A T E S T    R E P L I E S    (Newest First)
Aaron Cake Posted - Aug 24 2017 : 09:03:48 AM
What microcontroller is this for?

You can't rotate a motor positive and negative at the same time. That would just lock the shaft.

Aaron's Homepage Forum © 1995-2020 AARONCAKE.NET Go To Top Of Page
This page was generated in 0.05 seconds. Snitz Forums 2000