roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 08:54

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 223 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 20 ноя 2010, 19:20 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
yak-40 писал(а):
Ну это как раз очень даже интересно :wink:
+1

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 20 ноя 2010, 19:30 
Не в сети
Аватара пользователя

Зарегистрирован: 12 май 2010, 13:30
Сообщения: 278
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич
Что-то я туплю, как контакты прикручены? Такое чувство, что все напрямую к металлической пластинки приделано!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 20 ноя 2010, 21:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Scorpio писал(а):
Интерактивный мобильный робот Vanessa. И вот, что получилось...


Отлично ! :good: :Bravo: Поздравляю. Как это я проглядел такой топик. Желаю удачи.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 07:01 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Skyline писал(а):
Что-то я туплю, как контакты прикручены? Такое чувство, что все напрямую к металлической пластинки приделано!

Да неее, там отверстия в люмине большие. Контактные болты их не касаются.

В ютубе неохота полуфабрикат вывешивать.

Ну помогите кто-нибудь с I2C! Задолбался уже! Пробовал и программный и аппаратный на разных частотах. Один фиг. От 2 до 10% ошибок при чтении. От датчика не зависит. Пробую тоже самое от NXT - ни одного сбоя за 10000 циклов считывания! И импульсы ровненькие без выбросов. А с Crumb-168 с приличными выбросами.Провода менял, кандеры разные вешал - не помогает. КАК ПРАВИЛЬНО ПОДКЛЮЧИТЬ линии SCL, SDA?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 07:21 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Scorpio писал(а):
КАК ПРАВИЛЬНО ПОДКЛЮЧИТЬ линии SCL, SDA?


Подтянуть к плюс пяти через 4K7...

А ничего более конкретного сказать и невозможно, не видя цепи питания,
выбросы, которые вас беспокоят, что вы цепляете к I2C и т.п. :pardon:

Scorpio писал(а):
Пробую тоже самое от NXT - ни одного сбоя за 10000 циклов считывания!

Выводы? Да любые. Например, NXT питается от своих батарей, а крамб?


Последний раз редактировалось Michael_K 21 ноя 2010, 09:40, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 09:34 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Scorpio писал(а):
Ну помогите кто-нибудь с I2C!

Ну дай хоть схему - чего куда подключаешь, в т.ч. источники питания какие.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 11:25 
Не в сети

Зарегистрирован: 26 мар 2008, 12:45
Сообщения: 326
Scorpio
готов помочь...
i2c аппаратный представляет собой цифровой автомат, который требует точной последовательности выполнения операций.
Напиши как принимаешь данные в терминах i2c.
ack,sla-w.....
если надо пришлю код.. все отлично работает
loox


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 19:50 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Спасибо, что отозвались.
Схема подключения простецкая: «крамб» питается от усб управляющего компа (сделал так, чтобы управлять процессом зарядки 12В батареи). Все датчики питаются от 12В батареи, через 5В КРЕНы (всего их 2 по 300мА). Пульсациям на питании вроде неоткуда взяться. В эксперименте вообще подключен только компасс с потреблением 12мА. На SDA, SCL только подтягивающие резюки 4.7 (пробовал и 2 и 10 – тоже только в профиль) подключены к + крамба, но пробовал и к + датчика.
Выбросы есть только при работе программного TWI. Отрицательные на синхроимпульсах наверное ни на что не влияют, а вот какие-то пички на SDA – вполне возможно. Извините за мутноватость, штатив отдал приятелю попользоваться.
Вложение:
Комментарий к файлу: Импульсы при работе программного TWI
TWIsoft.JPG
TWIsoft.JPG [ 272.7 КиБ | Просмотров: 2476 ]

При работе аппаратного TWI, импульсы вообще красивые. Но ошибок при этом не меньше, да еще и зависает иногда на цикле ожидания.
Вложение:
Комментарий к файлу: Импульсы при работе аппаратного TWI
TWIhard.JPG
TWIhard.JPG [ 256.02 КиБ | Просмотров: 2472 ]

Вот функции, которыми я пользуюсь в случае аппаратного TWI (не помню, где скачал). Там и последовательность видна. Т.к. всегда считывается только 1 байт, то в конце мастер отвечает NACK. Вроде все правильно. Если бы была ошибка в программе, то вообще бы никогда не читала, а не время от времени. Или я не прав?
Код:
#define  TWI_BAUD  60 //  BAUD=Fsys/2Ftwi -5

#define  TWINT  7
#define  TWEA   6
#define  TWSTA  5
#define  TWSTO  4
#define  TWWC   3
#define  TWEN   2
#define  TWIE   0


