Pilnīga rokasgrāmata: PCA9685 kontrolieris ar Arduino un citiem

  • PCA9685 ir 16 kanālu PWM kontrolieris, kas sazinās, izmantojot I2C.
  • Tas var vadīt gan LED gaismas, gan servo un tā frekvence ir regulējama līdz 1600 Hz.
  • Vienā I62C kopnē iespējams pieslēgt līdz 2 moduļiem, sasniedzot 992 vadāmas PWM izejas.
  • Bibliotēku, piemēram, Adafruit, izmantošana vienkāršo darbu ar šo komponentu tādās platformās kā Arduino.

pca9685

Modulis PCA9685 kontrolieris priekš Arduino un citas platformas ir plaši izmantots risinājums, kad nepieciešams vadīt vairākas ierīces, kas darbojas ar PWM signāliem. Lai gan sākotnēji tas bija paredzēts gaismas diožu vadīšanai, tā daudzpusība ir ļāvusi tam būt arī biežai iespējai vadīt servo. Šī mikroshēma ir ārkārtīgi populāra robotikas un automatizācijas projektos, jo tā spēj precīzi un vienkārši vadīt vairākas ierīces.

Šis raksts ne tikai parādīs, kā izmantot PCA9685 kopā ar Arduino un citiem mikrokontrolleriem, bet arī detalizēti aprakstīs katru no tehniskajiem aspektiem, kas jums jāzina, lai maksimāli izmantotu šo komponentu. Mēs izskaidrosim visu, sākot no tā pievienošanas un beidzot ar kodu bibliotēku pārvaldību, lai jūs varētu pilnīgi viegli vadīt savus motorus un servo.

Kas ir PCA9685 un kādam nolūkam to lieto?

PCA9685 pin-out

El PCA9685 ir PWM (impulsa platuma modulācijas) kontrolieris, kas paredzēts, lai pārvaldītu līdz 16 izejām, ideāli piemērots LED gaismu un servomotoru vadīšanai. Tas sazinās, izmantojot I2C kopni, kas nozīmē, ka tai ir vajadzīgas tikai divas tapas, lai izveidotu savienojumu ar mikrokontrolleru, piemēram, Arduino vai Raspberry Pi. Izmantojot noteiktas adreses, jūs pat varat pievienot līdz pat 62 no šiem moduļiem vienai I2C kopnei, kontrolējot aptuveni 992 PWM izejas. Tas padara to par ļoti jaudīgu iespēju projektiem, kuros ir nepieciešams koordinēti pārvaldīt daudzas ierīces.

Visizplatītākā izmantošana PCA9685 Tas ir projektos, kur nepieciešams PWM signāls. Spilgts piemērs ir servo vadība, kas tiek vadīta no PWM signāliem. Turklāt kontrolierim ir precizitāte 12 biti, kas ļauj ģenerēt ļoti smalkus signālus ar regulējamu frekvenci līdz 1600 Hz.

PCA9685 funkcijas un priekšrocības

Viena no galvenajām PCA9685 ir tas, ka tas noņem mikrokontrollera slogu saistībā ar nepārtrauktu PWM signālu ģenerēšanu. Tas ir īpaši noderīgi projektos, kas ietver daudzu ierīču vadību, jo ļauj galvenajam procesoram koncentrēties uz citiem uzdevumiem.

  • 16 neatkarīgi kanāli: Katrs no 16 kanāliem var izvadīt neatkarīgu PWM signālu, ļaujot jums vadīt tādas ierīces kā servo, motori un LED gaismas.
  • I2C kontrole: PCA9685 izmanto I2C saskarni, lai sazinātos ar galveno kontrolleri (Arduino, Raspberry Pi utt.), un saziņai ir nepieciešami tikai divi kabeļi (SDA un SCL).
  • Vairāki moduļi vienā kopnē: vienā I62C kopnē var pieslēgt līdz 9685 PCA2 moduļiem, kas kontrolē līdz 992 PWM izejām.
  • Regulējama frekvence: atbalsta frekvences līdz 1600 Hz, lai gan tipiskai servo vadībai tiek izmantota 50-60 Hz frekvence.

Savienojums starp Arduino un PCA9685

Arduino PCA9685

Saikne starp PCA9685 modulis un Arduino ir vienkāršs, un tas tiek darīts, izmantojot I2C tapas (SCL un SDA) un barošanas tapas. Šajā tabulā ir norādīti tipiski savienojumi dažādiem Arduino modeļiem:

Pin PCA9685 Arduino Uno/Vecākais brālis Mega Arduino arduino leonardo
GND GND GND GND
5V 5V 5V 5V
SCL A5 21 3
SDA A4 20 2

Šajā konfigurācijā tapas A4 un A5 vai to ekvivalentiem attiecīgajā platformā, pievienojiet PCA9685 moduļa SDA (dati) un SCL (pulksteņa) tapām. Turklāt ir svarīgi, lai servomotoriem būtu piemērots ārējais barošanas avots, it īpaši, ja pievienojat vairākus servo, jo Arduino nenodrošina pietiekami daudz strāvas, lai tos pareizi vadītu.

Ieteicams lietot a 5V barošana lai darbinātu servo, un pārliecinieties, ka esat pareizi pievienojis barošanas tapas. Ja izmantojat vairāk nekā 16 servo, ieteicams uz plates pielodēt arī 1000uF kondensatoru, lai stabilizētu jaudu.

Konfigurācija kodā

Lai pārvaldītu PWM izejas PCA9685, tiek izmantota Adafruit izstrādātā bibliotēka. Jūs varat to lejupielādēt no jūsu GitHub lapa. Šeit mēs parādīsim pamata piemēru moduļa konfigurēšanai un servo pārvietošanai:

#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 vienkāršais kods veic slaucīšanas kustību uz servo, kas savienots ar kanālu 0, lēnām pagriežot to no 0 grādiem līdz 180 grādiem. Varat izmantot funkciju setPWM() lai neatkarīgi kontrolētu katru PCA9685 izeju.

Vairāku servo pārvietošana vienlaikus

Viena no lielākajām priekšrocībām PCA9685 ir tas, ka tas ļauj vienlaikus vadīt vairākus servo. Lūk, kā vienā koda ciklā varat pārvietot vairākus servomotorus dažādās pozīcijās:

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); }

Šajā gadījumā mēs definējam funkciju, ko sauc setServo kas saņem servo numuru un tā leņķi kā parametrus, aprēķinot atbilstošo impulsa platumu un pārvietojot to uz vēlamo pozīciju. Tādā veidā jūs varat viegli kontrolēt vairākus kanālus.

Kā iestatīt ierobežojumus dažādiem servo

Ne visiem servo ir vienāds vērtību diapazons leņķiem no 0° līdz 180°. Dažos gadījumos jums būs jāpielāgo šīs vērtības. Lūk, kā jūs varat veikt šos iestatījumus dažādiem servo.

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 kods ļauj pielāgot minimālās un maksimālās vērtības katram servo, kas savienots ar PCA9685, kas būs ļoti noderīgi, ja izmantojat servo ar dažādiem signāla diapazoniem.

Paturot to prātā, jums tagad ir viss nepieciešamais, lai iestatītu, izveidotu savienojumu un kodētu savu pirmo projektu, izmantojot PCA9685. Neatkarīgi no tā, vai strādājat ar robotu ar vairākām brīvības pakāpēm vai arī jums ir jāvada daudzas ierīces paralēli, šis modulis ļaus to paveikt efektīvi un precīzi.

Neatkarīgi no tā, vai strādājat ar servo vai PWM izejām, ar PCA9685 ir ļoti viegli vadīt līdz pat 16 kanāliem, izmantojot tikai divus mikrokontrollera kontaktus. Ar nelielu pieredzi un labu kodu jūs varat izveidot ļoti jaudīgas lietojumprogrammas, nepārslogojot galveno procesoru.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.