L298 PWM Problem

Dear all;

I try to move 2 motor with L298N motor driver card and MSP430G2553. I tried some basic codes, but right motor does not work. When I give energy to right motor can move. So, problem is not in motor. But, when I tried to move both motors only one motor can move (the motor that is driven by IN1 and IN2. I added code to below. I can not find my error. Could you help me please?

#include

int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ; P1DIR |= BIT6; //Set pin 1.6 to the output direction. P1SEL |= BIT6; //Select pin 1.6 as our PWM output. TA0CCR0 = 255; //Set the period in the Timer A0 Capture/Compare 0 register to 255

TA0CCTL1 = OUTMOD_7; TA0CCR1 = 255; TA0CTL = TASSEL_2 + MC_1; //TASSEL_2 selects SMCLK as the clock source, and MC_1 tells it to count up to the value in TA0CCR0.

P1DIR|=BIT1+BIT2+BIT3+BIT4; P1OUT|=BIT1+BIT3; P1OUT&=~(BIT2+BIT4);

} BIT1=IN1; BIT2=IN2; BIT3.=IN3; BIT5=IN4;

Both enable pins are connected P1.6 PWM output. I hope you can provide information. Regards.

--------------------------------------- Posted through

formatting link

Reply to
engineergc
Loading thread data ...

MSP430G2553. I tried some codes, but right motor does not work. When I give direct energy from a supply to right motor without using motor driver or micrroprocessor it can turn. So, problem is not in motor. But, when I tried

