- Netduino Forums
- → ATmega-Man's Content
ATmega-Man's Content
There have been 15 items by ATmega-Man (Search limited from 26-September 23)
#33450 Ethernet shield diagram help...
Posted by ATmega-Man on 11 August 2012 - 06:19 PM in General Discussion
#22941 Books/Education
Posted by ATmega-Man on 18 January 2012 - 03:14 PM in General Discussion
#22948 Books/Education
Posted by ATmega-Man on 18 January 2012 - 04:52 PM in General Discussion
#22955 Books/Education
Posted by ATmega-Man on 18 January 2012 - 06:43 PM in General Discussion
#22944 Books/Education
Posted by ATmega-Man on 18 January 2012 - 03:42 PM in General Discussion
#22946 Books/Education
Posted by ATmega-Man on 18 January 2012 - 03:54 PM in General Discussion
#24092 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 11 February 2012 - 10:40 AM in General Discussion
#24061 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 01:22 PM in General Discussion
the only issue with that is getting one that fits the tamiya dual gearbox as thats whats driving the chassis.Sounds like a plan, as I mentioned before, I did that too.
You could also get motors that match more the rest of the equipment in specifications (the H-bridge chip and the battery)
I'm also gonna bite the bullet and set this up on the Arduino and see if the issue persists. that way i'll know if its power/shield related and it will be easier to check if running one motor per H Bridge is any better
#24192 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 13 February 2012 - 08:18 PM in General Discussion
#24059 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 12:53 PM in General Discussion
#24054 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 10:34 AM in General Discussion
It's true the Netduino has only 4 PWM-ports, where Arduino has 6.
From the schematics of the shield:
With the Go-Between Shield you could re-route those PWMs if you like.
mmm, would it be worth breadboarding it to test?
#24031 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 09 February 2012 - 10:31 PM in General Discussion
I have bought an adafruit style motor shield and for some reason it seems to be suffering from a voltage drop and the L293D thats in use overheats.
Im using it with a tamiya tracked chassis and the dual motor gearbox.
The demo code I am using sends both motors through the same L293D (M3 & M4) although there are two available across 4 channels, now I think this is due to the netduinos lack of PWMs.
the code runs but the motors rapidly grind to a halt getting slower and slower, and the temp of the L293D goes through the roof.
Now i recon shifting one of the motors to the other L293D will fix the problem but I'm not sure the Netduino will let that happen due to the PWMs but as my knowledge of it is really slim im hoping im wrong.
Can anyone help me workout why this is happening and if there is an easy solution.
Im using a 6c 11.1v 5200MaH battery
Motor Shield details
Motor Shield schem
Motors (x2)
Heres the code
using System; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.Netduino; namespace MotorApp { public class Program { public sealed class MotorShield { public const Cpu.Pin PWM_0A = Pins.GPIO_PIN_D6; // M4 public const Cpu.Pin PWM_0B = Pins.GPIO_PIN_D5; // M3 private static MotorShield _instance = new MotorShield(); public static MotorShield Instance { get { return _instance; } } private OutputPort _motorLatch; private OutputPort _motorClock; private OutputPort _motorEnable; private OutputPort _motorData; internal byte LatchState = 0x00; private MotorShield() { _motorLatch = new OutputPort(Pins.GPIO_PIN_D12, false); _motorClock = new OutputPort(Pins.GPIO_PIN_D4, false); _motorEnable = new OutputPort(Pins.GPIO_PIN_D7, false); _motorData = new OutputPort(Pins.GPIO_PIN_D8, false); } internal void LatchTx() { //LATCH_PORT &= ~_BV(LATCH); _motorLatch.Write(false); //SER_PORT &= ~_BV(SER); _motorData.Write(false); for (int i = 0; i < 8; i++) { //CLK_PORT &= ~_BV(CLK); _motorClock.Write(false); int mask = (1 << (7 - i)); if ((LatchState & mask) != 0) { //SER_PORT |= _BV(SER); _motorData.Write(true); } else { //SER_PORT &= ~_BV(SER); _motorData.Write(false); } //CLK_PORT |= _BV(CLK); _motorClock.Write(true); } //LATCH_PORT |= _BV(LATCH); _motorLatch.Write(true); } } public sealed class DcMotor { private PWM _pwm; private byte _motorBitA, _motorBitB; public DcMotor(MotorHeaders header) { switch (header) { case MotorHeaders.M3: _motorBitA = (int)MotorBits.Motor3_A; _motorBitB = (int)MotorBits.Motor3_B; _pwm = new PWM(MotorShield.PWM_0B); break; case MotorHeaders.M4: _motorBitA = (int)MotorBits.Motor4_A; _motorBitB = (int)MotorBits.Motor4_B; _pwm = new PWM(MotorShield.PWM_0A); break; default: throw new InvalidOperationException("Invalid motor header specified."); } MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitA) & ~(1 << _motorBitB)); MotorShield.Instance.LatchTx(); _pwm.SetPulse(100, 0); } public void Run(MotorDirection dir) { switch (dir) { case MotorDirection.Release: MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitA)); MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitB)); break; case MotorDirection.Forward: MotorShield.Instance.LatchState |= (byte)(1 << _motorBitA); MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitB)); break; case MotorDirection.Reverse: MotorShield.Instance.LatchState &= (byte)(~(1 << _motorBitA)); MotorShield.Instance.LatchState |= (byte)(1 << _motorBitB); break; default: throw new InvalidOperationException("Invalid motor direction specified"); } MotorShield.Instance.LatchTx(); } public void SetSpeed(uint speed) { if (speed > 100) { speed = 100; } _pwm.SetDutyCycle(speed); } } public enum MotorBits { Motor4_A = 0, Motor4_B = 6, Motor3_A = 5, Motor3_B = 7 } public enum MotorDirection { Release, Forward, Reverse } public enum MotorHeaders { M3, M4 } public static void Main() { DcMotor leftWheel = new DcMotor(MotorHeaders.M4); DcMotor rightWheel = new DcMotor(MotorHeaders.M3); leftWheel.SetSpeed(0); rightWheel.SetSpeed(0); leftWheel.Run(MotorDirection.Forward); rightWheel.Run(MotorDirection.Forward); leftWheel.SetSpeed(90); rightWheel.SetSpeed(90); while (true) { leftWheel.Run(MotorDirection.Reverse); rightWheel.Run(MotorDirection.Forward); Thread.Sleep(1000); leftWheel.Run(MotorDirection.Forward); rightWheel.Run(MotorDirection.Reverse); Thread.Sleep(1000); } } } }
eternally greatful!!
#24050 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 09:33 AM in General Discussion
#24055 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 10:36 AM in General Discussion
How did you connect the motors at this moment?
I would suggest different motors. I myself used these on a 12V battery: http://www.pololu.co...og/product/2208
Because those motors don't live long on >9V, I decided not to set dutycycle higher as 75, so I wouldn't exceed 9V.
Ps. I've ordered the same shield recently, hopefully I'll get it soon. Perhaps I could help you out better if I have one as well
It has a jumper to allow either Neduino powered or external powered, so I just take the external off and set the jumper
#24057 Help - Overheating and voltage drop on motor shield
Posted by ATmega-Man on 10 February 2012 - 10:59 AM in General Discussion
- Netduino Forums
- → ATmega-Man's Content
- Privacy Policy