Управление серво-приводом через COM-порт

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

Freshman
Novelist
Posts: 39
Joined: 08 Dec 2008 14:08
Location: Finland

Управление серво-приводом через COM-порт

Post by Freshman »

Схема и исходные тексты простого устройства на микроконтроллере Atmega16, управляемого через порт RS232 посредством ASCII команд. Команды можно посылать из любой терминальной программы.
Использовался серво-привод Hitec HS-322HD от радиоуправляемой модели
Image
http://www.hitecrcd.com/servos/show?name=HS-322HD

Управляющий вывод сервопривода подключен к выводу PC1 порта С микроконтроллера (выводы 'питание' и 'общий', соответственно, на Vcc и GND платы микроконтроллера). Сервопривод управляется посредством ШИМ-сигналов.

Схема в формате gEDA и PNG (схема не полная, цепи питания и обвязк контроллера отсутсвуют)
http://nedopc.org/nedopc/upload/uart_co ... eme_03.zip (18K)

Файлы проекта WinAVR:
http://nedopc.org/nedopc/upload/uart_co ... _ver04.zip (10K)

Если а) все подключено правильно б) выбраны правильный CОМ-порт и скорость (38400 бод) c) частота микроконтроллера установлена в 8 МГц, то после старта микроконтроллера или его сброса в окне терминальной программы должно появиться:

UART controller
(ver. 0.4)

Usage: [options]
Options:
-? Print help
-ar Read from PortA
-awhh Write 0xhh to PortA
-br Read from PortB
-bwhh Write 0xhh to PortB
-adc Read from ADC7 channel
-swnnn Write angle to servo (0-180)
-v Firmware version
Ok

Cервопривод в 0 градусов:
-sw000
Value: 600
Ok
Image

Cервопривод в 45 градусов:
-sw045
Value: 1050
Ok
Image

Cервопривод в 90 градусов:
-sw090
Value: 1500
Ok
Image

Cервопривод в 135 градусов:
-sw135
Value: 1975
Ok
Image

Cервопривод в 180 градусов:
-sw180
Value: 2450
Ok
Image

Скорее всего, что сервопривод надо откалибровать в файле uartctrl.h:
// Servo calibration data
#define SERVO_0_DEG 600
#define SERVO_90_DEG 1500
#define SERVO_180_DEG 2450

Ждем подклеивания файлов :)