Arduino Motor Shield
Release status: Documentation
Description | Arduino Motor Shield
|
License | |
Author | |
Contributors | |
Based-on | [[]]
|
Categories | |
CAD Models | |
External Link |
Introductie
Het Arduino Motor Shield is gebaseerd op de L298 (datasheet), een dubbele full-bridge driver die is ontworpen om inductieve belastingen zoals relais, solenoïden, DC en stappenmotoren aan te drijven. Hiermee kunt u twee DC-motoren aandrijven met uw Arduino-bord, waarbij u de snelheid en richting van elk afzonderlijk regelt. U kunt ook de motorstroomabsorptie van elke motor meten, naast andere functies.
Power
De Arduino Motor Shield mag alleen worden gevoed door een externe voeding. Omdat de L298 IC die op het schild is gemonteerd twee afzonderlijke voedingsaansluitingen heeft, één voor de logica en één voor de motorvoedingsdriver. De vereiste motorstroom overschrijdt vaak de maximale USB-stroomclassificatie.
Externe (niet-USB) voeding kan afkomstig zijn van een AC-naar-DC-adapter (wall-wart) of batterij. De adapter kan worden aangesloten door een 2,1 mm middenpositieve stekker aan te sluiten op de arduino-aansluiting waarop het motorschild is gemonteerd of door de draden aan te sluiten die de voeding leiden naar de Vin- en GND-schroefklemmen, waarbij ervoor wordt gezorgd dat de polariteiten worden gerespecteerd.
Om mogelijke schade aan het Arduino-bord waarop het schild is gemonteerd te voorkomen, raden we aan een externe voeding te gebruiken die een spanning tussen 7 en 12V levert. Als uw motor meer dan 9V nodig heeft, raden we u aan de voedingskabels van het schild en het Arduino-bord waarop het schild is gemonteerd, te scheiden. Dit is mogelijk door de "Vin Connect" jumper aan de achterkant van het schild te knippen. De absolute limiet voor de Vin bij de schroefklemmen is 18V.
De stroompennen zijn als volgt:
- Vin op het schroefklemmenblok, is de ingangsspanning van de motor die op het schild is aangesloten. Een externe voeding die op deze pin is aangesloten, levert ook stroom aan het Arduino-bord waarop is gemonteerd. Door de "Vin Connect" jumper te knippen maak je hier een speciale power line voor de motor van.
- GND Ground op het schroefklemmenblok.
Het schild kan 2 ampère per kanaal leveren, voor een totaal van maximaal 4 ampère.
In- en uitgang
Dit schild heeft twee afzonderlijke kanalen, genaamd A en B, die elk 4 van de Arduino-pinnen gebruiken om de motor aan te drijven of te voelen. In totaal zijn er 8 pinnen in gebruik op dit schild. U kunt elk kanaal afzonderlijk gebruiken om twee DC-motoren aan te drijven of ze combineren om één bipolaire stappenmotor aan te drijven. De pinnen van het schild, verdeeld per kanaal, worden weergegeven in de onderstaande tabel:
Functie | Ch. A | Ch. B |
---|---|---|
Richting | D12 | D13 |
PWM | D3 | D11 |
Rem | D9 | D8 |
detectie | A0 | A1 |
De extra sockets op het schild worden als volgt beschreven:
Motor & Voeding
M1- | |
M1+ | |
M2- | |
M2+ | |
VM+ | |
VM- |
TWI & Tinker sockets
De extra sockets op het schild worden als volgt beschreven:
TWI'/ I2C SDA => A4 | SCL => A5 |
'Digitale I/O & PWM D5 |
'Digitale I/O & PWM D6 |
Analoog-in A2 |
Analoog-in A3 |
- 2 TinkerKit-connectoren voor twee analoge ingangen (in het wit), aangesloten op A2 en A3.
- 2 TinkerKit-connectoren voor twee Aanlog-uitgangen (in oranje in het midden), aangesloten op PWM-uitgangen op pinnen D5 en D6.
- 2 TinkerKit-connectoren voor de TWI-interface (in het wit met 4 pinnen), een voor invoer en de andere voor uitvoer.
Motor aansluiting
Geborstelde DC motor. U kunt twee geborstelde DC-motoren aandrijven door de twee draden van elk in de (+) en (-) schroefklemmen voor elk kanaal A en B aan te sluiten. Op deze manier kunt u de richting regelen door de DIR A- en DIR B-pinnen HOOG of LAAG in te stellen, u kunt de snelheid regelen door de PWM A- en PWM B-duty cycle-waarden te variëren. De rem A- en rem B-pinnen, indien hoog ingesteld, zullen de DC-motoren effectief remmen in plaats van ze te laten vertragen door het vermogen te verminderen. U kunt de stroom die door de DC-motor gaat meten door de SNS0- en SNS1-pinnen af te lezen. Op elk kanaal staat een spanning evenredig met de gemeten stroom, die kan worden afgelezen als een normale analoge ingang, via de functie analogRead() op de analoge ingang A0 en A1. Voor uw gemak is het gekalibreerd om 3,3 V te zijn wanneer het kanaal zijn maximaal mogelijke stroom levert, dat wil zeggen 2A.
Fysieke kenmerken
De maximale lengte en breedte van de Motor Shield PCB zijn respectievelijk 2,7 en 2,1 inch. Met vier schroefgaten kan het bord aan een oppervlak of behuizing worden bevestigd. Merk op dat de afstand tussen digitale pinnen 7 en 8 160 mil (0,16") is, niet eens een veelvoud van de 100 mil afstand van de andere pinnen.
Voorbeeld Code
// Definitions L298P Full Bridge to connect arduino input pins
// Init for arduino motor shield left channel
const int dirL = 12;
const int brakeL = 9;
const int pmwL = 3;
// Init for arduino motor shield right channel
const int dirR = 13;
const int brakeR = 8;
const int pmwR = 11;
//set l298p to output pins
void setup()
{
pinMode(dirL, OUTPUT);
pinMode(brakeL, OUTPUT);
pinMode(pmwL, OUTPUT);
pinMode(dirR, OUTPUT);
pinMode(brakeR, OUTPUT);
pinMode(pmwR, OUTPUT);
}
void loop()
{
// Forward
digitalWrite(dirL, LOW);
digitalWrite(dirR, HIGH);
digitalWrite(brakeL, LOW);
digitalWrite(brakeR, LOW);
analogWrite(pmwL, 255); // Sets speed variable via PWM (0-255)
analogWrite(pmwR, 255); // Sets speed variable via PWM (0-255)
delay(1000);
// Backward
digitalWrite(dirL, HIGH);
digitalWrite(dirR, LOW);
digitalWrite(brakeL, LOW);
digitalWrite(brakeR, LOW);
analogWrite(pmwL, 255); // Sets speed variable via PWM (0-255)
analogWrite(pmwR, 255); // Sets speed variable via PWM (0-255)
delay(1000);
// Turn Left
digitalWrite(dirL, HIGH);
digitalWrite(dirR, HIGH);
analogWrite(pmwL, 255); // Sets speed variable via PWM (0-255)
analogWrite(pmwR, 255); // Sets speed variable via PWM (0-255)
delay(1000);
// Turn Right
digitalWrite(dirL, LOW);
digitalWrite(dirR, LOW);
analogWrite(pmwL, 255); // Sets speed variable via PWM (0-255)
analogWrite(pmwR, 255); // Sets speed variable via PWM (0-255)
delay(1000);
// Turn Right
digitalWrite(dirL, LOW);
digitalWrite(dirR, LOW);
analogWrite(pmwL, 255); // Sets speed variable via PWM (0-255)
analogWrite(pmwR, 255); // Sets speed variable via PWM (0-255)
delay(1000);
}