quinta-feira, 23 de abril de 2015

O sensor de ultrassons SR04 e programação em S4A

O SR04 é dos sensores de ultrassons mais comuns para pequenos projetos. Permite a medida de distâncias entre 2 cm e 4 m com um ângulo de sensibilidade de 15º. A análise da respetiva datasheet, deixou-me bastante confiante e achei eu que planear um pequeno trabalho com este sensor, arduíno e S4A ia ser canja. Toda a gente sabe que a ignorância é muito atrevida...

Este sensor tem 4 pinos, dois para a alimentação (Vcc e GND), um para o trigger (o "disparo" de um sinal) e o restante para receber o som refletido (o eco).


O modo de funcionamento é simples: o envio de um impulso de 10 us (10^-6 s) para o pino do Trigger, resulta na emissão por parte do SR04 de um ciclo de 8 impulsos de ultrassons na gama dos 40 kHz. Nesse momento, o SR04 ativa o pino Echo para 5V que só voltará a 0V no momento em que receber o eco do sinal enviado. Eis o esquema temporal:



Sabendo que o som tem uma velocidade média de 340 m/s, é possível medir a distância que o som percorreu entre ter sido emitido e rececionado de novo. A distância ao obstáculo será metade desse valor.

Continhas, então: d(obstáculo) = d(percorrida pelo som)/2
                             d(obstáculo) = v(som)*tempo(echo)/2

Como vamos medir o tempo do impulso em us e a distância ao obstáculo em cm, há que converter a velocidade do som em cm/us: 340 m/s = 0,034 cm/us.

Assim, d(obstáculo) = 0,017*tempo(echo) ,  tempo(echo) medido em us; d(obstáculo) medido em cm.

Assim..o que poderia correr mal? Liguei o Trigger ao pin13, o Echo à entrada 2 e...nada!!! Por mais impulsos de 10 us que enviasse, não detetava nada na entrada 2. Uma pesquisa mais atenta relativamente à comunicação entre o arduino e o S4A revelou-me que o S4A interage com o arduino atualizando os estados dos atuadores e dos sensores a cada...75 ms! Valor impossível de conciliar com sinais de 10 us!

A solução passou por alterar o firmware que o arduino disponibiliza. Para isso tive a ajuda de um familiar próximo. A ideia foi alterar o mínimo possível o firmware original. Reservámos para o funcionamento do sensor os pinos D13 e A05. O pino D13 passou a funcionar como entrada e saída, o A05 devolve o valor da distância em cm.
Foi gerado um ciclo, que se repete de meio em meio segundo, em que o pino D13, inicialmente uma saída, envia um impulso de 10us. Passa então a ser definido como entrada e lê a duração do impulso do pino Echo. Este tempo é multiplicado pelo valor de 0,017, como explicado acima, e enviado para o pino A05.

O firmware realizado está disponível no seguinte endereço: http://densare.pt/files/zip/S4AFirmware16_SR04.zip

NOTA IMPORTANTE: O firmware disponibilizado só funciona corretamente com o sensor SR04 ligado à entrada 13. Sem o sensor devidamente ligado, o firmware fica à espera de um dado indefinidamente e em ambiente S4A a placa surge como não reconhecida.

Deixo então a minha proposta de trabalho para envolver o SR04 em circuitos programados através de Scratch...


...o circuito esquemático do último exercício proposto...




...e um pequeno vídeo com o circuito do sensor de proximidade em funcionamento:




Como nota final, não posso deixar de referir que levei o circuito do sensor montado para uma aula de Física e Química de 8º ano, onde os alunos estão  a dar o som. Foi interessante porque deu para exemplificar o facto de os ultrassons não serem audíveis, o fenómeno do eco, o funcionamento do sonar. Os alunos identificaram o circuito nas luzes de sinalização de lugar ocupado / livre do parque de estacionamento do centro comercial cá da terra. E pediram um workshop de arduino para o verão. E eu estou com vontade de lhes fazer a vontade...



quarta-feira, 22 de abril de 2015

Às compras