void fi2c_init(void)
{
      TWBR = TWI_BAUD;
      TWSR = 0x02;   
      TWCR = (1<<TWEN)|                                 // Enable TWI-interface and release TWI pins.
         (0<<TWIE)|(0<<TWINT)|                      // Disable Interupt.
         (0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|           // No Signal requests.
         (0<<TWWC); 
};

unsigned char fi2c_start(void)/*issues a START condition.
Returns 1 if bus is free or 0 if the I2C bus is busy or error.*/
{   

  TWCR = (1<<TWEN)|                             // TWI Interface enabled.
         (1<<TWIE)|(1<<TWINT)|                  // Enable TWI Interupt and clear the flag.
         (0<<TWEA)|(1<<TWSTA)|(0<<TWSTO)|       // Initiate a START condition.
         (0<<TWWC);                             //

   while (!(TWCR & (1<<TWINT)));
   
   if (((TWSR & 0xF8) ==  0x08) || ((TWSR & 0xF8) ==  0x10)) //$ 08 - start condition has been transmitted, $ 10 repeated start condition has been transmitted
   {
      return 1;
   }
   else
   {
      return 0;
   };
};


void fi2c_stop(void)//issues a STOP condition.   
{
   TWCR = (1<<TWEN)|                                 // TWI Interface enabled
               (0<<TWIE)|(1<<TWINT)|                      // Disable TWI Interrupt and clear the flag
               (0<<TWEA)|(0<<TWSTA)|(1<<TWSTO)|           // Initiate a STOP condition.
               (0<<TWWC);
       
};

unsigned char fi2c_read(unsigned char ack)
/*reads a byte from the bus.
The ack parameter specifies if an acknowledgement is to be issued after the byte was read.
Set ack to 0 for no acknowledgement or 1 for acknowledgement.*/
{
   unsigned char data;
   
   if (ack == 0)         
        TWCR = (1<<TWEN)|                                 // TWI Interface enabled
               (1<<TWIE)|(1<<TWINT)|                      // Enable TWI Interupt and clear the flag to read next byte
               (0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|           // Send NACK after reception
               (0<<TWWC);  //TWCR &= 0x40; //TWEA = 0
   else
   TWCR = (1<<TWEN)|                                 // TWI Interface enabled
               (1<<TWIE)|(1<<TWINT)|                      // Enable TWI Interupt and clear the flag to read next byte
               (1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|           // Send ACK after reception
               (0<<TWWC);                                 // //TWCR |= 0x40; //TWEA =1
   delay_ms(1); //while (!(TWCR & (1<<TWINT)));

   data = TWDR;
   return data;
};


unsigned char fi2c_write(unsigned char data)
/*writes the byte data to the bus.
Returns 1 if the slave acknowledges or 0 if not.
*/
{
   TWDR = data;
   TWCR &= 0xcf; //TWSTA, TWSTO =0
   TWCR |= 0x84; //TWNT TWEN =1
   
   while (!(TWCR & (1<<TWINT)));

   if (((TWSR & 0xF8) ==  0x18) || ((TWSR & 0xF8) ==  0x28) || ((TWSR & 0xF8) ==  0x40)) //$ 40 SLA+R transmiteed, $18 SLA+W transmitted, $ 28 DATA transmitted ACK received
   {
      return 1;
   };
   if (((TWSR & 0xF8) ==  0x20) || ((TWSR & 0xF8) ==  0x30) || ((TWSR & 0xF8) ==  0x48)) //$20 SLA+W transmited, $ 30 - DATA transmited NOT ACK received $ 48 SLA+R transmitted
   {
      return 0;
   };
   
   
};   

/* read a byte from I2C device */
unsigned char I2C_read_byte (unsigned char BUS_ADR,unsigned char address)
{
unsigned char data;
#asm("cli");
fi2c_start();
data=fi2c_write(BUS_ADR);
data &=fi2c_write(address);
fi2c_start();
data &=fi2c_write(BUS_ADR | 1);
if(data)data=fi2c_read(0);
fi2c_stop();
#asm("sei")
return data;
}

/* write a byte to the I2C device */
unsigned char I2C_write_byte(unsigned char BUS_ADR,unsigned char address, unsigned char data)
{
unsigned char wr_status=1;
#asm("cli");
fi2c_start();
wr_status=fi2c_write(BUS_ADR);
wr_status &=fi2c_write(address);
wr_status &=fi2c_write(data);
fi2c_stop();
#asm("sei");
return wr_status;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 21:07 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Почти уверен, что дело в питании. Проверьте землю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 21 ноя 2010, 21:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Над буквой "В" странная диаграмма какая-то. Попробуйте временно схему с МК питать от аккума если сейчас питаете о сети. Возможно корпус пк (если не ноут) не заземлен и с него помехи идут на общий провод устройств.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 22 ноя 2010, 01:56 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Выдернул контроллер из робота.Пропаял ему, гаду, ответственные места. Подключил к нему только компасс коротким кабелем. Запитал все от аккума. Напряжение питания идеальное. Отбросил комп в угол. Оставил только тестовый светодиод, чтобы мигал в случае ошибки чтения и горел когда все зависло. Помолился и запустил энту хрень. И что вы думаете? Стало еще хуже - ошибок больше, зависания чаще! Все - пойду повешусь! :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 22 ноя 2010, 01:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Сделайте прожект в PROTEUS - тогда общественность сможет подключится к вашему прожекту.

Подтяжки уменьшите до 1,5 кОм.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 22 ноя 2010, 02:26 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
земля от ноги проца до ноги компаса звонится? Если осциллом померить землю компаса относительно земли проца, то что?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 22 ноя 2010, 02:56 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Найди фотик и сфоткай детально творение.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерактивный мобильный робот Vanessa
СообщениеДобавлено: 22 ноя 2010, 06:13 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Уже намылил было веревку, да вспомнил, что у меня валяется BUTTERFLY с MEGA-169. Решил на нем программку протестировать, чтобы пойти путем грубых исключений. Для чистоты эксперимента запитал от того-же источника и использовал тот-же кабель на компас. Работает четко! Значит крамбик... сволочь... Что-бы с ним еще сделать? Может кварц? но до него теперь не добраться, крамб мертво запаян в плату контроллера.
Michael_K писал(а):
земля от ноги проца до ноги компаса звонится? Если осциллом померить землю компаса относительно земли проца, то что?

Хорошая земля, я тоже про это думал. Все 5 I2C датчика ведут себя примерно одинакого, все с разными шлейфами.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 223 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 15  След.

Часовой пояс: UTC + 4 часа


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

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO