roboforum.ru

Технический форум по робототехнике.

контроль скорости ДПТ

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

контроль скорости ДПТ

Сообщение hadok » 05 дек 2009, 16:26

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

Re: контроль скорости ДПТ

Сообщение MiBBiM » 05 дек 2009, 16:33

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

Re: контроль скорости ДПТ

Сообщение avr123.nm.ru » 05 дек 2009, 17:07

hadok писал(а): подскажите кто алгоритм подсчёта импульсов за единицу времени


Импульсы подавать на ножку прерывания, прерывания включать вот так - http://avr123.nm.ru/03.htm - Прерывания в микроконтроллерах AVR ATmega ATtiny
и таймером измерять время между прерываниями, далее вычисления.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: контроль скорости ДПТ

Сообщение contr » 05 дек 2009, 17:09

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

Re: контроль скорости ДПТ

Сообщение hadok » 20 дек 2009, 19:35

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

Re: контроль скорости ДПТ

Сообщение contr » 20 дек 2009, 19:41

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

Re: контроль скорости ДПТ

Сообщение hadok » 10 янв 2010, 00:23

что-то я повис на, как казалось простой, задаче.... контролировать скорость вращения вала.


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

Контроллер не правильно считает число импульсов. И к тому же, скорость гуляет плюс/минус 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 раз.
Аватара пользователя
hadok
 
Сообщения: 166
Зарегистрирован: 06 июн 2005, 02:27
Откуда: Минск, Лида

Re: контроль скорости ДПТ

Сообщение avr123.nm.ru » 10 янв 2010, 00:25

Геркон ? прикольно. Вы его параметры смотрели ?
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: контроль скорости ДПТ

Сообщение hadok » 10 янв 2010, 00:26

параметры геркона......честно....нет :oops:

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

Re: контроль скорости ДПТ

Сообщение avr123.nm.ru » 10 янв 2010, 00:36

А вы время посмотрите.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: контроль скорости ДПТ

Сообщение hadok » 10 янв 2010, 00:44

проще говоря, дело в герконе, он не успевает срабатывать?



Если не сложно, avr123.nm.ru, гляньте код пожалуйста.
Аватара пользователя
hadok
 
Сообщения: 166
Зарегистрирован: 06 июн 2005, 02:27
Откуда: Минск, Лида

Re: контроль скорости ДПТ

Сообщение avr123.nm.ru » 10 янв 2010, 00:58

Извини пожалуйста, я сегодня не смогу, еще полно дел, но для измерения ширины импульсов есть вход таймера 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 КиБ) Просмотров: 1643
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: контроль скорости ДПТ

Сообщение Myp » 11 янв 2010, 16:35

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

Re: контроль скорости ДПТ

Сообщение Ito » 11 янв 2010, 22:05

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

Re: контроль скорости ДПТ

Сообщение Ворон » 11 янв 2010, 23:00

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

След.

Вернуться в Микроконтроллеры

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 0

cron