Visas vadovas: PCA9685 valdiklis su „Arduino“ ir kt

  • PCA9685 yra 16 kanalų PWM valdiklis, kuris palaiko ryšį per I2C.
  • Jis gali valdyti tiek LED lemputes, tiek servus, o jo dažnis reguliuojamas iki 1600 Hz.
  • Prie tos pačios I62C magistralės galima prijungti iki 2 modulių, pasiekiančių 992 valdomus PWM išėjimus.
  • Naudojant tokias bibliotekas kaip Adafruit supaprastinamas darbas su šiuo komponentu tokiose platformose kaip Arduino.

pca9685

Modulis PCA9685 valdiklis, skirtas Arduino ir kitos platformos yra plačiai naudojamas sprendimas, kai reikia valdyti kelis įrenginius, veikiančius su PWM signalais. Nors iš pradžių jis buvo skirtas valdyti šviesos diodus, jo universalumas leido taip pat būti dažna servo valdymo galimybė. Šis lustas itin populiarus robotikos ir automatikos projektuose dėl gebėjimo tiksliai ir paprastai valdyti kelis įrenginius.

Šis straipsnis ne tik parodys, kaip naudoti PCA9685 kartu su Arduino ir kitais mikrovaldikliais, bet ir išsamiai aprašys kiekvieną techninį aspektą, kurį turite žinoti, kad išnaudotumėte visas šio komponento galimybes. Paaiškinsime viską nuo jo prijungimo iki kodų bibliotekų valdymo, kad galėtumėte visiškai lengvai valdyti savo variklius ir servosistemas.

Kas yra PCA9685 ir kam jis naudojamas?

PCA9685 kištukas

El PCA9685 yra PWM (impulso pločio moduliacijos) valdiklis, skirtas valdyti iki 16 išėjimų, idealiai tinkantis valdyti LED lemputes ir servovariklius. Jis bendrauja per I2C magistralę, o tai reiškia, kad norint prisijungti prie mikrovaldiklio, pvz., Arduino ar Raspberry Pi, reikia tik dviejų kaiščių. Naudodami konkrečius adresus, netgi galite prijungti iki 62 šių modulių prie tos pačios I2C magistralės, valdydami apie 992 PWM išėjimus. Dėl to tai labai galinga parinktis projektams, kuriems reikia koordinuotai valdyti daugybę įrenginių.

Plačiausiai naudojamas PCA9685 Tai projektuose, kur reikalingas PWM signalas. Ryškus pavyzdys yra servo valdymas, kuris valdomas iš PWM signalų. Be to, valdiklis turi tikslumą 12 bitai, kuri leidžia generuoti labai smulkius signalus, kurių dažnis reguliuojamas iki maksimalaus 1600 Hz.

PCA9685 savybės ir privalumai

Vienas iš pagrindinių PCA9685 yra tai, kad ji nuima naštą nuo mikrovaldiklio nuolat generuojant PWM signalus. Tai ypač naudinga projektuose, kurie apima daugelio įrenginių valdymą, nes tai leidžia pagrindiniam procesoriui sutelkti dėmesį į kitas užduotis.

  • 16 nepriklausomų kanalų: Kiekvienas iš 16 kanalų gali išvesti nepriklausomą PWM signalą, leidžiantį valdyti tokius įrenginius kaip servosistemos, varikliai ir LED lemputės.
  • I2C valdymas: PCA9685 naudoja I2C sąsają, kad galėtų bendrauti su pagrindiniu valdikliu (Arduino, Raspberry Pi ir kt.), o komunikacijai reikia tik dviejų kabelių (SDA ir SCL).
  • Keli moduliai vienoje magistralėje: Prie tos pačios I62C magistralės galima prijungti iki 9685 PCA2 modulių, valdančių iki 992 PWM išėjimų.
  • Reguliuojamas dažnis: Palaiko dažnius iki 1600 Hz, nors įprastam servo valdymui naudojamas 50-60 Hz dažnis.

Ryšys tarp Arduino ir PCA9685

Arduino PCA9685

Ryšys tarp PCA9685 modulis „Arduino“ yra paprastas ir atliekamas naudojant I2C kaiščius (SCL ir SDA) ir maitinimo kaiščius. Šioje lentelėje pateikiamos tipinės įvairių Arduino modelių jungtys:

Kaištis PCA9685 Arduino Uno/Vyresnysis brolis „Arduino Mega“ arduino leonardo
GND GND GND GND
5V 5V 5V 5V
LAT A5 21 3
gamtos turtai A4 20 2

Šioje konfigūracijoje kaiščiai A4 ir A5 arba jų ekvivalentus atitinkamoje platformoje, prijunkite prie PCA9685 modulio SDA (duomenys) ir SCL (laikrodžio) kaiščių. Be to, svarbu turėti tinkamą išorinį maitinimo šaltinį servo varikliams, ypač jei jungiate kelis servo įrenginius, nes „Arduino“ nesuteikia pakankamai srovės, kad jie tinkamai valdytų.

Rekomenduojama naudoti a 5V maitinimas kad maitintumėte servo sistemas, ir įsitikinkite, kad tinkamai prijungėte maitinimo kaiščius. Jei naudojate daugiau nei 16 servo, taip pat rekomenduojama plokštėje lituoti 1000uF kondensatorių, kad stabilizuotų maitinimą.

Konfigūracija kode

Norėdami valdyti PWM išėjimus PCA9685, naudojama Adafruit sukurta biblioteka. Galite atsisiųsti iš jūsų „GitHub“ puslapis. Čia parodysime pagrindinį modulio konfigūravimo ir servo perkėlimo pavyzdį:

#include <Wire.h> #include <Adafruit_PWMServoDriver.h> Adafruit_PWMServoDriver servos = Adafruit_PWMServoDriver(); void setup() { servos.begin(); servos.setPWMFreq(60); // Configura la frecuencia PWM a 60Hz } void loop() { servos.setPWM(0, 0, 172); // Mueve el servo del canal 0 a la posición 0 grados delay(1000); servos.setPWM(0, 0, 565); // Mueve el servo a la posición 180 grados delay(1000); }

Šis paprastas kodas atlieka servo, prijungto prie 0 kanalo, šlavimo judesį, lėtai pakeldamas jį nuo 0 laipsnių iki 180 laipsnių. Galite naudoti funkciją setPWM() valdyti kiekvieną PCA9685 išvestį atskirai.

Vienu metu perkeliami keli servo elementai

Vienas iš didžiausių PCA9685 Tai leidžia vienu metu valdyti kelis servo įrenginius. Štai kaip galite perkelti kelis servovariklius į skirtingas pozicijas per tą patį kodo ciklą:

void loop() { setServo(0, 30); setServo(2, 90); setServo(4, 180); delay(1000); } void setServo(uint8_t n_servo, int angulo) { int duty = map(angulo, 0, 180, 172, 565); servos.setPWM(n_servo, 0, duty); }

Šiuo atveju apibrėžiame funkciją, vadinamą setServo kuri kaip parametrus gauna servo numerį ir jo kampą, apskaičiuoja atitinkamą impulso plotį ir perkelia jį į norimą padėtį. Tokiu būdu galite lengvai valdyti kelis kanalus.

Kaip nustatyti skirtingų servo sistemų ribas

Ne visi servo įrenginiai turi tą patį kampų verčių diapazoną nuo 0 ° iki 180 °. Kai kuriais atvejais turėsite pritaikyti šias vertes. Štai kaip galite nustatyti šiuos skirtingų servo nustatymus:

unsigned int pos0[16]= {172, 256, 246, 246, 246, 172, 246, 200}; unsigned int pos180[16]= {565, 492, 492, 492, 492, 565, 492, 550}; void setServo(uint8_t n_servo, int angulo) { int duty = map(angulo, 0, 180, pos0[n_servo], pos180[n_servo]); servos.setPWM(n_servo, 0, duty); }

Šis kodas leidžia reguliuoti minimalias ir didžiausias kiekvieno prie PCA9685 prijungto servo reikšmes, o tai bus labai naudinga, jei naudosite servo įrenginius su skirtingais signalų diapazonais.

Turėdami visa tai omenyje, dabar turite viską, ko reikia pirmajam projektui nustatyti, prijungti ir koduoti naudodami PCA9685. Nesvarbu, ar dirbate su kelių laisvės laipsnių robotu, ar reikia lygiagrečiai valdyti daugybę įrenginių, šis modulis leis tai padaryti efektyviai ir tiksliai.

Nesvarbu, ar dirbate su servo, ar PWM išėjimais, PCA9685 labai lengva valdyti iki 16 kanalų naudojant tik du mikrovaldiklio kaiščius. Turėdami nedidelę patirtį ir gerą kodą, galite sukurti labai galingas programas neperkraunant pagrindinio procesoriaus.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.