Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision |
| ru:examples:motor:servo [2010/12/26 17:23] – создано eduardtlmk | ru:examples:motor:servo [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| |
| ~~CL~~ | ~~CL~~ |
| ~~PB~~ | <pagebreak> |
| |
| ===== Практика ===== | ===== Практика ===== |
| | |
| // | // |
| // Повторный фактор, чтобы получить необходимый период +1 в процентах (-100% до 100%) | // Повторный фактор, чтобы получить необходимый период +1 |
| // складывается для того, чтобы полупериод точно достигал границ 1 и 2 мс | // в процентах (-100% до 100%) складывается для того, чтобы полупериод |
| // или немного выще. | // точно достигал границ 1 и 2 мс или немного выще. |
| // | // |
| #define PWM_RATIO (PWM_PERIOD / 20 / 2 / 100 + 1) | #define PWM_RATIO (PWM_PERIOD / 20 / 2 / 100 + 1) |
| Пример программы использует функции, описанные в библиотеке Домашней Лаборатории. В начале программы заставляют работать таймер первого серводвигателя, генерирующий PWM сигнал, функцией //servomotor_init//. Значение положения серводвигателя получается из канала 3 аналого-дигитального преобразователя, куда на плате модуля «Датчики» подсоединен потенциометр. Для того чтобы получить необходимый для управления серводвигателя интервал от -100 до 100, от значения ADC отнимается половина максимума (т.е. 512) и делится на 5. Результатом является ±102, но небольшая неточность не считается, так как серводвигатели сами отличаются в отношении PWM сигнала и угла поворота. Для точного передвижения придется в приложениях обозначить ширину полупериода PWM методом проб и ошибок. Так же у моделей радиоуправляемых пультов для точной настройки существуют соответствующие возможности (на английском языке //trim//). При запуске программы, изменяется в соответствии с положением потенциометра и положение вала серводвигателя. | Пример программы использует функции, описанные в библиотеке Домашней Лаборатории. В начале программы заставляют работать таймер первого серводвигателя, генерирующий PWM сигнал, функцией //servomotor_init//. Значение положения серводвигателя получается из канала 3 аналого-дигитального преобразователя, куда на плате модуля «Датчики» подсоединен потенциометр. Для того чтобы получить необходимый для управления серводвигателя интервал от -100 до 100, от значения ADC отнимается половина максимума (т.е. 512) и делится на 5. Результатом является ±102, но небольшая неточность не считается, так как серводвигатели сами отличаются в отношении PWM сигнала и угла поворота. Для точного передвижения придется в приложениях обозначить ширину полупериода PWM методом проб и ошибок. Так же у моделей радиоуправляемых пультов для точной настройки существуют соответствующие возможности (на английском языке //trim//). При запуске программы, изменяется в соответствии с положением потенциометра и положение вала серводвигателя. |
| |
| ~~PB~~ | <pagebreak> |
| |
| <code c> | <code c> |