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

Dec 11, 2003 3 Replies

Здраствуйте 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

Здраствуйте 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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required