Здравствуйте, недавно столкнулся с проблемой, нужно собрать схему и написать программу на микроконтроллер PIC16F873, так как учусь на программиста с принципами написания программы на мк разобрался за пару часов. Но тут возникла проблема, я в электронике практически самоучка, но многое знаю, а вот с даташитом на этот мк до конца разобраться не смог, подскажите:
1)Какие аналоговые сигналы и в каких диапазонах может воспринимать и передавать этот МК? 2)Можно ли программно(пишу на С) задать напряжение на выходах мк к цифровому индикатору, мне нужно 1.7В?
Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22 Сообщений: 1368 Откуда: Беларусь
Рейтинг сообщения:0
1. Аналоговые сигналы с уровнями 0-Uпит микроконтроллера. Постоянное напряжение. Модуля ЦАП на борту нет. 2. Выходные уровни равны напряжению питания, поэтому программно понизить напряжение нельзя. Можно только внешними делителями или схемами сдвига уровня.
_________________ «Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
то есть могу подать на вход от 0 до 5 вольт при питании 5В. На счет второго я так и думал что придется ставить резисторы для ограничения тока. Большое спасибо. Не подскажете какова чувствительность этого АЦП, т.е. почувствует ли он разницы скажем между 0.01В и 0.015В?
На счет пиков не уверен, т.к. архитектуры не знаю, но на AVR делал программный ЦАП 0-5 вольт с точностью 10 мВ, проверял все это дело только в протеусе - работает стабильней некуда, вот только в железе не проверял, разница думаю будет только в источнике питания по стабильности и всё. Сделать 1.7 В на ноге легко, однако не все ноги для этого подходят, если нужна динамика, ставим MOSFET и управляем через него динамически другой ногой.
Спасибо, 1.7 выход с ноги не обязательно просто у меня цифровые одноразрядные индикаторы работают от 1.7В при таком напряжение достигается максимальное свечение при минимальном токе. Но тут я уже расчитал резисторы. Вот теперь думаю как быть с аналоговым входом, там управление через переменный резистор я думал по току управлять, теперь придется расчитать мост что бы по напряжению было, а на идикаторы просто выводиться значение соответствующее положению резистора что типо от 0 до 100. Ещё вопросик, а АЦП в какое значение преобразует входной сигнал, я понял что напряжение в 0.5В он преобразует в char равный о.5.
Как можно учиться программировать контроллеры и совершенно не понимать ФИЗИЧЕСКОГО СМЫСЛА производимых манипуляций? Разрядность АЦП у заявленного контроллера - ДЕСЯТЬ. Это означает, что минимальный ДИСКРЕТ преобразования (разрешающая способность АЦП) составит Uоп/1024=5/1024 - примерно 5 милливольт. Но это еще не означает, что такой же будет ТОЧНОСТЬ преобразования. Для этого открывайте и читайте даташит на данный контроллер...
zuranika писал(а):
Ещё вопросик, а АЦП в какое значение преобразует входной сигнал, я понял что напряжение в 0.5В он преобразует в char равный о.5.
Если диапазон чисел у 10 разрядного АЦП по выходу составит 0...1023 (0х00...0х3FF), то никак не может 0,5 вольта быть равным 0.5. В регистре результата будут целые беззнаковые числа указанного выше диапазона... - тип unsigned int К слову, Вы даже не знаете типы в Си... char - целое знаковое разрядностью в 1 байт -127...128
Я просто до этого ни когда не работал с микроконтроллерами, занимался в основном аналоговыми приборами, привык к простым даташитам которые максимум 3 - 4 листа занимали, а в это больше 170 листов и пока многое непонятно, вот пытаюсь разобраться что к чему, как раз таки пытаясь понять полностью физический смысл, если я во всем разберусь программу для меня написать будет проще простого, так как я пишу программы на С++ для ПК. А под МК ни когда не писал. Я не зря дал наверху ссылку даташита на этот мк, я сам по ней пытался разобраться и сижу читаю. Если можете посоветуйте книгу про мк, что бы так как раз все описывалось не очень сложным языком. Уроки по программированию мк которые я нашел сводились обычно к тому как перевести ногу из одного состояние в другое сделать прерывание и т.п. объяснение работы с АЦП ни где не было.
Уроки по программированию мк которые я нашел сводились обычно к тому как перевести ногу из одного состояние в другое сделать прерывание и т.п. объяснение работы с АЦП ни где не было.
А что, АЦП отдельно и АЦП на борту МК чем то различаются? Или на чтение 170 СИСТЕМАТИЗИРОВАННЫХ страниц требуется больше ума, чем на 3...4? Что за бред Вы тут несете? Лучше задавайте конкретные вопросы без "музыкального" сопровождения о собственных проблемах... ЗЫ. Причем тут флоат? КАРАУЛ!!! Зачем преобразовывать 10 разрядов во флоат? Вам непременно нужно забить программную память всякой фигней? Опишите КОНКРЕТНО поставленную задачу. По пунктам.
Про флоат я спросил, хотел узнать как будут храниться данные в памяти мк преобразованные в АЦП. задача такова: есть процесс в котором нужно контролировать температуру, там находится датчик ТСМ с характеристикой 50М, нужно отобразить температуру на индикаторах диапазон(-50 +100) и преобразовать сигнал этого датчика(в нашем случае сопротивление) в частотный сигнал. Мне нужно что бы я получил значение температуры и занести её в переменную, Эта переменная потом будет использовать в формуле рассчета частоты.
1. Отображение температуры на индикаторах - это суть есть ТАБЛИЧНОЕ преобразование двоично-десятичного числа в код сегментного индикатора (либо другого на выбор). Т.е. задача отображения сводится к ТРЕМ действиям: преобразованию переменной температуры в двоично-десятичный формат (массив unsigned char длиной в количество десятичных разрядов на индикации), табличное преобразование в код символов на индикаторе, вывод на индикатор. 2. Название датчика температуры мне ни о чем не говорит. Ваша задача состоит в том, чтобы преобразовать АНАЛОГОВЫМ способом сигнал датчика в динамический диапазон АЦП по входу - т.е. 0...5 вольт. Либо 0...опорное напряжение АЦП (оно может быть не равно напряжению питания). Для этого применяют источники опорного напряжения. Есть такие и на напряжение 4,096 вольт. Тогда шаг преобразования составит ровно 4 милливольта. 3. Последняя задача: вычисление управляющей переменной для формирования частотного сигнала. Для этого необходимо знать ПАРАМЕТРЫ этого сигнала: диапазон частот, шаг перестройки частоты, форма (меандр, синус, импульсы определеной скважности, пила...)
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4599 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Цитата:
хотел узнать как будут храниться данные в памяти мк преобразованные в АЦП
Они, изначально, хранятся в единицах, диапазон которых равен разрядности АЦП, к примеру - 0-1023 (собственно, об этом уже писали выше). Вы, скорее всего, думаете, что данные с АЦП будете читать уже в вольтах. Это заблуждение. Переводить в вольты Вам придётся самому. Для этого открывайте даташит, раздел ADC, и смотрите формулу расчёта.
1)Как вывести информацию на индикаторы я сразу разобрался 2)Характеристики частотного сигнала тоже есть, это второстепенный вопрос который я решу сам 3)как преобразовать сопротивление в сигнал от 0...5В я уже практически рассчитал
В данный момент мне нужно получить из сигнала 0-5В значение которое я мог бы занести в переменную а потом использовать в формуле расчета частоты.
В данный момент мне нужно получить из сигнала 0-5В значение которое я мог бы занести в переменную а потом использовать в формуле расчета частоты.
Начал за здравие - кончил за упокой... На выходе АЦП имеется 10-разрядов в двух однобайтных регистрах. Если установлено правое выравнивание, то в младшем регистре результата будут восемь младших разрядов результата преобразования, а в старшем регистре - два старших. Т.е. преобразование в unsigned int будет таким: 256*ADRESH+ADRESL
Я просто изначально неправильно понял принцип хранения данных АЦП. И не смог сообразить как внести эти данные в переменную, когда написали мне что от 0 до 1023 вот тогда соображалка начала работать и я понял как это сделать. И это перестало быть проблемой. Извините уж не приходилось мне работать напрямую с регистрами, только иногда с адресами переменных в оперативной памяти и то немного в другой сфере. А здесь вот не сообразил.
Мы все учились по-немногу, чему-нибудь и как-нибудь...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения