Найти в Дзене

Сервопривод, первые признаки жизни и загадки

Продолжаю эксперименты с сервоприводом SG90 для конструктора, начало работы здесь. Как мне представляется, блок управления сервомотором должен иметь один вход определяющий угол поворота сервопривода, а в свойства блока включить поле определяющее привязку к выводу платы. Добавленный блок выглядит следующим образом: Для красоты можно привязать картинку, но на это неохота тратить время, оставлю на перспективу. Так выглядит свойство блока, одно редактируемое поле - привязка к выводу платы Чтобы удобней проводить эксперименты, добавлю еще один тестовый блок для формирования угла поворота сервопривода. Блок будет устанавливать один из 3 углов (0*,90*,180*). Ко входам блока привяжу кнопки, а выход блока к SG90 Подготовительные операции Тестирую работу тестового блока, с помощью дисплея tm1680, используя следующую программу Корректировка функции расчета времени простоя В прошлой статье получил формулу расчета количества циклов простоя контроллера для формирования временной паузы следующего ви
Оглавление

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

Сервопривод SG90
Сервопривод SG90

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

блок управления сервоприводом SG90
блок управления сервоприводом SG90

Для красоты можно привязать картинку, но на это неохота тратить время, оставлю на перспективу.

Так выглядит свойство блока, одно редактируемое поле - привязка к выводу платы

параметры блока управления сервоприводом SG90
параметры блока управления сервоприводом SG90

Чтобы удобней проводить эксперименты, добавлю еще один тестовый блок для формирования угла поворота сервопривода. Блок будет устанавливать один из 3 углов (0*,90*,180*).

тестовый блок для отладки сервопривода SG90
тестовый блок для отладки сервопривода SG90

Ко входам блока привяжу кнопки, а выход блока к SG90

Подготовительные операции

Тестирую работу тестового блока, с помощью дисплея tm1680, используя следующую программу

Программа тестирования Тестового блока
Программа тестирования Тестового блока

Корректировка функции расчета времени простоя

В прошлой статье получил формулу расчета количества циклов простоя контроллера для формирования временной паузы следующего вида:

N = (F_cpu * (1 + Angle/180))/1000, где

F_cpu - частота микроконтроллера;

Angle - желаемый угол поворота;

Проблема в том, что если делать расчет по данной формуле, то мы должны оперировать 4-х байтными числами, а это очень накладно для микроконтроллера, в идеале должны использовать однобайтные в крайнем случае двухбайтные числа, преобразуем:

N = F_cpu /1000+ (F_cpu/(180*1000))* Angle

по факту получилось уравнение прямой линии y=k*X+b, все бы хорошо, но только коэффициент (F_cpu/(180*1000)) получается не целочисленный, например если F_cpu = 12 MHz, то получаем значение 66,(6)

Можно конечно смириться с погрешностью в несколько градусов округляя до целочисленного и оставить как есть, но я несколько изменил, разбив число F_cpu/1000 на две константы, тогда:

F_cpu/(180*1000)=(Const1`*180+Const2)/180=Const1+Const2/180

константы Const1, Const2 будут однобайтовыми

N = F_cpu /1000+ Const1* Angle+(Const2*Angle)/180

Тестирую сервопривод SG90

Тестовая схема:

Тестовая схема сервопривода SG90
Тестовая схема сервопривода SG90

Предварительные итоги

Сервопривод ожил! Непонятно что не так с углами поворота, сервопривод поворачивается только на 90*!. Первое что мне пришло голову, это то что сформированные временные интервалы не соответствуют паспорту сервопривода

-7

Все что смог это проверить в отладчики AVR Studio- вроде все верно, временные интервалы совпадают. Хорошо бы подключить осциллограф и тогда бы стало все ясно. Этот вопрос на перспективу.

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