Файл: Решение данных задач поможет в дальнейшем перейти к началу тестирования лабораторного образца сначала в лабораторных, а потом и реальных условиях, провести анализ ошибок,.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.10.2023

Просмотров: 122

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


end

end

3: begin

seep <= 3; she <= 1;

coune_3 <= coune_3 +1;

if ((coune_3 == 6000) && (seep == 3)) begin coune_3 <= 0; sep <= 4;

end

end

4 : begirj

seep <= 4; d <= 0;

coune_4 <= coune_4 +1;

if ((coune_4 == 6000) && (seep == 4)) begin coune_4 <= 0; sep <= 5;

Рис.4. Часть кода модуля общения с сенсором

Модуль приема данных синхронизирован с модулем общения с сенсором. Он получает данные по параллельной шине и, одновременно с этим, производит поиск центроиды по формуле центра масс. Расчет происходит с субпиксельной точностью. По завершению сбора данных с сенсора расчет центроиды уже готов с точностью 1/100 пикселя или 1/100тыс. от диапазона измерения по оси z.

assign proizv_2 = proizv_l * 100;

assign dv_end = (dv == 0) && (prev_dv == 1) ? 1

always @ (posedge elk) begin

prev_dv <= dv;

if (dv == 1) begin cen_busy <= 1; if (en == 1) begin

pix_cnt <= pix_cnt +1; if (data_pix. > porog) begin

proizv_l <= data_pix * pix_cnt * 100 chislitel <= chislitel + proizv_l;

znamenatel <= znamenatel + data_pix;

end

end

enc|


if (dv_end == 1) begin ready <= 1;

delen <= chislitel/znamenatel;

end

if (ready == 1) begin centr <= delen; cen_ready <= 1; cen_busy <= 0; ready <= 0;

end

if (cen_ready == 1) begin proizv_l <= 0; chislitel <= 0; znamenatel <=0; cen_ready <= 0; pix_cnt <= 0; ready <= 0;

end

end endmodule

Рис.5. Часть кода модуля приема данных

Модуль общения с микроконтроллером и модуль передачи данных содержат протокол обмена по параллельной восьмибитной шине с сигналами начала передачи данных и тактированием. Данные модули могут осуществлять передачу данных в обе стороны, осуществлять настройки модулей плис и производить передачу данных из плис на микроконтроллер.

//////////// передаем 3 байта центроидь: if (pixorcenrt == 1) begin

if (front_centr_ready) begin start_cnt <= 1;

end

if (start_cnt == 1) begin count <= count +1;

enc|

if (count == 1 && start_cnt == 1) begin data_reg <= data_3; clk_stm <= 1;

end

if (count == 1000 && start_cnt == 1) begin clk_stm <= 0;

end

if (count == 2000 && start_cnt ==

1) begin data_reg <= data_2; clk_stm <= 1;

end

if (count == 3000 && start_cnt == 1) begin clk_stm <= 0;

end

if (count == 4000 && start_cnt == 1) begin data_reg <= data_l; clk_stm <= 1;

end

if (count == 5000 && start_cnt == 1) begin clk_stm <= 0; kadr_end <= 1;

end

if (count == 6000 && start_cnt == 1) begin kadr_end <= 0; start_cnt <= 0; count <= 0;

end

end

end

endmodule

Рис.6. Часть кода модуля общения с микроконтроллером

always @ (posedge elk) begin

prev_centr_ready <= centr_ready; prev_clk_stm <= clk_stm; prev_dv <= dv_stm; prev_dv_pix_f <= dv_pix_f;

//////////// передаем пиксели ///////// if (pixorcenrt == 0) begin if (dv_pix_f == 1) begin clk_stm <= adc_clk_f; if (pix_ready_f) begin

data_reg <= d_pix[9:2];

end

end

if (nfront_dv_pix_f == 1) begin kadr_end <= 1;

end

if (kadr_end == 1) begin

kadr_end_cnt <= kadr_end_cnt +1;

end

if (kadr_end_cnt == 10000) begin kadr_end_cnt <= 0; kadr_end <= 0;

end

end

//////////////////////////////////////////// //////////// передаем 3 байта центроиды

if (pixorcenrt == 1) begin

if
(front_centr_ready) begin start_cnt <= 1;

end

if (start_cnt == 1) begin count <= count +1;

end

if (count == 1 && start_cnt == 1) begin data_reg <= data_3; clk_stm <= 1;

end

if (count == 1000 && start_cnt == 1) begin clk_stm <= 0;

end

if (count == 2000 && start_cnt == 1) begin data_reg <= data_2; elk stm <= 1;

Рис.7. Часть кода модуля передачи данных

Разработка лабораторного образца интеллектуальной системы технического зрения для автономных необитаемых подводных аппаратов.


В первой части НИР были разработаны схемы и спроектированы платы для системы. На втором этапе были закуплены комплектующие и собраны платы.

Для предварительной работы системы была собрана плата на основе микроконтроллера STM32F407VET6, двух быстрых ацп, в схему были добавлены несколько интерфейсов для передачи данных, такие как, USB FS, RS-485 и 100 М Ethernet.



Рис.8. Основная плата (прототип)



Рис.9. Основная плата (прототип)

На данной схеме успешно были получены и обработаны данные с сенсора, алгоритмы показали свою работоспособность и высокую точность, однако данный контроллер не способен обеспечить высокую скорость работы. Поэтому были заказаны отдельные платы с плис и микроконтроллером. Под них была разработана особая плата для работы с сенсором, которая включает в себя быстрый ацп, преобразователь уровней (логика сенсора 5 вольт, у плис до 3.3 вольт) и операционного усилителя, для тонкой настройки сигнала с сенсора. Передача данных с платы сенсора осуществляется по 10 битной шине на максимальной частоте 40 МГц. Плата является универсальной и может работать с любыми микроконтроллерами и микросхемами плис, если позволяет мощность и количество пинов.



Рис.10. Плата сенсора Рис.11. Плата сенсора


Основная плата включает в себя микросхему памяти и микросхему плис фирмы Intel (ALTERA) Cyclone II EP2C5T144C8N. Вспомогательная плата содержит микроконтроллер STM32F103C8T6.



Рис.12. Основная плата с микросхемой плис

Также система содержит плату управления шаговым двигателем, плату управления бесколлекторным двигателем, плату с фотодатчиком для получения данных об оборотах БК мотора и плату драйвера шагового двигателя.



Рис.13. Вспомогательные модули (драйвер лазера, драйвер шагового двигателя, шлейф для подключения сенсора)

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



Рис.14. Внешний вид механики сканера



Рис.15. Внешний вид механики сканера

Разработка процедур калибровки.


Принцип работы устройства заключается в совмещении лазерного триангуляционного дальномера и системы чпу. Чпу работает по четко заданным координатам и направляет лазерный луч на поверхность исследуемого объекта. Получается, что координаты х и у система задает сама и она их знает, а координату z получает исходя из замеров триангуляционного датчика. Процесс калибровки датчика расстояния заключается в вписывании в калибровочную таблицу четко заданных расстояний, измеренных на стенде.