Netduino TankBot
#1
Posted 07 October 2010 - 08:21 PM
#2
Posted 07 October 2010 - 10:04 PM
#3
Posted 07 October 2010 - 10:28 PM
probably motors, and maybe servos if I get to expand the project a little. so it is possible to get the motor shield from adafruit to work? and you know of other ones then I'd be glad to take a look at those too.Oz,
Do you want to use a motor (variable speed) or a servo (precise precision)?
Most of the shields should work fine--although you only have 4 hardware PWM instead of 6. [But they're 16-bit instead of 8-bit, so that's a bonus.] So just make sure that the motors/servo connections you want to control are on the "middle 4" of the PWM pins.
BTW, it's possible to create software PWM for 1-2 pins pretty easily...to match the six PWMs on the Arduino.
Chris
#4
Posted 07 October 2010 - 10:36 PM
#5
Posted 08 October 2010 - 07:07 PM
Here is a simple class that I wrote to interface to the chip:
using System; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.Netduino; namespace AJB_NetMF_Classes { public class AjbMotorTB6612FNG { private PWM _motor1; private uint _motor1Speed = 0; private OutputPort _motor1PinA; private OutputPort _motor1PinB; private MotorDirection _motor1Direction; private PWM _motor2; private uint _motor2Speed = 0; private OutputPort _motor2PinA; private OutputPort _motor2PinB; private MotorDirection _motor2Direction; private bool _usingBothMotors = false; private bool _isDisposed = false; public enum MotorDirection { Forward, Reverse, Stop } public uint Motor1Speed { get { return _motor1Speed; } set { if ((value <= 100) && (value >= 0)) _motor1Speed = value; _motor1.SetDutyCycle(_motor1Speed); } } public uint Motor2Speed { get { return _motor2Speed; } set { if ((value <= 100) && (value >= 0)) _motor2Speed = value; _motor2.SetDutyCycle(_motor2Speed); } } public MotorDirection Motor1Direction { get { return _motor1Direction; } set { switch (value) { case MotorDirection.Forward: _motor1Direction = MotorDirection.Forward; _motor1PinA.Write(false); _motor1PinB.Write(true); break; case MotorDirection.Reverse: _motor1Direction = MotorDirection.Reverse; _motor1PinA.Write(true); _motor1PinB.Write(false); break; case MotorDirection.Stop: _motor1Direction = MotorDirection.Stop; _motor1PinA.Write(false); _motor1PinB.Write(false); break; } } } public MotorDirection Motor2Direction { get { return _motor2Direction; } set { switch (value) { case MotorDirection.Forward: _motor2Direction = MotorDirection.Forward; _motor2PinA.Write(false); _motor2PinB.Write(true); break; case MotorDirection.Reverse: _motor2Direction = MotorDirection.Reverse; _motor2PinA.Write(true); _motor2PinB.Write(false); break; case MotorDirection.Stop: _motor2Direction = MotorDirection.Stop; _motor2PinA.Write(false); _motor2PinB.Write(false); break; } } } // Construtor for a single motor public AjbMotorTB6612FNG(Cpu.Pin motor1Pwm, Cpu.Pin motor1DirectionA, Cpu.Pin motor1DirectionB) { _motor1PinA = new OutputPort(motor1DirectionA, false); _motor1PinB = new OutputPort(motor1DirectionB, false); _motor1 = new PWM(motor1Pwm); _motor1.SetDutyCycle(_motor1Speed); } // Construtor for dual motors public AjbMotorTB6612FNG(Cpu.Pin motor1Pwm, Cpu.Pin motor1DirectionA, Cpu.Pin motor1DirectionB, Cpu.Pin motor2Pwm, Cpu.Pin motor2DirectionA, Cpu.Pin motor2DirectionB) { _motor1PinA = new OutputPort(motor1DirectionA, false); _motor1PinB = new OutputPort(motor1DirectionB, false); _motor2PinA = new OutputPort(motor2DirectionA, false); _motor2PinB = new OutputPort(motor2DirectionB, false); _motor1 = new PWM(motor1Pwm); _motor2 = new PWM(motor2Pwm); _usingBothMotors = true; } public void Dispose() { this.Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (!_isDisposed) { _motor1PinA.Write(false); _motor1PinB.Write(false); _motor1.SetDutyCycle(0); if (_usingBothMotors) { _motor2PinA.Write(false); _motor2PinB.Write(false); _motor2.SetDutyCycle(0); } _isDisposed = true; } } ~AjbMotorTB6612FNG() { this.Dispose(false); } } }
And here is how you would use it:
AjbMotorTB6612FNG motors = new AjbMotorTB6612FNG(Pins.GPIO_PIN_D5, Pins.GPIO_PIN_D11, Pins.GPIO_PIN_D12); motors.Motor1Direction = AjbMotorTB6612FNG.MotorDirection.Forward; motors.Motor1Speed = 10; // Set the motor to 10% speed
#6
Posted 09 October 2010 - 12:30 AM
#7
Posted 09 October 2010 - 02:55 AM
#8
Posted 09 October 2010 - 03:04 AM
Hi oz,
We'll look at writing a driver, but it'll be a bit before we can get to it... For most motor and servo control, you'll just use PWM--but there may be a special "motor control IC" on there which requires SPI/I2C communication...
Chris
Alright thanks for the heads up, I'll make sure I read the specs carefully before I buy.
#9
Posted 09 October 2010 - 06:51 AM
I've decided on the Adafruit shield since it's not too pricey and can drive enough motors.
Two suggestions after a quick glance at the product page...
Since the product comes as a kit and soldering is involved anyway, I would suggest that you solder on sockets under the L293D's in case of disaster (which can happen quite easily with motors), that way you can replace the IC's very easily.
If you have the few extra dollars, I would look at purchasing a couple of SN754410 chips as they are a drop-in replacement of the 293D but instead of the 600mA current they can drive up to 1000mA (almost double that of a L293D's sustained and max currents).
Hope that helps...
#10
Posted 09 October 2010 - 03:24 PM
Two suggestions after a quick glance at the product page...
Since the product comes as a kit and soldering is involved anyway, I would suggest that you solder on sockets under the L293D's in case of disaster (which can happen quite easily with motors), that way you can replace the IC's very easily.
If you have the few extra dollars, I would look at purchasing a couple of SN754410 chips as they are a drop-in replacement of the 293D but instead of the 600mA current they can drive up to 1000mA (almost double that of a L293D's sustained and max currents).
Hope that helps...
I realized that I have to solder now.... I dont have a good soldering Iron, that might put a hold on ordering that. Anyways thanks for the suggestions, I'll get the sockets at least.
#11
Posted 10 October 2010 - 01:54 AM
The Adafruit shield should work fine--and the DFRobot shield should work fine too. But perhaps someone else here has a motor shield and can pitch in...
Chris
I fell in love with this... http://www.sparkfun....products_id=315
I feel like it would teach me SOOO much if I wire it up myself. Also its made by TI and I love my TI-84 Plus SE, it helps in trig class
I like so much because its perfect for: http://www.sparkfun....products_id=319 and that would make a sweet car for my project.
After that I can mount some sensors and programm it up.
What do you think?
EDIT:
I found this video... its exatly what I want to do. I am glad I found it cuz it gave me an idea of how big the thing is:
#12
Posted 10 October 2010 - 10:47 AM
#13
Posted 10 October 2010 - 02:21 PM
That looks very cool, oz. Just make sure that your H-Bridge drivers will recognize 3.3V TTL signals and you should be good to go...
Chris
I amot reall sure what that mean :| but the data sheet is here: http://www.sparkfun....IC/SN754410.pdf
and here is some info from it
[qoute]
recommended operating conditions
MIN MAX UNIT
Output supply voltage, VCC1 4.5 5.5 V
Output supply voltage, VCC2 4.5 36 V
High-level input voltage, VIH 2 5.5 V
Low-level input voltage, VIL –0.3‡ 0.8 V
Operating virtual junction temperature, TJ –40 125 °C
Operating free-air temperature, TA –40 85 °C
[/qoute]
So I'll probably need lots of help figuring out how to use it, or I might figure it out after reading the datasheet OVER and OVER again. At least when I print that data sheet and brign it to my teacher she'll be happy that I'm trying to do something challenging
#14
Posted 10 October 2010 - 02:42 PM
#15
Posted 10 October 2010 - 03:06 PM
great! thanks for the help... How do you think this will do in a science fair? My teacher said not many people are doing the computer science section.It looks like 2-5.5V input is supported--so you should be fine.
Chris
#16
Posted 10 October 2010 - 03:15 PM
great! thanks for the help... How do you think this will do in a science fair? My teacher said not many people are doing the computer science section.
Hopefully it'll do awesome at the science fair...but I don't really know what people are building for science fairs these days.
#17
Posted 10 October 2010 - 03:21 PM
Hopefully it'll do awesome at the science fair...but I don't really know what people are building for science fairs these days.
Thats true, there no way to know...
I am right on the confirm order page and I just thought about something... Will that little chip fit on a breadboard? i have the half-size breadboard from adafruit (http://www.adafruit....&products_id=64). I need to figure that out, if you can before I do, please tell me.
Oh this might not be good... "Capable of driving high voltage motors using TTL 5V logic levels" it says right on the product page.
EDIT:
So it LOOKS like it will fit on a breadboard. but I'll email them and ask.
"Capable of driving high voltage motors using TTL 5V logic levels" I guess capable means it is possible but not neccesary tp use 5V, again I'll ask.
#18
Posted 10 October 2010 - 03:32 PM
Oh this might not be good... "Capable of driving high voltage motors using TTL 5V logic levels" it says right on the product page.
I'd drop the reseller or manufacturer a line and double-check with them... They should also be able to advise you on size, breadboards, etc.
Chris
#19
Posted 10 October 2010 - 07:14 PM
I'd drop the reseller or manufacturer a line and double-check with them... They should also be able to advise you on size, breadboards, etc.
Chris
well I emailed them about the TTL and breadboard. i scaled the pictures of breadboard and the chip, and they fit. I also saw another video which had the chip on a breadboard. Now I just need the people to get back to me about the TTL thing
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users