992-kanałowy sterownik serwomechanizmów.

992-kanałowy sterownik serwomechanizmów.
Razem głosów: 8 co stanowi: 82.5% całości.

images

 

Sterowanie serwami jest stosunkowo proste co zresztą już opisywałem, ale niesie za sobą spore problemy gdy chcemy użyć ich więcej… Zaczynają zajmować piny i moc obliczeniową.

Biorąc pod uwagę małą  liczbę sprzętowych kanałów PWM, często używamy programowego, który nie jest bez wad ale na to jest rada, rozwiązanie czysto sprzętowe bazujące na naszej ulubionej magistrali jaką niewątpliwie jest:

brandTym cudem techniki jest 12 bitowy, 16 kanałowy kontroler PWM  jakim jest PCA9685 z NXP. No tak 16-kanałów więc dlaczego  napisałem 992 kanały?? Dlatego że można podłączyć maksymalnie na magistrali 62 takie układy czyli 62 x 16 = 992 kanały PWM.

Datasheet układu znajdziemy tu: http://www.nxp.com/documents/data_sheet/PCA9685.pdf

PCA9685PW-112-NXP-SID-MED

 

Do naszych celów możemy sobie zrobić adapter jak niżej:

pca9585_pcb2

lub kupić gotowy kontroler dostępny w Adafruit:

10193711304_c1cc95a854_b

Oczywiście należy pamiętać, że serwa są prądożerne i należy się zaopatrzyć w odpowiednio mocny zasilacz. Dla 4 serv  2A co najmniej… Oczywiście układ został zaprojektowany jako sterownik dla diod co powinno ucieszyć wszelkich mrygaczy diodowych  :)

Typowy układ aplikacyjny dla nich właśnie znajdziemy w nocie układu i przedstawia się on następująco:

Przechwytywanie

 

Niemniej dzięki temu już nawet jednemu układowi można szybko zbudować hexapoda, czy też składający się z wielu ruchomych części manipulator, a nawet sterownik oświetlenia nocnego do salonu. Możliwości nie ograniczone  praktycznie i nie okaże się nagle że nam braknie pinów procesora który ma ograniczoną jednak liczbę wyjść PWM.

Co go wyróżnia od innych podobnych np. TLC5940 ??

  • Jest sterowany na I2C ale ma wbudowany zegar co powoduje że jest całkowicie Free Running :)  nie trzeba generować zegara przez uC;
  • Pracuje na 5V ale nic nie stoi na przeszkodzie by sterować nim z układów na 3,3V a na wyjściach mieć nawet 6V;
  • adres ustalamy 6 pinami adresowymi  co pozwala  dołączyć 62 układy do jednej magistrali I2C  a to pozwala uzyskać aż 992 wyjścia PWM  dla serw  lub diod LED;
  • PWM możemy regulować do ok 1,6KHz;
  • Każde wyjście jest 12Bitowe,  a więc dla servomechanizmów możemy uzyskać rozdzielczość 4 us z odświeżaniem 60Hz;
  • Ma konfigurowalne wyjścia które mogą być  push-pull lub  open-drain;
  • Z pinu ON/OFF można szybko wszystkie wyjścia wyłączyć.

Arduinowcy jak zwykle mają do przodu bo są biblioteki dla tego układu  dostępne tutaj:

https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

Dlatego warto się tym układem zainteresować :)

Opis shielda dla arduino znajdziecie tutaj wraz z linkami do bibliotek dlatego też powielać nie będę opisu :

http://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield?view=all

A kod dla gcc… Niebawem pojawi się z racji opisywania jednego projektu w którym użyłem 16 układów ….

1411_ORIG

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay