реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Датчик-->МК-->ПК: оптимизация, прошу поделиться опытом
Stinov
сообщение Sep 1 2009, 19:37
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 1-09-09
Пользователь №: 52 141



Здравствуйте. Помогите определьться:
НУЖНО: собрать несложное но довольно быстрое(по реакции) устройство в связке с ПК:
СУТЬ РАБОТЫ:
1 ко входам АЦП МК подключены датчики (4 - 8 шт.), МК поочерёдно измеряет напряжение на датчиках, цикл опроса длится t1. Данные с минимальной задержкой передаются в компьютер через COM-порт.
2 ТРЕБОВАНИЯ к конструкции:
_____________________________
......минимально ....|....желательно....
_______________|____________
.1 время t1<2 мс| время t1< 1 мс
.2 точность 6 бит| точность 8 бит
.3 ------------------- | калибровка датчиков
.4 МК быстрее AtMega8 | МК AtMega8
.5 ----------------------| задержка* < 1-4 мс
.6 4 датчика | 6 - 8 датчиков
_____________________________
* очень важна минимальная задержка между появлением сигнала датчика и передачей данных в ПК ( ведь ещё будет и задержка в самом ПК на обработку инфы и вывод результата)
3 ПРОЦЕССЫ (т.е. будет происходить следующее )
- измерение
- пересчёт результата (для 2.3)
- передача в ПК

ВОПРОС:
1- возможна ли реализация п.2.5 ?
2- возможно ли реализовать п.2.2 без отключения контроллера на время измерения, а в связи с этим и п.2.1 и п.2.5 ?
(Интересует оптимальное и целесообразное использование таймеров и прерываний, т.к.
возможны варианты реализации- например в основной программе передача в ПК, а измерение в прерывании; либо наоборот.)
Т.е. прошу поделиться опытом-
3- какие варианты брать в разработку, акакие сразу НЕ следует использовать ?
Go to the top of the page
 
+Quote Post
_dem
сообщение Sep 1 2009, 20:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Все возможно.
Схема довольно проста - задаемся частотой оцифровки в 1 кГц, 8 датчиков - итого 8 кБпс или 64 кбпс поток.
При частоте ~8 мГц это 1К тактов на прерывание - более чем достаточно - за это время можно Титаник утопить, не то что пересчитать значение по таблице smile.gif
Берем кварц на 7.3728 Мгц, настраиваем USART на 115200 - с заведомым запасом по скорости.
Задаемся частотой опроса, большей, чем нужно - к примеру, 1.4 кГц или 11.2 килосемпла - чтобы оставалось окно на передачу преамбулы в главном цикле.

Далее схема работы - настраиваем ацп, ком-порт, и почти вся работа в прерывании.
Передаем какие-то два байта сигнатуры "старт пакета", потом запуск АЦП, в прерывании тупо скидываем значение в TDR USART-а.
Учитывая, что скорость передачи USART заведомо намного больше, чем скорость опроса - ничего не ждем.
Неготовность USART - аварийная ситуация.

Как бы все. Atmega8 одной хватит.

Про калибровку - уточните, в каком именно виде надо - предварительная, адаптивная, etc ?

Ничего вроде не забыл ?

примерно так получается

Код
volatile unsigned char channel = 0;

ISR(adc) {
usart_send( adc_get_result() );
adc_start(channel++);
}

main()
{
configure_usart(115200);
configure_adc(1500);
while (1)
{
   // sending packet header
  usart_Send( header_byte_0 );
  usart_Send( header_byte_1 );
  // starting conversion
   channel = 1;
   adc_start(channel);
// wait for all channels to complete
  while (channel < 8);
// wait for usart free
while (!(usart_tx_rdy()));
}// while

}


p.s. 8 бит вполне приемлимых обычно получаются без особых ухищрений при условии чистого питания.
p.p.s Задержка между снятием показания с АЦП и попаданием его в приемный буфер USART на PC получится порядка 0.1 мс.
Go to the top of the page
 
+Quote Post
Stinov
сообщение Sep 2 2009, 15:30
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 1-09-09
Пользователь №: 52 141



Благодарю за подробный ответ.
буду пробовать...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016