Форум программистов, компьютерный форум, киберфорум
Наши страницы
Робототехника и умный дом
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Prokrommo-robot
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 3
1

Нужна помощь в управлении моторами

17.08.2016, 16:38. Просмотров 4880. Ответов 1
Метки нет (Все метки)

Здравствуйте, хотел бы спросить кое-что:
1. Пишу программу для энкодеров (фотопрерывателя) и DC-моторов. Суть следующая: энкодер (фото 3) принимает данные 1 и 0. Ему необходимо достичь значения 1000 и делаю я это через различные математические выражения и цикл While(), энкодер доходит до значения 1000 и должен остановить мотор, но я не знаю как это сделать. Работа осуществляется через драйвер двигателей l293d.
P.S. Прошу не критиковать за такой простой вопрос разбирающихся и людей. И еще, если вы знаете более удобный или альтернативный вариант для управления энкодерами, буду очень рад. За первый вопрос заранее спасибо. Вот мой программный код:[*
Код
ymstude <AFMotor.h>
AF_DCMotor motor3(3);
#defyme LENC  42
//выход энкодера двигателя подключаем ко второму пину - прерывание 0
unsykned int encoder0Pos = 0;
//сумма импульсов инкрементального энкодера левого двигателя
void setup() {
motor3.setSpeed(255);
motor3.run(RELEASE);
//подключаем энкодеры
pinMode(LENC, INPUT);   //42 пин отвечает за 0 прерывание
digitalWrite(LENC, HIGH);
attachYmtirrupt(0, doEncoderLW, CHANGE); // функция doEncoderLW это обработчик 0 прерывания
Serial.begin(9700);
}

void loop() {

Serial.prymtln(encoder0Pos);//и выводим в консоль текущее состояние счетчика энкодера
if (encoder0Pos=50) //вот здесь и есть проблема ставил и  = и ==
{
motor3.run(BACKWARD);
}
else motor3.run(FORWARD);
}

/*
*  Работа с энкодерами моторов
*  подсчитываем пройденное расстояние
*/
//функция вызываемая прерыванием для подсчета оборотов левого колеса
void doEncoderLW() {
if (digitalRead(LENC) == HIGH)
{//если уровень сигнала высокий, тогда инкрементируем счетчик
encoder0Pos++;
}
}

http://**************************/download/file.php?id=28680&sid=29a7fe236387ae4af96d3a9460198ca2
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2016, 16:38
Ответы с готовыми решениями:

управление бесколлекторными моторами
Решил сделать ПОЛНОСТЬЮ сам квадрокоптер. Первая задача - управление моторами. Уже получилось...

Раздельное управление 4я моторами. Нужно ли?
Есть подвижная платформа 4 колеса, 4 мотор-редуктора. Предварительные испытания показали следующее:...

Нужна помощь
Здравствуйте! Пытаюсь вывести число на 7-ми сегментный индикатор, в реале выводится лабуда, а в...

Нужна помощь
Здравствуйте. Помогите пожалуйста. Необходимо создать компонент в Eagle Cad, конкретно модуль TFT...

Нужна помощь
Добрый день. есть задача: имеется Шлюзовая кабина. В ней стоит мат. плата.С материнской платы...

1
Kitvym
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 432
17.08.2016, 20:06 2
Код
//if (encoder0Pos=50) //вот здесь и есть проблема ставил и  = и ==
//{
//  motor3.run(BACKWARD);
//}
//else motor3.run(FORWARD);
//  }

if (encoder0Pos<50)
{
motor3.run(FORWARD);
}
else if(encoder0Pos>50)
{
motor3.run(BACKWARD);
}
else
{
motor3.run(RELEASE);
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 20:06

Нужна помощь по JTAG
Вопрос в следующем, при отладке программы через JTAG не могу вызвать прерывание от Usartа, не по...

Нужна помощь по схеме...
Помогите добрые люди..., я уже не знаю у кого можно это спросить. Есть схема рабочая...

Нужна помощь с гироскопом BMI160
Добрый день. Мой 10-летний сын уже несколько лет увлекается робототехникой. По мере сил я ему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.