Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
ru:software:homelab:library:module:motor [2013/08/14 20:06] eduardtlmkru:software:homelab:library:module:motor [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Двигатели ====== 
  
-//Связан с модулем: [HW] [[ru:hardware:homelab:motor]]// 
- 
-Библиотека двигателей позволяет управлять модулем двигателей и двигателями, которые туда подключаются. Существуют функции управления двигателями постоянного тока, шаговыми двигателями и серводвигателями.  
- 
-===== Типы данных ===== 
- 
-   * **//prescale//** \\ Способ выбора тактового делителя. Рекомендуется использовать два первых тактовых делителя: 
-    * //TIMER2_NO_PRESCALE// - Делитель не используется. 
-    * //TIMER2_PRESCALE_8// - Коэффициент деления 8. 
-    * //TIMER2_PRESCALE_64// - Коэффициент деления 64. 
-    * //TIMER2_PRESCALE_256// - Коэффициент деления 256. 
-    * //TIMER2_PRESCALE_1024// - Коэффициент деления 1024. 
-     
-===== Функции ===== 
- 
-  * **//void dcmotor_init(unsigned char index)//** \\ 
-    Настройка управляющих выводов одного контроллера двигателя постоянного тока выходом. Параметры: 
-    * //index// - Номер контроллера. Значение от 0 до 3. 
- 
-  * **//void dcmotor_drive(unsigned char index, signed char direction)//** \\ 
-    Управляющий приказ контроллера двигателя постоянного тока. Параметры: 
-    * //index// - Номер контроллера. Значение от 0 до 3. 
-    * //direction// - Полярность двигателя. Значение -1, 0 или +1. В случае 0 мотор остановлен, в других случаях вращается в соответствующую сторону.  
-  
-  * **//void dcmotor_drive_pwm_init(unsigned char index, timer2_prescale prescaler)//** \\    Настройка управляющих выводов одного контроллера двигателя постоянного тока выходом с регулировкой скорости. Вдобавок можно указать желаемый тактовый делитель, в зависимости нужной частоты ШИМ. Параметры: 
-    * //index// - Номер контроллера. Значение от 0 до 3. 
-    * //prescaler// - Выбор тактового делителя. Желательно использовать тактовый делитель, т.к. прерывания, происходящие очень быстро, могут нарушить работу программы. Например, при использовании UH датчика необходимо тактовым делителем определить TIMER2_PRESCALE_8.  
- 
-  * **//void dcmotor_drive_pwm(unsigned char index, signed char direction, unsigned char speed) //** \\ 
-    Управляющий приказ одного контроллера двигателя постоянного тока. Двигатель вращается в заданном направлении и с указанной скоростью. Параметры: 
-    * //index// - Номер контроллера. Значение от 0 до 3. 
-    * //direction// - Полярность двигателя. Значение -1 или +1.  
-    * //speed// - Скорость двигателя. Значение от 0 до 255. В случае с 0 двигатель остановлен, а в случае с 255 – это максимально возможная скорость. 
- 
-  * **//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. 
-    * //direction// - Направление вращения. Значение от -1 или +1. 
-    * //num_steps// - Число полушагов. 
-    * //speed// - Время выполнения одного шага в миллисекундах. 
- 
-  * **//void bipolar_init(void)//** \\ 
-    Настройка управляющих выводов контроллера биполярного шагового двигателя выходом. 
- 
-  * **//void bipolar_halfstep(signed char direction, unsigned short num_steps, unsigned char speed)//** \\ 
-    Управляющий приказ полушага контроллера биполярного шагового двигателя. Функция блокирующаяся, т.е. она выполняется до тех пор, пока не будет сделано желаемое количество шагов. Параметры: 
-    * //direction// - Направление вращения. Значение от -1 или +1. 
-    * //num_steps// - Число полушагов. 
-    * //speed// - Выполнение одного шага в миллисекундах. 
- 
-  * **//void servomotor_init(unsigned char index)//** \\ 
-    Настройка управляющих выводов одного серводвигателя выходом и настройка таймера 1 в режим ШИМ. Параметры: 
-    * //index// - Номер серводвигателя. Значение 0 или 1. 
- 
-  * **//void servomotor_position(unsigned char index, signed short position)//** \\ 
-    Управляющий сигнал серводвигателя. Если происходит управление позиционируемым серводвигателем, то меняется положение ротора, если же бесконечно вращающимся, то меняется скорость вращения. Параметры: 
-    * //index// - Номер серводвигателя. Значение 0 или 1. 
-    * //position// - Положение ротора или скорость вращения (в зависимости от двигателя). Значение от -100 до +100. В случае 0 – это среднее положение или остановка. 
- 
-~~PB~~ 
- 
-===== Пример ===== 
- 
-Следующий пример демонстрирует все функции библиотеки. По порядку настраиваются контроллеры и вращаются двигатели. 
- 
-<code c> 
-#include <homelab/module/motors.h> 
-  
-int main(void) 
-{ 
- // Настройка контроллеров 0 и 1 двигателей постоянного тока 
- dcmotor_init(0); 
- dcmotor_init(1); 
- 
- // Настройка контроллера биполярного шагового двигателя 
- bipolar_init(); 
- 
- // Настройка управляющих сигналов серводвигателей 0 и 1 
- servomotor_init(0); 
- servomotor_init(1); 
- 
- // Один двигатель постоянного тока вращается в одну сторону,  
-        // другой в противоположную сторону 
- dcmotor_drive(0, -1); 
- dcmotor_drive(1, +1); 
- 
- // Шаговый двигатель вращается 100 градусов в одну сторону 
- // И затем в два раза быстрее в другую сторону 
- bipolar_halfstep(1, 100, 50); 
- bipolar_halfstep(-1, 100, 25); 
- 
- // Вращение серводвигателей в противоположном направлении 
- servomotor_position(0, -100); 
- servomotor_position(1, +100); 
-} 
-</code> 
- 
-Пример демонстрирует регулировку скорости двигателя постоянного тока.  
- 
-<code c> 
-#include <homelab/module/motors.h> 
- 
-int main(void) 
-{ 
-        unsigned char speed = 0; 
-  
- // Инициализация двигателя 
-  dcmotor_drive_pwm_init(0, TIMER2_NO_PRESCALE); 
- 
-  while(1) 
-  {     
- speed = 100; 
- 
- // Установка двигателю заданной скорости 
- dcmotor_drive_pwm(0, 1, speed);        
-  } 
-} 
-</code> 
ru/software/homelab/library/module/motor.1376499993.txt.gz · Last modified: (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0