Файл: Решение данных задач поможет в дальнейшем перейти к началу тестирования лабораторного образца сначала в лабораторных, а потом и реальных условиях, провести анализ ошибок,.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.10.2023
Просмотров: 132
Скачиваний: 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 получает исходя из замеров триангуляционного датчика. Процесс калибровки датчика расстояния заключается в вписывании в калибровочную таблицу четко заданных расстояний, измеренных на стенде.