|
измерительная система на 8 каналов на Atmega 8535, проблема со стабильностью |
|
|
|
Feb 1 2009, 07:14
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 4-01-08
Пользователь №: 33 814

|
Здравствуйте, уважаемые участники форума! Мне требуется сделать систему измерения напряжения на 8 каналов. Сделал вот по такой схеме(принципиальная схема в архиве).МК- Atmega 8535. Каналы опрашиваются поочередно с 1-го по 8-й. После каждого переключения канала делаю холостое преобразование для исключения взаимовлияния каналов. Диапазон входных напряжений от 0 до 5 В. Частотный диапазон входных сигналов хотелось бы хотя бы до 30 кГц, но пока проверяю на постоянных. Точность мне нужна максимально возможная в данной ситуации, в общем беру все 10 бит. Использую режим ADC Noise reduction. Результаты через USART на COM-порт PC. Скорость 4800 бит/c. В качестве экспериментального варианта сделал вот на такой плате (схема в архиве) Для проверки подаю напряжение от 2-х батареек через переменные резисторы. (0-3В) В общем все как бы работает, вот только младшие 2 (часто и 3) разряда очень не стабильны. Дергаются больно сильно. Переменники вначале на 100 кОм брал, пробовал и меньше - на 4.7 кОм, многооборотный – картина не менялась. Провода, что от резисторов к АЦП шли – пробовал вместо простых экранированные ставить – тоже не помогло. Вначале все делал от внутреннего RC-генератора на 4 МГц, но пробовал и внешний на 8 МГц ставить (правда на проводках, не знаю как там с помехоустойчивостью у него) Я девайс подобного рода первый раз делаю, опыта практически нет, поэтому возникает немало вопросов: 1) реально ли получить без дерганий все 10 бит ваще и что для этого надо? Или 9-это предел, а колебания младшего бита сглаживать усреднением только? 2) Все ли верно по схеме у меня или может чего-то не хватает и поэтому такой косяк? 3) питание использую от USB порта… в связи с этим хочу спросить-на сколько оно стабильно? Не может ли из-за него косячить? Я его пока никак не стабилизировал… Кто знаком с этим, подскажите пожалуйста, что можно сделать! Буду рад услышать все замечания и поправки!
Сообщение отредактировал kofa - Feb 1 2009, 07:45
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 24)
|
Feb 2 2009, 19:11
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003

|
Цитата(kofa @ Feb 2 2009, 20:24)  RST7, У меня к вам похожий вопрос: каким образом считали? нельзя ли поподробнее алгоритм расчета? Отвечу вместо RST7, надеюсь он не сильно обидится 8(каналов)*10(бит)*60 000(семплов) = 4,8 Мбит. И это только теория, на практике раза в 1,5 можно смело увеличивать и получим требуемую пропускную способность канала
Сообщение отредактировал smac - Feb 2 2009, 19:16
|
|
|
|
|
Feb 2 2009, 19:34
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 4-01-08
Пользователь №: 33 814

|
а 60 кСэмплов (при 30 кГц) - это из расчета, что частота дискретизации должна быть минимум в 2 раза выше частоты самого сигнала? я правильно понимаю?
|
|
|
|
|
Feb 4 2009, 22:52
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(slog @ Feb 1 2009, 12:33)  Очень категоричное утверждение. К тому же не соответствует действительности. А что касается AVR так 10 разрядов без дрожания совсем не проблема. Ну по крайней мере вторая часть утверждения очень даже соответвует действительности. 30ksps по 8-ми каналам (да даже по одному) без потерь в точности не получить. Афтар! При использовании встроенного АЦП АВРки, при всем желании и 8 бит точности, максимум что светит - 1KSPS на канал. Выходы такие: 1. Если принципиально пользовать AVR - запараллельте 8 штук относительно дешевых и качественных АЦП - ADS7822 (75KSPS) и одновременно считывайте все 8 каналов. (Но тут возникает проблема пропускной способности канала связи с PC, как уже упоминали выше. AVRка просто не справится с потоком данных ~1MB/s даже на макс частоте, не то что на 4Mhz как Вы планируете..., ну разве только взять AVR с внешней шиной (m162/m64/m128) подключить внешний толстый EMAC или ПЛИС и гнать данные туда). 2. Взять проц помощнее, из Атмелов под Вашу задачу так и просится AT91SAM7xxx, там уже есть встроенный достаточно быстрый АЦП (500KSPS --> 500/8 = 62KSPS на канал, ровно то что требуется) и быстрые интерфейсы - USB/EMAC. Плюс обрабатывать поток 1MB/s 32-х битному процу на 55Mhz всяко полегче чем 8-ми битной AVRке на 16Mhz.
|
|
|
|
|
Feb 15 2009, 08:16
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 4-01-08
Пользователь №: 33 814

