HRP-N3 - серия источников питания с максимальной пиковой мощностью в 350% от MEAN WELL
Новичок
 
Регистрация: 03.10.2011
Сообщений: 5
Репутация: 10
 
03.10.2011 22:33 #1
Всем доброе время суток!
Я пытаюсь на любом микроконтроллере PIC12 собрать обычный АЦП. Т.е. на вход AN0 подается синусоида, а на выходе хочу получить дискретное представление этой синусоиды. Т.е. так как показано на рисунке:

Т.е. поступает аналоговый (жирная кривая), на выходе получаем дискретный (прямоугольники)

В интернете находил много примеров, но все выполняют другие преобразовании: либо определяют уровень напряжения, либо используют компараторы. Для моей работы это совсем не то.
В справочниках, что в даташите, говориться о модуле АЦП и о модуле компаратор, что вроде как это 2 отдельных модуля, но почему-то работает как компаратор.
Можно хотя бы какой-нибудь элементарный пример или ссылку, на которые можно будет опереться
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Эксперт
 
Аватар для DmitriyVDN
 
Регистрация: 08.11.2009
Сообщений: 2,309
Репутация: 636
616 131
34 9
 
04.10.2011 00:21 #2
Цитата:
Сообщение от bigory
Всем доброе время суток!
Я пытаюсь на любом микроконтроллере PIC12 собрать обычный АЦП. Т.е. на вход AN0 подается синусоида, а на выходе хочу получить дискретное представление этой синусоиды. Т.е. так как показано на рисунке:
сдается мне вы несколько не понимаете что собственно изображено на рисунке
попробую объяснить на пальцах:
предположим есть четырех разрядный АЦП измеряющий напряжение от 0 до 15в тогда коду
0000 соответствует напряжение от 0в до 1в
0001 ...... от 1в до 2в
0010 ...... от 2в до 3в
....
...
...
1111 ...... от 15в и выше
т.е шаг дискретизации 1в и для напряжений в диапазоне от 2 до 3в код будет один и тот же 0010 соответствующий 2-м вольтам - это и есть высота прямоугольников изображенная на рисунке ,ширина прямоугольника определяется временем в течении которого напряжение находится в данном диапазоне
при помощи АЦП вы можете получить только цифровое представление синусоиды чтобы на выходе получить ступенчатое напряжение надо провести обратное преобразование при помощи ЦАП
реализовать подобное на PIC не представляется возможным по причине отсутствия ЦАП....
Оценка
Новичок
 
Регистрация: 03.10.2011
Сообщений: 5
Репутация: 10
 
05.10.2011 12:26 #3
Мне нужен был такой сигнал только гдя того, чтобы можно было проанализировать в микроконтроллере его характер. Может быть мне и не нужно тогда преобразовывать в ступенчатую форму. Может быть тогда на 4х регистрах по 8 бит хранить эти

Код:
рег1 01101010
рег2 00101100
рег3 00010000
рег4 00000000
Тогда хотя бы вот так. Вот как это можно реализовать?
А немного настроил свой МК, вот код:
Код:
list p=pic12f675
#include <P12F675.INC>
; настройка слова конфигурации микроконтроллера
; _CP_OFF защита программного кода выключена
; _DEBUG_OFF режим отладки выключен
; _WRT_OFF защита записи FLASH выключена
; _CPD_OFF защита памяти EEPROM выключена
; _LVP_OFF режим низковольтового программирования выключен
; _BODEN_ON сброс по снижению питания включен
; _PWRTE_ON таймер задержки по квлючению питания включен
; _XT_OSC использование кварцевого резонатора на 4МГц
__CONFIG _CPD_OFF&_CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT 

ERRORLEVEL 2    ;Вывод только ошибок

CMCON equ 19h
ANSEL equ 9Fh
ADRESH equ 1Eh
ADRESL equ 9Eh

ADCL equ 21h
ADCH equ 22h


 org 0x00
goto START    ;начало выполнения программы после включения питания
; org 0x04
goto PREOBR

START

clrw

bcf STATUS,RP0            ;Выбираем банк 0
movlw b'00000011'
movwf ADCON0

bsf STATUS,RP0            ;Выбираем банк 1
movlw b'00000001'
movwf TRISIO
movlw b'00110001'
movwf ANSEL
                    
        bcf TRISIO,1
;call ReadADC

PREOBR

;ReadADC
bsf ADCON0,1
btfsc ADCON0,1
goto $-1

nop
nop
nop
nop

movf ADRESH,W
movwf ADCH
bsf STATUS,RP0
movf ADRESL,W
bcf STATUS,RP0
movf ADCL

goto PREOBR
END
Я с пиками не возился, и поэтому возникают трудности. Как мне вывести результаты регистров на GP1?
Последний раз редактировалось bigory; 05.10.2011 в 14:38.
Оценка
Эксперт
 
Аватар для DmitriyVDN
 
Регистрация: 08.11.2009
Сообщений: 2,309
Репутация: 636
616 131
34 9
 
05.10.2011 20:30 #4
Цитата:
Сообщение от bigory
Я с пиками не возился, и поэтому возникают трудности. Как мне вывести результаты регистров на GP1?
варианты на выбор:
1. симулировать программно интерфейс 1-Wire на GP1
2. задействовать дополнительный вывод GP2 симулировать программно интерфейс UART или I2C
3. разработать свой протокол передачи данных используя скажем ШИМ кодирование

ЗЫ.для второго варианта при использовании UART в асинхронном режиме только на передачу можно обойтись только одним GP1
Последний раз редактировалось DmitriyVDN; 05.10.2011 в 20:41.
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 09:37.
Обратная связь РадиоЛоцман Вверх