roboforum.ru

Технический форум по робототехнике.


arduino DC motor. управление мотором 220 ардуиной.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 08 апр 2014, 10:47

минутка занимательной математики

допустим желаемые обороты 10 тысяч в минуту
тоесть время одного оборота EncoderPulseLength = 0.006 сек., если вал наполовину закрашен чёрным то время между двумя сменами состояния 0.003 сек.
(если настроить прерывание не на смену уровня, а на фронт то получим в 2 раза меньшую точность но в 2 раза более редкие импульсы, может быть полезно на максимальной скорости)

пусть минимальная скорость будет 2000 оборотов, для мотора пылесоса это ведь норм?
тогда EncoderPulseLength = 0.015 сек
ну а максимум сделаем 15000 оборотов, тогда EncoderPulseLength = 0.002

тогда разница между 10 т. и 15 т. 0.001 сек.
функция micros выдаёт нам минимум 0.000004 сек., тоесть диапазон от 10 до 15 т. об. в идеале можно разбить на 250 частей
что в принципе нормально) можно делать.

итого
диапазон регулировки EncoderPulseLength от 15000 μс до 2000 μс
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Dmitry__ » 08 апр 2014, 15:01

Неееее, все не так :)
Прерывание от int0 настраиваем на фронт или спад. В прерывании считываем таймер, сохраняем в tmp для след. вычислений. Таймер останавливаем, сбрасываем, запускаем. Получаем разрешение около 0.5-3 мкс. (при тактовой 16 мгц). Еще лучше задействовать регистр "захват/сравнение", разрешение будет 1 такт кварца.
Только это все будет работать (как и твой вариант), если энкодер работает без "дребезга". Что мало вероятно, ибо двигатель может вообще остановиться на грани перехода черное/прозрачное (или медленное вращение), получаем неопределенное состояние. Если такие состояния возможны, то надо делать квадратурный энкодер (два меандра сдвинутые относительно друг друга на 180 град.)) и более сложная обработка. Тогда неопределенное состояние одного фотоприемника не будет искажать данные, т.к. 2-й фотоприемник будет находиться в лучших условиях (сдвиг на 180 град.)
Вообще, надо погуглить, что тама предлагают ардуинщикам для обработки временных интервалов регистром "захват/сравнение", скорее всего уже украдено до нас :)

Добавлено спустя 15 минут 2 секунды:
Вот неплохо:
http://robocraft.ru/blog/technology/734.html
че-то с кодом для дуины, хз что...
http://cnc-club.ru/forum/viewtopic.php?f=41&t=2972
Ну, вощем не маленький :)
в гугль: "quadrature encoder arduino code"
http://forum.arduino.cc/index.php/topic,41615.0.html
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 08 апр 2014, 15:54

неее, квадратурный энкодер я точно городить не буду.

между работой с таймером в прерывании и использовании micros() нет никакой разницы
micros() это и есть время с таймера, только его не надо останавливать, сбрасывать и запускать.
оно само работает.

а для устойчивого запуска пусковой импульс, первую секунду на мотор подаётся полное напряжение, а потом уже диммируется до желаемого уровня.

то есть все дела можно сократить до:
Dmitry__ писал(а): В прерывании считываем micros(), сохраняем в tmp для след. вычислений. Таймер останавливаем, сбрасываем, запускаем.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение avr123.nm.ru » 08 апр 2014, 16:02

Dmitry__ писал(а): делать квадратурный энкодер (два меандра сдвинутые относительно друг друга на 180 град.))
на 90
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Dmitry__ » 08 апр 2014, 16:21

avr123.nm.ru писал(а):на 90

Ой, да, туплю :oops:

Добавлено спустя 13 минут 7 секунд:
Myp писал(а):то есть все дела можно сократить до:
Dmitry__ писал(а):
В прерывании считываем micros(), сохраняем в tmp для след. вычислений.

А этот "micros()" как выполняется? Где он этот "unsigned long" обрабатывает, в прерывании? Если не в прерывании, то твой int0 может возникнуть во время обработки этих 4-х байт "unsigned long" и получим кривые данные, надо курить обработчик micros().
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 08 апр 2014, 20:10

micros() это Timer0
просто возвращается значение.

у меня же 2 аппаратных прерывания, в int1 считаю длину импульса по micros(), а int0, которое детектор нуля, уже полюбому не может произойти? тоесть произойдёт сразу после...

блин, значит если они совпадут то я либо потеряю одну полуволну питания либо длительность тахометра будет кривая.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 13 апр 2014, 22:49

проект временно завис

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

мой паяльник окончательно попутал берега и ниже 300 градусов судя по экрану отказывается паять, да и жало несгораемое внезапно сгорело из за паяльной кислоты...
припой кончился, флюс какой-то стал дурацкий

вобщем паяние деталей меня огорчает безмерно
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 30 апр 2014, 09:49

заказал датчик
Изображение
аж 54 рубля за всё удовольствие, и светодиодики мигающие, и подстроечный резистор.
http://www.ebay.com/itm/New-Obstacle-Av ... 5af736dd18

светодиоды перепаяю на проводки и запихну в корпус мотора.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 07 июл 2014, 13:30

получил датчик.
скопипастил чужой проектик и сбацал другой скетч управления.
https://codebender.cc/sketch:37067
но всё никак не дойдут руки проверить в железе
я уже успел найти второй пылесос с регулятором и выковырять оттуда ещё одну платку управления.

заодно нашёл крутецкую микруху TDA1085

при всей простоте и полезности, почему-то не нашёл китайского драйвера на её базе.. :(

Добавлено спустя 18 минут 9 секунд:
кстати, что внутри вот такого регулятора?
http://www.ebay.com/itm/Asg-Precision-A ... 2c746d93f6

Изображение
судя по картинке и описанию он с поддержкой оборотов

может там на выходе симистор и его мона перепаять на мощный?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: arduino DC motor. управление мотором 220 ардуиной.

Сообщение Myp » 22 июл 2014, 15:18

вчерась вечером пытался собрать в кучу тиристор энкодер и ардуину.
как умная маша наклеил на вал мотора бумажку, рядом с ротором, половину закрасил в чёрный цвет.
проверил - работает, на белом сигнал есть, на чёрном пропадает.

собрал в корпус - всё время сигнал есть...
походу внутри в корпусе мотора ИК свет отражается от корпуса и попадает на фототранзистор.
надо всё разбирать и надеть термоусадку чёрную на излучатель и приёмник, чтоб работало только в луче.
тьфу прям.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Пред.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6