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

 
 
> Выбор микроконтроллера
Kannikkiy
сообщение Dec 26 2008, 20:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 26-12-08
Пользователь №: 42 777



здравствуйте!
Передо мной стоит следующая задача. Необходимо измерять и передавать в компьютер напряжение (ток постоянный) в диапазоне от сотых милливольт до десятых вольта, причем важны все 5 значащих цифр. Измеряемая ЭДС может иметь как прямую так и обратную полярность. Скорость измерения данных не менее 10 измерений/с (10 Гц).

Возможно ли решение данной задачи с помощью микроконтроллеров? Если да, то каких? Буду благодарен за любые предложенные решения.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kannikkiy
сообщение Feb 25 2010, 19:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 26-12-08
Пользователь №: 42 777



Доброго времени суток!

Как и было обещано выкладываю поправленную схему, прошивку и фотографии готовой платы.

Но сначала немного о том, как это работает. Щ300 работает, как многие другие советские приборы на интерфейсе 1-2-4-8. Среди данных, которые он передает 5 значащих цифр (причем первая из них может быть только 0 или 1), знак, положение запятой (таких положений всего 3) и тип измеряемой величины (для Щ300 опытным путем определено наличие трех типов - А, Ом и мВ, В). Цифры считываются из числовых регистров: 1-ая из 11С, 21С, 41С и 81С; 2-ая из регистров 21С, 22С, 42С и 82С и т.д. Пределы, знак и тип измерения передаются по соответствующим регистрам П (см. схему). Для поочередного считывания этих данных используются селекторы-мультиплексоры КР1533КП15 или 74НС595N. Очередность обеспечивается изменением входных регистров селекторов (А0-А2). Для синхронизации прибор выдает сигнал на пин ТоП. По руководству по эксплуатации прибор может выполнять до 12.5 изм/с. Поэтому скорости передачи в порт достаточно 9600 (хотя мы используем большую).

Первый эксперимент на аттини2313 был неудачным. Второй вариант был собран на атмеге 16 (фотография этой платы прилагается), с которой прибор наконец заработал. Но вследствие ошибки при разводке платы (перепутана последовательность опроса регистров селекторов мультиплексоров).

Прикрепленное изображение


CODE


// ***********************************************************
// Project: Щ300
// Author: Крючков А.С. Дунаев А.М.
// Module description:
// ***********************************************************

#include <avr\io.h> // Most basic include files
// Add the necessary ones
#include <avr\signal.h>
#include <avr\pgmspace.h>
#include <stdio.h>
#include <avr\iotn2313.h>
#include <avr\interrupt.h>

// Function prototypes
//
int UART_putchar(char c);
int UART_getchar(void);
void UART_first_init(void);
void send_data(int dts);
void get_data(void);
// Define here the global static variables
// Buffer sizes must be 2^n
//
#define TBUFSIZE 32
#define RBUFSIZE 32

#define TMASK (TBUFSIZE-1)
#define RMASK (RBUFSIZE-1)

// Static variables
//
volatile unsigned char tbuf[TBUFSIZE]; // TX buffer
volatile unsigned char rbuf[RBUFSIZE]; // RX buffer

volatile unsigned char t_in; // TX buffer in index
volatile unsigned char t_out; // TX buffer out index

volatile unsigned char r_in; // RX buffer in index
volatile unsigned char r_out; // RX buffer out index
int i,j;

SIGNAL(SIG_INTERRUPT1) { /* signal handler for external interrupt int0 */
get_data();
}

void UART_first_init(void) {
//***********************
// The function fdevopen(..) must contain as parameters the
// corresponding ..putchar() and ..getchar() functions, defined before.
//
UBRRL = 12; // 115200 BPS
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); // 8 Databits, receive and transmit enabled, receive and transmit complete interrupt enabled
}

void get_data(void) {
//чтение данных идет слева направо для удобства представления в посылке
PORTB = 32; //знаки и 5-я цифра
j = PINB;
i = j&4;
if (i==4) send_data(45);// = '-'; //45 -
else send_data(43); //UDR = '+'; //43 +
i = j&1;
send_data(i+'0');//UDR = i;

PORTB = 64; //4 цифра
j = PINB;
j = j & 0xf;
j = j + '0';
send_data(j);

PORTB = 96; //3 цифра
j = PINB;
j = j & 0xf;
j = j + '0';
send_data(j);

PORTB = 128; //2 цифра
j = PINB;
j = j & 0xf;
j = j + '0';
send_data(j);

PORTB = 160; //1 цифра
j = PINB;
j = j & 0xf;
j = j + '0';
send_data(j);

PORTB = 192;
j = PINB;
j = j & 0xf;
j = j + '0';
send_data(j);//UDR = j;//измеряемая вел-на В, Ом, А*/

PORTB = 224;
j = PINB;
j = j & 0x3;
j = j + '0';
send_data(j);//UDR = j;//положение запятой*/

send_data(13);//UDR = 13;
}
//
void send_data(int dts) {
UDR = dts;
while ( !( UCSRA & (1<<UDRE)) );
}

void io_init(void) {
//io ports init
DDRB = 240; // три последних пина - на выход, остальные - на вход
asm ("nop");
PORTB = 0;
GIMSK = (1<<INT0)|(1<<INT1); /* enable external int0, int1 */
MCUCR = (1<<ISC01)|(1<<ISC10)|(1<<ISC11);/* falling egde: int0, rising edge: int 1 */
sei(); /* enable interrupts */
}

// ***********************************************************
// Main program
//
int main(void) {
UART_first_init();
io_init();
while(1)
{
asm ("nop");
// в коментариях принудительный опрос прибора, если не использовать прерывания
//for (i=0;i<20000;i++){}
//get_data();
}
}



На фото неприпаянный провод - это прерывание идущее на вывод ТоП (устанавливается опционально)

Благодарим всех участвующих в дискуссии, особенно vvs157. Спасибо всем! Тема закрыта! smile.gif
Причина редактирования: Простыня неформатированного исходника

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kannikkiy   Выбор микроконтроллера   Dec 26 2008, 20:08
- - demiurg_spb   Если важны 5 значащих цифр то нужно минимум 16-бит...   Dec 26 2008, 20:19
- - PaulB   а можно поподробней про первый вариант? какой тогд...   Dec 26 2008, 20:39
|- - demiurg_spb   Цитата(PaulB @ Dec 26 2008, 23:39) а можн...   Dec 26 2008, 20:47
- - rezident   Kannikkiy, т.е. вам нужно измерять сигнал постоянн...   Dec 26 2008, 20:51
|- - demiurg_spb   Автор ничего не говорил об относительной приведенн...   Dec 26 2008, 20:58
|- - rezident   Оба-на сколько оказывается телепатов в форуме...   Dec 26 2008, 21:20
- - PaulB   >rezident Это значит, что даже если величина из...   Dec 26 2008, 21:08
- - yanita   А если поставить программируемый усилитель перед А...   Dec 27 2008, 11:27
- - VDG   судя по детским вопросам автора - тему в Начинающи...   Dec 27 2008, 13:26
- - Diusha   Цитата(Kannikkiy @ Dec 26 2008, 23:08) Во...   Dec 27 2008, 15:02
- - Kannikkiy   Извините, что так долго не писал... Как раз перед ...   Dec 29 2008, 17:33
|- - rezident   Цитата(Kannikkiy @ Dec 29 2008, 22:33) А,...   Dec 29 2008, 18:11
- - Kannikkiy   Вот в том - то и дело что хорошо бы поставить усил...   Dec 29 2008, 19:50
|- - MAXvaLL   Цитата(Kannikkiy @ Dec 29 2008, 22:50) Да...   Dec 30 2008, 18:23
- - PaulB   А можно ли использовать для наших задачь мк AT90U...   Dec 29 2008, 20:11
|- - demiurg_spb   Цитата(PaulB @ Dec 29 2008, 23:11) А можн...   Dec 29 2008, 22:48
- - PaulB   этот мк выбрал чтобы соединение с usb было проще и...   Dec 30 2008, 14:29
|- - demiurg_spb   Цитата(PaulB @ Dec 30 2008, 17:29) этот м...   Dec 30 2008, 20:07
|- - MAXvaLL   Цитата(demiurg_spb @ Dec 30 2008, 23:07) ...   Dec 31 2008, 11:01
|- - demiurg_spb   Цитата(MAXvaLL @ Dec 31 2008, 14:01) Сомн...   Jan 1 2009, 13:29
- - Kannikkiy   Здравствуйте снова! ЦитатаЕсли не секрет, то ...   Dec 30 2008, 20:38
|- - alexkok   Цитата(Kannikkiy @ Dec 30 2008, 23:38) За...   Jan 1 2009, 21:03
- - Kannikkiy   С новым годом всех участников обсуждения! Цит...   Jan 1 2009, 18:22
|- - demiurg_spb   Цитата(Kannikkiy @ Jan 1 2009, 21:22) Как...   Jan 2 2009, 10:20
- - Kannikkiy   ЦитатаЕсли нужен всего один прибор, самый быстрый ...   Jan 1 2009, 22:24
|- - rezident   Цитата(Kannikkiy @ Jan 2 2009, 03:24) Вед...   Jan 1 2009, 22:46
|- - alexkok   Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл...   Jan 2 2009, 00:29
|- - MAXvaLL   Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл...   Jan 2 2009, 17:53
|- - SIA   Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл...   Jan 10 2009, 09:03
- - Kannikkiy   Цитатакалибраторы напряжения Druck Druck TRX-II-R...   Jan 2 2009, 18:45
|- - alexkok   Цитата(Kannikkiy @ Jan 2 2009, 21:45) Дей...   Jan 3 2009, 06:47
- - Kannikkiy   Здравствуйте! Я нашел схему отвечающую нашим ...   Jan 9 2009, 20:04
|- - Herz   Цитата(Kannikkiy @ Jan 9 2009, 22:04) Здр...   Jan 10 2009, 09:33
|- - vvs157   Цитата(Kannikkiy @ Jan 9 2009, 23:04) Тол...   Jan 11 2009, 16:22
|- - vvvv   Цитата(vvs157 @ Jan 11 2009, 19:22) Возьм...   Jan 12 2009, 15:38
- - Kannikkiy   Sanwa PC5000 (или аналогичный ему РС500) - имеет н...   Jan 10 2009, 19:36
|- - SIA   Цитата(Kannikkiy @ Jan 10 2009, 22:36) Sa...   Jan 11 2009, 22:02
- - Omen_13   50 мВ это диапазон шкалы, т.е измерение производит...   Jan 11 2009, 15:19
- - Kannikkiy   ЦитатаВозьмите старый сов. Вольтметр Щ300 - их у н...   Jan 11 2009, 17:06
|- - vvs157   Цитата(Kannikkiy @ Jan 11 2009, 20:06) - ...   Jan 11 2009, 18:27
|- - smac   Цитата(Kannikkiy @ Jan 11 2009, 20:06) - ...   Jan 11 2009, 18:52
|- - vvs157   Цитата(smac @ Jan 11 2009, 21:52) Анализи...   Jan 11 2009, 22:01
- - Kannikkiy   ЦитатаТак там индикаторы - наподобие ламп с 10 циф...   Jan 11 2009, 21:36
- - Kannikkiy   ЦитатаЕсли использовать 4 мультиплексора типа 555К...   Jan 12 2009, 19:57
|- - rezident   Цитата(Kannikkiy @ Jan 13 2009, 00:57) И ...   Jan 12 2009, 20:31
|- - vvs157   Цитата(Kannikkiy @ Jan 12 2009, 22:57) А ...   Jan 12 2009, 21:49
- - Kannikkiy   Если можно, скажите, к каким пинам в разъёме на Щ3...   Jan 13 2009, 11:21
|- - vvs157   Цитата(Kannikkiy @ Jan 13 2009, 14:21) Ес...   Jan 13 2009, 17:58
- - Kannikkiy   ЦитатаЭти данные есть во втором альбоме схем на пе...   Jan 13 2009, 20:07
|- - vvs157   Цитата(Kannikkiy @ Jan 13 2009, 23:07) Ес...   Jan 13 2009, 22:39
- - PaulB   а прошивки для МК нет?   Jan 16 2009, 15:51
|- - vvs157   Цитата(PaulB @ Jan 16 2009, 18:51) а прош...   Apr 14 2009, 08:02
- - Kannikkiy   Доброго времени суток! Всем кто еще не потеря...   Feb 24 2010, 20:01


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 08:22
Рейтинг@Mail.ru


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