domingo, 26 de fevereiro de 2017

Robôs low cost#2 - controlo da velocidade

É possível controlar a velocidade do pequeno carrinho que montámos através do driver L298N que controla os motores. Para isso, há que recorrer aos pinos Ativa MA e Ativa MB ligando-os a uma saída PWM do arduino.

A Alexandra e o Jorge tinham já trabalhado com saídas PWM em S4A, pelo que o conceito não era novo para os alunos. Uma semana antes, enviei-lhes por email um post do blog Vida de Silício que descreve de forma clara o controlo de velocidade através do L298N e que deviam estudar em casa.

Ao fazer os primeiros testes com o carrinho, sem controlo de velocidade, foram mantidos os jumpers nos pinos Ativa MA e Ativa MB:

http://blog.vidadesilicio.com.br/arduino/ponte-h-l298n-controle-velocidade-motor/
Com os jumpers conectados, os pinos Ativa MA e Ativa MB estarão a 5V e o carrinho estará, de acordo com a programação, ou parado, ou em andamento com velocidade máxima. Ao ligar esses pinos a uma saída PWM do arduino, o intervalo de tempo em que a saída estará a 5V dependerá do valor indicado na programação através do comando analogWrite().
A sintaxe desse comando é analogWrite(pin, value), sendo pin o número da saída digital PWM do arduino (os indicados com um ~, saídas digitais 3, 5, 6, 9, 10 e 11, para um arduino UNO) e value um valor entre 255 (sempre a 5V) e 0 (sempre a 0V) - valores intermédios correspondem a ondas quadradas cujo tempo em que permanecem a 5V está entre 0% e 100% do período da onda:
https://www.arduino.cc/en/Tutorial/PWM

Embora o arduino não tenha saídas analógicas, as saídas PWM permitem realizar essa função, uma vez que o valor médio da tensão de uma onda quadrada depende do valor do duty cycle.
Na sessão anterior, as experiências foram feitas com a alimentação do arduino feita ainda por cabo, ligando-o ao computador. Para libertar o carrinho do computador, os motores continuaram ligados a uma pilha de 9V e foi reciclada uma bateria de um brinquedo velho para alimentar o arduino:

Durante a sessão do clube, o Jorge e a Alexandra modificaram as ligações realizadas anteriormente e assim: 
 - IN1, IN2, IN3 e IN4 ligadas respetivamente às saídas digitais 2, 4, 6, 7
 - ENA e ENB ligadas respetivamente às saídas PWM: 3, 5

O aspeto atual do carrinho é este:



Um possível programa de teste para controlo da velocidade dos motores...


...e um vídeo de demonstração do carrinho em movimento.



Termino referindo que este post foi concebido já depois da Alexandra e do Jorge terem feito a sua exploração do controlo de velocidade através do driver dos motores. A estratégia foi enviar uma semana antes o link sobre o controlo da velocidade dos motores e deixar os alunos a trabalhar de forma autónoma durante 90 minutos. O meu trabalho foi mesmo só fazer o pequeno vídeo no final da sessão. Muito bem, meninos!

sábado, 18 de fevereiro de 2017

Mais importante que ganhar, é ousar tentar!

O nosso clube surgiu há três anos, quando "tomámos de assalto"a aula de informática do 8º ano vocacional (obrigada à professora Filipa Araújo!) usando como material arduinos emprestado pela ANPRI (um obrigada à ANPRI, também!).

Desde então, com recurso a financiamento do Ministério da Educação, a doação de equipamentos por parte de entidades externas à escola, à participação em concursos, temos conseguido um espólio próprio já razoável que nos tem permitido trabalhar com um número considerável de alunos.

No ano passado, conseguimos manter com regularidade, desde janeiro, dois espaços de aprendizagem na nossa escola: O Espaço LEGO (programação de robôs EV3, dedicado a alunos do 7º ano de escolaridade) e o Espaço Programação e Eletrónica (programação de arduinos com S4A, dedicado a alunos do 10º ano de escolaridade).

Este ano, temos dois espaços diferentes, de 90 minutos cada, a que demos o nome Oficina de Programação e Projectos com Arduino (para alunos de 10º ano) e  Projetos de Electrónica e Programação (para aluno do 11º e 12º ano).

O primeiro espaço pretendia ser semelhante ao criado o ano passado para exploração de programação de arduinos com S4A...mas estas coisas raramente correm como o planeado! O grupo é este ano maior, mais heterogéneo, e alguns alunos já se juntaram ao clube com alguns objetivos definidos. O ano iniciou com aulas de programação de arduino em S4A, que foram interrompidas por vários alunos quando surgiu a oportunidade de concorrer ao desafio Astro Pi  - passando esses alunos a utilizar o espaço do clube para desenvolver trabalho em Python e usando os raspebrry pi disponíveis. Já falei deste projeto em post anterior.


Entretanto, os alunos que não se quiseram envolver no desafio Astro Pi, continuaram a explorar a programação de arduinos. Depois de concluídas as sessões que eu tinha previsto para desenvolvimento de trabalho em S4A, tomei conhecimento de um desafio organizado pelo Instituto Politécnico de Setúbal, o ONControl, para o qual esses alunos se mostraram motivados a concorrer. Achei uma boa altura para passar da linguagem gráfica para C e é neste âmbito que está a ser montado e programado o robô low cost, trabalho que pretendo documentar ao longo deste ano letivo.


Já no espaço Projetos de Electrónica e Programação, para além da prática de soldadura de circuitos impressos adquirida através da montagem de um Bot'n Roll A, e respetiva programação, apostámos na participação no concurso Can Sat Portugal 2017.


O projeto CanSat tem sido um desafio enorme e pretendo escrever um pouco sobre o caminho percorrido durante este ano. Para já, a referir que a nossa equipa, a D. João Can, foi selecionada para participar na final nacional na ilha de Santa Maria, nos Açores!

E que tem o título deste post a ver com a enumeração dos desafios fora da escola a que nos propusemos? Bem, o título é na verdade uma espécie de máxima pessoal que repito muitas vezes para mim própria quando me meto nestas andanças.

Quando propomos aos nossos alunos um desafio promovido por uma entidade exterior à escola estamos a dar-lhes horizontes, estamos a aumentar as suas expectativas, estamos a desenvolver nas equipas que concorrem competências que não conseguimos desenvolver devidamente nas aulas convencionais (como a capacidade de realizar um trabalho sem guião, de resolver problemas, gestão de trabalho em equipa, organização de um desafio complexo...), e também a consolidar temas científicos através da reflexão e cruzamento de dados.

Ainda assim, e apesar de todas vantagens, estamos, alunos e professores, a sair da nossa zona de conforto, estamos a expor a nossas fraquezas, estamos a ganhar muito trabalho extra por vezes sem muito retorno evidente...e por isso repito para mim própria a importância do "ousar tentar". Não imponho a mim própria (nem às equipas que acompanho) a necessidade de ganhar. Temos de ser humildes o suficiente para perceber o quanto temos de aprender e de reconhecer que é muito provável que haja quem saiba mais que nós - e por isso, dar o nosso melhor não implica ser o melhor. Mas dar o nosso melhor, "ousar tentar", é já imenso. Dar o nosso melhor implica querer saber, procurar soluções, pedir ajuda, apoiar a equipa - aprender para a vida, portanto. E é já tanto, que merece bem o esforço e a possibilidade de falhar.

O nosso melhor é tudo o que nos pode (e deve) ser pedido. E, nesse espírito, os desafios a que concorremos a nível regional, nacional ou até europeu são de uma enorme riqueza. Votos de bom trabalho para todas as equipas envolvidas no clube deste ano!





quinta-feira, 16 de fevereiro de 2017

Robôs low cost#1 - uma experiência

Há já algum tempo atrás, comprei um pequeno carrinho por menos de 20€ no Aliexpress e tinha desde então curiosidade em experimentá-lo, mas outras tarefas mais prementes se impunham e o tempo foi passando...até que este ano, em ambiente de clube, o Jorge e a Alexandra, depois de explorar a programação de arduinos em linguagem gráfica, decidiram assumir eles a missão de por o carrinho a funcionar.

O equipamento de maior relevo que podemos encontrar neste kit é: o chassis; 2 rodas; 2 motores DC; caixa de bateria para 4 pilhas; interruptor bipolar simples; 1 sensor shield V5.0 para arduino; 1 arduino UNO R3; 1 servo motor SG90; 1 suporte FPV; 1 driver L298N; 1 sensor de ultra sons HC_SR04. Todo o kit está ilustrado nas imagens seguintes:

O kit completo
 Em termos de literatura de apoio, o kit inclui as instruções de montagem do chassis...e é tudo!

Por isso, a parte fácil é mesmo chegar até aqui:

Chassis do carrinho já montado


Daqui em diante...nada encaixa com nada!!!

A primeira missão foi estudar o driver, montá-lo, ligá-lo ao arduino e programar o arduino de forma a colocar o carrinho a descrever um movimento pré-estabelecido.

O driver L298N, que faz o circuito de potência para controlar os motores, vem inserido numa placa para arduino muito fácil de compreender. É possível encontrar bons tutoriais sobre o funcionamento desta placa. Em termos de pinagem, a imagem seguinte é clara:

http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html

Os conetores Motor A e Motor B devem ser ligados a cada um dos motores do carrinho.
Os pinos AtivaMA e Ativa MB são os pinos responsáveis pelo controlo PWM dos motores A e B, isto é, que permitirão a variação da sua velocidade. Trataremos dessa questão em post posterior. Por defeito, nestes pinos estão dois jumpers que manterão estes pinos a 5V, mantendo a velocidade constante.
O driver disponibiliza um regulador de tensão integrado. Caso estejamos a alimentar o driver no pino 6-35V, e se mantivermos o jumper no pino Ativa 5V, o regulador de tensão disponibiliza uma tensão regulada de 5V no pino 5V. Esta informação é importante porque, neste caso, o pino 5V deve ser usado como um saída (para alimentar outro dispositivo, por exemplo), mas nunca deve ser ligado à saída 5V do arduino, o que o poderia danificar. Se estivermos a controlar motores de 4-5,5V, há que retirar o jumper e ligar um alimentação de 5V ao pino 5V.
O barramento IN1, IN2, IN3 e IN4 é responsável pela rotação de cada um dos motores (IN1 e IN2 - motor A; IN3 e IN4 - motorB).

A forma como o motor A é controlado, que é idêntica à forma de controlo do motor B, é a seguinte:

http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html
Portanto...estamos prontos para a primeira experiência...antes de mais, houve que arrumar o material no chassis. Começámos por usar para o driver dos motores uma bateria reciclada de um carrinho de brincar velho e uma pilha de 9V para o arduino, mas a bateria revelou ter uma duração muito pequena, pelo que, nesta fase, alimentámos o driver com a pilha de 9V e mantivemos o arduino ligado por cabo ao computador. As entradas IN1, IN2, IN3 e IN4 foram ligadas, respetivamente, às saídas digitais 4, 5, 6 e 7 do arduino. As placas e a pilha de 9V foram fixadas com fita adesiva de dupla face. Eis o aspeto final:

Deixamos o programa que fizemos para testar o que aprendemos sobre o driver dos motores...

...um pequeno vídeo com o carrinho em funcionamento...


...e ainda um pequeno registo fotográfico do trabalho realizado pelo grupo:



Nota final: como se pode observar no vídeo, a velocidade do carrinho é sempre constante. O controlo da velocidade através do driver dos motores será explorado em post posterior.