This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ru:software:homelab:library:module:motor [2013/08/14 19:59] – eduardtlmk | ru:software:homelab:library:module:motor [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Двигатели ====== | ||
| - | // | ||
| - | |||
| - | Библиотека двигателей позволяет управлять модулем двигателей и двигателями, | ||
| - | |||
| - | ===== Типы данных ===== | ||
| - | |||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | | ||
| - | ===== Функции ===== | ||
| - | |||
| - | * **//void dcmotor_init(unsigned char index)//** \\ | ||
| - | Настройка управляющих выводов одного контроллера двигателя постоянного тока выходом. Параметры: | ||
| - | * //index// - Номер контроллера. Значение от 0 до 3. | ||
| - | |||
| - | * **//void dcmotor_drive(unsigned char index, signed char direction)// | ||
| - | Управляющий приказ контроллера двигателя постоянного тока. Параметры: | ||
| - | * //index// - Номер контроллера. Значение от 0 до 3. | ||
| - | * // | ||
| - | |||
| - | * **//void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler)// | ||
| - | * //index// - Номер контроллера. Значение от 0 до 3. | ||
| - | * // | ||
| - | |||
| - | * **//void dcmotor_drive_pwm(unsigned char index, signed char direction, unsigned char speed) //** \\ | ||
| - | Управляющий приказ одного контроллера двигателя постоянного тока. Двигатель вращается в заданном направлении и с указанной скоростью. Параметры: | ||
| - | * //index// - Номер контроллера. Значение от 0 до 3. | ||
| - | * // | ||
| - | * //speed// - Скорость двигателя. Значение от 0 до 255. В случае с 0 двигатель остановлен, | ||
| - | |||
| - | * **//void unipolar_init(unsigned char index)//** \\ | ||
| - | Настройка управляющих выводов контроллера униполярного шагового двигателя выходом. Параметры: | ||
| - | * //index// - Номер контроллера. Значение от 0 до 1. | ||
| - | |||
| - | * **//void unipolar_halfstep(unsigned char index, signed char direction, unsigned short num_steps, unsigned char speed)//** \\ | ||
| - | Управляющий приказ полушага контроллера униполярного шагового двигателя. Параметры: | ||
| - | * //index// - Номер контроллера. Значение от 0 до 1. | ||
| - | * // | ||
| - | * // | ||
| - | * //speed// - Время выполнения одного шага в миллисекундах. | ||
| - | |||
| - | * **//void bipolar_init(void)// | ||
| - | Настройка управляющих выводов контроллера биполярного шагового двигателя выходом. | ||
| - | |||
| - | * **//void bipolar_halfstep(signed char direction, unsigned short num_steps, unsigned char speed)//** \\ | ||
| - | Управляющий приказ полушага контроллера биполярного шагового двигателя. Функция блокирующаяся, | ||
| - | * // | ||
| - | * // | ||
| - | * //speed// - Выполнение одного шага в миллисекундах. | ||
| - | |||
| - | * **//void servomotor_init(unsigned char index)//** \\ | ||
| - | Настройка управляющих выводов одного серводвигателя выходом и настройка таймера 1 в режим ШИМ. Параметры: | ||
| - | * //index// - Номер серводвигателя. Значение 0 или 1. | ||
| - | |||
| - | * **//void servomotor_position(unsigned char index, signed short position)// | ||
| - | Управляющий сигнал серводвигателя. Если происходит управление позиционируемым серводвигателем, | ||
| - | * //index// - Номер серводвигателя. Значение 0 или 1. | ||
| - | * // | ||
| - | |||
| - | ~~PB~~ | ||
| - | |||
| - | ===== Пример ===== | ||
| - | |||
| - | Следующий пример демонстрирует все функции библиотеки. По порядку настраиваются контроллеры и вращаются двигатели. | ||
| - | |||
| - | <code c> | ||
| - | #include < | ||
| - | |||
| - | int main(void) | ||
| - | { | ||
| - | // Настройка контроллеров 0 и 1 двигателей постоянного тока | ||
| - | dcmotor_init(0); | ||
| - | dcmotor_init(1); | ||
| - | |||
| - | // Настройка контроллера биполярного шагового двигателя | ||
| - | bipolar_init(); | ||
| - | |||
| - | // Настройка управляющих сигналов серводвигателей 0 и 1 | ||
| - | servomotor_init(0); | ||
| - | servomotor_init(1); | ||
| - | |||
| - | // Один двигатель постоянного тока вращается в одну сторону, | ||
| - | dcmotor_drive(0, | ||
| - | dcmotor_drive(1, | ||
| - | |||
| - | // Шаговый двигатель вращается 100 градусов в одну сторону | ||
| - | // И затем в два раза быстрее в другую сторону | ||
| - | bipolar_halfstep(1, | ||
| - | bipolar_halfstep(-1, | ||
| - | |||
| - | // Вращение серводвигателей в противоположном направлении | ||
| - | servomotor_position(0, | ||
| - | servomotor_position(1, | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Пример демонстрирует регулировку скорости двигателя постоянного тока. | ||
| - | |||
| - | <code c> | ||
| - | #include < | ||
| - | |||
| - | int main(void) | ||
| - | { | ||
| - | unsigned char speed = 0; | ||
| - | |||
| - | // Инициализация двигателя | ||
| - | dcmotor_drive_pwm_init(0, | ||
| - | |||
| - | while(1) | ||
| - | { | ||
| - | speed = 100; | ||
| - | |||
| - | // Установка двигателю заданной скорости | ||
| - | dcmotor_drive_pwm(0, | ||
| - | } | ||
| - | } | ||
| - | </ | ||