Как непрерывно управлять сервоприводами с помощью Bascom 8051 - PullRequest
0 голосов
/ 25 октября 2019

Я хочу непрерывно управлять движением сервопривода, используя Bascom 8051, чтобы он мог менять положение.

Я пытался использовать грубую силу, задавая длину импульса вручную и меняя ее после определенной задержки.

P1.2 = 1
Config Servos = 1 , Servo1 = P1.2 , Reload = 10
Enable Interrupts


Do
Servo1 = 15 '90 degrees to the left
Wait 10
Servo1 = 65 '90 degrees to the right
Wait 10
Loop

End

Я ожидаю, что сервопривод переключит положение назад и вперед, но все, что он делает, застревает в одном месте.

1 Ответ

0 голосов
/ 26 октября 2019

Существует два разных варианта BASCOM, в зависимости от вашего микроконтроллера. Вы пометили оба, так что не ясно, какой вы имеете в виду. Также вы не сказали нам, какой сервопривод вы используете.

В любом случае, внутренняя работа достаточно похожа, чтобы попытаться ответить на ваш вопрос.

Сначала нам нужно понять, какой сигналстандартный R / C сервопривод ожидает. Положение сервопривода кодируется по ширине (положительного) импульса. Диапазон составляет от 1 мс до 2 мс. Этот импульс должен повторяться каждые 20 мс, что является частотой повторения 50 Гц.

С Config Servos вы устанавливаете таймер в качестве источника прерывания и его процедуры обслуживания. Это означает, что импульсы для сервомотора (ов) генерируются автоматически без каких-либо дополнительных действий вашей основной программы. Вам просто нужно установить желаемый импульс ширина в назначенной переменной;это на самом деле зависит от варианта BASCOM. Для AVR это массив Servo(1) = #, а для 8051 есть отдельные переменные Servo1 = #.

В соответствии с руководством (ами) параметр Reload задает разрешение в мкс значения для ширины импульса. Вы выбрали 10.

Таким образом, для диапазона длительностей импульсов вам нужно присвоить значения от 100 до 200 сервопеременной:

Do
Servo1 = 100
Wait 10
Servo1 = 200
Wait 10
Loop

Дополнительное примечание: руководство для BASCOMAVR упоминает режим порта для установки. Вывод, используемый для импульса, должен быть выходным.

...