Stap 8: Adafruit to the Rescue!
Voordat we verder gaan overwegen kunt u het solderen van een condensator op de servo controller boord te koppelen of stabiliseren van de krachtbron. Het is ook verstandig om te gebruiken afzonderlijke voedingsbronnen voor de servo's en de Arduino of loskoppelen/stabiliseren van de macht aan de Arduino geleverd. Ontkoppeling is een mooie manier om te zeggen dat u moet toevoegen van een condensator tussen de spanningsbron (VCC) en de grond (GND). De grootte van de condensator is afhankelijk van uw bron van macht, hoe goed het kan houden met schommeling stromingen en het item dat u zijn ontkoppeling. Raadpleeg de almachtige Google voor meer informatie. Tot slot, als u van elektrolytische gebruikmaakt caps (metaal kan caps) Zorg ervoor om te kijken naar de PCB om de polariteit correct.
Een kleine opfriscursus op het servo-signaal:
Frequentie is 50Hz dus 1 seconde / 50 = 20 milliseconden (ms) periodes
1ms basis pulse is de laag signaal, 0 graden of volledige omgekeerde een continue rotatie (CR)-servo
1.5ms pulse is de middelste signaal, 90 graden of centrum voor een CR-servo
2ms pulse is de hoge signaal, 180 graden of volledige doorsturen voor een CR-servo
De servo controller boord heeft 12 bits van resolutie per periode maken de servo-signaal. Hoe gebruiken wij deze 12 bits is eenvoudig omdat 2 ^ 12 = 4096. We kunnen nu eenvoudige ratio's of stoichemetry om erachter te komen de waarde die hoort bij hoe lang we ons signaal willen te hoge ot taakcyclus blijven toepassen. Vergeet niet dat de Arduino houd niet zwevend punt berekeningen dus probeer te gebruiken integer math of u zal moeras van uw programma.
Servo signaal uit 4096
Totale duur: 20 MS = 4096
Laag signaal: 1ms = 4096/20 = 205
Medio signaal: 1.5ms = 205 * 1,5 = 308
Hoog signaal: 2ms = 205 * 2 = 410
Software-instructie:
Deze waarden moeten worden opgeslagen als constanten aan het begin van uw programma voor eenvoudige bewerking later. Dus nu hoe gaan we dit bereik gebruik aan output via de servo-bestuur?
Ten eerste, je moet het bibliotheekbestand voor de Raad van bestuur.
#include < Adafruit_PWMServoDriver.h >
Ten tweede, verklaren de naam gegeven aan de servo-bestuur en de twee met de board-adres koppelen. Standaardadres is 0x40.
Adafruit_PWMServoDriver servo=Adafruit_PWMServoDriver(0x40);
In de derde plaats in de lus van de setup, beginnen de servo bestuur verbinding.
Servo.begin();
Ten vierde, de freqeuncy van de servo-bestuur binnen de lus setup instellen
servo.setPWMFreq(freq);
Ten vijfde, schrijf de waarde aan het bestuur van de servo in de lus van het hoofdprogramma.
servo.setPWM (kanaal, off);
servo.setPWM(2,0,ch3);
Hardware-instructie:
Ten eerste, ik gesoldeerd op de opgenomen pin headers, klemmenstrook en een 470uF van een elektrolytische cap gewaardeerd voor 10V. Je kon gaan met een grotere GLB en zelfs een gewaardeerd voor 6V.
Ten tweede, ik veranderde niet het standaardadres van de Raad van bestuur en is alleen nodig als u daisy chain meerdere platen samen wilt.
Ten derde, ik gebruikte sommige vloeibare elektrische tape op de bodem van de pin headers omdat ik zal het maken van een ruwe robot voor het testen.
Ten vierde, om de I2C-Bus haak zal u moet opgeven 5V en GND van de Arduino aan de VCC en GND pinnen. Vervolgens verbinden A5 SCL en A4 aan SDA. Zie de foto die ik heb met Fritzing gemaakt!
Dat zijn de basics en kijk van Adafruit tutorial voor meer informatie. Vervolgens zal ik laten zien hoe ik de servo-bord met logica waarmee twee continue rotatie servo's geïmplementeerd.