реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> АЦП AD7705+PIC16F877, ваше мнение,советы
upc2
сообщение Sep 18 2007, 07:24
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Раз вы так настойчивы , прикрепил рабочий проект.Может пригодится.
АЦП работает с тензодатчиками и токовой петлей Внешний вид в моей фотогагерее.
Прикрепленные файлы
Прикрепленный файл  AD7705_877.rar ( 84.07 килобайт ) Кол-во скачиваний: 155
 
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 18 2007, 08:23
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



void send_byte_spi(unsigned char byte_data)
//posilka byte SPI
{INTCON=0x00;//
SSPEN=1;//vkl. SPI
Delaymks(1);
SSPBUF=byte_data;
while(!STAT_BF);
Delaymks(1);
}

void read_2byte(unsigned char spi_data)//priem 2 byte( SPI)
{ CS=0;
SSPBUF = spi_data; // Send the read instruction
while (!STAT_BF); // wait for ssp to finish
spi_data = SSPBUF; // SPIDummy
CS=1;
CS=0;
SSPBUF = 0x00; // SPIDummy tx to initiate bus cycle
while (!STAT_BF); // wait for ssp to finish
H_byte_AD7705=SSPBUF;
SSPBUF = 0x00; // SPIDummy tx to initiate bus cycle
while (!STAT_BF); // wait for ssp to finish
L_byte_AD7705=SSPBUF;
CS=1;
SSPEN=0;//vikl. SPI
}


CS=0;//RD5
//инициализация АЦП
send_byte_spi(0b00100000);
send_byte_spi(0b00010100);
send_byte_spi(0b00010000);
send_byte_spi(0b01000110);
while(DRDY){;}//
read_2byte(0b00111000);//priem 2 byte(SPI)
CS=1;//RD5

Зависает на строчке while(DRDY){;}//
постоянно висит лог.1
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 18 2007, 09:29
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Вроде все правильно.Попробуйте сначала сделать инициализацию
Clock $0C Setup $44 и отключите буфер.
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 18 2007, 13:33
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Цитата(upc2 @ Sep 18 2007, 12:29) *
Вроде все правильно.Попробуйте сначала сделать инициализацию
Clock $0C Setup $44 и отключите буфер.


Пробовал все тоже.
Зависает на строчке while(DRDY){;}//
постоянно висит лог.1

Если сброс - DRDY в каком состоянии?
В моем случае висит лог.1
Возьму новую миктосхему, соберу схему, начну вновь
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 19 2007, 04:17
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Не спешите.
Проверте полярность сигналов тактирования модуля BSSP.
Необходимо чтобы полярность совпадала с документацией на AD7705

DRDY устанавливается в 0 когда в регистре DATA есть данные и сразу сбрасывается при
чтении этого регистра. Об этом сигнализирует и 7 разряд регистра COMM
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 19 2007, 06:48
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Настройка SPI:
SSPCON=0b00010010;//CKP=1; FOSC/64
SSPSTAT = 0x00; //CKE=0,SMP=0
SSPEN=1;//vkl.modul SPI
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 19 2007, 07:24
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Я не знаю вашу схему подключения к контроллеру.У меня СКР=0 (стоит буфер)
Просмотрите ваш код . Не должно бить ни одного лишнего и недостающего бита.
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 19 2007, 10:09
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Соединение с микроконтроллером напрямую
Во время инициализации на выв. DOUT появляются импульсы.
Во время чтения там 0
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 19 2007, 11:46
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Тогда ловите 0
while(!DRDY);
и читайте данные
read_2byte(0b00111000);
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 19 2007, 13:18
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Первый раз измеряет, корректно. Но чтобы измерить второй раз (виснет при повторном измерении) нужно выключить питание или сбросить контроллер.
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 20 2007, 04:07
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Цитата(kolisnichenko_r @ Sep 19 2007, 17:18) *
Первый раз измеряет, корректно. Но чтобы измерить второй раз (виснет при повторном измерении) нужно выключить питание или сбросить контроллер.


Поздравляю. Значит живой АЦП.
В документации об этом мало написано, но при каждом измерении надо начинать все сначала-
инициализацию, установки и т.д.
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 20 2007, 08:13
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Спасибо за помощь! Заработало!
Ох и помучило меня это...
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 20 2007, 08:51
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Он еще может заткнуться , когда на его вход подается напряжение больше чем он
может измерить.Тогда необходимо делать сброс.
Докумннтация рекомендует делать несколько замеров и только после этого оценивать
результат. Первый замер точно должен быть холостым.
Дерзайте дальше.Успехов.
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Sep 20 2007, 10:34
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Еще задачка: входы закорочены, результат измерения - 100-160мкВ на всем диапазоне Ку ( от 1 до 128 );
флуктуация результата измерения на всем диапазоне Ку

Может что-то в алгоритме инициализации?
Go to the top of the page
 
+Quote Post
upc2
сообщение Sep 20 2007, 11:30
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Цитата(kolisnichenko_r @ Sep 20 2007, 14:34) *
Еще задачка: входы закорочены, результат измерения - 100-160мкВ на всем диапазоне Ку ( от 1 до 128 );
флуктуация результата измерения на всем диапазоне Ку

Может что-то в алгоритме инициализации?


При закороченных входах должен быть 0. Это проблема DIP-корпуса вставленного в сокет. Лучше
распаянный корпус SOIC. Второе ,стабилизация опорного напряжения.Используйте AD780.Элекромагнитные наводки,заблокируйте входы конденсаторами и многое другое.

Если от этого не избавиться, то следует применять другую калибровку.Точно не помню, помоему
Zero-она примет 100мкв. за 0 Вообщем у этих микросхем много возможностей.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 06:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.02288 секунд с 7
ELECTRONIX ©2004-2016