Kompletní průvodce: Ovladač PCA9685 s Arduinem a dalšími

  • PCA9685 je 16kanálový PWM řadič, který komunikuje přes I2C.
  • Dokáže ovládat LED světla i serva a jeho frekvence je nastavitelná až do 1600 Hz.
  • Na stejnou I62C sběrnici je možné připojit až 2 modulů, čímž je dosaženo 992 řiditelných PWM výstupů.
  • Použití knihoven, jako je Adafruit, zjednodušuje práci s touto komponentou na platformách, jako je Arduino.

pca9685

Modul Ovladač PCA9685 pro Arduino a dalších platforem je široce používané řešení, když potřebujete ovládat několik zařízení, která pracují se signály PWM. Ačkoli byl původně navržen pro ovládání LED diod, jeho všestrannost umožnila, aby byl také častou možností pro ovládání serv. Tento čip je extrémně populární v robotických a automatizačních projektech pro svou schopnost přesně a jednoduše ovládat více zařízení.

Tento článek vám nejen ukáže, jak používat PCA9685 v kombinaci s Arduinem a dalšími mikrokontroléry, ale také podrobně popíše každý z technických aspektů, které potřebujete znát, abyste z této komponenty vytěžili maximum. Vysvětlíme vám vše od toho, jak jej připojit, až po to, jak spravovat knihovny kódů, abyste mohli své motory a serva ovládat naprosto snadno.

Co je PCA9685 a k čemu se používá?

Pin-out PCA9685

El PCA9685 je PWM (Pulse Width Modulation) regulátor navržený pro správu až 16 výstupů, ideální pro ovládání LED světel a servomotorů. Komunikuje přes I2C sběrnici, což znamená, že potřebuje pouze dva piny pro připojení k mikrokontroléru, jako je Arduino nebo Raspberry Pi. Díky použití specifických adres můžete dokonce připojit až 62 těchto modulů ke stejné I2C sběrnici a ovládat přibližně 992 PWM výstupů. Díky tomu je velmi výkonnou možností pro projekty, které vyžadují koordinovanou správu mnoha zařízení.

Nejrozšířenější použití PCA9685 Je to v projektech, kde je potřeba signál PWM. Jasným příkladem je ovládání serv, která jsou řízena z PWM signálů. Kromě toho má ovladač přesnost 12 bitů, který umožňuje generovat velmi jemné signály, s nastavitelnou frekvencí až do maxima 1600 Hz.

Vlastnosti a výhody PCA9685

Jednou z hlavních výhod PCA9685 spočívá v tom, že ubírá zátěž na mikrokontrolér, pokud jde o neustálé generování PWM signálů. To je užitečné zejména v projektech, které zahrnují ovládání mnoha zařízení, protože to umožňuje hlavnímu procesoru soustředit se na jiné úkoly.

  • 16 nezávislých kanálů: Každý ze 16 kanálů může vydávat nezávislý signál PWM, což vám umožňuje ovládat zařízení, jako jsou serva, motory a LED světla.
  • I2C ovládání: PCA9685 používá pro komunikaci s hlavním ovladačem (Arduino, Raspberry Pi atd.) rozhraní I2C a ke komunikaci vyžaduje pouze dva kabely (SDA a SCL).
  • Více modulů na jedné sběrnici: Na stejnou sběrnici I62C lze připojit až 9685 modulů PCA2, které ovládají až 992 PWM výstupů.
  • Nastavitelná frekvence: Podporuje frekvence až do 1600 Hz, ačkoli pro typické řízení serva se používá frekvence 50-60 Hz.

Spojení mezi Arduino a PCA9685

Arduino PCA9685

Spojení mezi Modul PCA9685 a Arduino je jednoduché a provádí se pomocí I2C pinů (SCL a SDA) a napájecích pinů. Následující tabulka uvádí typická připojení pro různé modely Arduino:

Pin PCA9685 Arduino Uno/Starší bratr arduino mega arduino leonardo
GND GND GND GND
5V 5V 5V 5V
SCL A5 21 3
SDA A4 20 2

V této konfiguraci jsou kolíky A4 a A5 nebo jejich ekvivalenty na odpovídající platformě, připojte k pinům SDA (data) a SCL (hodiny) modulu PCA9685. Kromě toho je důležité mít vhodné externí napájení pro servomotory, zvláště pokud připojujete více serv, protože Arduino neposkytuje dostatek proudu pro jejich správné řízení.

Doporučuje se použít a napájení 5V pro napájení serv a ujistěte se, že jste správně zapojili napájecí kolíky. Pokud používáte více než 16 serv, doporučuje se také připájet na desku kondenzátor 1000uF pro stabilizaci výkonu.

Konfigurace v kódu

Aby bylo možné řídit PWM výstupy PCA9685, je použita knihovna vyvinutá společností Adafruit. Můžete si jej stáhnout z vaše stránka GitHub. Zde vám ukážeme základní příklad konfigurace modulu a přesunutí serva:

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

Tento jednoduchý kód provede rozmítací pohyb na servo připojeném ke kanálu 0, čímž se pomalu posune z 0 stupňů na 180 stupňů. Funkci můžete použít setPWM() pro ovládání každého z výstupů PCA9685 nezávisle.

Pohyb několika serv současně

Jednou z velkých výhod PCA9685 je, že umožňuje ovládat více serv současně. Zde je návod, jak můžete přesunout více servomotorů na různé pozice v rámci stejného cyklu kódu:

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

V tomto případě definujeme funkci tzv setServo který přijme číslo serva a jeho úhel jako parametry, vypočítá vhodnou šířku impulsu a přesune jej do požadované polohy. Tímto způsobem můžete snadno ovládat více kanálů.

Jak nastavit limity pro různá serva

Ne všechna serva mají stejný rozsah hodnot pro úhly od 0° do 180°. V některých případech budete muset tyto hodnoty upravit. Zde je návod, jak můžete provést tato nastavení pro různá serva:

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

Tento kód umožňuje nastavit minimální a maximální hodnoty pro každé servo připojené k PCA9685, což bude mimořádně užitečné, pokud používáte serva s různými rozsahy signálu.

S ohledem na toto vše nyní máte vše, co potřebujete k nastavení, připojení a kódování vašeho prvního projektu pomocí PCA9685. Ať už pracujete na robotu s více stupni volnosti, nebo potřebujete ovládat mnoho zařízení paralelně, tento modul vám to umožní efektivně a přesně.

Ať už pracujete se servy nebo PWM výstupy, PCA9685 usnadňuje ovládání až 16 kanálů pomocí pouhých dvou pinů na vašem mikrokontroléru. S trochou zkušeností a dobrým kódem můžete vytvářet velmi výkonné aplikace, aniž byste přetěžovali hlavní procesor.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.