Подключение аналогового сигнала к входам компаратора и АЦП.

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

Т.к. опыта у меня мало, хочу описать в этой теме мою последовательность действий для воплощения задачи подключения аналогового сигнала к входам компаратора, а затем к входу АЦП. В перспективе, надеюсь мы с Вами дойдем до передачи сигнала через RS-232 (COM-порт) на ПК. Может быть, найдутся те, кто пожелает мне помочь, а может и кому-то самому будет полезным. Пока не знаю, здесь все будет зависеть от Вас. Надеюсь на Вашу помощь.

Итак что мы имеем:
1) Микроконтроллер ATmega 8L-8PU (ATmega8).
2) Программу Proteus 7 - в ней я буду моделировать схему и выкладывать сюда скрины с описаниями, а также виртуально "прошью" МК.
3) Программу AVR Studio 5 - в ней я буду писать программу для МК на языке Ассемблера.
4) Аналоговый сигнал 0...+10В (в реальности это будет выход сигнала с датчика давления "А-10" или еще откуда-нибудь)
5) Delphi 7 - здесь будет написано приложение, принимающее и обрабатывающее данные с COM-порта (в перспективе).

Чем я руководствуюсь для подключения сигнала к компаратору: вот этой простой статьей.
Чем я руководствуюсь для подключения сигнала к АЦП: вот этой статьей.

В процессе моих действий будут представлены скрины, описание всего и т.д. Задача вполне мне по силам, просто не все до конца понятно.

Итак, начнем с компаратора.

Мною был смоделирован симметричный резистивный (R1 и R2 по 1 КОм) делитель напряжения с потенциометром (RV1 - 18КОм) на входе для имитации 0...+10В. Делитель пропорционально понижает сигнал до 0...+5В. Нагрузка: R3 - 100 КОм.
В реальности вместо клеммы "Gnd" будет клемма "Com"

Изображение

Это будет имитацией сигнала для контроллера.

Далее, смоделирован стабилитрон D1 на 5В (изменю на 3В) для опорного напряжения и добавлен резистор R4 - 500 Ом.

Верхний отвод R2(1) - источник сравниваемого сигнала.
Нижний отвод D1(K) - источник опорного сигнала.

Изображение

Пора браться за программу для МК.

И вот первые проблемы. Программа взята мной из этой статьи:

Код: Выделить всё

/*
 * Prog_for_AnalogComp.asm
 *
 *  Created: 16.08.2013 21:30:05
 *   Author: ?????????????
 */ 

.device Atmega8
.nolist
.include "C:\Program Files\Atmel\AVR Studio 5.0\avrassembler\include\m8def.inc"
.list

COMP_OK:	PUSH F				; Сохранили флаги
		PUSH	R17			; Сохранили R17
 
		INVB	PORTD,4,R17,R16		; Инвертировали бит PD4
 
		POP	R17			; Достали все из стека
		POPF				; И флаги тоже
 
		RETI				; Вышли

; Internal Hardware Init =====================
 
;Comparator Init
		OUTI	ACSR,1<<ACIE|1<<ACIS1|1<<ACIS0	; Разрешаем прерывание
							; Ловим 0-1 переход.
; Ports Init
		SBI	DDRD,4
		SBI	DDRD,7
 
		SEI
; End Internal Hardware Init =================

; Main =====================
Main:		IN	R16,ACSR	; Взяли состояние компаратора
		ANDI	R16,1<<ACO	; Оставили только бит состояния
 
		BST	R16,ACO		; Скопировали его в Т
		BLD	R16,7		; Выгрузили в 7й разряд R16
 
		IN	R17,PORTD	; Взяли значение из PORTD
		ANDI	R17,0b01111111	; Подавили значение 7го разряда
 
		OR	R17,R16		; Наложили на него значение ACO
 
		OUT	PORTD,R17	; Вернули значение в порт.
 
		RJMP	Main
; End Main =================
При компиляции генерирует ошибки (это строка кода: " INVB PORTD,4,R17,R16 ; Инвертировали бит PD4"):
Изображение

Буду разбираться, в чем дело. Всегда рад любой помощи.
даешь высокое напряжение
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

Вова, это просто DI HALT (автор кода) забыл добавить в сам код определения своих макросов. Они есть тут:

http://easyelectronics.ru/avr-uchebnyj- ... ktika.html

скопируйте в самое начало кода и должно заработать.

(или лучше как у него все макросы в отдельный файл macro.inc запихайте, а сам файл включите в исходный код программы)
Изображение only pure true norwegian blackx Изображение
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Уважаемый Vova777, ваше стремление разобраться безусловно заслуживает похвалы, но, тем не менее, нарушать правила форума не стоит. Советую их почитать для начала.

Пока всё поправил.
Вымогатель припоя
Сообщения: 507
Зарегистрирован: Чт июн 16, 2011 15:06:10
Откуда: электрощитовая

Сообщение Vova777 »

ploop писал(а):Уважаемый Vova777, ваше стремление разобраться безусловно заслуживает похвалы, но, тем не менее, нарушать правила форума не стоит. Советую их почитать для начала.

Пока всё поправил.
Обещаю в преть не нарушать :)
даешь высокое напряжение
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

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

И снова нарушили… :)))
Для чего Вам R3 и R4, D1, я так и не понял. Как мне кажется это лишнее. А вот ёмкость (0,1 мкФ) в делителе, я бы поставил, и R1 и R2, поставил бы по 5,1 кОм.
Реклама
Ответить

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