Технический форум по робототехнике.
		
	
		 
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 14:15 
			
			
	
			Оцените мои достижения!!!
Я слегка подправил формулу:
TCNT1=1+(60000/10)+(61000/10)+(59000/10)...;
Получается ~18000 - то что надо.
			
				
					- Вложения
 
					
						- 
		
			
 
			
		
		 
					
				
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 14:47 
			
			
	
			Фу!!!
Доделал до 8 серв.
Тока старая проблема вылезла с накоплением ошибки от сервы к серве.
Вот код:
			
				
					- Вложения
 
					
						- 
		
			
 demo.c 
			
			- (5 КиБ) Скачиваний: 441
 
		
		 
					
				
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 14:52 
			
			
	
			Как оказалось заморачиваться с расчетами периода(20-t1-t2-t3...)не пришлось. 
 Разница между 2мс и 1мс очень мало вляет на длину периода!!!
Поэтому я поставил константу  - ~27000(~18.5мс)
 
			
	 
	
	
		
			
				
				
			
			
				
				 aesok » 17 авг 2006, 15:28 
			
			
	
			Lirzman писал(а):Фу!!!
Тока старая проблема вылезла с накоплением ошибки от сервы к серве.
Какая величина ошибки? Лучше а тактах контроллера.
Анатолий.
 
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 15:32 
			
			
	
			Какая величина ошибки? Лучше а тактах контроллера. 
Как и раньше 0.25 - 0.3гр.
А в тиках МК,... не знаю считать надо.
 
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 15:35 
			
			
	
			Самое интересное что сервы 7 и 8 работают правильно(ошибки нет)
			
	 
	
	
		
			
				
				
			
			
				
				 Сергей » 17 авг 2006, 17:08 
			
			
	
			Скорее всего это изза того что ты выставил ТСNT1 = 27000; нада по формуле.
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 17:36 
			
			
	
			Скорее всего это изза того что ты выставил ТСNT1 = 27000; нада по формуле
По формуле получается от 26000 до 28000.
Я поставил 27000, разницы  - 0 , хоть 1 поставь всё равно работает, только сервы дрожать начинают.
Дело тут не в формуле.
 
			
	 
	
	
		
			
				
				
			
			
				
				 Сергей » 17 авг 2006, 17:53 
			
			
	
			Вот я с ИК-датчиками закончу, протестю сам сервы, если проблема не решится.
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 17:58 
			
			
	
			Я уже исправил, просто к каждой последующей серве прибавлял +7 тиков таймера.
Пример:
- Код: Выделить всё • Развернуть
 if(cur_servo==3)
  {PORTB SET_B(2);
  PORTB CLR_B(1);
  TCNT1=gangle[2]+2;
  cur_servo=4;
  }
  else
  if(cur_servo==4)
  {PORTB SET_B(3);
  PORTB CLR_B(2);
  TCNT1=gangle[3]+9;
  cur_servo=5;
  }
  else
  if(cur_servo==5)
  {PORTB SET_B(4);
  PORTB CLR_B(3);
  TCNT1=gangle[4]+16;
  cur_servo=6;
  }
  else
  if(cur_servo==6)
  {PORTB SET_B(5);
  PORTB CLR_B(4);
  TCNT1=gangle[5]+23;
  cur_servo=7;
  }
  else
  if(cur_servo==7)
  {PORTB SET_B(6);
  PORTB CLR_B(5);
  TCNT1=gangle[6]+30;
  cur_servo=8;
Все сервы встали в положение +3.00 

 
			
	 
	
	
		
			
				
				
			
			
				
				 Сергей » 17 авг 2006, 18:00 
			
			
	
			Отлично!
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 18:17 
			
			
	
			Так с сервами я теперь уж точно закончил(если aesok ещё ошибок не найдет) 
 При включении МК все сервы встают в положение +3.00гр.
Думаю теперь надо внедрить модуль управления гусеничным шасси, колёсное не подходит т.к предпологается использовать робота внутри помещений(где невысоки требования к скорости но нужна проходимость, компактность и возможность поворачиваться на месте).
Из всего вышестоящего резонно следует вопрос какие моторы  и схему управления использовать.
Думаю надо моторы помощнее на 36v(от стеклоподъёмников), а так-же мостовую схему управления на транзисторах(H-мост).
На счет l293(298) не знаю.
Управлять всё это дело надо ШИМом. 
Ваши мнения?
ЗЫ Щас придет aesok и найдет кучу багов.(как обычно) 
 Вот код держите:
 
			
				
					- Вложения
 
					
						- 
		
			
 demo.c 
			
			- (4.9 КиБ) Скачиваний: 427
 
		
		 
					
				
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 18:54 
			
			
	
			Сергей писал(а):Думаю не мешалобы переименовать тему =))
Согласен.
Как назвать?
 
			
	 
	
	
		
			
				
				
			
			
				
				 avr123.nm.ru » 17 авг 2006, 19:13 
			
			
	
			да, уту переименовать в "SERVO - программирование на WinAVR"
или еще как-то конкретно.
А под новые идеи новый топик завести в соответствующем разделе форума.
			
	 
	
	
		
			
				
				
			
			
				
				 Lirzman » 17 авг 2006, 19:33 
			
			
	
			Эту тему переименую в "Управление Сервами в WinAvr".
А под робота создам новую "Открытый проект по созданию Гусеничного робота".
Вообще хотелось бы сделать универсального робота(для работы по дому) на подобии того что слева вверху страницы нарисован.
Соглашусь с теми кто скажет что задача ОЧЕНЬ трудная, но я в отличие от них руководствуюсь крылатой фразой - "Тот кто хочет стать миллионером очень редко им становится, но тот кто этого не хочет не становится им никогда".