Já por aqui tinha referido que os kits de iniciação ao arduíno são de facto do melhor...para iniciar! À medida que os projetos surgem, torna-se evidente a necessidade de comprar outros componentes eletrónicos menos vulgares.
Por causa de um projeto que tenho em mente, tive de adquirir um sensor de ultrassons. Optei pelo HC-SR04 por ser bastante comum e haver já muitos projetos descritos na net que o envolvem. Quando comecei a pesquisar por preços, encontrei-o por mais de 12€ numa conhecida loja online portuguesa...e por menos de 1€ no Aliexpress! Dito isto, partilho aqui a experiência com a compra de componentes eletrónicos através desta plataforma eletrónica de compras.
Quando pesquisamos por um determinado componente no Aliexpress, é difícil não sermos atingidos por uma súbita febre consumista, dados os preços do material eletrónico aí praticados. Verdade que em muitos casos é exigido um número mínimo de componentes a comprar, mas nem sempre tal acontece e os valores são de tal maneira baixos relativamente ao que se pratica em sites nacionais que bem vale a pena mandar vir em quantidade.
Por uma questão de simplicidade, fiz todas as minhas compras numa única loja: http://pt.aliexpress.com/store/1171090

Comprei então:

  • 1 lote de 5 relés 5V-230V por 6,64€:

  • 1 lote de 5 conetores para ligar pilhas de 9V ao arduíno por 1,71€:
  • 1 lote de 5 servo motores SG90 por 7,41€:

  • 1 controlador para motores de passo por 1,76€:


  • 2 sensores de ultra sons HC-SR04 a 0,82€ cada:
  • 1 lote de 10 díodos laser vermelhos, 5V, por 3,66€:


Expedido com a minha compra, foi-me enviado, como oferta, um leitor de cartões micro SD para arduíno, cujo valor ronda os 4€:



O pagamento é feito por cartão de crédito à Aliexpress que estabelece um prazo de entrega máximo que depende de cada loja - o vulgar são 60 dias. Caso esse prazo seja ultrapassado, a Aliexpress devolve o dinheiro ao cliente.
Mesmo vindo da China a maior parte das compras não são sujeitas a custos de porte. O prazo de entrega ronda, no entanto, os 30 dias.
Os componentes eletrónicos não estão sujeitos a imposto alfandegário, mas caso a compra ultrapasse os 22€ (eu só soube disso depois - a  minha compra foi de 22,81€) poderá estar sujeita a pagamento de IVA na alfândega. Curiosamente, a encomenda foi expedida numa caixinha que vinha marcada como $6.
Depois de recebermos os produtos, confirmamos a receção no Aliexpress e podemos avaliar cada um dos itens e o serviço prestado pela loja com que lidámos.

Em resumo, em termos de preço, é indiscutível a vantagem de comprar em lojas chinesas online. Os baixos preços têm como contrapartida a ausência de apoio técnico e os tempos de entrega alargados (é possível reduzir estes prazos, mas isso tem um preço elevado). Por isso, se é para pensar num projeto para as férias de verão...há que começar a pensar no que comprar agora!


quinta-feira, 16 de abril de 2015

Aula 4 - Entradas analógicas

Esta é a última aula formal que pretendo dar aos alunos envolvidos neste projeto. A partir daqui, parece-me que já conhecem as potencialidades essenciais do arduino e que poderão começar a delinear os seus próprios projetos.
A ideia desta aula é explorar as entradas analógicas - temos 6 disponíveis (A0 a A5) - essenciais na utilização de muitos sensores, como de luminosidade, proximidade ou temperatura.
A noção de digital / analógico nem sempre é óbvia para os alunos da faixa etária com que estou a trabalhar. Na verdade, usando de novo o corpo humano como analogia, quase todos os nossos sensores e atuadores são analógicos, mas podemos encontrar exemplos como olhos fechados / abertos para dar a ideia de digital e a intensidade vocal como analógico.
Há depois que lhes apresentar vários componentes que podem ligar a entradas analógicas. Optei pela resistência variável, pela fotorresistência e pelo sensor de temperatura por serem os componentes  que tenho disponíveis para trabalhar com uma turma.
Na primeira montagem, a ideia é simplesmente apreender os valores limite que as entradas analógicas aceitam - 0V correspondem a um valor igual a 0; 5V ao valor 1023.
Voltei a usar 3 LED, ligados às saídas digitais 13, 12 e 11, como atuadores para testar o tipo de entradas estudadas na presente aula.

Deixo de seguida a presentação que explorarei nesta sessão...





...o circuito esquemático do último exercício proposto...




...e um pequeno vídeo com o exercício do "termómetro" em funcionamento.


sexta-feira, 3 de abril de 2015

Arduino...em casa!

Há certos momentos em que me sinto um bocado limitada. Corre por algumas esferas pensantes a ideia que um professor é uma espécie de enciclopédia, alguém que deve estar sempre preparado para em qualquer momento abrir a boca e debitar uma aula fantástica sobre um qualquer assunto da sua disciplina (e até fora dela). 

Pois que a minha experiência pessoal está longe disso. Quando comecei a dar aulas, diziam-me os professores mais experientes que "por cada hora em sala de aula, devem existir duas de trabalho a prepará-la". Parece que hoje o paradigma se alterou e o trabalho individual do professor tem merecido cada vez mais descrédito.

Serve esta introdução para confessar (estamos na Páscoa!) que trabalho de facto muito em casa. Não é um lamento - é simplesmente uma constatação. E, tendo filhos, estes acabam por coabitar muitas horas com o trabalho da mãe.

Foi por isso sem surpresa que ouvi a minha filha de 12 anos dizer que nas férias da Páscoa queria fazer o seu próprio projeto em arduino.

O projeto foi delineado por ela. Fez o boneco de um gato recorrendo a materiais cá de casa (ela gosta bastante deste tipo de trabalhos manuais) e decidiu o que queria que ele fizesse: que os olhos piscassem e que miasse quando lhe tocassem no nariz. Sugeri que acrescentasse um braço a dizer adeus, o que acatou.

A ideia inicial para o nariz do gato, foi um botão de pressão. Dada a fragilidade da estrutura, no entanto, optei por uma fotoresistência, o que foi uma escolha acertada. Ainda não tive oportunidade neste blog de explorar as entradas analógicas, mas fá-lo-ei em breve.

O circuito eletrónico e as ligações, fui eu que as fiz. Optei por não fazer soldaduras. Em vez disso, usei crocodilos e conetores para ligar os componentes e os fios.

Quanto à programação, e uma vez que a minha filha sabe os rudimentos de scratch, embora nunca tivesse trabalhado em ambiente S4A, adaptou-se com facilidade. A programação do servo motor foi feita deliberadamente sem variáveis para tornar a programação mais acessível.

O resultado parece-se um bocado com aqueles gatos que estão à porta dos chineses, para dar sorte, mas não deixa de nos roubar um sorriso!

Deixo um resumo do projeto desenvolvido...
 

...o esquema do circuito...


...e um pequeno vídeo com o projeto a funcionar.





quinta-feira, 26 de março de 2015

Controlando motores dc com Scratch

Esta também não foi uma aula testada com alunos, mas uma exploração do controlo de motores dc através de Scratch.

O motor dc (ou motor de corrente contínua) é  muito vulgar em equipamentos como impressoras, carrinhos de brinquedo a pilhas e outros brinquedos baratos, pelo que é extremamente fácil ter acesso a um.

O controlo deste motores é muito simples: ligam-se os cabos do motor a uma fonte de alimentação contínua (uma pilha, por exemplo) apropriada, de acordo com as caraterísticas do motor usado, e o motor começa a girar. Trocando a polarização da fonte, o motor girará em sentido contrário.

O controlo deste tipo de motor com arduino não é, no entanto, tão simples como seria de supor porque, por um lado, este motor exige mais corrente que aquela que o arduino consegue debitar e, por outro, os motores geram correntes de indução que podem danificar o circuito caso este não esteja devidamente preparado.

Para que a corrente elétrica seja suficiente, a ligação do motor deve ser feita recorrendo a uma fonte de alimentação externa (eu usei uma pilha vulgar de 9V).

E onde entra o controlo do motor? Através de um pequeno componente chamado FET (Field Effect Transistor), da família dos transístores e cuja função é permitir a passagem de corrente entre dois pinos quando um terceiro é ativado. O funcionamento de um transístor pode ser comparado ao de uma torneira de monocomando que, ao ser aberta, deixa passar a água sempre num único sentido. 

O controlo do FET foi feito usando uma das saídas analógicas disponíveis no S4A, o pino 9.

Na verdade, o arduino não tem saídas analógicas na verdadeira acepção da palavra. A saída é sempre 0V ou 5V. As saídas ditas analógicas são de facto saídas PWM, que enviam sinais pulsados de acordo com o valor analógico indicado (entre 0 e 255). A variação da frequência dos impulsos vai resultar em valores eficazes de tensão variáveis. No caso concreto, o motor só será alimentado pela pilha de 9V de acordo com os impulsos gerados no pino de controlo do FET.

Confusos? Experimentando tudo vai parecer mais simples. O díodo colocado aos extremos do motor impede a circulação em sentido contrário de correntes geradas pelo motor (o díodo, que é um componente polarizado, só deixa passar a corrente num sentido).

Para fazer a inversão do motor, usei o L293, um circuito integrado preparado já para controlar motores dc e que nos descomplica bastante a vida (a outra hipótese era conceber um circuito algo complicado com vários díodos).

Ainda tentei fazer um pequeno elevador com o circuito que contruí, mas este tipo de motores, ao contrário dos servo motores, não tem a capacidade de manter a posição quando desliga, pelo que se tornou inviável para essa situação. 


Deixo então a minha proposta de trabalho para controlo de motores dc recorrendo ao Scratch...



...o circuito esquemático do último exercício proposto...




...e um pequeno vídeo com o circuito de comando do motor dc em funcionamento (o gacho está um pouco ridículo, reconheço, mas o objetivo foi tornar possível a perceção da inversão de sentido):






terça-feira, 24 de março de 2015

Equipamento avariado? É connosco!

Pois que usámos a última sessão do período para desmontar equipamento estragado que havia pela escola. Com a colaboração da coordenadora da biblioteca da escola e do coordenador dos equipamentos informáticos, conseguimos 2 impressoras e 1 scanner que há muito estavam avariados e a ocupar espaço. 

A diretora de turma, que dá aulas na oficina, disponibilizou-nos o espaço e algumas ferramentas (que não eram suficientes - alguns alunos trouxeram ferramentas de casa, emprestadas) - e daqui se concluiu que trabalhar numa escola colaborativa não tem preço...


Depois...foi mão à obra! Os alunos aderiram da melhor maneira à atividade, afinal não é todos os dias que podemos desmanchar equipamentos eletrónicos. Mostraram-se muito interessados e empenhados. Curioso o facto de, à medida que iam recuperando material, começarem desde logo a encontrar-lhe um fim para um possível projeto ("Posso ficar com este eixo, professora? Acho que dava mesmo para um elevador...").

Recuperámos várias estruturas metálicas, componentes eletrónicos (dessoldados a placas de circuito impresso), motores, muitos cabos elétricos...


...e ganhámos entusiasmo e outra perspetiva relativamente à reciclagem de equipamentos eletrónicos.

De entre as peças recuperadas, tenho particular esperança na quantidade de motores que conseguimos - vários motores de corrente contínua e dois motores de passo (que eu ainda vou ter de estudar como controlar através de Scratch...).


Como nota final, esta é uma atividade muito suja. No final da hora, estamos todos cheios de óleo, bancadas e chão para esquecer. Haverá também muito lixo que tem de ser colocado no contentor correto. A turma com que estou a trabalhar tem, entre as áreas vocacionais, jardinagem. Para esta atividade foi uma mais valia porque estão habituados a pegar em sacos de lixo e levar para o contentor fora da escola. Também contei com a colaboração dos alunos para lavar as bancadas e o chão, que teve de ser varrido e bem passado com esfregona. Sem essa colaboração e boa vontade, uma atividade desta natureza seria impraticável. Obrigada pelo envolvimento de todos!

quinta-feira, 19 de março de 2015

Eletrónica básica - o condensador

O condensador é um componente eletrónico que tem a capacidade de armazenar cargas elétricas, conseguindo assim manter uma tensão estável aos seus terminais.

A capacidade de "armazenar" cargas depende das caraterísticas construtivas do condensador e é medida em farad (F).

O aspeto destes componentes é muito diversificado.


Apesar de também haver um código de cores para os condensadores, tal como para as resistências, o mais vulgar é encontrarmos o valor da sua capacidade indicada no componente. Outra grandeza que deve ser observada é a tensão (V) indicada no condensador que indica a tensão máxima a que pode estar sujeito.

Há dois grandes tipos de condensadores vulgarmente usados em eletrónica: aqueles que não exigem polarização e que, por isso, é indiferente a forma de os ligar (os mais vulgares são os de cerâmica e poliéster); e os que exigem polarização (de entre os quais os eletrolíticos são os mais comuns).

  • Condensadores de poliéster e de cerâmica: não temos de nos preocupar com a forma com que os ligamos. O seu aspeto é o seguinte:
  • Condensadores eletrolíticos: há que ter bastante cuidado em ligar o cátodo à alimentação negativa (ou GND) e o ânodo à alimentação positiva, caso contrário podem explodir lançando ácido. Eis o seu aspeto:


Em termos de simbologia elétrica, estes dois tipos de condensadores distinguem-se da seguinte forma:

O facto do condensador permitir a estabilização da tensão aos seus terminais, torna-o útil em muitos projetos. No projeto do post anterior, da cancela que abre e fecha, evita o pico de tensão que surge no início do movimento do servo motor, uma vez que no momento do "arranque" o servo motor exige mais corrente que durante o movimento.