RC kontroll och Arduino: A färdiga arbeten (8 / 10 steg)
Steg 8: Adafruit till undsättning!
Innan vi fortsätter bör du överväga lödning en kondensator på servo controller styrelsen att frikoppla eller stabilisera strömkällan. Det är också god praxis antingen använda separata strömkällor för servon och Arduino eller frikoppla/stabilisera kraften levereras till Arduino. Frikoppling är ett finare sätt att säga du behöver lägga till en kondensator mellan spänningskälla (VCC) och jord (GND). Storleken på kondensatorn beror på din strömkälla, hur väl det kan hänga med kraftiga strömmar och artikeln du frikopplingen. konsultera den allsmäktiga Google för mer information. Slutligen, om du använder elektrolytisk caps (metall kan caps) se till att titta på PCB till få din polaritet korrekt.
En liten uppdaterare på signalen servo:
Frekvensen är 50Hz så 1 sekund / 50 = 20 millisekunder (ms) perioder
1ms bas puls är låg signal, 0 grader, eller full omvänd för en kontinuerlig Rotation (SP) servo
1.5ms puls är den mellersta signal, 90 grader, eller centrum för en CR servo
2 MS puls är hög signal, 180 grader, eller full framåt efter en CR servo
Servo controller styrelsen har 12 bitar av resolution per period för att skapa servo signalen. Hur vi använder dessa 12 bitar är enkel eftersom 2 ^ 12 = 4096. Nu kan vi använda enkla nyckeltal eller stoichemetry att räkna ut till värdet som associeras med hur länge vi vill att vår signal att förbli hög ot arbetscykel. Kom ihåg Arduinos inte gillar flyttal beräkningar så försök att använda heltal matematik eller du kommer mosse ner ditt program.
Servo Signal utanför 4096
Total tid: 20ms = 4096
Låg signal: 1ms = 4096/20 = 205
Mitten av signal: 1.5ms = 205 * 1,5 = 308
Hög signal: 2ms = 205 * 2 = 410
Programvara instruktion:
Dessa värden bör lagras som konstanter i början av programmet för enkel redigering senare. Så nu hur vi ska använda detta intervall för att mata via servo styrelsen?
Först, måste du inkludera biblioteksfilen för styrelsen.
#include < Adafruit_PWMServoDriver.h >
Andra, förklarar namnet på servo styrelsen och koppla ihop enheterna med nämndens adress. Standardadressen är 0x40.
Adafruit_PWMServoDriver servo=Adafruit_PWMServoDriver(0x40);
För det tredje inom setup slingan, börja servo styrelsen anslutningen.
servo.BEGIN();
Fjärde, ange freqeuncy servo styrelsen inom setup slingan.
servo.setPWMFreq(freq);
Det femte skriva värdet till servo styrelsen inom huvudprogrammet ögla.
servo.setPWM (kanal, på, av);
servo.setPWM(2,0,ch3);
Hårdvara instruktion:
Först, jag fastlödda på medföljande pin huvuden, plint och en 470uF elektrolytisk cap fått för 10V. Du kan gå med en större cap och även en fått för 6V.
Det andra jag ändra inte standardadressen för styrelsen och behövs bara om du vill att seriekoppla flera styrelser tillsammans.
Det tredje använde jag några flytande eltejp på botten av pin huvuden eftersom jag kommer att göra en rå robot för att testa.
För det fjärde för att koppla in I2C bussen måste du förse 5V och jord från Arduino till VCC och GND stift. Nästa ansluta A5 till SCL och A4 att SDA. Se bilden jag skapat med Fritzing!
Det är grunderna och kolla Adafruits handledning för mer information. Därefter kommer jag visa hur jag genomfört servo styrelsen med logik för att styra två kontinuerlig rotation servon.