Страница 1 из 1
измерить сопративление с помощью мк
Добавлено: Ср фев 11, 2009 16:29:01
shtorm
затея подключить датчик топлива в баке авто к мк (ATMega16), только не хватает знаний для реализации, известно что сопративление у датчика (в маем случае) колеблется от 300 Ом до 1,2 кОм обьем бака 50л. 1л в баке=18 Ом. как заставить мк чувствовать это?
Добавлено: Ср фев 11, 2009 17:19:51
Lonleystranger
Меряйте не сопротивление, а напряжение. Т.е. на один контакт датчика +5В, с другого микроконтроллером снимаете напряжение. Если будете ставить Мегу8,16, там уже есть АЦП, совсем просто...если Tiny2313, там есть компаратор, можно и спомощью него...
Добавлено: Ср фев 11, 2009 19:42:50
shtorm
Lonleystranger использую 16мегу, и с датчика по умолчанию идет "минус" на базовый прибор...вот это меня и вводит в заблужнение...
Добавлено: Ср фев 11, 2009 20:33:45
Lonleystranger
Значит датчик в машине заземлен (один провод). Еще проще - значит на второй подаем через резюк +5В, и меряем напряжение после резюка (падение напряжения на датчике). Т.е. схема делителя на 2 резисторах, один из которых переменный.
Добавлено: Ср фев 11, 2009 22:57:08
shtorm
Lonleystranger т.е. на мк +5 через резюк? а минус с тадчика? а какие номиналы? если можно приблезительно нарисовать, то буду благодарен
P.S. схема как в соседнем топике про термометр?
Добавлено: Чт фев 12, 2009 01:38:55
Lonleystranger
Вот примерно так, собственно действительно как и в термометре-принцип один.
Номинал резистора подбирается так, чтобы величина напряжения изменялась как можно более линейно в зависимости от уровня топлива, и в то же время детали схемы не грелись...
Добавлено: Чт фев 12, 2009 10:01:03
shtorm
понял, спасибо большое

Добавлено: Чт фев 12, 2009 16:38:50
shtorm
вобщем попробывал смоделировать, и появились вопросы. Вот что я сделал в программной части:
Код: Выделить всё
...
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
...
read_adc(0);
sprintf(lcd_buffer,"ADC=%i",ADCH);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(500);
...
Все остальное сгенерировал CodeVision, ах да, я включи только 8битный режим, насколько я понял по статьям так проще...И в итоге на дисплее у меня число от 0 до 255. Если использовать схему которую предложил
Lonleystranger, с номиналами: постоянный резюк 500 Ом переменный 1,2к то максимальное чило на ADCH=183. Теперь как правильно посчитать что чему эквивалентно? 183/1200(Ом)=0,1525 -это чему равен 1Ом -это правильное исчисление?
И еще вопрос как защитить стандартный прибор, ведь если к датчику подрубить +5В через резюк показанья будут неверными или нет?
P.S. если что не так не пинайте сильно, это моя первая попытка освоить АЦП

Добавлено: Чт фев 12, 2009 21:38:22
Lonleystranger
Чтоб работало от 12 В, надо сделать другой делитель, как на схеме. И еще числа указывайте как в ASM 0x-16ричная система или HEX в конце либо в конце DEC,а то немного непонятно 183 Dec или Hex...В принципе 183 из 255 - очень неплохо для измерения. Но надо бы проверить линейность показаний в эксперименте, график начертить...а то ведь резисторы-то переменные есть со скачком в начале, в конце...
PS!!!Резисторы в схеме (2шт) подбирать так, чтобы при максимальном сопротивлении датчика на них напряжение было не более 5В!!!Подбирать без МК!!!
Добавлено: Сб фев 14, 2009 09:48:21
shtorm
сделал такое (см. файл) вроде все работает погрешность гдето 20гр.

и заодно сделал делитель для сьема бортового напряжения, опорное напряжение использовал внутренее 2,65(дабы было точнее) и еще поставил стабилизатор (7805) чтоб не скакала напруга при сьеме данных с бака...все правильно сделал?
Добавлено: Сб фев 14, 2009 18:45:38
Lonleystranger
В принципе, пользоваться-то Вам

погрешность 20 грамм очень даже неплохо, штатный небось 1-2 литра?

. Можно было бы конечно поставить стабилизатор именно на датчик (+12В---стабилизатор-----датчик), потому как смысл резистора R3 на схеме...