Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 41 по 50 из 57
  1. #41
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    Наконец добрался к паяльнику.
    Запустил переделанный скетч под свою мегу

    PHP код:
    unsigned char Byte_Port
    void setup()  
    {     
       for (
    int i=2230i++) pinMode(iINPUT); 
       for (
    int i=3730i--) pinMode(iOUTPUT);     


    void loop()  

    PORTC PINA;

    И даже тут немного подергивается серва, а когда напрямую к приемнику , то как вкопанная.
    Попробовал такой вариант.
    PHP код:
    unsigned char Byte_Port
    void setup()  
    {     
       for (
    int i=2230i++) pinMode(iINPUT); 
       for (
    int i=3730i--) pinMode(iOUTPUT);     


    void loop()  

      
    int Sens analogRead(16);
      
    PORTC PINA;

    Задергалась сильнее, чем в прошлом варианте.

    Забраковал и pulseIn, так как там из 10 подряд значений длительности ни одного не повторилось, хотя болтались в пределах 1493 - 1505.
    Последний раз редактировалось Mastar; 17.11.2011 в 13:04.

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

    По умолчанию Re: Управление сервоприводом.

    pulseIn я давно не использую, проблемная фунция

    Дергается потому что идут небольшие задержки на выполнение команд.
    Если написать на асемблере то возможно что выполнятся будет быстрее

  3. #43
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

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

    Тогда второй вопрос, а что еще можно попробовать?
    Функцией attachInterrupt() на меге не более 6 каналов, это ладно, буду контролировать 6 каналов, но в описании написано:
    Внутри функции обработки прерывания не работает delay(), значения возвращаемые millis() не изменяются. Возможна потеря данный передаваемых по последовательному соединению (Serial data) в момент выполнения функции обработки прерывания.

    Может если нет вариантов, то использовать pulseIn, но тогда нужно придумать серьезное усреднение этих данных, по большому счету мне 10-20 стабильных значений достаточно. Пробовал использовать функцию map(pulseIn(), 1000, 2000, 0, 10) - нормально, при плавном перемещении джойстика серва ступенями занимает свое положение, но в переходных зонах все равно болтается.

    Отсюда третий вопрос, подскажите механизм усреднения, аппроксимирации? Вариант суммировать 10 отсчетов подряд и разделить на 10 не помогли.

    p.s. может надо было это среднее умножить на 9, потом добавить один отсчет и снова разделить на 10? Я пробовал просто суммировать 10 значений и делил на 10 и это все в цикле.

    И еще, pulseIn() долго определяет, что на входе нет импульса. Выключил передатчик и конкретно затормозила.
    Последний раз редактировалось Mastar; 17.11.2011 в 16:23.

  4. #44
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    Тут видел вариант http://arduino.cc/playground/Code/ReadReceiver , но тогда придется доставать РРМ из приемника, да и разбираться с кодом мне трудновато. Зато тогда можно одним входом и одним таймером обойтись.

    Может тут есть вариант?
    http://arduino.cc/playground/Main/PinChangeInt
    Последний раз редактировалось Mastar; 17.11.2011 в 16:32.

  5. #45
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    Нашел еще такую микросхему MCP23017, может она мне поможет? Вроде все 16 каналов можно использовать по прерыванию, но с протоколом I2C я не знаком.

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

    По умолчанию Re: Управление сервоприводом.

    C I2C все просто

    Можешь проверить вот этот скетч, мне итересно будут с ним сервы дергаться? Если все нормально то можно будет запускать эту процедуру в фоновом режиме через прерывание таймера, например каждые 20мкс
    будет производится копирование порта

    PHP код:
    void setup()   
    {      
       for (
    int i=2230i++) pinMode(iINPUT);  
       for (
    int i=3730i--) pinMode(iOUTPUT);      
    }  

    void loop() 
    {
    uint8_t Result;
    asm volatile
    "cli" "\n\t"             
    "label%=:"  "in %[Result], %[in_porta]"   "\n\t"
                "out %[out_portc],  %[Result]" "\n\t"
    "rjmp label%=" "\n\t"

            
    : [Result"=r" (Result)
            : [
    out_portc"I" (_SFR_IO_ADDR(PORTC)), [in_porta"I" (_SFR_IO_ADDR(PINA))   
            );
        
    sei();

    Последний раз редактировалось Chip; 18.11.2011 в 03:35.

  7. #47
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    Chip, реально работает и стоит как вкопанная. Реакция на перемещение стика - мгновенное. Правда сейчас входы подключены 3 шт. 22, 23, 24, а сервой подгружен только один 37. С меня реально "пиво".

    Проверил так же вариант включения приемника без включенного передатчика.
    В данный момент использую прием по PCM, которая после пропадания сигнала использует запрограммированный Fail-safe из настроек приемника и возвращает в предустановленный режим.

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

    Короче - настоящий мост.

    Сразу есть маленькая просьба, правда если возможно, объяснить каким образом можно прервать трансляцию. Пока не нужно расписывать, я сначала проверю РРМ и РСМ, проверю с 8 входами и 8 выходами, а потом сформулирую правильно вопрос.

    СПАСИБО.

  8. #48
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    Немного о своем проекте, правда длинная видео-запись была сделана для демонстрации скорости, плавности хода, мощности и прочего, но в середине сама суть ловли. Один из первых вариантов.
    Это я с женой на пробной ловле катером с закрепленном на нем складном и быстро-съемном спиннинге с безынерционной катушкой.

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

    По умолчанию Re: Управление сервоприводом.

    Прикольно! У меня есть RC автомобиль с ДВС развивает скорость 90км/ч, как нибудь сниму видео как он после старта улетает в точку
    По теме, я понял как нужно сделать,
    К каждому из 8 входов подключить по 1-му диоду и эти диоды соединить на входе с прерыванием , в обработчике прерывания прописать кусок представленного мной кода. И все будет работать в фоновом режиме без нагрузки на контроллер
    Последний раз редактировалось Chip; 18.11.2011 в 12:22.

  10. #50
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Управление сервоприводом.

    И у меня есть авто, сыну 3 года назад подарил Kyosho MFR, но он так и не заинтересовался, вот стоит пылится на балконе, но когда закончу с катером, то возьмусь и за нее. Вот видео рекламное.

    Думаю это можно удалить, да и 48 пост тоже, или перенести, т.к. я создал отдельную тему Катер для рыбалки
    Последний раз редактировалось Mastar; 18.11.2011 в 20:19.

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя

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

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

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

Ваши права

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