Ещё раз о датчике расстояния и АЦП – для новичков в радиоделе

June 4, 2014 by admin Комментировать »

Оптопара, светодиод и фототранзистор, лежат в основе датчика Вот схема, показывающая, как зависит напряжение на фототранзисторе от освещённости

Рис 413 Эксперимент с оптопарой

Изменяя положение ползунка потенциометра, мы изменяем ток через светодиод, то есть, освещённость фототранзистора оптопары При этом АЦП по входу RA3 считывает напряжение на коллекторе транзистора и отображает данные на ЖКИ Программа отображения напряжения на ЖКИ использована от проекта главы 39

Загрузим в эту программу hex-файл последней программы

Рис 414 Полная версия последней программы

И, странно, на экране высвечивается ноль, АЦП не реагирует на изменение тока через светодиод потенциометром RV2 Попытка вернуть настройку АЦП к той, что указана в руководстве, успеха не приносит Но, если взять строку из программы главы 39 (ADCON0=0b11001101), то:

Рис 415 Работа программы движения робота с обнаружением препятствий Мало того, программа реагирует на изменение освещённости (с помощью RV2):

Рис 416 Изменение работы мотора при изменении освещённости

Моторы,  напомню,  подключены  к  выводам  RD0-RD1  и  RB1-RB2  (через  микросхему  L293D, конечно)

Так что же означают эти настройки АЦП

ADCON0=0b11001001 // Работающая настройка ADCON0=0b11011101 // Настройка из руководства ADCON0=0b11001101 // Настройка, при которой работает ISIS

В регистрах ADCON0 и ADCON1 задаются: в первом аналоговый вход, во втором определяется формат выходных данных и источник опорного напряжения

Разница в проделанных экспериментах возникает при записи разных чисел в регистр ADCON0 Вот что сказано в руководстве к IE-ROBOPIC об этом регистре:

7

6

5

4

3

2

1

0

ADCS1

ADCS0

CHS3

CHS2

CHS1

CHS0

GO/ DONE

ADON

Биты 7 и 6 – ADCS1, ADCS0: биты выбора частоты преобразования АЦП 00 = FOSC/2

01 = FOSC/8

10 = FOSC/32

11  =  FRC  (частота,  получаемая  от  специализированного  внутреннего  генератора  =  500  кГц, максимум)

Биты от 5 до 2 – от CHS3 до CHS0: биты Выбора Аналогового Канала 0000 = AN0 (вывод RA0)

0001 = AN1 (вывод RA1)

0010 = AN2 (вывод RA2)

0011 = AN3 (вывод RA3)

0100 = AN4 (вывод RA5)

0101 = AN5 (вывод RE0)

0110 = AN6 (вывод RE1)

0111 = AN7 (вывод RE2)

1000 = AN8 (вывод RB2 – зарезервирован для схемы управления двигателем постоянного тока платы управления Роботом RBX-877V20)

1001  =  AN9  (вывод  RB3  –  зарезервирован  для  светодиодного  индикатора  платы  управления Роботом RBX-877V20)

1010 = AN10 (вывод RB1 – зарезервирован для схемы управления двигателем постоянного тока платы управления Роботом RBX-877V20)

1011 = AN11 (вывод RB4 – зарезервирован для выхода сервомотора платы управления Роботом RBX-877V20)

1100 = AN12 (вывод RB0 – альтернативная функция как вход внешнего прерывания и выключателя платы управления Роботом RBX-877V20)

1101  =  AN13  (вывод  RB5  pin  –  зарезервирован  для  выхода  сервомотора  платы  управления Роботом RBX-877V20)

1110 = CVREF

1111 = Fixed Ref (фиксированное опорное напряжение 0,6 В)

Бит 1 – GO/DONE: бит состояния АЦП

1 = цикл аналого-цифрового преобразования в процессе выполнения Установка этого

бита  запускает  цикл  аналого-цифрового  преобразования  Этот  бит  автоматически  очищается микроконтроллером после окончания цикла аналого-цифрового преобразования

0 = цикл аналого-цифрового преобразования/не запущен

Бит 0 – ADON: ADC бит разрешения работы АЦП 1 = работа АЦП разрешена

0 = работа АЦП, и он не потребляет электрический ток

Разберём наш случай: биты 7 и 6 одинаковы во всех настройках, биты 1 и 0 тоже Оставим их Выпишем оставшиеся биты: 0010 – используется вывод RA2 0111 – используется вывод RE2 0011

– используется вывод RA3 То есть, для чтения АЦП значения напряжения используются разные каналы, только  и  всего  Да, у  робота датчик включён в  разъем (следуя инструкции), который

«жёстко привязан» к определённому каналу, поэтому замена канала принесла пользу А в программе ISIS, что, кстати, можно проверить, достаточно было изменить соединение выходного фототранзистора, подключив его к другому выводу микроконтроллера

Решением проблемы могло быть либо переподключение  датчика в другое  гнездо, либо исправление в программе, и оба варианта оказываются правильными

Полезно держать под рукой datasheet

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты