Например TDA7294

Форум РадиоКот • Просмотр темы - АЦП Attiny13, не корректная работа
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср авг 06, 2025 15:49:40

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Вс дек 06, 2015 21:28:10 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 29, 2015 17:50:29
Сообщений: 29
Рейтинг сообщения: 0
Добрый день! Собираю зарядный аппарат для АКБ. Контроль за режимами заряда решил собрать на Attiny 13A. И тут началось самое интересное. Теория не совпадает с практикой. Или по моей глупости или из-за китайской аттинки - не знаю. Думаю, поможете разобраться. Приведу свои расчеты. Может там что-то не так.
Напряжение беру с делителя ( 60к/15к) ,Uвх/Uдел = 5
Опорное напряжение – Reference = Avcc , 5 В
Максимальное измеряемое напряжение Uвх = 21 В при этом на входе МК будет 4,2 В. Отсюда следует Uдел = АЦП *(4,2/1023) => Uвх/5 = АЦП * (4,2/1023) => АЦП = Uвх *1023/21
По этой формуле нахожу, что 13,2В в АЦП - 643 , 14,8В - 721
Для наглядности пишу , собираю на макете схему и заливаю простенький код в МК:
Код:
$regfile = "attiny13.dat"
$crystal = 4000000
Config Portb.1 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
If Getadc(2) <= 643  Then Portb.1 = 1
If Getadc(2) >= 721  Then
Do
Portb.1 = 0
Loop Until Getadc(2) <= 643
Else
Portb.1 = 1
End If
Loop
End


Включение, отключения диода не происходит. Путем плясек с бубном установил, что все начинает работать при АЦП равном соответственно: 287 (для 13,2 В) и 334 (для 14,8В)
Почему?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Пн дек 07, 2015 04:31:19 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4333
Откуда: Ижевск
Рейтинг сообщения: 0
Если исходить из выражения преобразования,
Изображение получаются другие цифры
Vin=13,2V
ADC=1024*(13.2/5)/5=540
Vin=14,8V
ADC=1024*(14,8/5)/5=606
Вложение:
ADC_RESULT.GIF

Почему после "плясек с бубном" начинает работать, не знаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Пн дек 07, 2015 18:28:34 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 29, 2015 17:50:29
Сообщений: 29
Рейтинг сообщения: 0
В принципе эта же те формула, но без поправок на то, что 1023 АЦП соответствует 4,2В(для конкретной моей схемы), а не 5 В. Разве не так? Даже если по этой формуле, то практические результаты тоже близко не подходят. Проверил на второй - тоже самое.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Вт дек 08, 2015 05:04:55 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4333
Откуда: Ижевск
Рейтинг сообщения: 0
Если считаете, что опора равна 4,2V - да будут такие значения. Только зачем писать
Ramis12 писал(а):
Опорное напряжение – Reference = Avcc , 5 В


Ramis12 писал(а):
Проверил на второй - тоже самое.
Значит сидит какая-то лажа... Нужно искать. Удачи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Сб дек 26, 2015 22:35:48 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 29, 2015 17:50:29
Сообщений: 29
Рейтинг сообщения: 0
Короче не стал я мучиться с этим АЦП и решил поступить по хитрому. Нажимаем кнопку, записываем данные в eeprom. И так три раза: для Uвкл, Uвыкл и ограничение по току. Программка работает. Стоит на переделанном БП от ПК. Защита работает. Если раньше при замыкании вылетали ключи, мост, то сейчас нормально - продолжает работать.
Код:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 8
$swstack = 16
$framesize = 16
Declare Sub Izmer()
Declare Sub Miganie()
Declare Sub Miganie1()
Dim N As Bit
Dim I_izm As Word
Dim U_izm As Word
Dim U_off As Word
Dim U_on As Word
Dim I_off As Word
Config Debounce = 10
Config Portb.0 = Output
Config Portb.1 = Output
Config Pinb.2 = Input
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Portb.0 = 0
Portb.1 = 1
Pinb.2 = 1
N = 0
$eeprom                                                     'читаем данные из ячеек eeprom
Uonn:
Data 10%
Uoff:
Data 20%
Ioff:
Data 30%
$data
Readeeprom U_on , Uonn
Readeeprom U_off , Uoff
Readeeprom I_off , Ioff
'----------   тело----------------------------------------------------------------------
1:
Do
Debounce Pinb.2 , 0 , Vkl                                   'при нажатии переходим на Vkl
Call Izmer
If U_izm < 400 Then Portb.1 = 0                             'вызываем подпрограмму для измерений
If I_izm > I_off Then Portb.1 = 0                           '  если ток больше запсанного значение в eeprom, то МОП транзистор закрываем
If U_izm > U_off Then Portb.1 = 0                           '  то же самое для напряжения 14,8 В
If U_izm < U_on Then Portb.1 = 1
If N = 0 Then Call Miganie1                                 '  если меньше 13,2 В , то открываем МОП транзистор
Loop
'----------
Sub Izmer()
U_izm = 0
I_izm = 0
U_izm = Getadc(2)                                           'PB4
I_izm = Getadc(3)
                                           'PB3
End Sub

Vkl:
Do
Call Izmer                                                  'берем значение АЦП
Writeeeprom U_izm , Uonn                                    'записываем в 10 ячейку
Call Miganie                                                'моргаем ,чтобы визуально контролировать запись
Goto Vikl                                                   ' переходим на Vikl
Loop

Vikl:
Do                                                          'выполняем пока не нажали на кнопку
Debounce Pinb.2 , 0 , Vikl1                                 ' при нажатии переходим на Vikl1
Loop

Vikl1:
Do
Call Izmer                                                  'берем значение АЦП
Writeeeprom U_izm , Uoff
Call Miganie                                                'записываем в 20 ячейку,
Goto Ivikl                                                  'моргаем
Loop                                                        ' переходим на Ivikl

Ivikl:
Do                                                          'выполняем пока не нажали на кнопку
Debounce Pinb.2 , 0 , Iikl1                                 ' при нажатии переходим на Vikl1
Loop

Iikl1:
Do
Call Izmer
Writeeeprom I_izm , Ioff                                    'то же самое для тока
Call Miganie
Goto 1
Loop

Sub Miganie()
Waitms 50
Portb.0 = 1                                                 'моргаем диодом
Waitms 50
Portb.0 = 0
End Sub


Sub Miganie1()
Waitms 70
Portb.0 = 1                                                 'моргаем диодом
Waitms 50
Portb.0 = 0
Waitms 50
Portb.0 = 1
Waitms 50
Portb.0 = 0
N = 1
End Sub


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Пн янв 11, 2016 20:05:05 
Открыл глаза

Карма: -3
Рейтинг сообщений: 1
Зарегистрирован: Вс янв 22, 2012 21:57:43
Сообщений: 45
Рейтинг сообщения: 0
у вас опорное - 5 вольт. то есть пяти вольтам на входе ацп будет соответствовать число 1023. почему же вы считаете 4,2?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: АЦП Attiny13, не корректная работа
СообщениеДобавлено: Пт фев 19, 2016 00:52:04 
Опытный кот

Карма: -3
Рейтинг сообщений: 13
Зарегистрирован: Вс июн 02, 2013 12:23:03
Сообщений: 822
Рейтинг сообщения: 0
Не исключено что у вас просаживается питание МК.
А почему не берете Ref = 1.1V это более предпочтительно и не будет плясать от питания.
А делитель для измерения напряжения измените под 1,1В


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y