stells 12 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Возможно, не выдерживаете достаточную паузу перед измерением после переключения канала. можно было бы предположить, что запрограммирована очень высокая частота тактирования АЦП или автор не читает флаг готовности АЦП, но ведь другие каналы работают нормально. я так думаю, что со всеми каналами он работает одинаково Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Я предполагаю, что дело в потенциометре, которым, как я понял, автор имитирует термодатчик. Механический контакт потенциомера может давать описанное явление, если через него пропускать ток делителя. Для проверки АЦП, переменник нужно включать между землей и питанием, а с "бегунка" снимать выходное напряжение. Тогда будет все нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Я предполагаю, что дело в потенциометре, которым, как я понял, автор имитирует термодатчик. так у него и с термодатчиком до 150мВ шума было... осциллографом надо конечно посмотреть в первую очередь - реальный это шум или "глюки" АЦП Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба ... Потому и посоветовал, поставить делитель на постоянных резисторах с большим кондером. И подключить непосредственно к питанию и земле МК, мимо всех лишних проводов. Тогда будет понятно, откуда шум. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hwdev_plus 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба можно было бы предположить, что запрограммирована очень высокая частота тактирования АЦП или автор не читает флаг готовности АЦП, но ведь другие каналы работают нормально. я так думаю, что со всеми каналами он работает одинаково Со всеми каналами работаю одинаково: void ADC_Init(void) { //set prescaller and enable ADC ADCSRA |= (1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); //select reference voltage //AVCC Voltage Reference with external capacitor at AREF pin ADMUX |= (1<<REFS0); } //***************************************************************************** // ADC single conversion routine //***************************************************************************** static uint16_t adc_value; unsigned short adc_conv(uint8_t channel) { //set ADC channel ADMUX = (ADMUX&0xE0) + channel; //Start conversion ADCSRA |= (1<<ADSC); while (ADCSRA & (1<<ADSC)); adc_value = ADCW; return adc_value; } перекидывал потенциометр на другой канал АЦП - та же петрушка получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Ну и замечательно, что одинаково работаете со всеми каналами АЦП. Поставьте делитель на вход, как я рекомендовал, тогда по результату можно о чем-то говорить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Microwatt 2 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба Так это на живом автомобиле шумит или еще на столе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Со всеми каналами работаю одинаково: void ADC_Init(void) ... Я там криминала не обнаружил, все ОК. если я подсоединяю делитель, запитанный от напряжения питания МК, постоянный резистор 1% и потенциометр, то наблюдается дрожание по 4-5 младшим разрядам. К какой точке подключен земляной провод делителя? В идеале при проверке ваш потенциометр должен быть подключен к земляной ножке проца. Если же вы потенциометр заземляете на корпус автомобиля там, где стоит ваш датчик, то броски объясняются помехами в земле. Кондер параллельно датчику никак не поможет, если земляной конец кондера подключен к земле далеко от земляного пина проца. В вашем случае (на автомобиле) помеха между землей датчика и землей проца может быть огромной. Корректно организовать измерения следовало бы так: Разбаланс между "левой" и "правой" землями может достигать нескольких вольт в импульсе или десятков милливольт DC. Фильтр R1C1 убивает импульсные помехи. Для того, чтобы убрать DC помехи, надо их вычесть из результата измерения. Для этого вторым каналом АЦП можно померять напряжение на земляном конце датчика и вычесть его из результата, померянного первым каналом АЦП. Резистор R3 нужен для того, чтобы измерять не только положительные, но и отрицательные смещения земляного напряжения датчика. Все показанные на схеме кондеры должны быть присоеденены к земле как можно ближе к земляному пину проца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба А вот R3 совсем не нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба А вот R3 совсем не нужен. Пример. Предположим, что на "земляном" конце Rx присутствует постоянное смещение -100 мВ относительно земли микроконтроллера. Без R3 на входе ADCin2 будет -100 мВ, и микроконтроллер, измеряя канал ADCin2, выдаст результат 0x0000. А с R3, если Vcc=5 B, на входе ADCin2 будет +50 мВ, и АЦП выдаст вменяемый результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба В вашем случае (на автомобиле) помеха между землей датчика и землей проца может быть огромной. Корректно организовать измерения следовало бы так: мне кажется постоянное напряжение смещения (если оно действительно есть) можно просто один раз измерить и учесть программно, чем тратить на это целый порт АЦП. а если у автора несколько датчиков в разных точках кузова (шасси)? под каждый датчик выделять отдельный порт для измерения потенциала земли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Пример. Предположим, что на "земляном" конце Rx присутствует постоянное смещение -100 мВ относительно земли микроконтроллера. Без R3 на входе ADCin2 будет -100 мВ.... Теперь ясно. Недоглядел :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба мне кажется постоянное напряжение смещения (если оно действительно есть) можно просто один раз измерить и учесть программно, чем тратить на это целый порт АЦП. а если у автора несколько датчиков в разных точках кузова (шасси)? под каждый датчик выделять отдельный порт для измерения потенциала земли? Один раз не получится. Оно "постоянное" в том смысле, что неизвестно, сколько оно там торчит, прежде чем исчезнуть или изменить значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tolyaha 1 1 июля, 2009 Опубликовано 1 июля, 2009 (изменено) · Жалоба Пример. Предположим, что на "земляном" конце Rx присутствует постоянное смещение -100 мВ относительно земли микроконтроллера. Без R3 на входе ADCin2 будет -100 мВ, и микроконтроллер, измеряя канал ADCin2, выдаст результат 0x0000. А с R3, если Vcc=5 B, на входе ADCin2 будет +50 мВ, и АЦП выдаст вменяемый результат. Хорошее предположение, а если наоборот +100 мВ, тогда ошибка уже будет 250 мВ. Вы этим резистором просто добавили ошибку в 150 мВ. Прошу прощения невнимательно посмотрел ртсунок. Если в расчетах компенсировать смещение +150 мВ, тогда все правильно. Изменено 1 июля, 2009 пользователем Tolyaha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Хорошее предположение, а если наоборот +100 мВ, тогда ошибка уже будет 250 мВ. Вы этим резистором просто добавили ошибку в 150 мВ. почему? приглядитесь, это обычный мост Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться