Это случайно, в ранних версиях было правильно.
Переделал, показания не изменились. Меняются, если только в Протеусе в свойствах источника питания убрать галочку с пункта "Источник тока".
edm2007 писал(а):Это случайно, в ранних версиях было правильно.
Ну правильно, ага. Это чтоб я не расслаблялся, да? А я искал кто садит вход... Да и хрен с ней, с этой галочкой, если делитель пополам (в примере ниже, 0 - 10 В), то он и должен делить пополам. Проценты пока не ковырял...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Погодите, из-за какой единички? В конфигурации порта ?!!! Да разумеется, если туда 1 записать то пин порта будет настроен на ВЫХОД. А так как на выходе будет изначально 0 то я не думаю что надо объяснять что будет если на ВЫХОД МК подать +. Это Вы шутите так?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
P = Result * 500 <<<<<<<<<<<<
P = P / 1024 <<<<<<<<<<<<
P = P * 100
P = P / 750
'---------------------------------------------------------------------
Result = Result * 500 <<<<<<<<<<<<
Result = Result / 1024 <<<<<<<<<<<<
Result = Result * 2
Result = Result * 500 ' расчет напряжения с учетом делителя
Result = Result / 1024
Result = Result * 2
'---------------------------------------------------------------------
P = Result * 100 ' расчет процентов
P = P / 750
'---------------------------------------------------------------------
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да какие уж тут шутки. Замучился я с этим проектом. Ну сейчас, вроде все заработало и проценты тоже. Дело было в том, что подсчет напряжения изменял переменную Result, а она в свою очередь использовалась для подсчета процентов уже в измененном виде. Вот поэтому лажа и получалась. Проблема решилась введением еще одной переменно типа Long.
edm2007 писал(а):Проблема решилась введением еще одной переменно типа Long.
Простите, а зачем? Там все и так выходит замечательно, без дополнительных переменных. Там вполне удобный расчет, кстати. В процентах можно легко под любой предел подогнать изменением одной цифры. Это Вы здорово придумали. Надо под автомобильный аккумулятор сделать.
Или что-то не так?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да нет, все так! Это я сначала сделал с дополнительной переменной, а потом как у вас. Пришли к общему знаменателю, только разными путями.
А с автомобильным аккумулятором у меня уже был опыт, только не совсем удачный (отчасти).
Тот же контроллер тини26, тот же индикатор на 4 разряда, только мерять он должен был зарядный ток. Эту свою фигню я встроил в авто-зарядное "Кедр-10". Короче получилась херня, ток показывает неправильно и индикация мерцает сильно. Переделывать времени не было. Теперь просто перешью контроллер и будет показывать % заряда. Так даже удобнее.
Только у меня там индикатор с ОК. Придется код немного исправить...
А, ну все замечательно тогда. Я там правда в своем примере вывод PORTA.6 входом сделал. Как-то внимание не обратил что у Вас он еще дергает зарядку. Ну да у Вас свой исходник, так что не запутаетесь. А так вроде все... Одно непонятным осталось, почему Dim Chislo(8) As Integer. Word уж тогда.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да и еще: ОГРОМНОЕ СПАСИБО!за помощь. Теперь, думаю, с динамической индикацией справлюсь. Ну так как? Возметесь за статью?
P.S.: Про Word и Integer. Размер кода от изменения не страдает, так что похрен...
Последний раз редактировалось Igor_67 Вс апр 17, 2011 19:01:06, всего редактировалось 1 раз.
Вобщем, вот просто как вариант с обычной индикацией (еще убрал второй 0 при процентах менее 10, в принципе не так и нужно, просто от нечего делать). Разумеется, это только протеус, надо и стабилитрон на вход АЦП поставить для защиты и резисторы на сегменты... Да и транзисторы на разряды я бы тоже вкорячил...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ПОМОГИТЕ СОВЕТОМ!!!
Есть програмка для GPS навигатора с использованием индикатора Сименс - но изначально программа была написана под графический дисплей-128х64. Програмку переписал под Сименс(все работает тип топ) но хотел еще добавить кусочек програмки для контроля напяжения батареи. Написал, добавил и при компиляции выдает ошибку №221. как исправить не совсем понимаю (в Баскоме я пока не силен). Спасибо заранее за ответ.
Во-первых, мне не совсем понятно зачем Вы закрыли измерение в замкнутый цикл. Программа же там будет крутиться бесконечно. А главное, вызова подпрограммы (Call Battery) я не увидел.
P.S. А ругается Bascom на библиотеки и файлы. В проекте их нет просто. Ошибки 221 у меня нет.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ага, я тоже сразу глянул... Ну у меня пока ругается на Library file not found, и File not found. Просто в проекте их нет... Там исходник большой, на 3000 строк. Плюс куча подключаемого хлама. Не углублялся, просто АЦП посмотрел.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
На счет ошибки 221 совершенно верно подметили. На счет "всякого хлама" не согласен(без него никак). А библиотека LCD-S65-L2F50.LBX позаимствована и все компилируется без проблем. Кстати в железе все работает без проблем, и програмирование микроконтролера проходит на ура.
занято только где-то 84 процента. И вот решил добавить измерение напряжения аккумулятора от мобилки-думал просто, ага да не тут то было. Выкидывает ошыбку 221 и хоть ты тресни.
пробовал разные варианты:
например-------------------------------------
Dim W1 As Word , Voltage As Single
Dim Sw As String * 1
Const V_ref = 3.2
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
'----------------------
Do
Gosub Get_var
Gosub Check_sw
Gosub Show_temp
Wait 1
Loop
'----------------------
Get_var:
W1 = Getadc(0)
Voltage = W1 * V_ref
Voltage = Voltage / 1024
'Return
'----------------------
Check_sw:
Select Case W1
Case 100 To 200 : Lcdat 160 , 1 , "II " , Red , Yellow
Case 200 To 300 : Lcdat 160 , 1 , "III " , Red , Yellow
Case 300 To 400 : Lcdat 160 , 1 , "IIII " , Red , Yellow
Case 400 To 500 : Lcdat 160 , 1 , "IIIII " , Red , Yellow
Case 500 To 600 : Lcdat 160 , 1 , "IIIIII " , Red , Yellow
Case 600 To 700 : Lcdat 160 , 1 , "IIIIIII " , Red , Yellow
Case 700 To 800 : Lcdat 160 , 1 , "IIIIIIII " , Red , Yellow
Case 800 To 900 : Lcdat 160 , 1 , "IIIIIIIII " , Red , Yellow
Case 900 To 1000 : Lcdat 160 , 1 , "IIIIIIIIII " , Red , Yellow
Case Else : Sw = "-"
End Select
'Return
'----------------------
Show_temp:
'Cls
Lcdat 100 , 1 , "VAR1= " ; W1 , Red , Yellow
Lcdat 120 , 1 , "VOLT= " ; Voltage , Red , Yellow
Lcdat 130 , 1 , "Switch NO. " ; Sw , Red , Yellow
End Sub
интерестно но отдельно одним файлом все работает
проверял в протеусе.
а когда вставляю в свой проект получается ошибка 221
как это оформить? куда вставить? не получается
НАСТАВТЕ НА ПУТЬ ИСТИННЫЙ