Society of Robots - Robot Forum

Electronics => Electronics => Topic started by: polar bear6 on May 01, 2012, 04:11:04 PM

Title: Understanding this motor driver, ProBot128, LM293, Schmitt Trigger
Post by: polar bear6 on May 01, 2012, 04:11:04 PM
Hello!
I`ll try to be as short as I can.
When I bought my robotkit it did not come with the microcontroller, so I bought an arduino, since I basically had a robot platform and nothing to controll it with.

The problem is that I do not understand how the motor driver works, it look simple enough until they started to mix in NAND 2-input Schmitt Triggers to controll the LM293D.

The kit DID come with schematics and some commands, but sadly no explanation of the commands, I have attached the schemetic and here is the commands they gave about motor controll:

DRIVE_INIT()
Initialises the drive. Prior to using the drive, you have to call up this routine.
DRIVE_ON()
Sets the enable input of the L293D to high. The drive is activated.
DRIVE_OFF()
Sets the enable input of the L293 to low. The drive is deactivated.
DRIVE(left as byte, right as byte)
Timer1 PWM for the drive:
values between 1 to 128 = backwards
values between 128 to 255 = forwards
Value 128 = drive stop
Motor_POWER(left as byte, right as byte)
Speed, values between 1 and 255
You first have to state the direction with MOTOR_DIR.
MOTOR_DIR(left as byte, right as byte)
States the rotation direction of the motors for the function MOTOR_POWER.
1 = forwards
0 = backwards
MOTOR_STOP()
Motor is stopped, PWM is set to 128.

and here is a overview of the schmitt trigger: http://circuits.datasheetdir.com/109/BU4093B-pinout.jpg (http://circuits.datasheetdir.com/109/BU4093B-pinout.jpg)

My question is if you don't already suspect it; how to i controll my motors via the X1_2 and X1_3 pins (see schemetic lol).
But an explanation of how the Dual input Schmitt trigger works is also greatly appreciated.

Thank you and have a nice day


***The robot kit is called ProBot128, its not very well known***
Title: Re: Understanding this motor driver, ProBot128, LM293, Schmitt Trigger
Post by: Soeren on May 01, 2012, 05:27:50 PM
Hi,

The problem is that I do not understand how the motor driver works, it look simple enough until they started to mix in NAND 2-input Schmitt Triggers to controll the LM293D.
No problem then, all four NAND gates are used as simple inverters (i.e. a "1" on the input gives a "0" on the output and v.v.).

It's set up this way to use half the number of control lines as a "1"  on X1_n will make the motor in question run in one direction and a "0" will make it run in the opposite direction.
Unfortunately, the Enable goes to both motors, so if you want to stop one motor while the other is running, you have to control it with a 50% duty cycle - a power hungry method, although it gives a better grip of the 'bot.
You could split the Enable lines into separate wires.


The kit DID come with schematics and some commands, but sadly no explanation of the commands, I have attached the schemetic and here is the commands they gave about motor controll:

DRIVE_INIT()
Initialises the drive. Prior to using the drive, you have to call up this routine.
DRIVE_ON()
Sets the enable input of the L293D to high. The drive is activated.
DRIVE_OFF()
Sets the enable input of the L293 to low. The drive is deactivated.
DRIVE(left as byte, right as byte)
Timer1 PWM for the drive:
values between 1 to 128 = backwards
values between 128 to 255 = forwards
Value 128 = drive stop
Motor_POWER(left as byte, right as byte)
Speed, values between 1 and 255
You first have to state the direction with MOTOR_DIR.
MOTOR_DIR(left as byte, right as byte)
States the rotation direction of the motors for the function MOTOR_POWER.
1 = forwards
0 = backwards
MOTOR_STOP()
Motor is stopped, PWM is set to 128.

My question is if you don't already suspect it; how to i controll my motors via the X1_2 and X1_3 pins (see schemetic lol).
But an explanation of how the Dual input Schmitt trigger works is also greatly appreciated.
As mentioned, the 4093 is coupled as 4 inverters. You can forget about the Schmitt trigger action, as it doesn't matter when driven from digital signals.
Half the gates are superfluous (a prime sign of poor design - the more fitted, the more can go wrong) and is only used to use them all, I suspect, as they have no real function. 2 small signal transistors could have replaced the entire 4093, or they could have used 2 single inverters (or a dual version), if they're that afraid of transistors.
We are not impressed ;)

Unless you're short of available lines, you could rip out the 4093 and control the
L293D directly, but then you cannot use the lib s they provided of course.

The commands are rather self explanatory. You'll have to reread the commands and then test them out.



admin edit: flame content removed
Title: Re: Understanding this motor driver, ProBot128, LM293, Schmitt Trigger
Post by: Pogertt on May 02, 2012, 10:17:32 AM
@Soren

Half the gates are superfluous (a prime sign of poor design - the more fitted, the more can go wrong) and is only used to use them all, I suspect, as they have no real function.





admin edit: flame content removed