Stap 4: Interfacing met MegaMoto Motor Controller
De Relais kunnen worden gebruikt voor een MegaMoto motorcontroller te hebben volledige controle van 2 actuators. Het PWM-pinnen van de MegaMoto worden gebruikt om de snelheid van de bedieningssleutel beheren, de estafette kiest de richting. Elke motor vereist twee Relais richting kiezen.
Zie onze MegaMoto control board Instructable voor meer gedetailleerde informatie over de motorcontroller.
Deze setup vereist 7 pinnen op de Arduino. 2 pinnen voor PWMA en PWMB, 1 pin voor de MegaMoto Pins en 4 pins voor de 4 Relais inschakelen.
De onderstaande code zal uitbreiden een actuator, vervolgens intrekken, dan uit te breiden en intrekken van de tweede actuator.
Bedrading:
1) hechten van het schild van de MegaMoto aan de Arduino
2) 12V verbinden met de MegaMoto
3) draad van het relais boord volgens de afbeelding (gebruik estafette 1/2 voor een motor, 3/4 voor de anderen houd het simpel)
4) verbinden de motor tot de COM-verbindingen op de relays leidt. Als de motoren de verkeerde richting verplaatst, kunt u deze verbinding omkeren, of wijzigen van de pin-codes in de code (forwards1, backwards1, forwards2, backwards2)
/* Sample code for the Robot Power MegaMoto. This board can be stacked up to three times to control three motors. Modified by Progressive Automations, using the original example code from: http://www.robotpower.com/downloads Hardware: - 1 to 3 RobotPower MegaMoto control boards - Arduino Uno Wiring: -Connect the +/- of the actuator to the A/B motor channels -Connect the +/- of the power supply to the +/- BAT connections This example code is in the public domain. */ const int EnablePin1 = 8; const int PWMPinA1 = 3;//Actuator A control const int PWMPinB1 = 11;//Actuator B control const int forwards1 = 5; const int backwards1 = 4; const int forwards2 = 7; const int backwards2 = 6; void setup() { pinMode(EnablePin1, OUTPUT); pinMode(PWMPinA1, OUTPUT); pinMode(PWMPinB1, OUTPUT); pinMode(forwards1, OUTPUT); pinMode(backwards1, OUTPUT); pinMode(forwards2, OUTPUT); pinMode(backwards2, OUTPUT); motor1Speed(0);//choose speed (0-255) motor2Speed(0);//choose speed (0-255) }//end setup void loop() { digitalWrite(EnablePin1, HIGH);//enable the motor motor2Speed(0);//stop 2nd motor motor1Direction(1);//choose direction 1 = forwards 0 = backwards motor1Speed(128);//choose speed (0-255) delay(3000);//wait 3 seconds motor1Direction(0);//choose direction 1 = forwards 0 = backwards motor1Speed(128);//choose speed (0-255) delay(3000);//wait 3 seconds motor1Speed(0);//stop 1st motor motor2Direction(1);//choose direction 1 = forwards 0 = backwards motor2Speed(128);//choose speed (0-255) delay(3000);//wait 3 seconds motor2Direction(0);//choose direction 1 = forwards 0 = backwards motor2Speed(128);//choose speed (0-255) delay(3000);//wait 3 seconds }//end main loop int motor1Direction(int direct) { if (direct == 0)//if 0, go backwards { digitalWrite(forwards1, HIGH);//high deactivates relay digitalWrite(backwards1, LOW);//low activates relay }//end if else if (direct == 1) //if 1, go forwards { digitalWrite(forwards1, LOW);//low activates relay digitalWrite(backwards1, HIGH);//high deactivates relay }//end if }//end motor1Direction int motor2Direction(int direct) { if (direct == 0)//if 0, go backwards { digitalWrite(forwards2, HIGH);//high deactivates relay digitalWrite(backwards2, LOW);//low activates relay }//end if else if (direct == 1) //if 1, go forwards { digitalWrite(forwards2, LOW);//low activates relay digitalWrite(backwards2, HIGH);//high deactivates relay }//end if }//end motor2Direction int motor1Speed(int speeed) { analogWrite(PWMPinA1, speeed);//set speed of motor }//end motor1Speed int motor2Speed(int speeed) { analogWrite(PWMPinB1, speeed);//set speed of motor }//end motor2Speed