Изначально ставилась задача измерения сопротивления в диапазоне от 1 до 100 ом.
В итоге столкнулся с проблемой неравномерности результата измерения во всем диапазоне - чем больше номинал сопротивления, тем выше погрешность.
Подскажите пожалуйста, это результат 10-bit преобразования или мой косяк в вычислении ?
$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 '============================= КОНФИГУРАЦИЯ АЦП ================================ Config Adc = Single , Prescaler = 2 , Reference = Internal Start Adc '=============================КОНФИГУРАЦИЯ ДИСПЛЕЯ============================== Config Lcd = 20 * 4 Config Lcdpin = Pin , Rs = Portd.6 , E = Portd.5 , Db4 = Portd.4 , Db5 = Portd.3 , Db6 = Portd.2 , Db7 = Portd.1 Cursor Off Cls '============================= ОБЪЯВЛЯЕМ ПЕРЕМЕННЫЕ ============================ Dim A As Integer Dim B As Single Dim C As Single Dim D As String * 4 '============================ ИЗМЕРЕНИЕ СОПРОТИВЛЕНИЯ ========================== Do A = Getadc(0) ' считываем результат B = A * 2.56 : B = B / 1024 ' работаем по формуле - U2 = Результат ADC x 2.56 / 1024 C = 12 / B : C = C - 1 : C = C * 0.3 ' работаем по формуле - R1=R2*(U1/U2-1) D = Fusing(c , "00.0") ' преобразуем для вывода на экран в удобном виде Locate 1 , 1 : Lcd D Loop



чтобы номиналы делителя увидеть.
