PWM контролер з інтерфейсом I2С на базі мікросхеми PCA9685
PCA9685 - Це 16-ти канальний 12-розрядний контролер. Частота PWM налаштовується в межах від 24 до 1526 Гц. Хоча на платі від Adafruit написано від 40 до 1000 Гц. За допомогою PWM контролера можна керувати яскравістю світлодіодів, сервоприводами, обертами двигунів та іншими пристроями, де PWM сигнал використовується для керування.
Контролер керується по шині I2C. Ця плата має дві групи роз’ємів для шини I2C з двох боків. Що дозволяє підключати до шини кілька плат послідовно або підключати інші пристрої до шини I2C. Більшість модулів мають тільки одну групу контактів. Якщо вам треба підключити більше одного модуля до шини I2C, доводиться вигадувати як під`єднати додаткові контакти. Автори цієї плати про це подбали.
На платі є перемички, за допомогою яких можна встановити адресу PWM контролера відмінну від стандартної. Тому, якщо 16 каналів Вам мало, можна послідовно підключити декілька таких плат, встановивши перемичками на кожній свою адресу.
Живлення контролера і виходів PWM каналів розділене і може бути від 3 до 5 вольт. Для PWM каналів максимальна напруга становить 6 Вольт. Живлення для PWM каналів можна подавати на штирі (V+) або через клему. На платі є місце для фільтруючого конденсатора, який в цьому комплекті не йшов, але я рекомендую його впаяти. При великих навантаженнях, напруга живлення може бути не стабільною, що може негативно позначатись на роботі пристроїв. Ємність конденсатора не вказана. Я вибрав найбільший, який зміг розташувати і який не заважав монтажу плати.
PWM контролер був придбаний спеціально для роботи з сервоприводами і саме про застосування PWM для керування сервами і піде далі мова. Сервоприводи, як Ви зрозуміли, керуються PWM сигналом. Детальніше про параметри сигналу для управління сервами і про будову сервоприводів читайте у статтях:
Управление сервоприводом (сервомашинкой) с помощью микроконтроллера ATMega. Raspberry Pi – PWM і Сервопривод
Форма сигналу для управління сервою має форму, зображену на малюнку. Частота 50 Герц. Мінімальна тривалість імпульсу 1 мс. Максимальна тривалість 2 мс. тобто шпаруватість PWM-а для управління сервами ніколи не повинна бути 0% і ніколи не буде 100%.
Весь діапазон змін сигналу лежить на ділянці, позначеною червоною стрілкою. Тобто, Ви ніяк не зможете використовувати всі 4096 кроків. У цей проміжок вміщається всього 205. Тобто, серва може зайняти всього 205 положень, а не 4096. Тому 12-розрядний PWM контролер це зовсім не багато як могло здатися спочатку.
Виходить, що один крок сервоприводу становитиме приблизно 0,49% від усього робочого діапазону. Наприклад, якщо Ваша серва має максимальний кут повороту 90 градусів, тоді зміна шпаруватості PWM на один крок, тобто на одиницю приведе до повороту сервопривода на 0,44 градуса.
Для цього сервоконтроллера, я написав свою бібліотеку, яка задовольняє моїм потребам. Хоча в Інтернеті можна знайти безліч прикладів, все ж я не знайшов того, що мені потрібно стосовно сервоприводів. А саме:
Встановлення положення сервоприводу у відсотках
Мені потрібно задавати положення сервомеханізмів у відсотках. Тобто від 0 до 100%. А також від -100% до 100% якщо механізм має середнє положення і повинен відхилятися в обидва боки.Реверс
Реверс необхідний для зміни напрямку роботи сервоприводу. Наприклад, якщо у пристрої сервопривід перевернути, то ця властивість позбавить від необхідності щось змінювати у програмі. Достатньо буде лише увімкнути реверс.Налаштування діапазону
Іноді потрібно обмежити або навпаки розширити діапазон повороту сервоприводів. Наприклад, серва може повертатися на кут 60 градусів, але для вашого пристрою це забагато. Ви хочете обмежити, скажімо, до 45 градусів. А іноді зробити обмеження тільки в одну з сторін. До речі, діапазон повороту серви можна не тільки звузити, але і трохи розширити. Розширити діапазон серви до 120% відсотків можна без проблем. Далі - на свій ризик.Trimming
Trimming - встановлення сервоприводів в положення, яке встановить виконавчий механізм в нульове положення. Trimming завжди доводитися робити, щоб нівелювати механічні похибки під час складання кінцевого виробу.Налаштування експонент
І нарешті - налаштування експонент. Тобто заниження чутливості сервоприводу до керуючого сигналу поблизу нульових значень.Всі ці властивості добре відомі тим, хто займається радіо-керованими моделями. В сучасних радіо-керованих системах ці, та багато інших властивостей, вже давно існують.
Такий підхід дозволяє відокремити алгоритми керування від властивостей PWM каналів, сервоприводів і виконавчих механізмів, які не впливають на алгоритми керування. Це дозволяє розробляти більш універсальні системи керування.
PWM контролер я використовую з мікрокомп`ютером Raspberry Pi під Raspbian. Бібліотека і приклади написані на Python. Завантажити бібліотеку з прикладами можна за посиланням: https://github.com/avislab/sensorstest/tree/master/PCA9685
Всім успіхів.
Дивись також:
Управление сервоприводом (сервомашинкой) с помощью микроконтроллера ATMega. Raspberry Pi – PWM і Сервопривод
Дивись також:
- Raspberry Pi — що це таке?
- Raspberry Pi — GPIO
- Raspberry Pi — UART
- Raspberry Pi — FT232
- Raspberry Pi — PWM і Сервопривод
- Raspberry Pi — DHT11
- Raspberry Pi - FM Transmitter
- Прошивка AVR мікроконтролерів за допомогою Raspberry Pi
- Raspberry Pi — LCD display 1602
- Raspberry Pi — WiFi
- Raspberry-Pi — I2C (TWI)
- Raspberry Pi - DS18B20
- Raspberry Pi Camera
- nRF24L01+ ATMEGA + Raspberry Pi
- BMP180 + Raspberry Pi + WH1602
- Wi-Fi Метео станція
- Raspbian. Apache + PHP + Python + MySQL
- Встановлюємо Raspbian на Raspberry Pi без клавіатури та монітору
- IR-дистанційне керування. Використання LIRC у Python
- Raspberry Pi. Raspbian. Відправлення пошти через аккаунт Gmail
- Neoway M590 – GSM/GPRS modem
- MPU-6050 – гіроскоп – акселерометр
- HMC5883L Магнітометр
- PWM контролер з інтерфейсом I2С на базі мікросхеми PCA9685
- Метеостанція на Raspberry Pi своїми руками
- Raspberry Pi. Live-stream video
Недавні записи
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
Tags
raspberry-pi st-link bldc timer max1674 bluetooth eb-500 python ngnix rtc atmega servo avr pwm web tim uart remap brushless bme280 smd esp8266 eeprom bkp capture dht11 ethernet sensors websocket mongodb 3d-printer piezo rs-232 led css meteo i2c options exti html battery soldering bmp280 wifi mpu-9250 examples dma adc gpio sms motor solar hih-4000 lcd docker ssd1306 encoder dc-dc displays pmsm barometer watchdog java-script flask git gps mpu-6050 flash nvic books foc nodemcu programmator usb usart rfid mpx4115a stm32 ssd1331
Архіви