roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 18:13

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: контроль скорости ДПТ
СообщениеДобавлено: 05 дек 2009, 16:26 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
как на мк mega16 1 Mhz контролировать скорость вращения выходного вала ДПТ или уже редуртора. На выходном валу фотоимпульсный датчик от шариковой мышки (порядка 20-ти импульсов на оборот). ПРи скорости например 30 об/с получается 600 импульсов в секунду. Сможет ли контроллер или скорее успеет ли контроллер посчитать эти импульсы и, сравнив с заданным значением, скорректировать ШИМ?
Перечитал, сам не понял что спрашиваю, в общем, подскажите кто алгоритм подсчёта импульсов за единицу времени


Последний раз редактировалось hadok 05 дек 2009, 16:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 05 дек 2009, 16:33 
Не в сети
Аватара пользователя

Зарегистрирован: 29 окт 2007, 18:11
Сообщения: 1866
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript
если успеете за ~800 инструкций посчитать, то да.

_________________
Tomorrow will be. Better


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 05 дек 2009, 17:07 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
hadok писал(а):
подскажите кто алгоритм подсчёта импульсов за единицу времени


Импульсы подавать на ножку прерывания, прерывания включать вот так - http://avr123.nm.ru/03.htm - Прерывания в микроконтроллерах AVR ATmega ATtiny
и таймером измерять время между прерываниями, далее вычисления.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 05 дек 2009, 17:09 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Колесо можно заменить на флажок, тогда будет 30имп*сек или выломать лишние перемычки. Хотя со счетом МК легко справится и без этих заморочек.
Настраиваем таймер, чтобы максимальное число импульсов датчика за это время не превышало размера регистра считающего импульсы - speed_reg.
1. запускаем инкремент speed_reg по таймеру
2. останавливаемся по таймеру
3. сравниваем значение speed_reg с заданным
4. изменяем ток ДПТ
Т.е. таймер задает промежуток времени в течении которого считаем импульсы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 20 дек 2009, 19:35 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
speed_reg - это какой-то специальный регистр или просто переменная, в которую накапливаем импульсы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 20 дек 2009, 19:41 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
переменная, а компилятор выделит для нее один из свободных регистров МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:23 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
что-то я повис на, как казалось простой, задаче.... контролировать скорость вращения вала.


ДЛя тестов установил на одну из лопостей вентилятора магнитик постоянный, и прикрепил геркон, так чтобы он срабатывал при "пролёте" лопости с магнитом. Геркон замыкает землю черезе резистор и ножку порта А.

Контроллер не правильно считает число импульсов. И к тому же, скорость гуляет плюс/минус 10 оборотов.



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

приведу на всякий случай программку свою, может кто найдёт принципиальную ошибку:




Код:

#include <io.h>
#include <delay.h>

#define F_CPU 8000000UL 

#define PD_OUT DDRD = 0xFF



void initialization(void){

PD_OUT;

TCCR0 = 0x03;/*
}
int d,g, i, h ;

void main(){
initialization();

  DDRD = 0xff;   
   DDRC = 0xff;         
   DDRA = 0x00;
   d=0;
   PORTA=0xFF;
   TCNT0=7;
while(1)
{
  if (g==500) {g=0; PORTD=i;   d++; i=0; } 
                     
  if (PINA!=h) {i++;}
  h=PINA;
  g++;

  while (!(TIFR&0x01));
  TIFR=0x01; TCNT0=6;

}

}


при частоте 8 Мгц и делителе 64 таймер переполнятеся 500 раз в секунду, значит когда g=500 мы посчитали кол-во импульсов i за секунду.


Последний раз редактировалось hadok 10 янв 2010, 00:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:25 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Геркон ? прикольно. Вы его параметры смотрели ?

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:26 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
параметры геркона......честно....нет :oops:

поискал.....нету максимальной частоты срабатывания......


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:36 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
А вы время посмотрите.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:44 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
проще говоря, дело в герконе, он не успевает срабатывать?



Если не сложно, avr123.nm.ru, гляньте код пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 10 янв 2010, 00:58 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Извини пожалуйста, я сегодня не смогу, еще полно дел, но для измерения ширины импульсов есть вход таймера 1 - ICP - это аппаратная засечка момента, самая правильная. Попробуй с ней разобраться возможно по рус даташиту на мегу128 ( не суть важно ) на стр. 2 курса.

Твой код только завтра посмотрю внимательно.

Или вот google посоветовал на winavr icp1
http://winavr.scienceprog.com/example-a ... n-lcd.html

там нарисовано и чем мерить обороты :ROFL:

-


Вложения:
optical_interrupter.png
optical_interrupter.png [ 7.19 КиБ | Просмотров: 1797 ]

_________________
Читайте !
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 11 янв 2010, 16:35 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
вентилятор штука такая, у него обороты всегда гуляют, чем больше вентилятор и выше обороты тем больше гуляют, так что с оптическим датчиком тоже не стоит ждать замирания циферок.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 11 янв 2010, 22:05 
Не в сети

Зарегистрирован: 26 июн 2009, 14:15
Сообщения: 157
Откуда: Минск
прог. языки: C++, Assembler
Не уверен, но у геркона вроде тоже возможен дребезг контактов, может из-за этого...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: контроль скорости ДПТ
СообщениеДобавлено: 11 янв 2010, 23:00 
Не в сети

Зарегистрирован: 24 ноя 2008, 19:43
Сообщения: 1054
Откуда: Казань
у геркона дребезг обязан быть...


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

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


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

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


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

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