|
Спасибо за предложенные решения! есть над чем подумать.. только хотелось бы понять еще одно - почему не получается нормальной передачи данных через Com на скорости выше 9600 бод. Там ведь на сколько я знаю до 230 кбод можно доходить (если длину провода укорачивать)У меня провод чуть больше полуметра, а на 19200 бод уже данные какие-то левые приходят. С чем это связано?
|
|
|
|
|
Feb 15 2009, 09:53
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 4-01-08
Пользователь №: 33 814

|
Цитата(bloodden @ Feb 15 2009, 13:29)  С несовпадением частот. Кварц у вас на сколько на АВРе стоит? на данный момент от внутреннего работает на 4 МГц (с записью калибровочного байта в OSCCAL ) Но пробовал и внешний на 8 МГц ставить - тоже самое...
Сообщение отредактировал kofa - Feb 15 2009, 09:59
|
|
|
|
|
Feb 15 2009, 10:09
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(kofa @ Feb 15 2009, 13:16)  только хотелось бы понять еще одно - почему не получается нормальной передачи данных через Com на скорости выше 9600 бод. Там ведь на сколько я знаю до 230 кбод можно доходить (если длину провода укорачивать)
У меня провод чуть больше полуметра, а на 19200 бод уже данные какие-то левые приходят.
С чем это связано? Причин может быть много. Одну из них указал bloodden. Другая, например, -- у Вас что-нибудь со скоростью работы программы. Т.е. приняв байт, прога может его долго обрабатывать, и на принятый второй байт в UARTe может быть записан третий принятый байт. Правда, в UARTe имеется буфер FIFO на одн байт, и это улучшает ситуацию, но но ведь не устраняет полностью проблему быстрого потока и медленной обработки. Что там конкретно у Вас проге, я не знаю. Поэтому, это только предположения. Еще одна из причин, может оказаться, что у Вас линия связи имеет большую емкость, и фронты импульсов завалены. Т.е., опять же, так сходу и не угадать, надо смотреть осциллографом. Межет быть еще что-нибудь. Народ при желании помочь легко накидает Вам кучу своих предположений. При правильной подходе к вопросам передачи данных по телефонной лапше, например, на скорости 230 кбод, Вы должны легко преодалеть расстояние 500 м и чуть более. Что там у Вас конктретно происходит, надо смотреть по месту. Угадывать сложно. -- Доктор, у меня в боку колет уже третий день. Вы случайно не занете что это может быть?
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Feb 15 2009, 20:05
|

Бывалый
  
Группа: Validating
Сообщений: 375
Регистрация: 19-10-05
Из: Kiev, UA
Пользователь №: 9 853

|
Я имел в виду, что, например: 18 432 000 ГЦ разделить на (ровно!, это важно) 160, получится 115200. Так, как УСАПП делает 16 выборок входного сигнала, получается входная частота для него надо: 115200(например такая скорость надо) *16*10 = 18,432МГц. Если опорная частота не будет нацело делиться(тоже не всегда, это зависит от предделителя) на скорость, то у вас будет ошибка. Её можно посмотреть в даташите на МК для разных скоростей и частот в разделе, посвящённому УСАПП, в конце. ЗЫ: Извините за сумбурность, воскресенье - день праздников  и пива с водкой
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|