Оцифровка аналогового сигнала

Do you have a question? Post it now! No Registration Necessary

Threaded View
Здраствуйте All,

Возникла необходимость разработать аппаратно-программный комплекс ;)
на основе персонального компьютера, на котором установлена MS Windows.
Hа компьютере должен отображаться график зависимости некоего параметра
от времени за один период.

Как это планируется:
аналоговый периодический сигнал (период от 10 до 100 мс) с датчика
подается на вход АЦП (точность большая не нужна, поэтому 8 бит хватит),
который преобразует сигнал в цифровое представление не менее 100 раз
за период (чтобы график выглядел более-менее прилично).
Затем его цифровое представление передается через RS-232
(потому что PC + Windows) в компьютер, где и обрабатывается.
Для передачи каждой выборки в компьютер в реальном времени потребуется
сокрость не меньше 115 200 бит/с.
(100 выборок / 10 мс = 10 000 выборок/с * 10 бит = 100 000 бит/c).
Hо читать COM-порт побайтово на такой скорости из под Windows не очень,
хорошо, поэтому выборки лучше складывать в буфер, и по мере возможности
его считывать.
Бывают ли АЦП с UART'ом? С буфером в 1000 байт?
Или придется ставить контроллер с АЦП, UART'ом и ОЗУ 1 кб?
Какой для этого лучше всего подходит?

С уважением, Den


Оцифровка аналогового сигнала
    Hello, Den!

Чет Дек 11 2003, Den Y. Borisov писал к All по поводу "Оцифровка аналогового
сигнала."

 DB> аналоговый периодический сигнал (период от 10 до 100 мс) с датчика
 DB> подается на вход АЦП (точность большая не нужна, поэтому 8 бит
 DB> хватит), который преобразует сигнал в цифровое представление не менее
 DB> 100 раз за период (чтобы график выглядел более-менее прилично).
т.е. минимальное время преобразования 0.1 мс
 DB> Затем его цифровое представление передается через RS-232 (потому что
 DB> PC + Windows) в компьютер, где и обрабатывается. Для передачи каждой
 DB> выборки в компьютер в реальном времени потребуется сокрость не меньше
 DB> 115 200 бит/с.
 DB> (100 выборок / 10 мс = 10 000 выборок/с * 10 бит = 100
 DB> 000 бит/c).
Стоповых битов 2 что-ли или еще парити будет? Так можно 9 бит сделать.
 DB> Hо читать COM-порт побайтово на такой скорости из под Windows не
 DB> очень, хорошо, поэтому выборки лучше складывать в буфер, и по мере
 DB> возможности его считывать.
Зачем. Если у тебя период не четко 100 выборок 10-мс а не менее 100 выборок на
10мс - то надо просто непрервно делать выборки и гнать на 115200, пришем
програмный UART на 12f675. Выдаем старт, 8 бит данных, потом 1 на ножку. (стоп)
и во время этого самого стоп бита можно хватать сигнал с АЦП, чтоб не
привязыватся к времени преобразования перед началом грузим RTCC и по
переполнению снова на старт передачи. Только вот могут проблемы быть с 115200
если захочешь сэкономить на кварце. Если стоит задача сделать ровно 0.1 ms на
выборку - все то-же самое только RTCC грузим при начале передачи байта для
переполнения через 0.1ms. Если денег не жалко - берем pic с аппаратным UART+ADC
тогда программы в нем будет - кот наплакал.
 DB> Бывают ли АЦП с UART'ом? С буфером в 1000 байт?
Конечно нет.
 DB>  Или придется ставить контроллер с АЦП, UART'ом и ОЗУ 1 кб? Какой для
 DB> этого лучше всего подходит?
Hе совсем понятно зачем озу...
 DB> С уважением, Den
  WBR!  Maxim Polyanskiy.


Оцифровка аналогового сигнала
Hi Maxim !

 Совсем недавно 12 Dec 03 01:55, Maxim Polyanskiy писал к  Den Y. Borisov:

 DB>> сокрость не меньше 115 200 бит/с. (100 выборок / 10 мс = 10 000
 DB>> выборок/с * 10 бит = 100 000 бит/c).
 MP> Стоповых битов 2 что-ли или еще парити будет? Так можно 9 бит сделать.
Это стартовый. Плюс стоповый. Плюс 8 бит байта. Итого 10.


         WBRgrds
                   Ruslan


Re: Оцифровка аналогового сигнала
Здраствуйте Maxim,
*12.12.03* *1:55:36* Вы писали в *RU.EMBEDDED*
сообщение к *Den Y. Borisov*
о *"Оцифровка аналогового сигнала"*.

 MP> Стоповых битов 2 что-ли или еще парити будет? Так можно 9 бит сделать.

1 старт-бит, 8 бит данных, 1 стоп-бит. 1 + 8 + 1 = 10.

 DB>> Hо читать COM-порт побайтово на такой скорости из под Windows не очень,
 DB>> хорошо, поэтому выборки лучше складывать в буфер, и по мере возможности
 DB>> его считывать.

 MP> Зачем. Если у тебя период не четко 100 выборок 10-мс а не менее 100
 MP> выборок на 10мс - то надо просто непрервно делать выборки и гнать на
 MP> 115200, пришем програмный UART на 12f675.

Да, нужно не менее 100 выборок на период. Hо мне нужно быть уверенным,
что два байта, считанные подряд из COM-порта, относятся к рядом расположенным
выборкам, а не к отстоящим к друг от друга на полпериода.
Поэтому пусть лучше выборки складываются в кольцевой буфер по мере оцифровки,
тогда можно будет их считывать, зная ЧТО именно ты читаешь.

С уважением, Den



Site Timeline