roboforum.ru

Технический форум по робототехнике.

ADC для контроля аккумулятора

ADC для контроля аккумулятора

Myp » 30 июн 2007, 12:02

вобщем есть акумулятор
6 вольт
мин напр 4.5 вольт, макс 7.5 вольт
диапазон измерений 3 вольта

как  это можно завести на ADC меги8 чтоб без ОУ обойтись???
хочу контролировать степень разрядки акумулятора а огород городить неохото.

Tracer » 30 июн 2007, 13:42

А зачем тебе ОУ при таких напряжениях?
А с чем сравнивать будеш?

Заводи через делитель

Vooon » 30 июн 2007, 15:08

через простой делитель и все ок
посчитать и сам думаю сможешь
только не давай слишком маленький ток через делитель
помехи будут... ставь около 1 мА - 400 мкА

Код: Выделить всёРазвернуть
 | V+
П
П
|
+---+--- ADC IN
|   |
П  ---
П  --- ~0,1
|   |
--- ---

Master » 30 июн 2007, 16:33

[off]Давайте подарим Vooon карандаш.[/off]

Vooon » 30 июн 2007, 17:35

[off]зачем мне карандаш? мне клавы достаточно :)
ну и потом не загружать же kicad ради столь простой схемы :)[/off]

Myp » 30 июн 2007, 19:51

ах точно
этож через дделитель нуно завести
а я чёт посмотрел и ничё не пришло в голову



блин
опять до полуночи сидеть считать :(
эх
пойду пока на платке разведу 2 резюка и кондёрчик

Vooon » 30 июн 2007, 21:02

Myp писал(а):блин
опять до полуночи сидеть считать :(

ну что там считать?

сначало прикинем общее сопротивление
U = 8 V
I = 1 mA

I = U/R => R = U/I
R = 8 / 1e-3 = 8 кОм

теперь найдем сопротивление нижнего
R = 5 / 1e-3 = 5 кОм

R1 = 3 кОм
R2 = 5 кОм

а теперь берем протеус и проверяем что я сказал + поточнее подбираем номаналы
(вместо верхнего я бы посоветовал поставить подстроечник гденить 10к)

а что касается получения правильного значения напряжения с АЦП нужно вычислить пропорцию

 5.0         x
------- = ------ , где y - результат АЦП
1023        y

те
Код: Выделить всёРазвернуть
uncigned int a;
float voltage;

a = readADC(<chanel>);
voltage = (5.0 * y)/1023;

Myp » 30 июн 2007, 21:19

засимуировал
как доктор прописал

разряженый акк 4.5 вольт
ток 0.56 мА напряжение на АЦП 2.81 В


заряженный акк 8 вольт
ток 1мА АЦП 5 В

тока код вот такой наверно? =)
Код: Выделить всёРазвернуть
uncigned int a;
float voltage;

y = readADC(<chanel>);
voltage = (5.0 * y)/1023;

Myp » 30 июн 2007, 21:23

кста
а если вдруг случайно напр на АЦП будет выше Vcc то чё ??
не сгорит???

Vooon » 30 июн 2007, 23:12

ну ошибси одной букавкой :) все равно же понятно :) да и писал "на одном дыхании"

недолжен (если конечно не в 220 сунеш :) )
после 5.5 В откроется защитный диод (они на всех портах есть)
но можно поэкспериментировать, как вариант добавить резюк в несколько кОм между выходом делителя
и АЦП (тогда точно защитишь, тк диоды эти около 1 мА держат)
а повлияет он слабо (скорее всего даже не заметишь) тк внутреннее сопротивление ацп велико
но лучше не перебарщивать ...

North » 03 июл 2007, 09:26

2Мур: Незабудь подключить внешний источник опорного напряжения в таком случае.

Vooon » 03 июл 2007, 19:29

North писал(а):2Мур: Незабудь подключить внешний источник опорного напряжения в таком случае.

зачем внешняя опора?
хотя... у мура же не очень чистое питание будет... тогда да - лучше внешнюю и как в ДШ через LC :)

Виталий » 03 июл 2007, 21:53

Код все-таки такой =)
Код: Выделить всёРазвернуть
unsigned int a;
float voltage;

y = readADC(<chanel>);
voltage = (5.0f * y)/1023.0f;

[/b]

Vooon » 03 июл 2007, 21:59

да можно указать что константы флоат :)
кстати полностью правильный код вот:
Код: Выделить всёРазвернуть
unsigned int y;
float voltage;

y = readADC(<chanel>);
voltage = (5.0f * y)/1023.0f;


:lol:  :D  :wink:

Myp » 03 июл 2007, 22:50

блииин
гдеж я вам возьму чистое опр\орное
да ещё с ЛС о даташиту


Rambler\'s Top100 Mail.ru counter