Вопрос по использованию АЦП в Attiny26L

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1455
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

Сообщение WatchCat »

Имеется батарея из девяти последовательно включенных никель-кадмиевых аккумуляторов, работающих с инвертором 12/220в. Это компонент системы автономного энергоснабжения моего дома(обитаю в сельской местности).
В процессе эксплуатации хочется следить за изменением напряжения на _каждой_ банке как при заряде так и при разряде.
Понятно, что хочу поручить эту задачу микроконтроллеру, который имеет для этого встроенный ADC. Так как банок - девять, то и входов ADC должно быть как минимум не меньше. Из имеющегося под рукой нашлась Attiny26L-8SU, была вытащена из сдохшей платы "плавного пуска" двигателя электрокосилки:)
Устройство ее ADC - на прилагаемом рисунке, это чтобы уважаемым Котам лишний раз по даташитам не ползать.
Вопрос - как правильно подключить входы ADC к банкам аккумуляторов? "Просто так" - очевидно не получится, так как опорный источник ADC не бывает выше питания контроллера, а питание +5в. А полное напряжение батареи аккумуляторов в конце заряда останавливается на 15.85вольт.
Значит надо думать в сторону использования дифференциальных входов. И вот тут моя мысля буксует так как входы вроде бы и дифференциальные, но "не совсем" - у них общие концы имеются.
Подскажите пожалуйста - имеет ли задача решение в таком виде или все же придется внешний мультиплексор изобретать, что очень сильно лееень...
Вложения
adc.gif
Схема ADC контроллера Attiny26
(37.17 КБ) 809 скачиваний
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 130
Зарегистрирован: Ср дек 29, 2010 17:30:34

Сообщение aleksey_gregul »

Зачем мультиплексоры?
Очень простое лобовое решение:
С каджой банки свой делитель до напряжения, не выше опорного.
С каждого делителя ко входам ацп.
Последовательно опрашиваете все входы.
Методом вычитаний определяете напряжения на каждой банке.
Все.
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Что-то не понятно вы пишите.Батарея из 9 банок в 15,85 вольт.Значит на каждой банке,если она исправна,будет не более 1,76 вольт.Так что вам внутреннего опорного в 2,56 вольт-самый раз без всяких делителей.
И ещё,я так и не вкурил,дифференциальные входы вам зачем,амперметр хотите сделать?
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Вот у меня много таких МК (tiny26). Но до его АЦП я пока не добрался. Если, что - всё изучу, проверю в железе и выложу суда. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 130
Зарегистрирован: Ср дек 29, 2010 17:30:34

Сообщение aleksey_gregul »

Изображение
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Да, верно. В этом МК уже встроенный мультиплексор. Для метода вычитания наверное необходимо сооружать одинаковые делители напряжения для всех используемых входов. Главное, чтобы последний делитель не выступал напряжением выше опорного.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Сообщение zhu4er »

Из имеющегося под рукой нашлась Attiny26L-8SU, была вытащена из сдохшей платы "плавного пуска" двигателя электрокосилки:)
А проверяли микру? Она рабочая? Не залоченая?
А тебе хватит выводов для дальнейшей индикации? Я лично сомневаюсь... Я бы для такой задачи либо второй контроллер подключил бы или Мегу128 взял бы
Даже у стен есть уши...
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

А чего не хватит? Помоему где-то у меня есть длиииинный 12-разрядный семисегментный индикатор с контроллером, принимающий данные для индикации из SPI интерфейса. В этой тиньке как раз полуаппаратный USI останется нетронутым. С него-то можно и выводить. Можно индикатор собрать и на логике с использованием сдвиговых регистров и готовых дешифраторов значение>сегмент.
И что в МК может быть заблокированно? LOCK биты? Они сбрасываются при стирании кристалла.
Что ещё? SPIEN? Параллельный программатор это дело решит в два клика.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

DX168B писал(а):Главное, чтобы последний делитель не выступал напряжением выше опорного.
Лучше сказать, чтобы ни один делитель не выдавал напряжения выше опорного :)

WatchCat, в такой схеме надо учесть, что погрешности на каждом канале будут разные, и цена одного "тика" АЦП тоже (в 9 раз между первым и последним каналами). Вывод - отнестись с должным вниманием к вычислениям... Удачи!
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1455
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

Сообщение WatchCat »

Микросхема вполне живая. На плате от косилки был аж разъемчик для программатора, правда ответную часть такую я не нашел, просто проводки прицепил, проверил, на запросы софта отзывается.
Данные из этой Tiny действительно буду доставать по SPI, а всем остальным будет заниматься поставленная рядом Atmega16A, просто потому что их у меня есть. Найду энергонезависимую память с последовательным доступом и буду в нее писать напряжения со всех банок аккумулятора каждую например минуту. По заполнении памяти - будут затираться самые старые данные.
А когда захочется порассматривать графики изменения напряжения - подключу комп по RS232 (через шнурок от устаревшего мобильника, там как раз преобразователь уровней есть) ,скачаю данные из памяти и загружу в программу GRACE.
Некоторый собственный любительский опыт в общении с Atmega имеется.
Программирование двух контроллеров не пугает. Несколько лет назад я подрабатывал наладчиком в одной фирме, так вот там как раз такая конфигурация в одном изделии была - по SPI общались между собой две Atmega128, и к ним еще периодически подключалась Attiny
с подключенной последовательной памятью для записи данных и переноса их на другое устройство. Я довольно хорошо усвоил как все это работает, да и всегда могу проконсультироваться у тех, кто это сделал.
А вот предложенная схема с делителями меня смущает. Точнее смущает вопрос точности измерения напряжения последней банки. Как тут верно было сказано - шаг АЦП будет разный, и для девятой банки самый крупный.
Не эстетично это решение выглядит.
Потому и думал как бы дифференциальные входы применить.
Но для начала можно и так попробовать, посмотреть что получится.
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Точность... ща прикинем :)
10-бит АЦП это 1024 отсчёта. Пусть Vref будет встроенный на 2.56в. Т.е. 1 отсчёт АЦП будет эквивалентен 2.56/1024=0.0025в.
Пусть максимальное измеряемое напряжение Vmax будет 25.6в (в 10 раз больше Vref, для красоты). Соответственно ставим делитель, чтобы получить 1/10 от измеряемого напряжения.
Так как делитель у нас на 10, то 1 отсчёт АЦП будет соответствовать напряжению 0.0025*10=0.025в на измеряемой цепи.
На мой взгляд, даже с такими параметрами точности будет достаточно чтобы следить за "младшей" банкой. Можно даже делители сделать одинаковыми, чтобы расчёты упростить немного.
Так как измерения не спешные, то шумы можно устранять усреднением по нескольким измерениям.
Так что, вроде, хватает точности. :)

По поводу дифференциальных входов - абсолютная точность хуже, чем у "одноканальных" измерений (до 24-27 отсчётов АЦП). Хотя диапазон значительно уже. Может и выйдет лучше, но не на много, думаю. Надо считать... Да и входов-каналов там 8 штук, а у тебя банок 9.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

WatchCat писал(а):А вот предложенная схема с делителями меня смущает. Точнее смущает вопрос точности измерения напряжения последней банки. Как тут верно было сказано - шаг АЦП будет разный, и для девятой банки самый крупный.
Не эстетично это решение выглядит.
Не шаг ацп разный (делитель то одинаковый),а погрешность.
ведь на результат измерения влияют и другие банки.
хотя погрешность измерения можно свести на нет если отнимать от последнего измерения предпоследнее, а не сумму всех предыдущих банок, так погрешность не накапливается.
Un=Vn-V(n-1)
Где Un- напряжение на n-ой банке
Vn-абсолютное напряжение относительно минуса.

Мне кажется лучше для точности быстренько пробежаться по АЦПшкам, а потом уже вычислениями заниматься
чтоб мгновенные изменения напряжения не сильно влияли.
В поисках истины человек развивается.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»