[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » Вольтметр
Вольтметр
RuberДата: Воскресенье, 20.04.2014, 15:33 | Сообщение # 1
Группа: Проверенные
Сообщений: 14

Статус: Offline
Нужно сделать вольтамперметр для БП.
Начал с вольтметра, взял мегу 88 и дисплей WH1602
Но по какой-то непонятной мне причине, Значение показываются не такие какие я ожидал.
Подключил аккумулятор 3.3в, замерил его на мультиметре показывало 3,8. Подключил к своему устройсву, показывает 8,9.
Крутил переменный резистор но значения были в пределах от 8.7 до 9.8 , никак не 3,8.
В чем может быть ошибка в моем коде?
Схема для снятия значения с батареи:

Программа:

Код
$regfile "m88def.dat"
$crystal = 8000000

'Конфигурируем ЖКИ
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5

Dim Volt As Single

Dim Readadc As Word

Initlcd
Cursor Off Noblink

Config Adc = Single , Prescaler = Auto , Reference = Internal

Do

Start Adc

Readadc = Getadc(5)
Volt = Readadc / 1023
Volt = Volt * 30
Stop Adc

Cls

Locate 1 , 1
Lcd "U" ; "=" ; Fusing(volt , "##.#") ; "V"

Waitms 500

Loop

End
Прикрепления: 7716330.png(17Kb)


 
topДата: Воскресенье, 20.04.2014, 16:02 | Сообщение # 2
Группа: Друзья
Сообщений: 146

Статус: Offline
Если вы используете внутренний источник опорного напряжения 2.56 В, то надо диапазон измеряемого напряжения привести к диапазону 0...2.56 В. Делается это как вы поняли резистивным делителем. Собственно все как и в статье с этого сайта.

Если вы хотите повторить конструкцию с сайта, то присмотритесь к следующему тектсту:
W = Getadc(1)
M1 = W * 3

' переводим значение АЦП в вольты. Так как запятая у меня
' фиксированная, то для удобства работать будем с целыми числами 3069/1023=3
' где 3069 максимальное значение напряжения отображаемое вольтметром,
' или 30.69 В


и сразу все поймете.

Если конткретнее, то вместо:
Readadc = Getadc(5)
Volt = Readadc / 1023
Volt = Volt * 30
Stop Adc

надо:
Readadc = Getadc(5)   '1023 максимум
Volt =  Readadc * 3    '1023*3=3069 максимум
Volt = Volt / 100  '3069/100=30.69 максимум
Stop Adc

Чисто логически эти два варианта примерно эквивалентны. Но кто его знает, может заработает wink




Сообщение отредактировал top - Воскресенье, 20.04.2014, 16:10
 
RuberДата: Воскресенье, 20.04.2014, 17:04 | Сообщение # 3
Группа: Проверенные
Сообщений: 14

Статус: Offline
Цитата top ()
Readadc = Getadc(5) '1023 максимумVolt = Readadc * 3 '1023*3=3069 максимумVolt = Volt / 100 '3069/100=30.69 максимумStop
Изменил как вы и сказали но ничего не изменилось(


 
GSVДата: Воскресенье, 20.04.2014, 17:21 | Сообщение # 4
Группа: Проверенные
Сообщений: 33

Статус: Offline
1.Если вы используете внутренний источник опорного напряжения 2,56В,
Config Adc = Single , Prescaler = Auto , Reference = Internal
то максимальное выходное напряжение с делителя должно быть около 2,55В
2.Если максимальное входное входное напряжение 30В,то коэффициент на который нужно умножить показание АЦП будет равен: 30/1023 = 0,0293

Примерно так:
Readadc = Getadc(5)
Volt = Readadc *0,0293

Так как у вас переменная Volt задана как Single,то на экране должно выводиться напряжение заданного вами формата #.## V


 
RuberДата: Воскресенье, 20.04.2014, 19:08 | Сообщение # 5
Группа: Проверенные
Сообщений: 14

Статус: Offline
ничего не помогло(

 
GSVДата: Воскресенье, 20.04.2014, 19:30 | Сообщение # 6
Группа: Проверенные
Сообщений: 33

Статус: Offline
С делителем все верно?
На входе 30 на выходе 2,55?
Прикрепления: 4254340.jpg(55Kb)


 
trimДата: Воскресенье, 20.04.2014, 22:39 | Сообщение # 7
Группа: Пользователи
Сообщений: 105

Статус: Offline
привет .в даташите вроде как есть ограничение по входящему напряжению у АЦП надоть делать через операцыонник

 
RuberДата: Среда, 30.04.2014, 15:06 | Сообщение # 8
Группа: Проверенные
Сообщений: 14

Статус: Offline
Ах да ) Мой вольт метр заработал=)
Незнаю какой магией, но заработал с этим куском

Код
Readadc = Getadc(5)   '1023 максимум       
       Volt =  Readadc * 3    '1023*3=3069 максимум       
       Volt = Volt / 100  '3069/100=30.69 максимум       
       Stop Adc



(если нажать на картинку видно лучше)
Прикрепления: 9566260.jpg(182Kb) · 3030510.jpg(139Kb)




Сообщение отредактировал Ruber - Среда, 30.04.2014, 15:12
 
Форум » форумы » Общие вопросы по Bascom-AVR » Вольтметр
Страница 1 из 11
Поиск: