Pic16f873 аналоговый вход/выход

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Здравствуйте, недавно столкнулся с проблемой, нужно собрать схему и написать программу на микроконтроллер PIC16F873, так как учусь на программиста с принципами написания программы на мк разобрался за пару часов. Но тут возникла проблема, я в электронике практически самоучка, но многое знаю, а вот с даташитом на этот мк до конца разобраться не смог, подскажите:

1)Какие аналоговые сигналы и в каких диапазонах может воспринимать и передавать этот МК?
2)Можно ли программно(пишу на С) задать напряжение на выходах мк к цифровому индикатору, мне нужно 1.7В?

http://labkit.ru/userfiles/file/documen ... 76_877.pdf вот даташит на этот мк.
Последний раз редактировалось zuranika Сб ноя 10, 2012 08:18:57, всего редактировалось 1 раз.
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Сообщение dr.doc »

1. Аналоговые сигналы с уровнями 0-Uпит микроконтроллера. Постоянное напряжение. Модуля ЦАП на борту нет.
2. Выходные уровни равны напряжению питания, поэтому программно понизить напряжение нельзя. Можно только внешними делителями или схемами сдвига уровня.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

то есть могу подать на вход от 0 до 5 вольт при питании 5В. На счет второго я так и думал что придется ставить резисторы для ограничения тока.
Большое спасибо.
Не подскажете какова чувствительность этого АЦП, т.е. почувствует ли он разницы скажем между 0.01В и 0.015В?
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

На счет пиков не уверен, т.к. архитектуры не знаю, но на AVR делал программный ЦАП 0-5 вольт с точностью 10 мВ, проверял все это дело только в протеусе - работает стабильней некуда, вот только в железе не проверял, разница думаю будет только в источнике питания по стабильности и всё. Сделать 1.7 В на ноге легко, однако не все ноги для этого подходят, если нужна динамика, ставим MOSFET и управляем через него динамически другой ногой.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Спасибо, 1.7 выход с ноги не обязательно просто у меня цифровые одноразрядные индикаторы работают от 1.7В при таком напряжение достигается максимальное свечение при минимальном токе. Но тут я уже расчитал резисторы. Вот теперь думаю как быть с аналоговым входом, там управление через переменный резистор я думал по току управлять, теперь придется расчитать мост что бы по напряжению было, а на идикаторы просто выводиться значение соответствующее положению резистора что типо от 0 до 100. Ещё вопросик, а АЦП в какое значение преобразует входной сигнал, я понял что напряжение в 0.5В он преобразует в char равный о.5.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25590
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Как можно учиться программировать контроллеры и совершенно не понимать ФИЗИЧЕСКОГО СМЫСЛА производимых манипуляций? :facepalm:
Разрядность АЦП у заявленного контроллера - ДЕСЯТЬ. Это означает, что минимальный ДИСКРЕТ преобразования (разрешающая способность АЦП) составит Uоп/1024=5/1024 - примерно 5 милливольт.
Но это еще не означает, что такой же будет ТОЧНОСТЬ преобразования. Для этого открывайте и читайте даташит на данный контроллер...
zuranika писал(а):Ещё вопросик, а АЦП в какое значение преобразует входной сигнал, я понял что напряжение в 0.5В он преобразует в char равный о.5.
Если диапазон чисел у 10 разрядного АЦП по выходу составит 0...1023 (0х00...0х3FF), то никак не может 0,5 вольта быть равным 0.5.
В регистре результата будут целые беззнаковые числа указанного выше диапазона... - тип unsigned int
К слову, Вы даже не знаете типы в Си... :facepalm: char - целое знаковое разрядностью в 1 байт -127...128
Реклама
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Я просто до этого ни когда не работал с микроконтроллерами, занимался в основном аналоговыми приборами, привык к простым даташитам которые максимум 3 - 4 листа занимали, а в это больше 170 листов и пока многое непонятно, вот пытаюсь разобраться что к чему, как раз таки пытаясь понять полностью физический смысл, если я во всем разберусь программу для меня написать будет проще простого, так как я пишу программы на С++ для ПК. А под МК ни когда не писал. Я не зря дал наверху ссылку даташита на этот мк, я сам по ней пытался разобраться и сижу читаю. Если можете посоветуйте книгу про мк, что бы так как раз все описывалось не очень сложным языком. Уроки по программированию мк которые я нашел сводились обычно к тому как перевести ногу из одного состояние в другое сделать прерывание и т.п. объяснение работы с АЦП ни где не было.
Контактная информация:
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Крам извиняюсь за неточность, голова тут забита многими другими вещами, я просто по запарке написал char хотя думал про float
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25590
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

zuranika писал(а):Уроки по программированию мк которые я нашел сводились обычно к тому как перевести ногу из одного состояние в другое сделать прерывание и т.п. объяснение работы с АЦП ни где не было.
А что, АЦП отдельно и АЦП на борту МК чем то различаются?
Или на чтение 170 СИСТЕМАТИЗИРОВАННЫХ страниц требуется больше ума, чем на 3...4?
Что за бред Вы тут несете?
Лучше задавайте конкретные вопросы без "музыкального" сопровождения о собственных проблемах...
:facepalm:
ЗЫ. Причем тут флоат? КАРАУЛ!!! Зачем преобразовывать 10 разрядов во флоат? Вам непременно нужно забить программную память всякой фигней?
Опишите КОНКРЕТНО поставленную задачу. По пунктам.
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Про флоат я спросил, хотел узнать как будут храниться данные в памяти мк преобразованные в АЦП.
задача такова:
есть процесс в котором нужно контролировать температуру, там находится датчик ТСМ с характеристикой 50М, нужно отобразить температуру на индикаторах диапазон(-50 +100) и преобразовать сигнал этого датчика(в нашем случае сопротивление) в частотный сигнал. Мне нужно что бы я получил значение температуры и занести её в переменную, Эта переменная потом будет использовать в формуле рассчета частоты.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25590
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

1. Отображение температуры на индикаторах - это суть есть ТАБЛИЧНОЕ преобразование двоично-десятичного числа в код сегментного индикатора (либо другого на выбор). Т.е. задача отображения сводится к ТРЕМ действиям: преобразованию переменной температуры в двоично-десятичный формат (массив unsigned char длиной в количество десятичных разрядов на индикации), табличное преобразование в код символов на индикаторе, вывод на индикатор.
2. Название датчика температуры мне ни о чем не говорит. Ваша задача состоит в том, чтобы преобразовать АНАЛОГОВЫМ способом сигнал датчика в динамический диапазон АЦП по входу - т.е. 0...5 вольт. Либо 0...опорное напряжение АЦП (оно может быть не равно напряжению питания). Для этого применяют источники опорного напряжения. Есть такие и на напряжение 4,096 вольт. Тогда шаг преобразования составит ровно 4 милливольта.
3. Последняя задача: вычисление управляющей переменной для формирования частотного сигнала. Для этого необходимо знать ПАРАМЕТРЫ этого сигнала: диапазон частот, шаг перестройки частоты, форма (меандр, синус, импульсы определеной скважности, пила...)
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

хотел узнать как будут храниться данные в памяти мк преобразованные в АЦП
Они, изначально, хранятся в единицах, диапазон которых равен разрядности АЦП, к примеру - 0-1023 (собственно, об этом уже писали выше). Вы, скорее всего, думаете, что данные с АЦП будете читать уже в вольтах. Это заблуждение. Переводить в вольты Вам придётся самому. Для этого открывайте даташит, раздел ADC, и смотрите формулу расчёта.
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

1)Как вывести информацию на индикаторы я сразу разобрался
2)Характеристики частотного сигнала тоже есть, это второстепенный вопрос который я решу сам
3)как преобразовать сопротивление в сигнал от 0...5В я уже практически рассчитал

В данный момент мне нужно получить из сигнала 0-5В значение которое я мог бы занести в переменную а потом использовать в формуле расчета частоты.
Контактная информация:
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Alex,Я уже понял что они будет храниться не в вольтах, а в числах равных от 0 до 1023, перевести это в вольты думаю проблем не составит.
Спасибо
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25590
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

zuranika писал(а): В данный момент мне нужно получить из сигнала 0-5В значение которое я мог бы занести в переменную а потом использовать в формуле расчета частоты.
:))) :))) :)))
Начал за здравие - кончил за упокой...
На выходе АЦП имеется 10-разрядов в двух однобайтных регистрах. Если установлено правое выравнивание, то в младшем регистре результата будут восемь младших разрядов результата преобразования, а в старшем регистре - два старших. Т.е. преобразование в unsigned int будет таким:
256*ADRESH+ADRESL
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Спасибо.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

перевести это в вольты думаю проблем не составит.
Тогда почему у Вас эта задача:
мне нужно получить из сигнала 0-5В значение которое я мог бы занести в переменную
превращается в проблему ?
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Я просто изначально неправильно понял принцип хранения данных АЦП. И не смог сообразить как внести эти данные в переменную, когда написали мне что от 0 до 1023 вот тогда соображалка начала работать и я понял как это сделать. И это перестало быть проблемой. Извините уж не приходилось мне работать напрямую с регистрами, только иногда с адресами переменных в оперативной памяти и то немного в другой сфере. А здесь вот не сообразил.

Мы все учились по-немногу, чему-нибудь и как-нибудь...
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Да незачто извиняться, главное что поняли :tea:
Родился
Сообщения: 11
Зарегистрирован: Сб ноя 10, 2012 05:28:12

Сообщение zuranika »

Если все получиться скину в эту ветку схему и прошивку может кому пригодится.
Контактная информация:
Ответить

Вернуться в «PIC»