roboforum.ru

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

 

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

Резисторы, транзисторы, конденсаторы, микросборки, чип компоненты ...
Вопросы согласования управляющих модулей с периферией.

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

Сообщение Myp » 30 июн 2007, 12:02

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

как  это можно завести на ADC меги8 чтоб без ОУ обойтись???
хочу контролировать степень разрядки акумулятора а огород городить неохото.
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 15938
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Tracer » 30 июн 2007, 13:42

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

Заводи через делитель
Аватара пользователя
Tracer
 
Сообщения: 195
Зарегистрирован: 24 ноя 2004, 12:36
Откуда: Харьков

Сообщение Vooon » 30 июн 2007, 15:08

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

Код: Выделить всёРазвернуть
 | V+
П
П
|
+---+--- ADC IN
|   |
П  ---
П  --- ~0,1
|   |
--- ---
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение Master » 30 июн 2007, 16:33

[off]Давайте подарим Vooon карандаш.[/off]
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение Vooon » 30 июн 2007, 17:35

[off]зачем мне карандаш? мне клавы достаточно :)
ну и потом не загружать же kicad ради столь простой схемы :)[/off]
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение Myp » 30 июн 2007, 19:51

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



блин
опять до полуночи сидеть считать :(
эх
пойду пока на платке разведу 2 резюка и кондёрчик
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 15938
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение 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;
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение 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
скрытый хозяин вселенной :)
 
Сообщения: 15938
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 30 июн 2007, 21:23

кста
а если вдруг случайно напр на АЦП будет выше Vcc то чё ??
не сгорит???
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 15938
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Vooon » 30 июн 2007, 23:12

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

недолжен (если конечно не в 220 сунеш :) )
после 5.5 В откроется защитный диод (они на всех портах есть)
но можно поэкспериментировать, как вариант добавить резюк в несколько кОм между выходом делителя
и АЦП (тогда точно защитишь, тк диоды эти около 1 мА держат)
а повлияет он слабо (скорее всего даже не заметишь) тк внутреннее сопротивление ацп велико
но лучше не перебарщивать ...
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение North » 03 июл 2007, 09:26

2Мур: Незабудь подключить внешний источник опорного напряжения в таком случае.
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение Vooon » 03 июл 2007, 19:29

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

зачем внешняя опора?
хотя... у мура же не очень чистое питание будет... тогда да - лучше внешнюю и как в ДШ через LC :)
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение Виталий » 03 июл 2007, 21:53

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

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

[/b]
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Сообщение Vooon » 03 июл 2007, 21:59

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

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


:lol:  :D  :wink:
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3325
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение Myp » 03 июл 2007, 22:50

блииин
гдеж я вам возьму чистое опр\орное
да ещё с ЛС о даташиту
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 15938
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

След.

Вернуться в Электроника, электротехника

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Mail.ru counter