can turn (the motor that is driven by IN1 and IN2. I added code to below. I can not find my error. Could you

0

--------------------------------------- Posted through

formatting link

Reply to
engineergc

(Code clipped, TV)

  1. It does not speed up a response to send the same question multiple times. It may annoy potential responders.

  1. There is no way to answer to your questions without the schematic diagrams of the electronics.

  2. This has a strong smell of homework / school project. Is it?
--

-TV
Reply to
Tauno Voipio

Indeed.

Or at least a pin-by-pin description of the signals you're sending out, including the frequency of the PWM signal.

--
Tim Wescott 
Control systems, embedded software and circuit design 
I'm looking for work!  See my website if you're interested 
http://www.wescottdesign.com
Reply to
Tim Wescott

IIRC the L298 is a fairly slow device -- how fast is your PWM?

--
Tim Wescott 
Control systems, embedded software and circuit design 
I'm looking for work!  See my website if you're interested 
http://www.wescottdesign.com
Reply to
Tim Wescott

Have you read the datasheet and application notes at ?

--

-TV
Reply to
Tauno Voipio

energy

tried

by

I read datasheet many times. But I can not find problem.

--------------------------------------- Posted through

formatting link

Reply to
engineergc

when

is

error.

Hi Tim,

I send same question two time because edit option is not exist. In first time I made some gramer mistakes therefore I wanted to correct them, since edit option is not available I added fixed form of my question as comment.

I draw pin connections by using Fritzing program. but I can not add it to here. How I can add my schematic to here?

Since I can not add schematic I made pin connections description below.

P1.1>>IN1 P1.2>>IN2 P1.3>>IN3 P1.4>>IN4 P1.6>>ENA&ENB(I connected pwm output to both ENA and ENB pins of L298 motor driver card.

Also Motor outputs are connected to OUT1,OUT2,OUT3 and OUT4 connectors as respectively.

Then, GND of MSP430 and gnd of 9V battery are connected to GND connector of L298.

By using this code or another code I can not turn both motor simultaneously.Only one motor can turn.

***SECOND CODE*** Also I tried many another codes. I added one of them to below. In this code I adjusted frequency of motor as 20 khz. If frequency is equal to 20 khz, period of motor is equal to T=1/f=1/20000 50us. I used clock source as SMCLK. SMCLK is supplied from DC0 and DCO is adjusted to 1MHZ. Therefore I write TA0CCRO=50 and I adjusted TA0CCR1=30.

#include

int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ;

P1DIR |=BIT2; //PWM output P1SEL |=BIT2;

TA0CCR0 = 50; TA0CCTL1 = OUTMOD_7; TA0CCR1 = 30; TA0CTL = TASSEL_2 + MC_1;

P1DIR |=(BIT1+BIT3); while(1) { P1OUT &=~(BIT1); P1OUT|=(BIT3); } }

Then I made pin connections. P1.2>>ENA P1.1>>IN1 P1.3>>IN2 This code can turn motor(motor that connected to OUT1 and OUT2) as fastly. But if I try to turn other motor with this code, motor can not turn.

I connected to pwm output P1.2 to ENB and P1.1 to IN3 and P1.3 to IN4. I spend many time to find my error. Why I can not turn 2 motors simultaneously with PWM? Where is my fault? Could you help me please?

--------------------------------------- Posted through

formatting link

Reply to
engineergc

you

Hi; I send same question two time because edit option is not exist. In first time I made some gramer mistakes therefore I wanted to correct them, since edit option is not available I added fixed form of my question as comment.

I draw pin connections by using Fritzing program. but I can not add it to here. How I can add my schematic to here?

Since I can not add schematic I made pin connections description below.

P1.1>>IN1 P1.2>>IN2 P1.3>>IN3 P1.4>>IN4 P1.6>>ENA&ENB(I connected pwm output to both ENA and ENB pins of L298 motor driver card.

Also Motor outputs are connected to OUT1,OUT2,OUT3 and OUT4 connectors as respectively.

Then, GND of MSP430 and gnd of 9V battery are connected to GND connector of L298.

By using this code or another code I can not turn both motor simultaneously.Only one motor can turn.

***SECOND CODE*** Also I tried many another codes. I added one of them to below. In this code I adjusted frequency of motor as 20 khz. If frequency is equal to 20 khz, period of motor is equal to T=1/f=1/20000 50us. I used clock source as SMCLK. SMCLK is supplied from DC0 and DCO is adjusted to 1MHZ. Therefore I write TA0CCRO=50 and I adjusted TA0CCR1=30.

#include

int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer DCOCTL=CALDCO_1MHZ; BCSCTL1=CALBC1_1MHZ;

P1DIR |=BIT2; //PWM output P1SEL |=BIT2;

TA0CCR0 = 50; TA0CCTL1 = OUTMOD_7; TA0CCR1 = 30; TA0CTL = TASSEL_2 + MC_1;

P1DIR |=(BIT1+BIT3); while(1) { P1OUT &=~(BIT1); P1OUT|=(BIT3); } }

Then I made pin connections. P1.2>>ENA P1.1>>IN1 P1.3>>IN2 This code can turn motor(motor that connected to OUT1 and OUT2) as fastly. But if I try to turn other motor with this code, motor can not turn.

I connected to pwm output P1.2 to ENB and P1.1 to IN3 and P1.3 to IN4. I spend many time to find my error. Why I can not turn 2 motors simultaneously with PWM? Where is my fault? Could you help me please?

--------------------------------------- Posted through

formatting link

Reply to
engineergc

  1. Are you attempting to run two motors and the processor from a single 9V battery (IEC 6F22)?
  2. Have you noticed that the MSP processor has to have an output high voltage at most L298 voltage feed - 2.5V?
--

-TV
Reply to
Tauno Voipio

as

connector

I am feeding msp430 from computer via USB and I fed two motors with single

9V battery from L298 +12V connector.

--------------------------------------- Posted through

formatting link

Reply to
engineergc

as

connector

I fed MSP430 from computer via USB and I fed two motors from single 9V battery.

--------------------------------------- Posted through

formatting link

Reply to
engineergc

The IEC 6F22 battery is probably too small to run even a single motor reliably, lest two. Have you tried to run both motors together from the single battery at the same time?

--

-TV
Reply to
Tauno Voipio

(Tauno means without the chip, BTW -- just running two motors in parallel straight off the battery).

--
Tim Wescott 
Control systems, embedded software and circuit design 
I'm looking for work!  See my website if you're interested 
http://www.wescottdesign.com
Reply to
Tim Wescott

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.