Как подключить сервопривод к Arduino и управлять им через LabVIEW. Какое оборудование потребуется для проекта. Как настроить связь между LabVIEW и Arduino. Как создать виртуальный прибор в LabVIEW для управления сервоприводом.
Необходимое оборудование для проекта
Для реализации проекта по управлению сервоприводом с помощью LabVIEW и Arduino потребуется следующее оборудование:
- Плата Arduino (например, Arduino Uno)
- Сервопривод (например, PROTECH B-150)
- Компьютер с установленной средой LabVIEW
- USB-кабель для подключения Arduino к компьютеру
- Макетная плата и провода для подключения
- Источник питания 5В для сервопривода
Убедитесь, что все компоненты совместимы между собой и соответствуют требованиям проекта. Качественные комплектующие обеспечат надежную работу системы управления сервоприводом.
Подключение сервопривода к Arduino
Для подключения сервопривода к плате Arduino выполните следующие шаги:
- Подключите провод питания сервопривода (обычно красный) к выводу 5В на Arduino
- Подключите провод заземления (обычно коричневый или черный) к выводу GND Arduino
- Подключите сигнальный провод (обычно оранжевый или белый) к цифровому выводу Arduino, например D9
Схема подключения будет выглядеть примерно так:

- Красный провод сервопривода → 5В Arduino
- Коричневый/черный провод → GND Arduino
- Оранжевый/белый провод → D9 Arduino
Убедитесь, что все соединения надежны и нет коротких замыканий. Правильное подключение обеспечит корректную работу сервопривода.
Настройка связи между LabVIEW и Arduino
Для организации связи между LabVIEW и Arduino необходимо выполнить следующие действия:
- Установите драйвер VISA в LabVIEW для работы с COM-портами
- Подключите Arduino к компьютеру через USB-кабель
- Определите номер COM-порта, к которому подключена Arduino
- В LabVIEW используйте блоки VISA для открытия соединения с нужным COM-портом
- Настройте параметры соединения: скорость 9600 бод, 8 бит данных, без контроля четности
Правильная настройка связи позволит обмениваться данными между LabVIEW и Arduino. Это необходимо для управления сервоприводом из виртуального прибора LabVIEW.
Создание виртуального прибора в LabVIEW
Для создания виртуального прибора управления сервоприводом в LabVIEW выполните следующие шаги:

- Создайте новый VI (виртуальный прибор) в LabVIEW
- На лицевой панели разместите элемент управления Dial для задания угла поворота сервопривода
- Настройте диапазон Dial от 0 до 180 градусов
- На блок-диаграмме создайте цикл While Loop
- Добавьте блоки VISA для работы с COM-портом
- Преобразуйте значение угла в команду для сервопривода
- Отправьте команду на Arduino через COM-порт
Созданный виртуальный прибор позволит управлять углом поворота сервопривода с помощью графического интерфейса LabVIEW.
Программирование Arduino для управления сервоприводом
Для программирования Arduino и управления сервоприводом выполните следующие шаги:
- Откройте Arduino IDE и создайте новый скетч
- Подключите библиотеку Servo.h
- Создайте объект Servo
- В функции setup() прикрепите сервопривод к нужному пину
- В функции loop() считывайте данные с последовательного порта
- Преобразуйте полученные данные в угол поворота сервопривода
- Установите нужный угол с помощью метода servo.write()
Пример кода для Arduino:
«`cpp #include
Тестирование и отладка системы
После сборки и программирования системы необходимо провести ее тестирование и отладку:
- Запустите виртуальный прибор в LabVIEW
- Поворачивайте Dial на лицевой панели и наблюдайте за реакцией сервопривода
- Проверьте соответствие заданного угла фактическому положению сервопривода
- При необходимости откалибруйте систему, изменив масштаб преобразования в LabVIEW или Arduino
- Проверьте работу системы во всем диапазоне углов от 0 до 180 градусов
- Убедитесь в отсутствии задержек и рывков при управлении
Тщательное тестирование позволит выявить и устранить возможные проблемы в работе системы управления сервоприводом.
Оптимизация и улучшение проекта
После базовой реализации проекта можно рассмотреть следующие варианты его оптимизации и улучшения:
- Добавьте функцию плавного поворота сервопривода
- Реализуйте возможность задания последовательности движений
- Интегрируйте датчики для обратной связи по положению
- Создайте графический интерфейс для визуализации положения сервопривода
- Добавьте возможность сохранения и загрузки профилей движения
- Реализуйте управление несколькими сервоприводами одновременно
Эти улучшения сделают проект более функциональным и гибким для различных применений.

Управляем сервомашинкой из LabView / Связь железа с компьютером. / Сообщество EasyElectronics.ru
Предисловие.
Еще прошлым летом побывал я в Киеве, в магазине радио управляемых моделей. И там удалось мне купить потрепанную сервомашинку – PROTECH B-150. Вроде как механика у ней барахлила под нагрузкой, от того и списали. Но вообще рабочая, для экспериментов пригодная.
Этап 1.
Собираем схему.
Вот собственно сервомашинка.
Назначение проводов:
Коричневый – земля
Красный – «+» питания (рекомендуется 4,8В я использовал 5В)
Оранжевый – управляющий сигнал.
Для того чтобы вал сервомашинки принял нужное положение необходимо слать на сигнальный провод прямоугольные импульсы с длительностью от 0,9 до 2,1 мс. Между восходящими фронтами рекомендуется пауза 20мс.
DI HALT подробно описывает устройство и работу с сервой в своей статье Сервомашинка HS-311
В ходе учений задействуется одна ножка в качестве управляющей линии, и один канал АЦП, приёмо-передатчик UART.
Внутрисхемная прошивка и отладка велась посредством JTAG ICE отладчика сборка которого выполнена по материалам статьи.
Для связи с ПК использован преобразователь уровней, рецепт сборки которого взят от сюда.
Вроде бы простая штучка, но пока я додумался поменять местами RX и TX дорожки идущие к COM порту бедная микросхема MAX232 отжигала очень серьёзно (буквально обжигала пальцы и при этом не работала), так что будьте внимательней, не копируйте бездумно чужие изделия.
Вот полная схема «экспериментального стенда».
Электроника и сервомашинка запитаны от разных источников питания.
На всякий случай я организовал ключ на N канальном MOSFETе, и установил резистор 10 Ом для ограничения управляющего тока.
Работает всё это следующим образом: лапа контроллера (PORTB0) должна прижимать затвор транзистора к питанию чтобы управляющий провод сервомашинки ложился на землю. И наоборот – когда нога отпускает затвор транзистора, тот подтягивается к земле резистором 10кОм и транзистор прекращает сливать на землю положительный заряд – через резистор 1кОм на управляющем проводе устанавливается положительный потенциал.
А вот так стенд раскинулся на табуретках:
Этап 2.
Формируем базовый алгоритм генерации импульсов.
Сперва настроим тактирование контроллера на работу с частотой 8МГц. Используя JTAG ICE отладчик, достаточно выбрать необходимую частоту из списка, шаманить с битами он будет сам.
Сконфигурируем порты для работы:
// ПОРТ А 76543210 OUTI DDRA, 0b00000000 //Направление OUTI PORTA, 0b11111111 //Состояние // ПОРТ В 76543210 OUTI DDRB, 0b00000001 //Направление OUTI PORTB, 0b11111110 //Состояние // ПОРТ С 76543210 OUTI DDRC, 0b00000000 //Направление OUTI PORTC, 0b11111111 //Состояние // ПОРТ D 76543210 OUTI DDRD, 0b00000000 //Направление OUTI PORTD, 0b11111111 //Состояние
Чтобы дергать ногой используем прерывания по переполнению таймера 0. Инициализируем его таким образом:
IN R16, TIMSK //установка только нужного бита ORI R16, 0b00000001 //Регистр маски прерывания от таймеров OUT TIMSK, R16 OUTI TCCR0, 0b00000001 //Регистр управления таймером 0
Файл проекта прикреплен к посту, там вы найдете инициализацию с более чем подробными комментариями.
Немного математики. Процессор тикает 8 000 000раз в секунду. Таймер инкерментирует свой счётчик с той же частотой.
Он переполняется с частотой: 8 000 000/256 = 31250 раза в секунду. Чтобы было ясней — тридцать одну тысячу раз с небольшим за одну секунду
Нам нужно отсчитать самое малое 0,9 мс. Чтобы узнать сколько это в переполнениях таймера составляем пропорцию:
1000мс =31250перполнений
0,9мс = (0,9*31250)/1000=28 переполнений
Для получения 2-х мс соответственно (2*31250)/1000=62 переполнения
И для получения 20-ти милисекундной паузы между восходящими фронтами сигнала:
(20*31250)/1000=627. Для упрощения отсчёта я использовал 254 переполнения, работает нормально.
SEI //Прерывания разрешены MAIN: //Главный цикл программы NOP NOP JMP MAIN
В таблице прерываний дадим вектор таймеру 0:
.ORG OVF0addr // Timer/Counter0 Overflow JMP Timer0Overflow
Напишем обработчик прерывания:
Timer0Overflow: //Переполнение таймера 0 INC FreqensyCounter // увеличить счётчик полного периода управления CPI FreqensyCounter, FreqensyCounterSet //если период достигнут - BREQ RestartControl //начать новый цикл IN R16, PINB // иначе проверить: бит в порту сброшен? CLC ROR R16 BRCS Timer0OverflowEnd //Если нет тогда завершаем прерывание INC PulsMesure //если да тогда еще и увеличить счётчик длительности импульса CP PulsMesure, PulsMesureSet //если длительность совпала с заданной - BRNE Timer0OverflowEnd SBI PORTB, Servo //установить бит в порту RJMP Timer0OverflowEnd RestartControl: //новый управляющий цикл начинается CLR FreqensyCounter//обнулить счтчик полной длительности CLR PulsMesure //обнулить счётчик длительности импульса CBI PORTB, Servo //сбросить бит в порту Timer0OverflowEnd: RETI
Комментариев по моему достаточно, но всё же уточню, что таймер щёлкает двумя счётчиками: один отмеряет длительность управляющего сигнала (PulsMesure), второй меряет длительность паузы между восходящими фронтами (FreqensyCounter). Оба сравниваются с регистрами хранящими заданные значения (FreqensyCounterSet) и (PulsMesureSet) соответственно. Последнее следует задать в программе явно, в диапазоне от 28 до 62-х в но потом будем его менять програмно. Регистру FreqensyCounterSet просто присвоим значение 254.
.equ PulsMesureSet =31 .equ FreqensyCounterSet =254
Когда совпадает счётчик длительности импульса (PulsMesure) – выставляем бит в порту и тем самым открываем транзистор, ложим сигнальную линию сервы на землю. Импульс заданной длинны передан.
Если совпадает значение полного периода (FreqensyCounter) – начинаем новый управляющий импульс: сбрасываем бит в порту, обнуляем оба счётчика и снова ждём прерывания.
Итак, порт настроен на выход, тактовый генератор сконфигурирован, таймер настроен и запущен, прерывания разрешены, обработчик написан.
Собираем схему, выходим на связь с контроллером из AVR студии по при помощи JTAG, заливаем прошивку, жмем на Play. Если всё правильно, то серва повернется на некоторый угол и останется в этом положении. Изменим текст программы, поменяв значение PulsMesureSet в рабочих пределах (28-62)снова откомпилируем программу и прошьём в контроллер — сервомашинка вертит хвостом!
Хорошо, сервозверек подает признаки жизни(очень надеюсь что таки да). Сделаем его дрессировку чуть более удобной.
Этап 3.
Реальная крутилка для реальной вращалки.
Чтобы не менять вручную заданную длительность сигнала, возложим сию обязанность на АЦП. Пускай он меряет напряжение на своей ножке и выдает вердикт в виде значения PulsMesureSet.
Сконфигурируем и запустим АЦП до главного цикла.
OUTI ADMUX, 0b00100000 BYTEMOD SFIOR, 0b00011111, 0b10011111 OUTI ADCSRA, 0b11101110
Все коментарии в окно не влезут, я прикреплю файл с проектом к посту, там всё посмотрите.
Чтобы перезапускать преобразования, используем прерывание таймера Т0. Там ничего не надо дописывать, мы всё указали в регистрах конфигурации АЦП.
Поскольку данный этап изучения лишь промежуточный, я не задавался целю обеспечения плавного вращения сервомашинки. В связи с этим, алгоритм обработчика прерывания от АЦП выдает лишь 8 значений PulsMesureSet, в зависимости от того в какой диапазон значений попал старший байт выходного слова АЦП.
ADC_Conversion_Complete: //Преобразование АЦП завершено IN R16, ADCL IN R16, ADCH //забрали результат //Таблица поиска диапазона CPI R16, 32 BRLO Step_0 CPI R16, 64 BRLO Step_1 CPI R16, 96 BRLO Step_2 CPI R16, 128 BRLO Step_3 CPI R16, 160 BRLO Step_4 CPI R16, 192 BRLO Step_5 CPI R16, 224 BRLO Step_6 LDI PulsMesureSet, 62 RJMP ADC_Conversion_Complete_End Step_0: LDI PulsMesureSet, 28 RJMP ADC_Conversion_Complete_End Step_1: LDI PulsMesureSet, 32 RJMP ADC_Conversion_Complete_End Step_2: LDI PulsMesureSet, 36 RJMP ADC_Conversion_Complete_End Step_3: LDI PulsMesureSet, 40 RJMP ADC_Conversion_Complete_End Step_4: LDI PulsMesureSet, 44 RJMP ADC_Conversion_Complete_End Step_5: LDI PulsMesureSet, 48 RJMP ADC_Conversion_Complete_End Step_6: LDI PulsMesureSet, 52 ADC_Conversion_Complete_End: RETI
Не забудьте закоментировать или удалить строку, где прописано значение регистра PulsMesureSet, вот так:
//.equ PulsMesureSet =31
Заливаем прошивку в контроллер и крутим переменный резистор: серва отвечает короткими поворотами. Если есть желание и необходимость можно переработать алгоритм для плавного управления, но сейчас важно не это.
Этап 4.
На связи с ПК.
Как видите, чтобы менять положение вала сервомашинки достаточно менять значение одного байта. Ничего не мешает нам обновлять этот байт используя UART.
Для этого понадобится ПК в котором есть COM порт (у меня стоит плата расширения на 2 порта – не пожалел что купил), преобразователь интерфейсов, и программа-терминал которая умеет принимать/передавать данные через COM порт. Ознакомится с некоторыми из них можно здесь. Я использую Terminal v1.9b by Bray.
Правда есть одна сложность: терминальные программы (и LabView) передают строки в ASCI кодировке. Так что если вы захотите отправить число 23 то оно отправится в идее двух символов с кодами 50 и 51. А нам то нужно 23! Чтобы понять, как перекодировать строку обратно в число посмотрим на таблицу ASCII кодов для цифр:
ASCII код Символ.
048 0
049 1
050 2
051 3
052 4
053 5
054 6
055 7
056 8
057 9
Вот получили мы, к примеру код 54 (это символ 6), если вычесть из него код символа 0 (48) то получим 6 – просто число готовое к дальнейшей обработке.
А дальше всё просто: мы точно знаем, что передавать будем значения от 28 до 62 (всегда две цифры. К нам они будут приходить в виде двух символов, старшим байтом вперед. Каждый символ расшифруем в простое число и сформируем нашу переменную PulsMesureSet: байт с десятками умножим на 10 и прибавим байт единиц.
Инициализируем USART
OUTI UCSRA, 0b00000000 //можно было и не писать, но всё же... OUTI UCSRB, 0b11011000 OUTI UCSRC, 0b10000110 OUTI UBRRL, low(bauddivider) //загрузка делителя частоты OUTI UBRRH, high(bauddivider) //инициалаизация буфера приёма LDI XL, low(BuferStart) LDI XH, high(BuferStart) LDI MesageSize, 0
Напишем обработчик прерываний:
USART_RX_Complete: //приём окончен IN R16, UDR ST X+, R16 //запись в буфер приёма INC MesageSize //увеличение счётчика полученых байт CPI MesageSize, 2 //если получены не все байты BRNE USART_RX_Complete_End //завершить прерывание //иначе обработать посылку LD R16, -X //берем из ОЗУ младший байт NOP CLC //сброс флага переноса CLH //сброс флага половинного переноса CLZ SUBI R16, 48 //Вычитаем код нуля, получаем количество единиц LD R17, -X // берем из ОЗУ старший байт NOP SUBI R17, 48 //Вычитаем код нуля, получаем количество десятков LDI PulsMesureSet, 10 //узнаем сколько десятков MUL PulsMesureSet, R17 //получили десятки MOVW PulsMesureSet, R0 //забрали младший байт результата ADD PulsMesureSet, R16 //всё, посылка принята.//переинициализируем буфер приёма LDI XL, low(BuferStart) LDI XH, high(BuferStart) LDI MesageSize, 0 USART_RX_Complete_End: RETI
Не забудьте закоментировать инициализацию АЦП, чтобы он не совал в PulsMesureSet свои значения.
Прошивку заливаем в контроллер, запускаем терминальную программу, указываем используемый порт и скорость передачи (9600), отправляем строку со значением в рабочих пределах(28-62) – смотрим, на реакцию сервомашинки.Этап 5.
Виртуальная крутилка для реальной вращалки.
Терминал это конечно удобно, но хочется еще удобней. Задействуем LabView. Чтобы не дублировать информацию я настоятельно рекомендую ознакомится с вот этой статьей. Из неё вы получите некоторые базовые приёмы работы, узнаете как установить программу VISA, и использовать СОM порт.
Цель нашей программы следующая: вслед за вращением органа управления (объект Dial) должен поворачиваться вал сервомашинки.
Как помнится, контроллер умеет принимать и преобразовывать строку из двух символов, которая приходит из ком порта. Значит наша программка должна слать в COM порт новое значение как только оно появится на выходе крутилки-Knob.
Создаем новый пустой виртуальный прибор. В окно рабочей панели добавляем объект Dial.(На панели Controls ->Modern -> Numeric ->Dial).
Его нужно настроить, так чтобы он выдавал значения нашего рабочего диапазона с шагом 1, да и размерчик сделаем покрупнее. Для этого кликнем правой кнопкой мыши на объекте — появилось контекстное меню. Жмем самый нижний пункт — Properies. Настраиваем диапазон работы в закладках так как показано на рисунке.
Чтобы увеличить размер объекта наедите на него мышь — появятся синие маркеры. За них можно растащить морду этому вернеру как душа пожелает.
Добавьте на рабочую панель объект StringIndicator. Modern -> String&Pass -> StringIndicator. Он нам понадобится для просмотра промежуточного результата работы программы.
У меня получилась такая вот морда прибора (откуда взялась кнопка Стоп, и селекторы порта объясню чуть ниже.)
Теперь пришло время нарисовать программу. В главном меню LabView жмем пункт Window -> Show Block Diagram.
В рабочем пространстве алгоритма уже есть наши Dial и StringIndicator.
Сначала сделаем программную обвязку для Dial. Она должна обеспечивать выдачу в главный цикл только НОВЫХ значений длинны импульса. Иначе программа будет непрерывно передавать контроллеру одно и тоже значение, отвлекая его на прерывания из которых он ничего нового для себя не узнает. Посмотрите что должно получится, ниже я опишу что это, и как его построить.
Вначале рисуем рамочку структуры WhileLoop [1] (Панель функций ->Programming->Stuctures->WhileLoop). Всё что находится внутри этой рамочки будет циклически повторятся до тех пор пока в объект LoopCondition [9] не получит на свой вход булевое значение «True». (можно указать на что он среагирует правда/ложь вызвав его контекстное и указать вариант Stop If True / Continue If True).
Чтобы можно было остановить данный цикл (а потом и всю программу) создадим кнопку стоп, тут же в окне редактирования алгоритма: контекстное меню на LoopCondition [9] -> CreateControl. Появившуюся кнопку оттащим влево, и временно разорвем её связь: щелчок на проводе и клавиша Delete.
Внесем наш вернер (Dial) [2] в цикл. Добавим и разместим следующие объекты:
Компаратор «Не равно» [3]. Выдает True когда входящие операнды не равны друг другу. Programming->Comparison->NotEqual.
Рамочку структуры CaseStructure [4]. Выполняет тот или иной кусок кода в зависимости от варианта пришедшего на вход с зелёным знаком вопроса. В простейшем случае вариантов всего 2 — True u Fasle. Programming->Stuctures->CaseStructures
Булевое «ИЛИ» [8]. Если получает на один из своих входов True, то и на выход выдаст True. Programming->Boolean->Or.
Теперь будем постепенно связывать всё хозяйство:
1)Соединяем Dial [2] и один из входов компаратора [3].
2)Результат работы компаратора направим в CaseSelector нашей CaseStructure [4]
3)Подадим значение Dial на вход Case структуры. Тянем проводочек к краю рамочки и жмем кнопку мыши. Получившийся квадратик — это туннель. Он пропускает сквозь себя данные в конце каждой итерации программы находящейся внутри рамки.
4)Опишем случай True. Установим нужное состояние case-структуры при помощи стрелочек < > в заглавии рамки. Протянем проводочки от входного туннеля и создадим два исходящих.
Верхний туннель соединим проводочком с рамкой цикла [1]. Получился туннель, но нам нужен сдвиговый регистр. Вызываем контекстное меню на туннеле и выбираем Replase With Shift Register. Получился сдвиговый регистр [7]. Он будет сохранять в себя результат текущей итерации и передавать его на вход следующей. Теперь можно подать второй операнд на вход компаратора [3] из сдвигового регистра. Нижний туннель просто соединяем с рамкой цикла 1.
5)Вариант False изображен нижнем рисунке — полный алгоритм. Как видите, нижний выходной туннель не подключен. Чтобы программа корректно работала, следует вызвать на нём контекстное меню и дать команду «Use Defult If Unwired».
6)Теперь соединим кнопку Стоп, компаратор и элемент ИЛИ [8], результат подадим на LoopCondition [9].
7)Выведем проводок от кнопки Стоп из цикла через туннель.
Далее следует описать главный цикл программы.
Обрамляем всё ранее созданное художество циклом WhileLoop. Подсоединяем LoopCondition внешнего цикла к кнопке Стоп через ранее созданный туннель.
Как правильно добавить объекты для работы с ком портом описано сдесь. Но нам нужно не принимать, а передавать байты, поэтому вместо блока Read используем блок Write. Instrument I/O->VISA->Visa Advanced->BusSpecific->Serial->Visa Write.
Этот блок питается стрингами, то есть строками. Поэтому добавляем объект Number To Decimal String. Он получает на вход число, а на выходе отдает последовательность ASCII кодов десятичных цифр. Programming->String->String/Number Convertion->Number To Decimal String.
Соединяем выходной туннель цикла [1] c преобразователем, а от него передаем строку передатчику и индикатору.
Всё. Построение алгоритма завершено!
Перейдите на панель управления и разместите новые элементы: кнопку Стоп, поле выбора порта, и задания скорости обмена.
Как это работает?
Лучше всего и наглядней будет сделать так: в окне редактирования алгоритма нажмите кнопку с лампочкой. (Пятая в верхнем меню).
Теперь жмите кнопку со стрелкой «Run». Программа сама будет показывать в какой последовательности выполняются операции и каковы их промежуточные результаты.
Хочу отметить важный нюанс: блоки LabView выполняются только тогда когда получили на свои входы все необходимые данные.
Именно этой особенностью мы и пользуемся: если вернер не повернулся, его текущее (старое) значение не выпускается из итерации цикла, преобразователь Цифра/ASCII не получает нового задания, не выдает новой строки — передатчику нечем питаться посему он не передаёт. Но как только вернер изменил свое положение, цикл его опроса останавливается благодаря компаратору сравнишему новое и старое из сдвигового регистра, и новое значение летит в преобразователь, а от туда строка мчится в передатчик и в наш контроллер.
Схема уже собрана. Остаётся только указать в панели управления виртуального прибора задать номер порта и скорость.
Жмем на кнопку Run и смотрим на результаты наших трудов.
Архив с проектом AVR
Програмка в LabView
Очень многА букаФ получилось 🙁
Жду комментариев и замечаний.
Файлы в топике: Servo_Protech_150.JPG, RS232T.zip, Servo_Drive.zip
Компилятор Arduino для Labview
Home Edition Standard Edition
Arduino Совместимый компилятор для Labview Product of the Year Network Instrons Network !!
Компилятор Arduino для LabVIEW
Компилятор Arduino™ для LabVIEW – это продукт, основанный на LabVIEW (Laboratory Virtual Instrument Engineering Workbench) от National Instruments. LabVIEW — это графический язык программирования, в котором для создания приложений используются значки вместо строк текста.
Совместимый с Arduino TM компилятор для LabVIEW — это компилятор, который берет программу LabVIEW, компилирует и загружает ее в цели, совместимые с Arduino TM . Загруженный код будет выполняться как встроенный, так и автономный на целевом устройстве Arduino. Это очень уникальный и важный шаг по сравнению с существующими продуктами, которые обеспечивают только возможность использования функции LabVIEW в качестве простого пользовательского интерфейса для работающего скетча на плате Arduino TM .
Доступны две версии продукта. Домашняя версия предназначена для производителей, любителей и студентов, желающих использовать графическое программирование для простых автономных встраиваемых систем на недорогом Arduino 9.0023 Аппаратное обеспечение на базе TM . Это также отличный образовательный инструмент для обучения программированию встроенного программного обеспечения студентов начального уровня с использованием графического программирования без крутой кривой обучения языку программирования C++. Стандартная версия предназначена для профессионального использования и ориентирована на приложения для испытаний и измерений.
- Снижение затрат на оборудование — используйте недорогое оборудование Arduino™ для простых приложений LabVIEW
- Готово к использованию — ВП API и функциональные палитры для взаимодействия со многими платами Arduino™ Shield
- Чрезвычайно оптимизированный — алгоритмы оптимизации памяти встроены в компилятор
- Просто как 1-2-3 — выберите ВП, выберите целевой последовательный порт, затем скомпилируйте и загрузите
Присоединяйтесь к растущему сообществу пользователей на форуме поддержки продуктов. Загрузите руководство пользователя продукта и полнофункциональный продукт в ознакомительном режиме на семь дней.
Поддерживаемое оборудование
Любое оригинальное оборудование Arduino™ может быть целью этого компилятора Arduino для LabVIEW. Однако следующие платы были полностью протестированы с компилятором. Другие платы могут работать, хотя они официально не тестировались и не поддерживаются.
- Ардуино™ Уно
- Ардуино™ Мега
- Arduino™ Due
- Ардуино™ Нано
- Ардуино™ Юнь
- Arduino™ Леонардо
- Контролино
Характеристики продукта
- Поддерживаемые собственные типы данных LabVIEW включают массивы, строки, целые числа и числа с плавающей запятой, а также логические значения
- Более 100 поддерживаемых встроенных функций LabVIEW из палитр структур, массивов, числовых, логических, строковых, сравнительных и временных палитр
- API-интерфейсы LabVIEW для доступа к цифровому вводу-выводу Arduino™, ШИМ, аналоговым входам, тон-генератору и т. д.
- Встроенные алгоритмы оптимизации памяти
- Поддержка прерываний с использованием обратных вызовов в LabVIEW
- API VI для взаимодействия со многими Arduino TM
Системные требования
- LabVIEW 2014 или выше
- Одна из целей Arduino™, перечисленных в разделе «Поддерживаемое оборудование».
- Arduino™ IDE версии 1.5.7 или выше (бесплатно и с открытым исходным кодом)
Если вашему приложению требуется больше мощности, чем может обеспечить микроконтроллер Arduino, мы также работаем над парой аппаратных целей, на которых вы можете развернуть LabVIEW для запуска встроенных систем. TSX-REC4 и TSX-MULTIRT. Первый представляет собой четырехъядерный процессор ARM на базе Linux и включает 20 полностью реконфигурируемых каналов. Каждый из каналов может быть настроен через веб-приложение как аналоговый вход, аналоговый выход, цифровой вход, цифровой выход или даже аналоговый переключатель. Последний представляет собой двухъядерный процессор ARM под управлением Linux, который включает в себя два мощных микроконтроллера, использующих одну и ту же шину памяти с процессором ARM. Эта архитектура позволяет развертывать LabVIEW RT для встроенной работы с производительностью в реальном времени.
Получайте обновления прямо на свой почтовый ящик
Введите ниже свой адрес электронной почты, и мы будем получать новости и обновления о компиляторе, совместимом с Arduino™ для LabVIEW.
Эл. адрес *
Если вы пропустили NIWeek 2016, это видео со всем разделом, который мы дали под названием «Объединение возможностей LabVIEW и платформы Arduino».
Загрузите полнофункциональный продукт и используйте его в ознакомительном режиме в течение семи дней!
Комплект Arduino+LabVIEW — DEV-10812 — SparkFun Electronics
Этот продукт имеет ограничения на доставку, поэтому он может иметь ограниченные варианты доставки или не может быть отправлен в следующие страны:
Устарело DEV-10812 RoHS
Примечание: Снятый с производства продукт
Этот продукт был изъят из нашего каталога и больше не продается. Эта страница доступна для тех, кто ищет спецификации и просто любопытных.
Избранное Любимый 0
Список желаний
Пенсионер DEV-10812 RoHS
Примечание: Снятый с производства продукт
Этот продукт был изъят из нашего каталога и больше не продается. Эта страница доступна для тех, кто ищет спецификации и просто любопытных.
- Описание
- Функции
- Документы
Замена: DEV-11225. Новая версия этого комплекта поставляется в комплекте с новым Arduino Uno R3. Эта страница предназначена только для справки.
Вы когда-нибудь получали новый датчик от SparkFun и хотели бы быстро его протестировать? Возможно, вы хотите обработать эти данные больше, чем может предоставить Arduino. Представьте, что вы получаете эти данные на свой компьютер и получаете графический интерфейс (графический пользовательский интерфейс) для вашего датчика в течение нескольких минут после открытия этой маленькой красной коробки.
NI LabVIEW — это графическая среда программирования, используемая миллионами инженеров и ученых для разработки сложных систем измерения, тестирования и управления с использованием интуитивно понятных графических значков и проводников, напоминающих блок-схемы. С помощью NI LabVIEW Interface for Arduino Toolkit теперь вы можете использовать все преимущества графического программирования NI LabVIEW для своих проектов Arduino.
Набор инструментов LIFA (интерфейс LabVIEW для Arduino) можно загрузить бесплатно, что позволяет разработчику LabVIEW легко получать данные от популярного микроконтроллера Arduino.