Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
измерение сопротивления
timerlan Дата: Вт, 08.12.2015, 15:30  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

Доброго времени суток! назрела у меня необходимость контролировать некий датчик, датчик этот - обыкновенный потенциометр, можно просто снимать с него потенциал и измерять как напряжение, но иногда происходят обрывы линии, износ потенциометра, вот и хочу попробовать микроконтроллером мерить его...если использовать АЦП МК, то измерение R- это, фактически, преобразование этого сопр. в напряжение, но тогда вопрос-как измерить с двух сторон от движка потенц. сопротивления одним МК?..покопался в нете и увидел схему одного иранзистор-тестера, вот этого:

Добавлено (08.12.2015, 15:30)
---------------------------------------------
не мога понять, как там должен алгоритм работать, если движок потенциометра на Т2, а его крайние выводы на Т1 и Т3 подключены будут?!...точнее как осуществляется какое-либо измерение с таким использованием портов МК? вот главный вопрос...объясните,плиз, кто знает,буду очень признателен...

Прикрепления: 7155761.png (20.8 Kb)
ЯНДЕКС Дата: 08.12.2015
xvovanx Дата: Вт, 08.12.2015, 17:08  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Выставляешь на порту вывода Т1 единицу, на Т3 ноль, а на Т2  - входе, измеряешь напругу с делителя. Потом наоборот, на Т3 выставляешь 5 вольт, на Т1 ноль, а на Т2 измеряешь второе плечо резистора.

Чтобы измерить полное сопротивление неизвесного потенциометра, уже участвуют выводы с установленными по схеме резисторами, для определения диапозона и уже самого номинала.

Сообщение отредактировал xvovanx - Вт, 08.12.2015, 17:19
xvovanx Дата: Ср, 09.12.2015, 19:40  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата timerlan ()
Тогда вход Т2 должен быть аналоговым?  Как же тогда в этом транзистора тесте те на цифровых портах это сделано?...вот вопрос

Ну да, на входе Т2 включаем АЦП. На твоей схеме транзистор-теста все три входа с АЦП преобразователями
Прикрепления: 6178419.png (57.2 Kb)

Сообщение отредактировал xvovanx - Ср, 09.12.2015, 19:46
timerlan Дата: Вс, 10.01.2016, 05:33  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 94
Репутация: 0   ±
Замечания:   ±
На сайте с 18.03.2012

Статус: Offline

Всем здравствуйте! вот добрались руки, наконец, доделать этот девайс....
непонятно пока почему на макетке ерунду какую-то отображает пока виню сам потенциеметр-он странный какой-то, только завтра поменяю, а в симуляторе работает как мне надо....

Добавлено (10.01.2016, 05:33)
---------------------------------------------
и сам исходник, посмотрите, где накосячил, плиз  smile

'Определения

DEFINE LCD_DREG PORTB ' Определяем порт, к которому подключены цепи данных.
DEFINE LCD_DBIT 4 ' Определяем первый вывод, к которому подключена шина данных,
DEFINE LCD_RSREG PORTB ' Определяем порт, к которому подключена цепь RS.
DEFINE LCD_RSBIT 3 ' Определяем вывод, к которому подключена цепь RS.
DEFINE LCD_EREG PORTB ' Определяем порт, к которому подключена цепь E.
DEFINE LCD_EBIT 0 ' Определяем вывод, к которому подключена цепь E.
DEFINE LCD_BITS 4 ' Определяем режим 4 – разрядной шины.
DEFINE LCD_LINES 2 ' Определяем тип ЖКИ.
DEFINE LCD_COMMANDUS 2000 ' Определяем время задержки между командами на ЖКИ.
DEFINE LCD_DATAUS 50 ' Определяем время задержки междупосылками данных.

' Определяем параметры АЦП

DEFINE ADC_BITS 8 ' Определяем разрядность преобразования
DEFINE ADC_CLOCK 3 ' Определяем источник синхронизации для АЦП
DEFINE ADC_SAMPLEUS 50 ' Определяем время преобразования

' Назначение переменных

Res Var Word ' Определяем переменную, в которую записывается результат АЦП
Res2 var word
Volts1 Var Word ' Первые два десятичных разряда результата в мВ
Volts2 Var Word ' Вторые два десятичных разряда результата в мВ
Volts3 Var Word
Volts4 Var Word

' Константы

Conv1 Con 3 ' 5000/256 = 19.53, this is the decimal part
Conv2 Con 91 ' Это дробная часть числа

' Инициализация

TRISA = 1 ' Устанавливаем вывод RA0 (AN0) на вход
TRISB = 0 ' Весь PORTB на выход
PAUSE 500 ' Ждем 0.5 сек инициализации ЖКИ
ADCON1 = 0 ' Устанавливаем выводы AN0 - AN4 как аналоговые входа
OPTION_REG = %00000000 ' Подключаем подтягивающие резисторы
ADCON0 = %11000001 ' Устанавливаем внутренний источниксинхронизации АЦП
TRISC = %00111111 ' Устанавливаем ПОРТ С
PORTC = 0 ' Устанавливаем ПОРТ С в нуль на выходе





Main:

HIGH PORTC.7 ' установка потенциала + на одном плече потенциометра
LOW PORTC.6 ' установка потенциала - на одном плече потенциометра



ADCIN 0, Res ' Считываем аналоговое значение и сохраняем в переменной Res
Volts1 = Res * Conv1 ' Умножаем это значение на 19
Volts2 = Res * Conv2 ' Умножаем это значение на 53
Volts2 = Volts2 / 100
Volts1 = Volts1 + Volts2 ' Получаем результат в милливольтах

pause 100

HIGH PORTC.6 ' установка потенциала + на одном плече потенциометра
LOW PORTC.7 ' установка потенциала - на одном плече потенциометра



ADCIN 0, Res2 ' Считываем аналоговое значение и сохраняем в переменной Res
Volts3 = Res2 * Conv1 ' Умножаем это значение на 19
Volts4 = Res2* Conv2 ' Умножаем это значение на 53
Volts4 = Volts4 / 100
Volts3 = Volts3 + Volts4 ' Получаем результат в милливольтах
pause 100

LCDOUT $FE,$c0, dec4 Volts1,$10,$10,$10,$10,$10,$10,$10,$10,dec4 Volts3 ' Выведем результат на дисплей

GOTO Main
END

Прикрепления: potenread.dsn (69.8 Kb) · 7888241.hex (2.3 Kb)
anatol Дата: Вт, 12.01.2016, 09:15  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

timerlan, а что вы измеряете? По программе не понял. Протеуса (и схемы соответственно нет). Да и преобразование хекса в десятичные числа не совсем верно - надо умножать на 1953 и выбирать отображаемые числа из результата. Далее, с какой дури у вас опорное = 5 вольт? Даташит на контроллер  почитайте.
anatol Дата: Пт, 15.01.2016, 09:28  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата timerlan ()
а почему вы решили, что опорное 5 вольт?
 
Цитата timerlan ()
Conv1 Con 3 ' 5000/256 = 19.53, this is the decimal part
 
Цитата timerlan ()
протэуса и прошивку я прикрепил
 
Цитата anatol ()
Протеуса (и схемы соответственно нет).
У меня на работе не установлен Протеус. Соответственно, как включен потенциометр - не знаю. Если с подвижного контакта заведено на порт А0 - нормально.
Хекс предлагаете дизассемблировать? Какой проц и частота тактирования? Я и остальные не телепаты. Да и этой версии бейсика мало кто работает. Мне Протон по душе.
Кроме того проц не работает с числами с плавающей запятой.
  • Страница 1 из 1
  • 1
Поиск: