О сайте Группа в контакте RSS Годограф Volksturm Импульсные металлоискатели IB металлоискатели Пинпоинтеры Другие схемы Заказать Конструкции металлоискателей Полезные ссылки

Схемы металлоискателей MD4U

Сборка, настройка, обсуждение, теория и практика построения металлоискателей.
Текущее время: Пт: 29 мар 2024 0:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему
 [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Способ подключения разрабатываемого устройства к MatLab
СообщениеДобавлено: Ср: 27 сен 2006 21:02 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
На сегодняшний день пакет MatLab является одним из наиболее мощных пакетов, позволяющих промоделировать устройство на уровне функциональных блоков, увидеть реальные, а не "умозрительные" сигналы, отработать различные варианты обработки сигналов. Соответственно, встаёт задача подключения "живого" устройства к MatLab. Со стороны схемы задача решается очевидным способом - на контроллере делается маленькое устройство, измеряющее несколько сигналов при помощи АЦП, и передающее результаты измерений в компьютер через последовательный порт.

А вот со стороны компьютера существуют определённые трудности. Конечно, можно написать простую программу, например, на Delphi, которая будет принимать и сохранять данные, но хочется принимать и обрабатывать данные в реальном времени, т.е., видеть прямо на экране (в MatLab), что присходит.

Оказалось, что для MatLab существует независимая бесплатная разработка - RS232 Blockset , которая позволяет получить именно требуемый эффект. Взять можно здесь: http://digilander.libero.it/LeoDaga/Sim ... ockset.htm

На картинке: Работа с импульсным 3-х канальным устройством в MatLab. Отклик на медную монету.

Изображение


Вернуться к началу
 Профиль  
 


Вы можете отключить эти сообщения.
 Заголовок сообщения: Re: Способ подключения разрабатываемого устройства к MatLab
СообщениеДобавлено: Ср: 27 сен 2006 22:35 
Не в сети

Зарегистрирован: Пн: 26 июн 2006 18:17
Сообщения: 79
Спасибо за полезную и интересную информацию! Пригодится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт: 28 сен 2006 18:03 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
А вот, например, применение цифровой фильтрации к реальному сигналу в среде MatLab. На графиках слева: вверху - сигнал на входе фильтра, внизу - сигнал на выходе фильтра.

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт: 04 сен 2008 11:02 
Не в сети

Зарегистрирован: Вт: 20 мар 2007 19:31
Сообщения: 4
Откуда: Болгария
все хорошо но где схема железа. На линке только софт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт: 04 сен 2008 11:14 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
brussl писал(а):
все хорошо но где схема железа. На линке только софт.

Какого железа ? :shock:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт: 05 сен 2008 16:56 
Не в сети

Зарегистрирован: Вт: 20 мар 2007 19:31
Сообщения: 4
Откуда: Болгария
Ети слова Ваши -> "Со стороны схемы задача решается очевидным способом - на контроллере делается маленькое устройство, измеряющее несколько сигналов при помощи АЦП, и передающее результаты измерений в компьютер через последовательный порт. "

Где найти схема такого контролера?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт: 05 сен 2008 17:05 
Не в сети

Зарегистрирован: Вт: 20 мар 2007 19:31
Сообщения: 4
Откуда: Болгария
Или если Я понимал толко отчетов из АЦП следует передават через RS232?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт: 05 сен 2008 17:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Когда разрабатываем устройство, предусматриваем в нём выход с передачей данных. Сейчас практически все контроллеры имеют аппаратный UART. Для согласования уровней ставим MAX232 или транзистор. И всё - из устройства можно передавать интересующие данные через COM-порт. Программно там ничего хитрого нет, кто может написать программу для своего устройства, тот сможет и добавить в неё вывод через UART.

Кстати, RS232 Blockset с последними версиями Matlab не работает, последняя версия, в которой он нормально функционирует - Matlab 2006b.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт: 05 сен 2008 21:01 
Не в сети

Зарегистрирован: Пн: 14 май 2007 18:24
Сообщения: 608
Откуда: Новосибирск
[quote="Andy_F"][/quote]
В М-лабе можно и звуковуху использовать для ввода аналоговых данных, правда, только в звуковом диапазоне... но что-либо прилично обработать в реальном времени - проблематично..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт: 05 сен 2008 21:33 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
Сергей_П писал(а):
... но что-либо прилично обработать в реальном времени - проблематично..

Это точно. Тема вообще-то старая, в целом - ничего оригинального, сейчас я бы такое постить не стал.

Кстати, разумнее писать данные в текстовый файл (это можно делать довольно быстро), а потом "подпихнуть" файл MatLab'у, и спокойно в нём поработать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб: 06 сен 2008 13:10 
Не в сети

Зарегистрирован: Вт: 20 мар 2007 19:31
Сообщения: 4
Откуда: Болгария
Все понятна. Спасиба за ответ. Я буду сделат на PIC стадратной АЦП то RS232.


Вернуться к началу
 Профиль  
 
В сети

Вы можете отключить эти сообщения.
 Заголовок сообщения:
СообщениеДобавлено: Сб: 06 сен 2008 13:54 
Не в сети
Аватара пользователя

Зарегистрирован: Вс: 06 ноя 2005 11:17
Сообщения: 4527
Откуда: С.-Петербург
brussl писал(а):
Все понятна. Спасиба за ответ. Я буду сделат на PIC стадратной АЦП то RS232.

Да, там всё очевидно. Вот пример на ATmega8, измерения по 4-м каналам, для распознавания начала посылки используется флаг 0xFFFF :

Код:
#include <ioavr.h>
#include <ina90.h>
#include <stdio.h>
#include <stdbool.h>
#include <avr_macros.h>
#include "delay.h"
#include "main.h"

void init_devices(void)
{
  _CLI();                                         //disable all interrupts

  PORTB = 0x00;                                       
  DDRB  = 0x00; 

  PORTC = 0x00;                             
  DDRC  = 0x00;

  PORTD = 0x00;
  DDRD  = 0x00;

  // --- ADC init ---
  ADCSR = (1 << ADEN)|(1 << ADPS2)|(1 << ADPS1);  // АЦП включён, запуск одиночный, прерывание запрещено, частота 125 кГц
  ADMUX = (1 << REFS0);                           // Опора ADC - VCC, выравнивание вправо, канал - ADC0

  // --- USART init --- 
  UBRRH = 0;
  UBRRL = 5;                                      // Скорость порта - 115,2 k
  UCSRB = (1 << TXEN)/*|(1 << RXEN)*/;            // Вкючён только передатчик 
  UCSRC = (1 << URSEL)|(3 << UCSZ0);              // Формат кадра - 8 бит, стоповый бит - 1, чётность выключена.

  _SEI();                                         //re-enable interrupts
}


void main( void )
{unsigned int measure;
unsigned char b_temp;
  init_devices();
  for(;;)
  {
    USART_Transmit(0xFF);                       // Флаг сверхцикла
    USART_Transmit(0xFF);

    measure = ADC_measure(0);
    b_temp = (unsigned char)measure;
    USART_Transmit(b_temp);
    b_temp = *((unsigned char *)&measure + 1);  // Выделяем старший байт
    USART_Transmit(b_temp);

    measure = ADC_measure(1);
    b_temp = (unsigned char)measure;
    USART_Transmit(b_temp);
    b_temp = *((unsigned char *)&measure + 1);  // Выделяем старший байт
    USART_Transmit(b_temp);
   
    measure = ADC_measure(2);
    b_temp = (unsigned char)measure;
    USART_Transmit(b_temp);
    b_temp = *((unsigned char *)&measure + 1);  // Выделяем старший байт
    USART_Transmit(b_temp);
   
    measure = ADC_measure(3);
    b_temp = (unsigned char)measure;
    USART_Transmit(b_temp);
    b_temp = *((unsigned char *)&measure + 1);  // Выделяем старший байт
    USART_Transmit(b_temp);
  }
}

//****************************************************
//*          Передача байта через COM порт           *
//****************************************************
void USART_Transmit( unsigned char data )
{
  while (!( UCSRA & (1 << UDRE)));    // Wait for empty transmit buffer
  UDR = data;                           // Put data into buffer, sends the data
}

//****************************************************
//*        Измерение АЦП в заданном канале           *
//****************************************************
unsigned int ADC_measure(unsigned char ch)
{
  _CLI();
  ADMUX = (ADMUX & 0xF0) | ch;           // Устанавливаем канал
  delay_us(2);
  ADCSR |= (1 << ADSC);                  // Переход в режим измерения
  while(ADCSR & (1 << ADSC));            // Ожидание окончания измерения
  _SEI();
  return(ADC);
}




Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт: 27 янв 2009 6:43 
Не в сети
Аватара пользователя

Зарегистрирован: Ср: 27 фев 2008 20:29
Сообщения: 166
Откуда: Томск
Оказывается в mаtlаb 2007b если в свойствах модели в полях "кто разрабатывал", "кто последний изменял" указать онное на русском, то он не хочет сохранять модель...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти: