CNCU PCA9685 Servo Driver i2C Antarmuka
Pandhuan Panggunaan Produk
- Nalika sampeyan ndeleng ERR 40 ing mesin:
- Tansah mesin diuripake, iki penting banget.
- Copot baterei saka Posisi Urip.
- Selehake baterei saka posisi Reserved menyang Posisi Live.
- Urip maneh mesin.
- Elinga yen tuku rong baterei anyar kanggo nyimpen ing cadangan kanggo pangowahan baterei sabanjure.
Hubungi Dhukungan AM.CO.ZA yen sampeyan nemoni kangelan ngganti baterei utawa yen posisi mesin pindah nalika proses. Sampeyan uga bisa njaluk bantuan liwat WhatsApp ing 060 600 6000.
Swaraview
Nyopir motor servo karo perpustakaan Arduino Servo cukup gampang, nanging saben wong nggunakake pin larang regane - ora kanggo sebutno sawetara daya Processing Arduino. Adafruit 16-Channel 12-bit PWM/Servo Driver bakal nyopir nganti 16 servos liwat I2C kanthi mung 2 pin. Kontroler PWM ing papan bakal nyopir kabeh saluran 16 bebarengan tanpa overhead pangolahan Arduino tambahan. Apa maneh, sampeyan bisa chain nganti 62 kanggo kontrol nganti 992 servos - kabeh padha 2 pin!
Adafruit PWM / Servo Driver minangka solusi sing sampurna kanggo proyek apa wae sing mbutuhake akeh servos.
Pinouts
- Ana rong set pin input kontrol ing salah siji sisih. Loro-lorone saka lencana podho rupo! Gunakake sisih endi wae sing disenengi, sampeyan uga bisa gampang chain kanthi nyambungake loro sisih-by-sisih
Power Pins
- GND - Iki daya lan sinyal pin lemah, kudu disambungake
- VCC - Iki pin daya logika, sambungake iki menyang tingkat logika sing pengin digunakake kanggo output PCA9685, kudu 3 - 5V max! Iku uga digunakake kanggo pullups 10K ing SCL / SDA supaya kajaba sampeyan duwe pullups dhewe, wis cocog karo tingkat logika mikrokontroler kang banget!
- V + - Iki minangka pin daya opsional sing bakal nyedhiyakake daya sing disebarake menyang servos. Yen sampeyan ora nggunakake kanggo servos sampeyan bisa ninggalake pedhot. Iku ora digunakake ing kabeh dening chip. Sampeyan uga bisa nyuntikake daya saka blok terminal 2-pin ing sisih ndhuwur papan. Sampeyan kudu nyedhiyani 5-6VDC yen sampeyan nggunakake servos. Yen sampeyan kudu, sampeyan bisa pindhah luwih kanggo 12VDC, nanging yen sampeyan kekacoan lan nyambung VCC kanggo V + sampeyan bisa ngrusak Papan!
Pin Kontrol
- SCL - pin jam I2C, sambungake menyang garis jam mikrokontroler I2C. Bisa nggunakake logika 3V utawa 5V, lan duwe pullup banget kanggo VCC
- SDA - I2C data pin, nyambung menyang microcontroller I2C data line. Bisa nggunakake logika 3V utawa 5V, lan duwe pullup banget kanggo VCC
- OE - Ngaktifake output. Bisa digunakake kanggo mateni kabeh output kanthi cepet. Nalika pin iki kurang kabeh pin diaktifake. Nalika pin dhuwur output dipatèni. Ditarik mudhun minangka standar dadi pin opsional!
Port Output
- Ana 16 port output. Saben port duwe 3 pin: V +, GND lan output PWM. Saben PWM mlaku kanthi mandiri nanging kabeh kudu duwe frekuensi PWM sing padha.
- Sing, kanggo LED sampeyan mbokmenawa pengin 1.0 KHz nanging servos perlu 60 Hz - supaya sampeyan ora bisa nggunakake setengah kanggo LEDs @ 1.0 KHz lan setengah @ 60 Hz.
- Dheweke wis disetel kanggo servos nanging sampeyan bisa nggunakake kanggo LED! Arus maksimum saben pin yaiku 25mA.
- Ana 220 ohm resistor ing seri karo kabeh PWM Pins lan output logika padha VCC supaya elinga yen nggunakake LED.
Majelis
Instal Servo Header
- Pasang 4 3 × 4 pin header lanang menyang posisi sing ditandhani ing pinggir papan.
Solder kabeh pin
- Ana akeh!
Tambah Header kanggo Kontrol
- Strip header lanang kalebu. Ing endi sampeyan pengin nginstal header lan ing sisih apa gumantung saka panggunaan:
- Kanggo papan roti (http://adafru.it/239) nggunakake, nginstal header ing ngisor Papan.
- Kanggo nggunakake karo kabel jumper (http://adafru.it/758), pasang header ing ndhuwur papan.
- Kanggo nggunakake karo kita kabel 6 pin (http://adafru.it/206), pasang header ing ndhuwur papan.
- Yen sampeyan chaining sawetara Papan driver, sampeyan bakal pengin header ing loro ends.
Pasang Terminal Daya
- Yen sampeyan chaining sawetara Papan driver, sampeyan mung perlu terminal daya ing pisanan.
Hooking munggah
Nyambung menyang Arduino
- Driver PWM/Servo nggunakake I2C dadi mung 4 kabel kanggo nyambung menyang Arduino:
Kabel Arduino "Klasik":
- +5v -> VCC (iki mung daya kanggo BREAKOUT, dudu daya servo!)
- GND -> GND
- Analog 4 -> SDA
- Analog 5 -> SCL
Kabel Mega lawas:
- +5v -> VCC (iki mung daya kanggo BREAKOUT, dudu daya servo!)
- GND -> GND
- Digital 20 -> SDA
- Digital 21 -> SCL
R3 lan kabel Arduino sabanjure (Uno, Mega & Leonardo):
(Papan iki duwe pin SDA & SCL khusus ing header sing paling cedhak karo konektor USB)
- +5v -> VCC (iki mung daya kanggo BREAKOUT, dudu daya servo!)
- GND -> GND
- SDA -> SDA
- SCL -> SCL
Pin VCC mung daya kanggo chip dhewe. Yen sampeyan pengin nyambungake servos utawa LED sing nggunakake V + pin, sampeyan kudu nyambungake V + pin uga. Pin V + bisa nganti 6V sanajan VCC 3.3V (chip kasebut aman 5V). Disaranake nyambungake daya liwat blok terminal biru amarga dilindhungi polaritas.
Daya kanggo Servo
Paling servos dirancang kanggo mbukak ing bab 5 utawa 6v. Elinga yen akeh servos sing obah ing wektu sing padha (utamane sing gedhe banget) mbutuhake arus sing akeh. Malah servos mikro bakal narik sawetara atus mA nalika obah. Sawetara servos High-torque bakal tarik luwih saka 1A saben ing mbukak.
Pilihan daya sing apik yaiku:
- 5v 2A ngalih sumber daya (http://adafru.it/276)
- 5v 10A ngalih sumber daya (http://adafru.it/658)
- 4 x AA Wadhah baterei (http://adafru.it/830) – 6v karo sel Alkaline. 4.8v karo sel sing bisa diisi ulang NiMH.
- Paket baterei RC 4.8 utawa 6v sing bisa diisi ulang saka toko hobi.
Iku ora apike nggunakake Arduino 5v pin kanggo daya servos Panjenengan. Kebisingan listrik lan 'brownouts' saka keluwihan arus bisa nyebabake Arduino sampeyan tumindak kanthi ora bener, ngreset lan / utawa dadi panas banget.
Nambahake Kapasitor menyang slot kapasitor liwat bolongan
We duwe titik ing PCB kanggo soldering ing kapasitor elektrolitik. Adhedhasar panggunaan sampeyan, sampeyan bisa uga mbutuhake kapasitor utawa ora. Yen sampeyan nyopir akeh servos saka sumber daya sing dips kathah nalika servos pamindhahan, n * 100uF ngendi n nomer servos Panggonan apik kanggo miwiti - contone, 470uF utawa liyane kanggo 5 servos. Wiwit iku gumantung ing servo saiki tarik, torsi ing saben motor, lan apa sumber daya, ora ana "siji nilai kapasitor tenung" kita bisa suggest kang kok kita ora kalebu kapasitor ing kit.
Nyambungake Servo
Paling servos dilengkapi konektor wadon 3-pin standar sing bakal plug langsung menyang header ing Driver Servo. Priksa manawa kanggo nyelarasake plug karo kabel lemah (biasane ireng utawa coklat) karo baris ngisor lan kabel sinyal (biasane kuning utawa putih) ing ndhuwur.
Nambahake Servo liyane
Nganti 16 servos bisa dipasang ing siji papan. Yen sampeyan kudu ngontrol luwih saka 16 servos, Papan tambahan bisa Renteng minangka diterangake ing kaca sabanjuré.
Chaining Drivers
- Multiple Drivers (munggah 62) bisa Renteng kanggo kontrol isih servos liyane.
- Kanthi header ing loro ends saka Papan, wiring minangka prasaja minangka nyambungake a 6-pin kabel paralel (http://adafru.it/206) saka papan siji menyang papan sabanjure.
Ngatasi Papan
- Saben papan ing rantai kudu diwenehi alamat unik. Iki rampung karo jumper alamat ing pojok tengen ndhuwur Papan. Alamat basis I2C kanggo saben papan yaiku 0x40. Alamat binar sing sampeyan program karo jumper alamat ditambahake menyang alamat I2C dhasar.
- Kanggo program offset alamat, gunakake solder kanggo nyepetake jumper alamat sing cocog kanggo saben binar '1' ing alamat kasebut.
- Papan 0: Alamat = 0x40 Offset = binar 00000 (ora perlu jumper)
- Papan 1: Alamat = 0x41 Offset = binar 00001 (jembatan A0 kaya ing foto ndhuwur)
- Papan 2: Alamat = 0x42 Offset = binar 00010 (jembatan A1)
- Papan 3: Alamat = 0x43 Offset = binar 00011 (jembatan A0 & A1)
- Papan 4: Alamat = 0x44 Offset = binar 00100 (jembatan A2)
lsp.
Ing sketsa sampeyan, sampeyan kudu ngumumake proyek sing kapisah kanggo saben papan. Telpon wiwit ing saben obyek, lan kontrol saben servo liwat obyek ditempelake. Kanggo example:
Nggunakake Pustaka Adafruit
- Wiwit PWM Servo Driver dikontrol liwat I2C, super gampang digunakake karo mikrokontroler utawa mikrokomputer.
- Ing demo iki, kita bakal nuduhake nggunakake Arduino IDE nanging kode C ++ bisa gampang ditransfer
Instal perpustakaan Adafruit PCA9685
- Kanggo miwiti maca data sensor, sampeyan kudu nginstal perpustakaan Adafruit_PWMServo (kode ing repositori github kita) (https://adafru.it/aQl). Kasedhiya saka manajer perpustakaan Arduino supaya disaranake nggunakake.
- Saka IDE mbukak manajer perpustakaan ...
- Lan ketik adafruit pwm kanggo nemokake perpustakaan. Klik Instal
- Kita uga duwe tutorial apik babagan instalasi perpustakaan Arduino ing: http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use (https://adafru.it/aYM)
Test karo ExampKode :
- Pisanan priksa manawa kabeh salinan IDE Arduino ditutup.
- Sabanjure, bukak Arduino IDE banjur pilih File-> Examples-> Adafruit_PWMServoDriver-> Servo. Iki bakal mbukak mantanample file ing jendhela IDE.
Yen nggunakake Breakout:
- Sambungake papan driver lan servo kaya sing ditampilake ing kaca sadurunge. Aja lali nyedhiyakake daya kanggo Vin (level logika 3-5V) lan V + (daya servo 5V). Priksa LED ijo murup!
Yen nggunakake Shield:
- Pasang tameng menyang Arduino. Aja lali sampeyan uga kudu nyedhiyakake 5V menyang blok terminal V +. LED abang lan ijo kudu padhang.
Yen nggunakake FeatherWing:
- Pasang FeatherWing menyang Feather sampeyan. Aja lali sampeyan uga kudu nyedhiyakake 5V menyang blok terminal V +. Priksa LED ijo murup!
Sambungake Servo
- Servo siji kudu disambungake menyang port PWM #0, port pisanan. Sampeyan kudu ndeleng servo Sapuan bolak-balik liwat kira-kira 180 derajat.
Kalibrasi Servo sampeyan
Wektu pulsa servo beda-beda ing antarane merek lan model sing beda. Wiwit iku sirkuit kontrol analog, ana asring sawetara variasi antarane samples saka merek lan model sing padha. Kanggo kontrol posisi pas, sampeyan bakal pengin calibrate minimal lan maksimum widths pulsa ing kode kanggo cocog posisi dikenal saka servo.
Temokake Minimal:
- Nggunakake mantanampkode, edit SERVOMIN nganti titik kurang saka Sapuan tekan sawetara minimal lelungan. Luwih becik nyedhaki iki kanthi bertahap lan mandheg sadurunge watesan fisik lelungan tekan.
Temokake maksimum:
- Lagi nganggo mantanampkode, edit SERVOMAX nganti titik dhuwur saka Sapuan tekan sawetara maksimum lelungan. Maneh, luwih becik nyedhaki iki kanthi bertahap lan mandheg sadurunge watesan fisik lelungan tekan.
Ati-ati nalika nyetel SERVOMIN lan SERVOMAX. Ngengingi watesan fisik lelungan bisa ngilangi gear lan ngrusak servo sampeyan kanthi permanen.
Ngonversi saka Derajat menyang Panjang Pulsa
Ing Fungsi "map()" Arduino (https://adafru.it/aQm) minangka cara sing gampang kanggo ngowahi antarane derajat rotasi lan dawa pulsa SERVOMIN lan SERVOMAX sing dikalibrasi. Assuming servo khas karo 180 derajat rotasi; yen sampeyan wis nyelarasake SERVOMIN menyang posisi 0 derajat lan SERVOMAX ing posisi 180 derajat, sampeyan bisa ngowahi sembarang amba antarane 0 lan 180 derajat kanggo dawa pulsa sing cocog karo baris kode ing ngisor iki:
Koleksi Referensi PustakaPWMReq(freq)
Katrangan
- Fungsi iki bisa digunakake kanggo nyetel frekuensi PWM, sing nemtokake jumlah lengkap 'pulsa' per detik sing digawe dening IC. Disebutake kanthi cara sing beda, frekuensi nemtokake suwene saben pulsa wiwit wiwitan nganti rampung, kanthi nggatekake segmen pulsa sing dhuwur lan sithik.
- Frekuensi penting ing PWM, amarga nyetel frekuensi dhuwur banget kanthi siklus tugas sing cilik banget bisa nyebabake masalah, amarga 'wektu munggah' sinyal (wektu sing dibutuhake kanggo pindhah saka 0V menyang VCC) bisa uga luwih suwe tinimbang wektu sinyal kasebut. sinyal aktif, lan output PWM bakal katon smoothed metu lan bisa uga ora tekan VCC, duweni potensi nyebabake sawetara masalah.
Argumentasi
- freq: Nomer sing nuduhake frekuensi ing Hz, antarane 40 lan 1600
Example
- Kode ing ngisor iki bakal nyetel frekuensi PWM dadi 1000Hz:
setPWM(saluran, on, off)
Katrangan
Fungsi iki nyetel wiwitan (on) lan pungkasan (mati) bagean dhuwur saka pulsa PWM ing saluran tartamtu. Sampeyan nemtokake nilai 'obah' antarane 0..4095 nalika sinyal bakal nguripake, lan nalika iku bakal mateni. Saluran nuduhake endi saka 16 output PWM sing kudu dianyari karo nilai anyar.
Argumentasi
- saluran: Saluran sing kudu dianyari karo nilai anyar (0..15)
- ing: Obah (antarane 0..4095) nalika sinyal kudu transisi saka kurang kanggo dhuwur
- mati: obah (antarane 0..4095) nalika sinyal kudu transisi saka dhuwur kanggo kurang
Example
Ex ing ngisor ikiample bakal nyebabake saluran 15 wiwit kurang, munggah ing dhuwur watara 25% menyang pulsa (obah 1024 saka 4096), transisi bali menyang kurang 75% menyang pulsa (obah 3072), lan tetep kurang kanggo pungkasan 25% pulsa :
Nggunakake minangka GPIO
- Ana uga sawetara setelan khusus kanggo nguripake utawa mateni pin kanthi lengkap
Arduino Library Docs
Python & CircuitPython
- Gampang nggunakake driver PCA9685 nganggo Python utawa CircuitPython lan Adafruit CircuitPython PCA9685 (https://adafru.it/tZF) modul. Modul iki ngijini sampeyan kanggo gampang nulis kode Python sing kontrol servos lan PWM karo breakout iki.
- Sampeyan bisa nggunakake papan driver iki nganggo papan mikrokontroler CircuitPython utawa karo komputer sing duwe GPIO lan Python thanks kanggo Adafruit_Blinka, perpustakaan kompatibilitas CircuitPython-kanggo- Python (https://adafru.it/BSN).
Kabel Mikrokontroler CircuitPython
Sambungake PCA9685 menyang papan sampeyan persis kaya sing ditampilake ing kaca sadurunge kanggo Arduino. Iki mantanampLe saka kabel Feather M0 menyang papan driver karo I2C:
Wiring Komputer Python
- Amarga ana puluhan komputer / papan Linux sing bisa digunakake, kita bakal nuduhake kabel kanggo Raspberry Pi. Kanggo platform liyane, bukak pandhuan kanggo CircuitPython ing Linux kanggo ndeleng apa platform sampeyan didhukung (https://adafru.it/BSN).
- Iki Raspberry Pi sing nganggo kabel I2C:
Aja nyoba kanggo daya servos saka RasPi utawa Papan Linux kang 5V daya, sampeyan bisa kanthi gampang nimbulaké catu daya brown-out lan kekacoan munggah Pi! Gunakake adaptor 5v 2A utawa 4A sing kapisah
- 5V 2A (2000mA) sumber daya ngoper - UL Listed
- Iki minangka sumber daya sing disertifikasi FCC/CE lan kadhaptar UL. Perlu akeh daya 5V?
- Sumber switching iki menehi output 5V sing diatur kanthi resik nganti 2000mA. 110 utawa 240 input, supaya bisa digunakake ... https://www.adafruit.com/product/276
- 5V 4A (4000mA) sumber daya ngoper - UL Listed
- Perlu akeh daya 5V? Pasokan switch iki menehi output 5V sing diatur kanthi resik nganti 4 Amps (4000mA). 110 utawa 240 input, supaya bisa digunakake ing sembarang negara. Colokan kasebut yaiku "AS ... https://www.adafruit.com/product/1466
Instalasi CircuitPython PCA9685 lan Pustaka ServoKit
- Sampeyan kudu nginstal Sirkuit AdafruitPython PCA9685 (https://adafru.it/tZF) perpustakaan ing papan CircuitPython sampeyan.
- Pisanan priksa manawa sampeyan lagi mlaku ing versi paling anyar saka Adafruit CircuitPython (https://adafru.it/Amd) kanggo papan sampeyan.
- Sabanjure, sampeyan kudu nginstal perpustakaan sing dibutuhake kanggo nggunakake piranti keras-ati-ati tindakake langkah-langkah kanggo nemokake lan nginstal perpustakaan kasebut saka Bundel perpustakaan CircuitPython Adafruit (https://adafru.it/uap). Pandhuan wiwitan CircuitPython kita duwe kaca sing apik carane kanggo nginstal library bundle (https://adafru.it/ABU).
Kanggo papan non-ekspres kaya Trinket M0 utawa Gemma M0, sampeyan kudu nginstal perpustakaan sing dibutuhake kanthi manual saka bundel kasebut:
- adafruit_pca9685.mpy
- adafruit_bus_device
- adafruit_register
- adafruit_motor
- adafruit_servokit.mpy
Sadurunge nerusake priksa manawa folder lib Papan utawa ROOT filesistem duwe adafruit_pca9685.mpy, adafruit_register, lan adafruit_servokit.mpy, adafruit_motor lan adafruit_bus_device files lan folder disalin.
Sabanjure nyambung menyang REPL serial Papan kang (https://adafru.it/Awz) dadi sampeyan ana ing CircuitPython >>> pituduh.
Instalasi Python saka PCA9685 lan Pustaka ServoKit
Sampeyan kudu nginstal perpustakaan Adafruit_Blinka sing nyedhiyakake dhukungan CircuitPython ing Python. Iki uga mbutuhake ngaktifake I2C ing platform sampeyan lan verifikasi yen sampeyan nggunakake Python 3. Amarga saben platform rada beda, lan Linux asring ganti, bukak pandhuan CircuitPython ing Linux kanggo nyiapake komputer sampeyan. (https://adafru.it/BSN)!
- Yen wis rampung, saka baris printah sampeyan mbukak printah ing ngisor iki:
- Yen Python standar sampeyan versi 3, sampeyan bisa uga kudu mbukak 'pip'. Priksa manawa sampeyan ora nyoba nggunakake CircuitPython ing Python 2.x, ora didhukung!
Panggunaan CircuitPython & Python
- Bagean ing ngisor iki bakal nuduhake carane ngontrol PCA9685 saka pituduh Python / REPL. Sampeyan bakal sinau carane ngontrol servos lan LED dim kanthi interaktif kanthi ngetik kode ing ngisor iki.
Dimming LED
Jalanake kode ing ngisor iki kanggo ngimpor modul sing dibutuhake lan miwiti sambungan I2C karo papan driver:
- Saben saluran PCA9685 bisa digunakake kanggo ngontrol padhange LED. PCA9685 ngasilake sinyal PWM kacepetan dhuwur sing nguripake lan mateni LED kanthi cepet. Yen LED diuripake luwih suwe tinimbang dipateni, bakal katon luwih padhang ing mripatmu.
- Pisanan kabel LED menyang Papan minangka nderek. Elinga yen sampeyan ora perlu nggunakake resistor kanggo mbatesi arus liwat LED amarga PCA9685 bakal mbatesi arus sekitar 10mA:
LED cathode / sikil luwih cendhek kanggo PCA9685 saluran GND / lemah. anoda LED / sikil maneh kanggo PCA9685 saluran PWM.
- Kelas PCA9685 nyedhiyakake kontrol frekuensi PWM lan siklus tugas saben saluran. Priksa metu ing Dokumentasi kelas PCA9685 (https://adafru.it/C5n) kanggo rincian liyane.
- Kanggo dimming LED sampeyan biasane ora perlu nggunakake frekuensi sinyal PWM cepet lan bisa nyetel frekuensi PWM Papan kanggo 60hz kanthi nyetel atribut frekuensi:
- PCA9685 ndhukung 16 saluran kapisah sing nuduhake frekuensi nanging bisa duwe siklus tugas independen. Mangkono sampeyan bisa nyedot 16 LED kanthi kapisah!
- Obyek PCA9685 nduweni atribut saluran sing nduweni obyek kanggo saben saluran sing bisa ngontrol siklus tugas. Kanggo entuk saluran individu gunakake [] kanggo ngindeks menyang saluran.
- Saiki ngontrol padhange LED kanthi ngontrol siklus tugas saluran sing disambungake menyang LED. Nilai siklus tugas kudu nilai 16-dicokot, IE 0 kanggo 0xffff, kang nggantosi apa persen wektu sinyal urip vs mati. Nilai 0xffff yaiku padhang 100%, 0 yaiku padhang 0%, lan padhange antarane 0% nganti 100%.
- Kanggo exampNyetel LED kanthi lengkap kanthi siklus tugas 0xffff:
- Sawise nglakokake printah ing ndhuwur, sampeyan kudu ndeleng lampu LED kanthi padhang! Saiki mateni LED kanthi siklus tugas 0:
- Coba nilai ing antarane kaya 1000:
- Sampeyan kudu ndeleng LED surem. Coba eksprimen karo nilai siklus tugas liyane kanggo ndeleng carane LED ngganti padhange!
- Kanggo exampNggawe lan mateni LED kanthi nyetel duty_cycle ing loop:
- Iki kanggo puteran njupuk sawetara wektu amarga 16-bit akeh nomer. CTRL-C kanggo mungkasi daur ulang saka mlaku lan bali menyang REPL.
Lengkap Examplan Kode
Ngontrol Servos
- Kita wis nulis perpustakaan CircuitPython praktis kanggo macem-macem PWM / kit Servo disebut Sirkuit AdafruitPython ServoKit (https://adafru.it/Dpu) sing nangani kabeh persiyapan rumit kanggo sampeyan. Kabeh sing perlu dilakoni iku ngimpor kelas cocok saka perpustakaan, lan banjur kabeh fitur saka kelas sing kasedhiya kanggo nggunakake.
- Kita bakal nuduhake sampeyan carane ngimpor kelas ServoKit lan digunakake kanggo ngontrol motor servo kanthi breakout saluran 16 Adafruit.
- Yen sampeyan ora ngerti servos, mula maca iki intro kanggo kaca servos (https://adafru.it/scW) lan iki kaca pandhuan servo jero (https://adafru.it/scS).
- Pisanan nyambungake servo menyang saluran 0 ing PCA9685. Iki mantanample saka servo sing disambungake menyang saluran 0:
- Priksa manawa sampeyan wis nguripake utawa kepasang ing sumber daya 5V external kanggo Papan PCA9685 banget!
- Pisanan sampeyan kudu ngimpor lan miwiti kelas ServoKit. Sampeyan kudu nemtokake jumlah saluran sing kasedhiya ing papan sampeyan. Breakout wis 16 saluran, supaya nalika sampeyan nggawe obyek kelas, sampeyan bakal nemtokake 16 .
- Saiki sampeyan siyap ngontrol servos rotasi standar lan terus.
Servo standar
- Kanggo ngontrol servo standar, sampeyan kudu nemtokake saluran servo disambungake. Sampeyan banjur bisa ngontrol gerakan kanthi nyetel sudut menyang sawetara derajat.
- Kanthi gawan, kelas Servo bakal nggunakake sawetara aktuasi, minimal pulsa-jembaré, lan maksimum pulse-jembaré nilai sing kudu dianggo kanggo paling servos. Nanging, mriksa dokumentasi kelas Servo (https://adafru.it/BNE) kanggo rincian liyane ing paramèter ekstra kanggo ngatur sinyal kui kanggo servos Panjenengan.
- Kanthi Servo, sampeyan nemtokake posisi minangka sudut. Sudut kasebut mesthi ana ing antarane 0 lan kisaran aktuasi sing diwenehake nalika Servo digawe. Default yaiku 180 derajat nanging servo sampeyan bisa uga duwe sapuan sing luwih cilik - ganti amba total kanthi nemtokake parameter actuation_angle ing initializer kelas Servo ing ndhuwur.
- Saiki atur sudut menyang 180, salah siji saka kisaran sing ekstrem:
- Kanggo bali servo menyang 0 derajat:
- Kanthi servo standar, sampeyan nemtokake posisi minangka sudut. Sudut kasebut mesthi ana ing antarane 0 lan kisaran aktuasi. Standar 180 derajat nanging servo sampeyan bisa uga duwe sapuan sing luwih cilik. Sampeyan bisa ngganti amba total kanthi nyetel actuation_range .
- Kanggo example, kanggo nyetel sawetara aktuasi kanggo 160 derajat:
- Asring sawetara servo individu ngenali beda-beda saka servos liyane. Yen servo ora nyapu rentang sing dikarepake, coba setel lebar pulsa minimal lan maksimal nggunakake set_pulse_width_range(min_pulse, max_pulse) .
- Kanggo nyetel rentang lebar pulsa minimal 1000 lan maksimal 2000:
- Sing kabeh ana kanggo ngontrol servos standar karo breakout PCA9685, Python lan ServoKit!
Servo Rotasi Terus-terusan
- Kanggo ngontrol servo rotasi terus, sampeyan kudu nemtokake saluran servo ing.
- Banjur sampeyan bisa ngontrol gerakan nggunakake throttle.
- Kanggo example, kanggo miwiti servo rotasi terus-terusan disambungake menyang saluran 1 kanggo maju throttle lengkap:
- Kanggo miwiti servo rotasi terus-terusan disambungake menyang saluran 1 menyang throttle mbalikke lengkap:
- Kanggo nyetel setengah throttle, gunakake desimal:
- Lan, kanggo mungkasi gerakan servo rotasi terus-terusan nyetel throttle dadi 0:
- Sing kabeh ana kanggo ngontrol servos rotasi terus karo PCA9685 16-saluran breakout, Python lan ServoKit!
Lengkap Examplan Kode
Dokumen Python
Dokumen Python: ServoKit
Ngundhuh
Files
- Data saka PCA9685 (https://adafru.it/okB)
- Pustaka driver Arduino (https://adafru.it/aQl)
- EagleCAD PCB files ing GitHub (https://adafru.it/rME)
- Model 3D ing GitHub (https://adafru.it/19Bk)
- Objek Fritzing ing perpustakaan Adafruit Fritzing (https://adafru.it/aP3)
Skema & Cetakan Fabrikasi
Bolongan diameteripun 2.5 mm
FAQ
- Papan iki bisa digunakake kanggo LED utawa mung servos?
- Bisa digunakake kanggo LED uga piranti PWM liyane!
- Aku duwe masalah aneh nalika nggabungake tameng iki karo Adafruit LED Matrix / 7Seg Backpacks
- Chip PCA9865 duwe alamat "Kabeh Telpon" 0x70. Iki minangka tambahan kanggo alamat sing dikonfigurasi. Setel tas ransel kanggo alamat 0x71 utawa liyane saka standar 0x70 supaya masalah ilang.
- Kanthi LED, kepiye carane aku ora bisa mateni LED?
- Yen sampeyan pengin mateni LED babar blas nggunakake (ing Arduino) nyetel PWM (pin, 0, 4096); ora disetel (pin, 0, 4095);
Dokumen / Sumber Daya
![]() |
CNCU PCA9685 Servo Driver i2C Antarmuka [pdf] Pandhuan PCA9685 Servo Driver i2C Antarmuka, PCA9685, Servo Driver i2C Antarmuka, Driver i2C Antarmuka, i2C Antarmuka, Antarmuka |