Показано с 1 по 6 из 6
  1. #1
    Пользователь Аватар для Skanch
    Регистрация
    02.01.2010
    Возраст
    58
    Сообщений
    37
    Вес репутации
    185

    По умолчанию Модуль управления двигателями Motor Shield v2

    Здравствуйте! Есть Freeduino и Motor Shield v2
    Нажмите на изображение для увеличения. 

Название:	M-Shield_5_big.jpg 
Просмотров:	1469 
Размер:	135.1 Кб 
ID:	9727
    В програмировании не силен-поэтому прошу помощи у сведущих.
    Подскажите, как подключить тактовую кнопку для выполнения следующего алгоритма:одно нажатие кнопки- ШД - 100 полных оборотов, остановка.Серво-поворот на 80 градусов,остановка.Отключение питания ШД. Повторное нажатие кнопки-возврат серво в положение 0 градусов.ШД-100 шагов назад.Отключение двигателей. Программа нужна для проекта выдвижного монитора.
    Последний раз редактировалось Chip; 14.09.2010 в 21:15.

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: Модуль управления двигателями Motor Shield v2

    Вот пример работы с шаговым двигателем

    PHP код:
    #include <Stepper.h>//подключить библиотеку

    #define STEPS 100 // полное колличество шагов в одном обороте вашего ЩД

    Stepper stepper(STEPS5678); // создать экземпляр класса , определить пины управления драйвером ШД

    void setup()
    {
      
    stepper.setSpeed(30);// скорость вращения вашего ШД, хх оборотов в минуту
    }

    void loop()
    {
    // if(ваше условие)
      
    stepper.step(100); // сделать один оборот 100 шагов 

    Последний раз редактировалось Chip; 14.09.2010 в 21:17.

  3. #3
    Пользователь Аватар для Skanch
    Регистрация
    02.01.2010
    Возраст
    58
    Сообщений
    37
    Вес репутации
    185

    По умолчанию Re: Модуль управления двигателями Motor Shield v2

    Благодарю,Chip! Но моя проблема в том,что Motor Shield v2 использует все выводы Freeduino и я не знаю, как подключить кнопку управления и написать правильную программу.Пример управления ШД и серво есть в библиотеке производителя AFMotor, а как использовать кнопку найти не могу.

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: Модуль управления двигателями Motor Shield v2

    Кнопка на шилде это кнопка сброса ардуины, подсмотрел на схеме
    Нажмите на изображение для увеличения. 

Название:	m-shield_v2_scheme.gif 
Просмотров:	2489 
Размер:	25.9 Кб 
ID:	9728
    Последний раз редактировалось Chip; 14.09.2010 в 22:06.

  5. #5
    Пользователь Аватар для Skanch
    Регистрация
    02.01.2010
    Возраст
    58
    Сообщений
    37
    Вес репутации
    185

    По умолчанию Re: Модуль управления двигателями Motor Shield v2

    Вот,что нашел о Motor Shield v2. К сожалению не электронщик и разобраться проблемотично.Chip,если не затруднит, поясните куда подключить кнопку и как прописать ее в прогу.

    "Смотрим по схеме http://www.compcar.ru/forum/attachme...8&d=1284480333 со странички описания MotorShield.
    Для управления сдвиговым регистром используются ноги 4, 7, 8, 12.
    Для реализации ШИМ используются ноги 11, 3, 6, 5 - для двигателей 1, 2, 3, 4 соответственно.
    Ноги 9, 10 выведены на разъем Servo, и фактически не задействованы.
    Отсюда вывод - свободными остались все аналоговые входы (их же можно использовать как цифровые), ноги 0, 1, 2, 13, ноги 9 и 10 - хочешь для Servo, хочешь под свои цели.
    Ну, и если не используются какие-то из четырех каналов управления двигателями, освобождаются соответствующие им ноги из списка 11, 3, 6, 5.

    ...некоторое неудобство, что никак не отказаться от использования ноги 12, а она участвует в аппаратном SPI, и через нее работает в частности Ethernet Shield (нога 11 тоже SPI) - из-за этого несовместимость MotorShield и EthernetShield. Но, наверняка можно перекидать ноги, и поправить библиотеку AFMotor."
    Последний раз редактировалось Chip; 14.09.2010 в 22:22.

  6. #6
    Пользователь Аватар для Skanch
    Регистрация
    02.01.2010
    Возраст
    58
    Сообщений
    37
    Вес репутации
    185

    По умолчанию Re: Модуль управления двигателями Motor Shield v2

    Методом проб и ошибок написал программу для управления ШД и сервой.Планирую использовать ее для управления монитором в машине.Алгоритм таков: одно нажатие кнопки-ШД делает определенное кол-во шагов вперед и останавливается, серва поворачивается на 180 градусов и останавливается, повторное нажатие кнопки - серва отрабатывает движение на 180 градусов назад и останавливается,ШД отрабатывает определенное кол-во шагов назад и останавливается.








    PHP код:
    #include <AFMotor.h>
    #include <Servo.h>

    Servo myservo;// создаём объект для контроля сервы 
    int pos 0;     // переменная для хранения позиции сервы 

    int inPin 2// контакт, к которому подключена кнопка
    int outPin 9// контакт, к которому подключен светодиод
    AF_Stepper motor(2002);//Создаем объект для двигателя на 2 канале (M3 и M4)

    int state HIGH// the current state of the output pin
    int reading// the current reading from the input pin
    int previous LOW// the previous reading from the input pin

    long time 0// the last time the output pin was toggled
    long debounce 200// the debounce time, increase if the output flickers

    void setup()
    {
    pinMode(inPinINPUT);
    pinMode(outPinOUTPUT);
    motor.setSpeed(100); // 100 оборотов в минуту
    myservo.attach(10);  // серва подключена к 10-му пину
    myservo.writeMicroseconds(500); // устанавливаем серву в крайнее левое положение
    }

    void loop()
    {
    reading digitalRead(inPin);
    if (
    reading == HIGH && previous == LOW && millis() - time debounce
    {
    if (
    state == HIGH) {
     
    motor.step(860FORWARDSINGLE); // движение ШД вперед
      
    for(pos 0pos 180pos += 1)  // от 0 до 180 градусов
      
    {                                  // с шагом в 1 градус
        
    myservo.write(pos);              
        
    delay(15);    // ждём 15ms пока серва займёт новое положение
      
    }
     } 
    else {
      for(
    pos 180pos>=1pos-=1)     // от 180 до 0 градусов
      
    {
        
    myservo.write(pos);
        
    delay(15);
      }
     
    motor.step(860BACKWARDSINGLE); // движение ШД назад
     
    motor.release(); // отключение ШД 
    }
    if (
    state == HIGH)
    state LOW;
    else
    state HIGH
    time millis();
    }
    digitalWrite(outPinstate);
    previous reading;

    Последний раз редактировалось Skanch; 16.10.2010 в 15:42.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •