РадиоКот :: Многоканальный осциллограф для медленно изменяющихся длительных процессов.
Например TDA7294

РадиоКот >Чердак >

Теги статьи: Добавить тег

Многоканальный осциллограф для медленно изменяющихся длительных процессов.

Автор: KOTvProvodah
Опубликовано 11.11.2014
Создано при помощи КотоРед.

В некоторых экспериментах требуется регистрировать медленно изменяющиеся длительные процессы, что выполнить обычными стандартными средствами, типа электронного осциллографа с минимальной разверткой до 100 мсек невозможно. Поэтому была разработана электронная приставка на базе микроконтроллера PIC18F2550 с USB интерфейсом для PC и программа "TestCmd.exe" под OS Windows для отображения и сохранения данных.

Многоканальный осциллограф (МО) предназначен для регистрации медленно изменяющихся электрических величин, то есть для регистрации таких процессов, величины которых меняются за доли секунды, минут и часов в течении, например, часов или суток.

МО состоит из

  • электронной платы "ADC Board" выполненной на микроконтроллере PIC18F2550 с USB интерфейсом, с четырьмя 10 битными ADC входами, с опорным напряжением для ADC 1,9 Вольт;
  • программы для микроконтроллера для считывания данных с четырех ADC каналов и отправки их через USB интерфейс на PC;
  • программы, разработанной на Delphi XE4, "TestCmd" под OS Windows для управления платами "ADC Board", отображения и сохранения данных.

Количество плат "ADC Board" подключаемых к PC через USB интерфейс неограничено.

 

Электронная плата "ADC Board".

Схема платы проста. Она выполнена с минимальным количеством дополнительных элементов, поэтому ее изготовление не составит труда.

 

 

 

Схема для DipTrace Sheme ADC Board

Схема включения микроконтроллера PIC18F2550 стандартная, тактовая частота работы устанавливается кварцем Q1 на 20 MHz.

Второй кварц Q2 на частоту 32768 Hz предназначен для задания интервала считывания данных с каналов ADC контроллера. Его стабильность не имеет значения, так как интервалы считывания данных с ADC синхронизируются в программе "TestCMD" на РС c системными часами, которые имеют лучшую стабильность. Для более точной работы системных часов на PC рекомендуется включить службу синхронизации времени через интернет.

Опорное напряжение для ADC задается стабилитроном выполненным на светодиоде (светодиоды прекрасные стабилизаторы). Вместо него можно установить любой стабилитрон с напряжением стабилизации не выше напряжения питания контролера. Типичное напряжение падения на светодиодах около 2 Вольт.

В схеме разделена аналоговая земля и цифровая земля. Вместе они соединяются через резистор R7 (области заливки земель на печатной плате не показаны).

Светодиод D2 и резистор R9 необязательны. Они служат лишь для индикации работы микроконтроллера.

На схеме есть несколько перемычек. Часть из них выполнены с помощью резисторов R300, R301, R302 с нулевым сопротивлением, а часть (3 перемычки) выполнены проводами (перемычки для питания).

Разъем X1 служит для подключения программатора PICkit 2.

Разъем XP1 служит для установки перемычки в случае питания платы от USB интерфейса. Внимание! Не устанавливайте перемычку, если плата питается от внешнего источника питания. USB порт на PC может "сгореть".

Разъемы Х3, Х4, Х5, Х6 являются входами для ADC каналов, входное сопротивление которых равно приблизительно 15 кОм. Разрядность ADC преобразователя 10 бит.

Перечень деталей:

  • Микроконтроллер: PIC18F2550-SOIC - 1 шт.
  • Резисторы (SMD 1206):

Номинал                               Количество, шт.
0 Om                                         3
1 Om                                         1
100 Om                                      4
5k1                                            2
10k                                            2

  • Конденсаторы (SMD 1206):

Номинал                                Количество, шт.
27 pF                                        2
33 pF                                        2
1000 pF                                     4
0,1u                                          2
0,47u                                        1
100u x 16V (электролитический)  1

  • Светодиоды - 2 шт.
  • Usb mini-b smd connector - 1 шт.
  • PLS 1x40 - 1 шт.
  • WH-2 - connector - 1 шт.
  • Кварцевый резонатор 20 MHz - 1 шт.
  • Кварцевый резонатор 32768 Hz - 1 шт.

 

 Программа для микроконтроллера PIC18F2550.

Для обмена данными между платой и программой на PC используется следующий протокол:

 

 

Принцип работы измерительной платы следующий:

  • командой "Tm" задается период времени, с которым будет опрашиваться каналы (например - [$02][$00][$00][$80][$00][crcHi][crcLo]).
  • командой "Ch" включаются каналы для считывания данных, например для включения 1-го и 2-го канала отправляются две команды "Ch"([$01][$01][$01][crcHi][crcLo] и [$01][$02][$01][crcHi][crcLo]).
  • измерительная плата автоматически отправляет считанные значения ADC с включенных каналов командой "ChADC".

Время опроса каналов задается четырьмя байтами. Значением первого байта устанавливается количество минут периода, вторым - количество секунд, третьим и четвертым байтом устанавливается число от 0 до 65535, означающее часть Msec/32768 секунды. Например, если 3-й и 4-й байт равны $80 (128) и $00 (00) соответственно, что представляет число 32768, то установлен 1 секундный интервал. Если 3-й и 4-й байт равны $02 (2) и $00 (0) соответственно, что представляет число 512, то установлен 1/64 секундный интервал.

Период времени, с которым опрашиваются каналы разделяется между всеми каналами. Например, если период установлен в 1 секунду и включен 1 канал, то данные с канала будут считываться через 1 секунду. Если период установлен в 1 секунду, а включено на измерение 2 канала, то данные с каждого канала будут поступать через каждые 2 секунды.

Для подключения контроллера PIC18F2550 к PC используется драйвер USB_IO_Board_Drivers.zip. После его установки на PC подключенная измерительная плата определяется как дополнительный COM-порт. С таким портом можно работать как с обычным COM-портом, единственное отличие состоит в том, что все настройки COM-порта, такие как скорость, четность и так далее, не имеют значения и могут быть установлены любыми.

За основу программы был взят пример USBdemo-18F2550-irToy.

Протокол обмена между измерительной платой и PC protokol_obmena.ods.

Исходники программы для MPLAB IDE v8.92 Microchip 02.zip. Файл проекта USB_stackechoUSBdemo-18F2550-irToy.mcp.

Hex файл для прошивки: 01.hex. Запрограммировать контроллер можно с помощью программатора PICkit 2, схему и прошивку на которые Microchip распространяет бесплатно.

 

 Программа "TestCmd". Краткое описание.

Пример программы в работе, измерение эфирного ветра с помощью оптико-электронного прибора. Идет считывание данных с 3-х каналов ADC. По вертикальной оси отображаются отсчеты ADC от 0 до 1023, по горизонтали секунды.

 

Настройка программы.

После подключения к PC измерительной платы "ADC Board", в программе "TestCMD" в меню нужно выбрать команду "New Board". Откроется список панелей управления для подключенных плат.

 В секции "Com Port" кнопкой "Settings" открыть окно настройки Com-порта. В поле ввода "Port" выбрать номер Com-порта соответствующий подключенной измерительной плате. В данном примере это COM28. Значения остальных полей игнорируются.

Затем в секции "Com Port" кнопкой "Open" открыть Com-порт. В секции "Version" можно получить номер версии прошивки. В секции "Channel & Timing" можно выбрать ADC каналы, с которых будут считываться данные. Для этого в окне "Channel:" нужно выставить номер канала, в поле "On/Off" его состояние и кнопкой "Set" отправить команду контроллеру. Включенный канал будет отображен красным цветом в списке имен каналов. Для получения списка состояния всех каналов можно воспользоваться кнопкой "Get".

Для установки периода считывания данных с каналов в полях "Min: (0..59)", "Sec: (0..59)", "MSec: (0..1999 [0..65535])" нужно выставить соответствующие значения и нажать кнопку "Set". Для проверки выставленных значений можно кнопкой "Get" получить значения всех полей.

После настройки ADC каналов нужно создать график и последовательность (Series). Для этого в меню нужно выбрать команду "New Graphic->NewGraphic", а затем "New Graphic->New Series". Появится новый график с последовательностью с именем по умолчанию "Data 1".

Затем нужно связать новую последовательность с нужным ADC каналом, для этого на последовательности нужно правой кнопкой мыши вызвать всплывающее меню и командой "Select channel->Data 1->Control Board 1 - ChX" выбрать соответствующий канал.

С помощью команды "Graphic->AutoScrоll" можно включить автообновление данных на последовательности. Но, в случае очень большого количества точек на последовательности потребуется полная загруженность процессора на PC.

Для обновления данных на последовательности можно выбрать команду "Graphic->Update Axis" или нажать кнопку F5.

 

Описание структуры массива ADC данных.

С каждой последовательностью (Series) связывается динамический список, который хранит классы следующего вида:

TDataMark = class
public
Min: Byte;
Sec: Byte;
MSec: Word;
nChannels: Byte;
dataADC: TList;
startTime: TDateTime;
constructor Create;
destructor Destroy; override;
procedure AddADCValue(adc: Word);
function GetTimeUpdateADC: Extended;
end;

Поле dataADC есть динамический список, хранящий экземпляры классов TDataADC. Класс TDataADCявляется оберткой, собственно, для считанных данных ADC определенного канала.

TDataADC = class
adc: Word;
constructor Create(adc: Word);
end;

Экземпляр TDataMark создается всякий раз, как только происходит изменения в настройках "ADC Board", например, такие как смена количества работающих ADC каналов, или изменения периода считывания данных. В поле startTime каждый раз при создании очередного экземпляра TDataMark записывается текущее системное время. Оно является отправной точкой при расчете времени для всех данных из списка dataADC. Таким образом, во время считывания данных можно менять период считывания без остановки самого процесса, что удобно, так как в некоторых экспериментах неизвестна скорость изменения сигнала и иногда требуется подстройка частоты обновления данных.

Так же, такой формат хранения данных позволяет вводить колибровочные коэффициенты для величин ADC и для времени между данными.

Именно в таком формате данные записываются на диск, с расширением файлов *.mdata.

В текущей версии программы экземпляры TDataMark создаются искусственно с интервалом 1 раз за 10 минут, для повышения точности интервалов времени. Период обновления можно изменить в модуле ThreadUpdate.pas.

С каждой последовательностью (Series) можно связать дополнительные сведения в виде текста любой длины. Для просмотра и редактирования дополнительный сведений нужно правой кнопкой мыши щелкнув по последовательности вызвать подменю и выбрать команду "Info Data->Data 1".

Исходники программы для IDE Delphi XE4 03.zip.


Файлы:
Протокол обмена между "ADC Board" и "TestCmd"


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

20 0 0