Veículo Autónomo com CMUCAM




LABSI

2019


Autores:


Diogo Paupério - 1151615

1151615@isep.ipp.pt


Pedro Apura - 1161089

1161089@isep.ipp.pt


Introdução

Arquitetura

Hardware

Software

Resultados

Conclusões

Referências

Estado de Arte






  • Introdução

Início



No ambito da unidade curricular de LABSI, propusemos a criação de um agv seguidor de linha que detetasse objetos através da cor.

Ao ligar o AGV este deve seguir uma linha preta definida pelos responsáveis da disciplina.

O controlo dos motores do AGV serão feitos através da interface do atmega328p com o modulo L293D, por efeito de dois sinais PWM um para cada motor.

Utilizando o modulo PIXYCAM5 para a deteção do objeto de cor e para relatar a posição do objeto de volta para o atmega328p através de uma interface spi.

Por fim quando o objeto se encontrar no centro, ativa-se um atuador(laser).

Objetivos do projeto:

• Interface atmega328p com L293D;

• Interface sensores IR com atmega328p;

• Comunicação via Bluetooth;

• Controlo dos motores DC;

• Interface SPI entre o atmega328p e a PIXYCAM;

• Gerar sinais PWM para cada um dos motores DC e servo motores;

  • Arquitetura

Início


Sistema Atmega328p + L293D + Sensores IR + Motores DC + Servo Motores + PIXYCAM





Figura 1-Sistema Atmega328p + L293D + Sensores IR + Bluetooth HC-06 + Motores DC + Servo Motores + PIXYCAM :





Atmega 328p: Microcontrolador que permite processar a informação que recebe, de modo a gerar um output, que neste subsistema corresponde à variação da velocidade dos motores DC e posição dos servos.

Motores DC: Motor elétrico de corrente contínua, que transforma energia elétrica em mecânica.

L293D: Driver que permite o controlo de motores através da ponte H.

Sensores IR: Sensores de infravermelhos composto por um emissor e um recetor.

PIXYCAM: Uma câmara com um microcontrolador integrado, com o propósito de ser utilizada na investigaçaõ robótica.

Sero Motores: Um motor no qual podemos controlar a sua posição angular atravé de um sinal pwm.


Subsistema Motores DC





Figura 2- Subsistema Motores DC:





AtMega328P: Ao receber os dados dos sensores, o microcontrolador vai comparar o valor de referência com o valor obtido. De seguida irá gerar dois sinais PWM para o L239D. Provocando ou não uma alteração na velocidade dos motores, e uma possível inversão de rotação dos mesmos.

Controlo dos motores: Permite aumentar ou diminuir a velocidade dos motores.


Subsistema Sensores IR





Figura 3- Subsistema Sensores IR:





AtMega328p: Ao receber os valores analógicos dos sensores, o microcontrolador vai tomar medidas conforme os seus valores.

Controlo Sensores IR: Permite receber os valores de tensão e convertê-los para analógico.


Subsistema L293D





Figura 4- Subsistema L293D:





AtMega328p: O microcontrolador vai gerar dois sinais PWM para o L239D, como também o sentido de rotação dos motores, resultante da ponte H do circuito integrado.

Controlo do L293D: Permite aumentar ou diminuir a velocidade dos motores, e inverter o sentido de rotação.


Subsistema PIXYCAM





Figura 5- Subsistema PIXYCAM:





AtMega328p: O microcontrolador vai recolher os valores de posição da PIXYCAM, através da interface SPI.

Controlo da PIXYCAM: Permite recolher os valores de posição X e Y para o microcontrolador.


Subsistema Servo Motores





Figura 6- Subsistema Servo Motores:





AtMega328p: O microcontrolador vai gerar dois sinais PWM para cada um dos servo motores, de modo a indicar a posição X e Y.

Controlo dos servo motores: Permite controlar a posição dos servos.


Sistema Módulo Bluetooth HC-06 + AtMega324P + PC





Figura 7- Sistema AtMega328p + Módulo Bluetooth HC-06 + PC:





AtMega328P: Executa o programa normalmente à medida que envia valores para debugging, diretamente para o módulo Bluetooth.

Módulo Bluetooth HC-06: Ao receber os valores do microcontrolador, estes vão ser enviados para o PC através do módulo Bluetooth. De modo a conseguir realizar um debugging mais eficiente e mais prático.

PC: Recebe os dados do microcontrolador e apresenta-os numa aplicação.





Figura 8- Aplicação debugging:







  • Hardware

Início



Descrição do Hardware:

ATMega 328P [1]

- Pinos: 28;
- Memória de Programa (Flash): 32Kbyte;
- Memória de Dados (RAM): 2 Kbyte;
- Memória EEPROM: 1 Kbyte;
- Velocidade de Operação: até 20MHz;
- 33 portas de entrada/saída;
- 8 canais analógicos com 10 bits cada;
- Tensão de Operação: de 1,8V à 5,5V;
- 2 Módulos CCP (Capture/Compare/PWM);
- 3 Timers: 2 de 8 bits e 1 de 16bits;
- Comunicação Serial (USART, SPI, I2C)













Figura 9- ATMega328P









Sensor IR (TCRT5000) [2]

- Tensão da operação: 3V a 5,5V;
- Faixa de medição: 0,2mm a 15mm;
- Distância máxima: 25mm;
- Pinos: 4;











Figura 10- Sensor IR (TCRT50000)









Motor DC 130 [3]

- Tensão de operação: 3 a 9V;
- Corrente de operação: 0,35 a 0,5A











Figura 11- Motor DC 130









Módulo Bluetooth HC-06 [4]

- Distância Maxima de Comunicação: 10m;
- Conexão de UART de 2 pinos (Tx e Rx)
- Tensão da operação: 3.3V a 5V;
- Perfis Suportados: Slave;













Figura 12- Módulo Bluetooth HC-06









Servo Motor [5]

- Tensão de operação: 3 a 7,2V;
- Ângulo de rotação: 180º













Figura 13- Servo Motor










Pixycam [6]

- Processador: NXP LPC4330, 204 MHz, dual core;
- Sensor de imagem: Aptina MT9M114, 1296×976;
- Campo de visão da lente: 60 graus na horizontal, 40 vertical
- Consumo de corrente: 140 mA
- RAM: 264K bytes
- Flash: 2M bytes
- Tipos de outputs: UART serial, SPI, I2C, USB, digital, analogico













Figura 14- Pixycam [8]







Tattu [7]

- Capacidade:1550mAh;
- Tensão: 11,1V;
- Taxa C: 75C;
- Categoria: Li-Po;













Figura 14- Bateria







Esquemas Elétricos





Figura 15- Esquema Elétrico






Placa PCB












Figura 16- Placa PCB (top)















Figura 17- Placa PCB (top e bottom sem ground)















Figura 18- Placa PCB (top e bottom)




  • Software

Início


Funcionamento


PWM[1]:

    - A modulação PWM é utilizada neste projeto de modo a influenciar vários fatores deste projeto, sendo que se utilizou todos os Timers disponíveis para o nosso projeto funcionar.

    - Utiilizou-se o Timer0 para alterar a velocidade dos motores. Ao conectar cada um dos pinos (PD5 e PD6) de saída deste timer com valores de comparação (OCR) diferentes a cada um dos enables da ponte H (L293D) conseguiu-se ter uma velocidade diferente para cada um dos motores, que é necessário para o tipo de controlo implementado (PID);



Figura 19- TIMER1 e TIMER2





    - O Timer1 e TImer2 tiveram a mesma funcionalidade, sendo que foram ambos utilizados para a interface spi contribuindo cada um com um pino (PB1 e PB2), os restantes dois pinos (PB1 e PD3) foram utilizados para controlar a posição de cada um dos servos (X e Y, respectivamente).

    - A frequência final dos timers 1 e 2 é idêntica (50hz), sendo que para o timer 1 (eixo X) configurou-se com o pwm não invertido, prescaler igual a 64 e modo 14 (fastpwm), dando ao ICR1 o valor de 4999. Para o timer 2 configurou-se como pwm não invertido, prescaler igual a 128 e modo 3 (fastpwm).



Figura 20- TIMER1 e TIMER2






SPI [8]:

    - De modo a fazer a interface SPI com a PIXYCCAM utilizamos uma biblioteca disponível no github[8]. Conectamos os pinos PB2, PB3, PB4 e PB5 na pixy de modo a fazer a interface com o atmega328p. Sendo que os valores recebidos são utilizados para alterar os valores OCR1A e OCR2B de modo a centralizar o objeto detetado.


PID[9]:

    - Para o PID utilizamos um sistema de "pesos" sendo que cada sensor tem um determinado valor para o cálculo do ajuste dos motores[Figura 22]. De modo a configurar o PID utilizamos os valores seguintes: para o ganho proporcional foi utilizado o valor de 2, mas para que tenhamos em conta o overshoot, é necessário a implementação do ganho derivativo, este é aproximadamente 20 vezes maior ao ganho proporcional, e ainda o ganho integral é aproximadamente 0 (0,002) de maneira a dar uma melhor estabilidade ao sistema.


Figura 21- Cálculo PID






Figura 22- Atribuição de ajuste






Bluetooth[10]:

    - De modo a efetuar a conecção Bluetooth entre o PC e o atmega utilizamos uma biblioteca[9] que faz a inicialização da ligação, para a receção de dados utilizamos, como descrito anteriormente, a aplicação Serial Debug Assistant.




FLuxogramas:





Figura 23- Fluxograma do Sistema




  • Resultados

Início


Durante a realização do projeto, ocorreram vários problemas, o primeiro deve-se à calibração com base no controlo digital PID, cuja mesma ainda não está totalmente finalizada.

Em relação aos sensores infravermelhos não existe nenhum problema a relatar, obtendo o funcionamento desejado. Na comunicação SPI é onde verificamos maior dificuldade, não conseguindo recolher a informação da câmara necessária para o controlo dos servos.

Não encontramos problemas na conexão Bluetooth utilizada para debugging.

Existem ainda alguns problemas relacionados com o hardware, devido ao sobreaquecimento de alguns dos componentes, em questão o driver do motor L293D, que continua, após a implementação de um dissipador, a aquecer ligeiramente, e ainda o regulador de tensão LM7805 que após um dissipador e um segundo regulador de tensão em módulo(também designado por Buck converter), obteve a maior descida de temperatura.

A implementação da placa pcb projetada seria uma melhoria no projeto, sendo que iria compactar o tamanho do circuito consideravelmente. A resolução das várias implementações acima descritas iriam proporcinar um melhor funcionamento do projeto em geral.





  • Conclusões

Início



Em geral esta unidade curricular permitiu a utilização de várias metodologias adquiridas ao longo do percurso da licenciatura, embora que não estivéssemos à espera da dificuldade a que nos propusemos inicialmente, encontrando mais problemas do que os esperados.

Este projeto ainda tem bastantes aspetos a melhorar, entre eles a calibração do PID, a interface SPI com a PIXYCAM e a diminuição do sobreaquecimento nos componentes que poderá ser mitigado com a implementação da placa pcb.

Para futuros interessados no presente projeto, recomendamos a PIXYCAM, embora a implementação em avr seja mais complicada, as funcionalidades que já trás de origem abrem a porta para muitos e variados projetos.


  • Referências

Início


[1] AtMega 328P:  https://www.sparkfun.com/datasheets/Components/SMD/ATMega328.pdf

Sensor IR:  https://pt.aliexpress.com/item/32798240743.html?spm=a2g0o.productlist.0.0.48cb5452w8FFNK&s=p&algo_pvid=56b4404b-28cd-49e4-aea6-5fefce210723&algo_expid=56b4404b-28cd-49e4-aea6-5fefce210723-2&btsid=a6e9d071-b14e-4a6d-8e8d-095783bfeaca&ws_ab_test=searchweb0_0,searchweb201602_5,searchweb201603_53

[3] Motor DC:  https://www.adafruit.com/product/711

[4] Módulo Bluetooth HC-06:  https://www.electrofun.pt/comunicacao/modulo-bluetooth-arduino-hc06#review

[5] Servo Motor:  https://www.electrofun.pt/robotica/servo-motor-mg90s

[6] Pixycam:  https://docs.pixycam.com/wiki/doku.php?id=wiki:v2:overview

[7] Bateria Tattu:  https://www.genstattu.com/tattu-1550mah-11-1v-75c-3s1p-lipo-battey-pack-with-xt60-plug.html

[8] Pixycam SPI interface:  https://github.com/rashintha/pixy-avrl

[9] PID:  https://moodle.isep.ipp.pt/pluginfile.php/278136/mod_resource/content/4/T10_Controlo_uC_RSB.pdf

[10] Bluetooth:  https://abratukhin.blogspot.com/2015/04/connect-atmega328-with-hc-05-zs-040.html


  • Estado de Arte

Início