domingo, 13 de novembro de 2011

...e mais Velocidade!

...e como dizíamos... ainda temos que considerar os periféricos!

Em um computador de grande porte, periféricos como memória volátil, memória de massa e interface de vídeo têm uma enorme influência no desempenho do sistema.

Tratando-se de microcontroladores, normalmente memória de massa e vídeo são bem menos importantes.  Mesmo assim, a influência dos periféricos pode ser importante:
  • Memória Volátil: ela deve ser rápida o suficiente para acompanhar a maior velocidade de acesso do processador, e em quantidade suficiente para manter todos os dados mais acessados disponíveis.  Se for lenta, seu acesso irá atrasar o processador.  Se for muito pequena, obrigará que algumas informações fiquem armazenadas em outras áreas, certamente ainda mais lentas, como uma memória "flash";
  • Memória de Massa: no caso do microcontrolador, ela será quase certamente uma "flash".  Essa memória é destinada a armazenar maiores quantidades de dados, especialmente os pouco voláteis, já que, embora apresente boa velocidade de leitura, sua gravação costuma ser bem mais lenta.  É comum as "flash" utilizarem interfaces seriais, e se essa interface não tiver boa velocidade pode prejudicar ainda mais o desempenho deste periférico;
  • Comunicação: É muito comum a necessidade de um microcontrolador comunicar-se com outro, ou com um grande computador que controle o sistema.  Caso a interface utilizada para isso seja muito lenta, ou exija muitos recursos do processador, isso irá certamente degradar o desempenho de todo o sistema;
  • Captura de Eventos: o software de controle de uma máquina automatizada precisa com frequência capturar eventos externos, ocorridos em qualquer lugar da máquina.  Caso o microcontrolador não disponha de hardware especializado para essa captura, o processador gastará um tempo considerável observando esses eventos, o que também irá causar grande degradação em seu desempenho;
Em um computador de maior porte é comum se utilizar, por exemplo, um programa de reprodução de mídia, cuja função principal é atualizar o vídeo em alta velocidade e definição.  Num sistema microcontrolado, ao contrário, as interfaces humanas (vídeo e/ou teclado) não são normalmente utilizadas para desempenho das funções principais do sistema, sendo seus requisitos de volume e velocidade bem menores.  Pode-se, assim, utilizar interfaces menos rápidas e complexas.

A otimização do desempenho de um sistema microcontrolado, como se pode ver por esta discussão, não é um problema simples ou banal.  Depende de um bom conhecimento da aplicação a ser desenvolvida e das famílias de controladores disponíveis.  Além do ingrediente mais importante de todos: uma boa dose de experiência e de bom senso por parte do engenheiro de software.

segunda-feira, 31 de outubro de 2011

Velocidade...

... de processamento!  Não vamos falar aqui da Suzuki Hayabusa, nem da Bugatti Veyron, mas sim de velocidade da execução de código em computadores - mais especificamente, em microcontroladores.

Um grande problema quando se fala em computadores, ou controladores, está em escolher o modelo que nos trará os recursos e o desempenho desejados.

O problema começa porque, diferente de um carro ou de uma moto, um computador não é um sistema fixo e completo.  Quando escolhemos um carro, temos para cada modelo no máximo duas ou três opções de motorização... talvez dois câmbios... e fim!  Passa a régua!  Para cada combinação (e são poucas) teremos um teste de desempenho feito, se não pela fábrica, pelo menos pelas revistas especializadas!

Mas em se tratando de computadores... qual o modelo do processador?  Quanta memória "cash" L1 e L2?  Que velocidade de "clock" vamos utilizar?  Qual a quantidade e tipo de memória RAM?  Qual o "chipset" utilizado?  Qual a velocidade e a largura do barramento de IO?  Qual a capacidade do HD, e qual sua velocidade de transferência?  Que adaptador de vídeo, e com quanta memória?  Que adaptador de rede... e qual a rede?  Vamos utilizar Flash?  Com interface paralela ou serial, e que velocidade?

Ufa...

Mesmo em se falando apenas de microcontroladores, que usualmente não utilizam HD, video ou redes, a multiplicidade de escolhas assusta.  E o número de combinações não permite um "benchmark" de cada uma em especial.  Aí só o bom senso e a experiência podem nos ajudar.  Por isso, vamos falar aqui dos principais fatores, e sua influência no desempenho de um controlador.

Para começar, o processador, que é o "core", o ponto central do controlador:

A primeira grande classificação que se observa é a largura do seu barramento de dados interno.  Existem hoje microcontroladores de 8, 16 e 32 bits.  É provável que breve vejamos microcontroladores de 64 bits, já que essa largura é utilizada nos computadores já há algum tempo.  Quanto maior a largura do barramento, maior o desempenho do processador.  Mas essa relação não é fixa, dependendo da arquitetura do próprio processador e da aplicação executada.  Se o processador for utilizado, por exemplo, em uma aplicação de controle de automação, com atuadores simples, e sem cálculos com grandes números, a maior largura de barramento em muito pouco vai influenciar o desempenho.  Ao contrário de uma aplicação com atuadores complexos e cálculos envolvendo grandes números, onde essa maior largura terá um impacto significativo sobre o desempenho.

O segundo parâmetro mais utilizado costuma ser a velocidade de "clock".  Como todo processador atual utiliza um sinal de "clock" para sincronizar toda a sua atividade, esse sinal nos dá uma boa noção de seu desempenho.  Só que também não é tão simples como parece!  Um modelo de processador pode executar uma instrução em cada ciclo de "clock", enquanto outro precisa de 2 ou 3 ciclos para cada instrução.  A IBM, lá pelos idos de 1970, introduziu uma medida que chamou de MIPS - milhões de instruções por segundo - que media a velocidade de instruções realmente executadas, não apenas de "clock".  Mas nem isso resolve o problema, já que diferentes arquiteturas de processadores têm diferentes instruções, e tarefas diferentes são realizadas em uma instrução.  Assim o MIPS só faz realmente sentido para comparar vários processadores de uma mesma família.

Para complicar ainda mais as coisas, a largura de barramento pode não ser constante - é comum, por exemplo, um processador de 16 bits (barramento interno) comunicar com seus periféricos externos através de um barramento de 8 bits.  O desempenho será de 16 bits nas operações internas, mas de apenas 8 bits em operações que envolvam esses periféricos.  Da mesma forma, o barramento externo pode ter velocidade diferente (geralmente menor) do que o interno.

A para finalizar, complicando ainda mais: em um processador moderno, existe uma boa quantidade de processamento paralelo.  Interrupções são tratadas por um módulo separado, e o processador central só é interrompido já com todos os elementos da interrupção processados, hierarquizados e prontos para tratamento.  Transferências em memória são executadas por um DMA, módulo especializado nisso, e o processador só é comunicado ao fim de uma transferência completa.  Comunicação serial é tratada em outro módulo, e o processador só entra na festa depois de uma mensagem recebida, verificada e classificada.  E assim por diante.  Portanto o desempenho final vai depender em muito de existirem os módulos para processamento paralelo adequados à aplicação que está sendo executada.  Reparem que, mais uma vez, a escolha depende da aplicação.

Não percam o próximo capítulo, onde falaremos dos módulos periféricos que, junto com o processador, compõem a totalidade de um microcontrolador.

segunda-feira, 19 de setembro de 2011

Expoentes do Conhecimento

Vocês já devem ter reparado como é difícil prever a evolução do conhecimento e da tecnologia.  Todo fim de ano algum "expert" faz suas previsões para os próximos anos... e de cada vez erra em quase tudo!

Para mim um exemplo clássico é o livro/filme "2001 - A Space Odissey".  O livro, da década de '60, foi escrito por Arthur C. Clarke, talvez um dos melhores escritores científicos até hoje.  E o filme foi feito por Stanley Kubrick, com consultoria do próprio Clarke!  No entanto, suas tentativas de prever o estado do conhecimento em 2001 - pouco mais de 30 anos no futuro - foram completamente fora do alvo.  O filme mostra naves comerciais indo e vindo da Lua, com colônias lá estabelecidas... hoje, 10 anos além da época retratada, até as missões científicas à Lua deixaram de existir.  Mostra uma enorme nave tripulada indo ao sistema de Saturno - bem além de nossas possibilidades hoje.  No entanto, mostra um computador enoooorme nessa mesma nave, sem nada da miniaturização alcançada em 2001, e nele não existem telefones celulares, computadores pessoais, e muito menos algo como a Internet.

E por que um cientista experiente e visionário tem tanta dificuldade em prever o futuro próximo?

Uma das razões disso é o desenvolvimento exponencial do conhecimento humano.  Cada desenvolvimento é baseado na soma do conhecimento já estabelecido, e este é cada vez maior.  Portanto o desenvolvimento é cada vez mais acelerado, de forma exponencial.

Vamos fazer uma brincadeira simples para ilustrar a crescente velocidade desse desenvolvimento:  Se a História Ocorresse em um Dia...

Imaginemos os 5.000 anos de história documentada que temos hoje ocorrendo em um único dia.  Estamos assistindo ao pôr do sol, e relembrando tudo o que aconteceu nesse dia...
  • A Roda foi inventada ao amanhecer...
  • O Alfabeto, por volta das 9:20 horas...
  • A Bússola, pouco depois do meio dia...
  • A Imprensa, pouco antes das 5 horas da tarde...
  • O primeiro Automóvel e o primeiro Avião apareceram quase juntos, faltando 15 minutos para o por do sol...
  • O Homem pousou na Lua há uns 5 minutos...
  • e a Internet existe há pouco mais de 2 minutos!
Impressionante, não?  Reparem que em metade de todo esse tempo mal tínhamos chegado à Bússola.  Faltando uma hora, das 12 horas do dia, para o pôr do sol, a imprensa tinha acabado de aparecer.

É essa incrível aceleração na velocidade do desenvolvimento que torna quase impossível prever o que vai acontecer a seguir, e quando.

Há menos de um século as pessoas compravam, por exemplo, um toca-discos (discos de vinil, claro...), e sabiam que o utilizariam por décadas.  Mais recentemente, eu mesmo comprei um CD-player que durou pouco mais de 10 anos antes de ficar obsoleto.  Comecei a usar um DVD, e menos de 5 anos depois o BluRay o tornou obsoleto.  Troquei uma TV antiga, com CRT, por uma LCD, e... raios, a OLED está ali na esquina me olhando!

Chega a ser estressante... imaginem daqui a mais 10 anos?

Sei lá... não faço a menor idéia do que vai acontecer!!!  Só sei que tenho uma enorme curiosidade para ver!  E enquanto houver essa curiosidade estou tranquilo... ainda estou vivo!

domingo, 11 de setembro de 2011

A Terceirização do Mal

Desta vez o assunto é sério, galera...

Por que será que as pessoas têm uma capacidade tão grande de negar suas responsabilidades, e sempre terceirizar o mal?

Tenho pensado muito sobre isto, mas a gota d'agua para escrever sobre o assunto foi a manchete do Jornal de Santa Catarina desta semana (mais uma sobre o assunto):

"Gaspar cobra do Dnit solução para trevo onde seis já morreram este ano"

Como foi mesmo?  Mais uma vez um motorista incompetente desrespeitou as leis de trânsito e da segurança.  Mais uma vez isso causou a morte de inocentes.  Mais uma vez todos põem a culpa num inocente pedaço de asfalto???

Vamos combinar, gente!  Que essa rodovia precisa ser duplicada, ninguém tem dúvidas!  Que sua manutenção é sofrível, ok!  Que isso causa desconforto, poluição e prejuízo econômico e para o saco de todos, concordamos!  Mas daí a ser causa de mortes?

A notícia dessa semana é sobre um acidente no trevo de Gaspar.  Para quem não conhece, a rodovia ali é reta, com boa visibilidade, e nesse local há um entroncamento com a entrada para a cidade de Gaspar.  As faixas são contínuas, há uma faixa (abrigo) central para aceleração e desaceleração, para que que os automóveis entrando e saindo da cidade não precisem cruzar ambas as pistas ao mesmo tempo.  Há placas sinalizadoras.  O "descaso" das autoridades se limita à inexistência de lombadas ou de uma rotatória.

Pera aí, não entendi!  Então temos que por uma rotatória em cada derivação da estrada, para obrigar os motoristas a reduzir a velocidade, porque respeitar a lei está fora de cogitação?  Onde está o bom senso, gente?

E aí fico me lembrando de outros exemplos (nem todos ligados ao trânsito).

Outra matéria, meses atrás, sobre outra morte nessa mesma rodovia - a foto do local e depoimentos de testemunhas mostravam claramente uma ultrapassagem em local proibido... culpa da rodovia, claro!

Um religioso que matou um amigo em uma discussão... foi o diabo que o "atentou" para matar, ele não teve culpa.  Aliás, de acordo com alguns religiosos, qualquer obra má é "coisa do Demo".  Coitado do Demo... que costas largas, não?  Tem que responder por todo o mal da humanidade!

Um bêbado que agrediu a mulher e filhos.  Foi a "maldita", ele não estava em seu juízo!!  Como é mesmo??  Ele toma um litro da "maldita", sabendo exatamente seus efeitos, e a culpa não é dele???

Quando é que vamos crescer?  Quando vamos tomar vergonha na cara e assumir nossas responsabilidades?  Essa história de apontar pro coleguinha e dizer "a culpa foi dele" é coisa de criança, gente!  E criança mal orientada, porque se eu fizesse isso em criança apanhava em dobro - pelo mal feito e por tentar por a culpa nos outros!  Cedo aprendi que atenuante para meus "crimes" infantis era encarar meus pais e assumir a culpa.  Aí sim, tudo se resolvia com um papo, uma bronca ou o castigo adequado à falta atenuada.

Ahhhh, desculpem... esqueci que dar uma palmada no filho agora é "politicamente incorreto"... causa traumas!  Coitadinho!  Tem que ser criado sem traumas, para que depois de adulto a sociedade o eduque, e talvez o mate no processo!

Tem horas em que fico com muito medo pelo futuro de nossa sociedade... sinto o frio dos primeiros ventos invernais, trazendo a decadência de nossa cultura, nossa retidão moral e nosso valores.

segunda-feira, 5 de setembro de 2011

Uma questão de Nivel...

Estou atualmente ministrando um curso de programação de microcontroladores.  E como sempre surge a polêmica:  Linguagem de alto nivel?  Baixo nivel?  O que é isso?  O que utilizar, e quando?

Bom... "nivel" é um conceito relativo.  Todos concordam que as linguagens Assembly são baixo nivel.  Mas a partir daí, o cenário fica muito mais confuso!

Essa classificação foi criada quando só existiam os Assemblers e os compiladores procedurais.  Nesse cenário, as linguagens Assembly foram consideradas "baixo nivel", porque seus comandos descrevem código nativo de máquina, numa relação um-para-um, portanto estamos na camada mais baixa possível de interação com o hardware.  As linguagens compiladas foram, como um todo, consideradas de "alto nivel", pois seus comandos são compilados para código de máquina numa relação um-para-N, e o programador não vê mais os detalhes desse código.

Mas depois as coisas começaram a se complicar.  Apareceram as linguagens não-procedurais, nas quais o programador descreve tarefas, e os compiladores se encarregam da geração de comandos.  Como chamar isso?  Altíssimo nivel?  Além disso, apareceram linguagens como o "C", hoje largamente empregado em microcontroladores.  O "C", embora compilado, conserva uma relação muito mais direta entre código fonte e código de máquina.  Ele "disfarça" muito menos o hardware, e protege muito menos o programador de seus erros de lógica - e nesse aspecto lembra bastante um Assembler.  Tanto que alguns programadores que nunca usam Assembler passaram a chamar o "C" de "baixo nivel".

De qualquer forma, eu falava de programação de microcontroladores.  E nesse tipo de programação eu nunca vi serem utilizadas linguagens não-procedurais, já que isso nos colocaria longe demais da camada de hardware, o que é inviável nesse tipo de ambiente.  Mesmo linguagens de alto nivel são poucas nesse ambiente.  Quase exclusivamente "C".  E assim voltamos ao princípio de tudo.  Num microcontrolador, Assembly é baixo nivel.  Linguagem compilada é alto nivel.  Ponto.

E agora, depois de falar tudo isso, podemos responder à pergunta.  Repetindo o que já disse em ocasiões anteriores:  Aconselho sempre meus alunos a estudar cuidadosamente cada "core" de microcontrolador que forem utilizar.  E para isso, nada melhor do que programar em Assembler.  Depois que conhecerem bem o "core", o "C" é uma boa pedida, pois vai economizar bastante em esforço e tempo de programação.

Ahhh... mas não se esqueçam de dar uma olhada no código de máquina gerado pelo compilador... até hoje não inventaram um compilador tão esperto quanto um programador, e se vocês forem bons nisso sempre poderão otimizar o código gerado!

quinta-feira, 25 de agosto de 2011

Icarus

- papa uniform juliet lima delta, autorizada decolagem imediata!

Estendo a mão para a manete de potência... aquele movimento firme até o fim.  Ouço o motor acordando... a pressão no assento, a pista começa a correr.

Olho para o lado e ali, ao lado da pista, está uma enorme fila de pioneiros acenando para mim, cada um com um largo sorriso no rosto.  Ícaro.  Da Vinci.  Santos Dumont.  Orville Wright.  Charles Lindbergh.  Amelia Earhart.  Chuck Yeager.  E tantos outros que não consigo mais reconhece-los.

A máquina parece mais ansiosa do que eu para deixar o solo.  Nem preciso puxar, ela sai do chão, o nariz levanta... somos livres!  Livres como todos esses pioneiros sonharam um dia.

Curvo para a proa desejada, e o céu gira ao meu redor.  A majestade do dia começando.  O sol mal nasceu, o horizonte está em fogo.  Uns poucos cirrus, bem lá no alto, tingem o céu de vermelho.

Ao meu lado, minha melhor amiga e companheira de viagem (esta e aquela maior, a Vida) sorri em silêncio.  Ela sente, como eu, a reverência a este ambiente celeste.

A máquina sobe como se quisesse alcançar o Sol, e como Ícaro derreter suas asas de cera.  Tenho que segurar seu ímpeto e estabilizar no nivel correto.

O motor caiu para um ronronar suave.  Parece satisfeito, contente de estar aqui.  O ar frio, o céu limpo, a visão do mundo passando abaixo de nós.  Não me parece estranho que em tantas culturas diferentes o céu seja o lugar dos deuses.  Nossa recompensa após a vida.

Relaxo curtindo o vôo.  Só quem voa conhece aquele relaxamento atento (parece incoerente, não?).  Você está relaxado, curtindo a vista e a sensação do vôo.  Mas qualquer grau de diferença na proa já é corrigido antes que você tenha consciência do que fez.  Qualquer diferença de meio tom no ronronar do motor e você corrige a manete sem nem notar.  Os olhos, curtindo toda a paisagem, ainda assim capturam qualquer variação anormal no painel.

E ainda tem gente que tem medo de voar... medo do paraíso???

- controle Rio, papa uniform juliet lima delta ingressando na terminal conforme plano
- juliet lima delta, mantenha corredor visual a dois mil pés
- ciente, manterá dois mil pés, lima delta
. . .
- juliet lima delta, chame torre sierra bravo juliet romeu em uno uno oito decimal quatro zero
- ciente, uno uno oito decimal quatro zero, obrigado e bom dia, lima delta livrando frequência
- torre sierra bravo juliet romeu, aqui papa uniform juliet lima delta ingressando no circuito
- juliet lima delta, pista em uso dois zero, autorizado o pouso
- ciente, pista dois zero para pouso, lima delta


A alegria do breve reencontro com os amigos se mistura com a tristeza do fim do vôo.  Deixar o céu.  Voltar ao mundo dos que não têm asas.

Tocamos o solo, o controle solo nos orienta, taxiamos para o pátio.

Ao fundo, junto ao terminal, os amigos nos acenam, alegres.

Junto a eles, vejo novamente os largos sorrisos.  Ícaro.  Da Vinci.  Santos Dumont.  Orville Wright...

Obrigado a essa longa fila de pioneiros que tornaram tudo isso possível.

sábado, 13 de agosto de 2011

Citations

Não, não, não... eu AINDA não comprei o meu Cessna Citation, como talvez meus amigos comandantes tenham deduzido pelo título!


Eu estava apenas folheando alguns livros de meus autores preferidos, quando me dei conta de quantas citações interessantes eles fazem, algumas das quais incorporei ao meu estilo de vida, a ponto de meus amigos me ouvirem usando-as com frequência.  Aí resolvi colocá-las aqui - quem sabe outros as achem tão interessantes quanto eu!

"Quando um distinto e experiente cientista afirma que algo é possível, ele quase certamente está certo.  Quando afirma que algo é impossível, ele provavelmente está errado"

"O único meio de descobrir os limites do possível é ir um pouco além deles, ao impossível"

"Toda Tecnologia suficientemente avançada é indistinguível de Magia"

Arthur Clarke

As três citações acima são bem conhecidas como "as três Leis de Clarke".

"Não existe almoço grátis!"

"Uma geração que ignora a história não tem passado.  Nem futuro"

"Dinheiro é um poderoso afrodisíaco. Mas flores funcionam quase tão bem"

"Os shamans estão sempre tagarelando sobre seus milagres.  Eu prefiro o milagre real: uma mulher grávida"

"Guardarás o décimo primeiro mandamento e o obedecerás!"

Robert A. Heinlein

"Se alguma coisa tem a menor probabilidade de dar errado, ela VAI dar errado!"
Edward Murphy

Quando a idéia é boa, ela muitas vezes ocorre a mais de um autor. Vejam estes exemplos:

"Sempre ouça os especialistas.  Eles lhe dirão o que não pode ser feito, e porque. Depois faça!"
Robert A. Heinlein

"Quando um distinto e experiente cientista afirma que algo é possível, ele quase certamente está certo. Quando afirma que algo é impossível, ele provavelmente está errado"
Arthur Clarke

"Nunca subestime a estupidez humana"
Robert A. Heinlein

"Contra a estupidez humana, os próprio Deuses lutam em vão"
Arthur Clarke

sexta-feira, 12 de agosto de 2011

ABSolutamente Essencial!

Quando se fala em Eletrônica e Segurança Automotiva moderna, um dos itens mais discutidos e menos entendidos é o ABS.

ABS (Anti-lock Braking System, ou freio anti-travamento) é um dispositivo eletrônico que foi utilizado pela primeira vez na década de '70, pela Mercedes-Benz, em seu experimental C111.  O veículo caiu no esquecimento depois de uma década de experimentos, mas o ABS veio para ficar.

A idéia por trás do ABS é simples: numa frenagem de emergência, é comum as rodas do carro travarem.  Quando isso acontece, há duas consequências graves: o atrito entre a roda travada e a pista é MENOR do que o atrito sem travamento, o que aumenta a distância de frenagem.  E, mais importante: perde-se completamente o controle direcional sobre o carro.

Um motorista experiente, nesse momento, solta o freio e reinicia a frenagem, com menos pressão, evitando o travamento.  Infelizmente, hoje em dia, poquíssimos motoristas são "experientes", nesse sentido.  A esmagadora maioria sabe apenas o trivial sobre a condução do veículo, nunca fez um curso de direção defensiva, muito menos praticou com seu carro situações de emergência como frenagens ou derrapagens.  E mesmo nosso motorista experiente perde preciosas frações de segundo ao reiniciar a frenagem e corrigir o problema de travamento.  E, pior do que isso: caso UMA das rodas trave, talvez por estar sobre um trecho da pista menos aderente, é preciso parar a frenagem nas QUATRO e reiniciar, já que o pedal do freio atua sobre todas simultaneamente.

Daí vem a idéia do ABS: um sistema eletrônico monitora o giro de cada roda durante a frenagem.  Ao detectar um início de travamento em uma delas, ele alivia a ação do freio apenas sobre aquela roda, e alguns mili-segundos depois reinicia a frenagem.  Resultados práticos:
  • Apenas a roda afetada tem sua frenagem reiniciada, enquanto isso as outras três continuam freando;
  • O tempo de reinício é bem menor do que o conseguido pela ação humana, perde-se menos tempo sem frear;
  • Isso funciona com qualquer motorista, com ou sem experiência.  Basta frear fundo, e o sistema faz o resto.
Esse tipo de sistema aumentou drasticamente a segurança ativa dos veículos - ou seja, sua capacidade de evitar acidentes.  Não é para menos que, apesar de caro (é um acessório que, apesar da larga produção, ainda aumenta em quase US$ 500,00 o preço de um automóvel, ou uns R$ 2.000,00 no Brasil) vem sendo cada vez mais utilizado, e até mesmo carros mais populares já o oferecem.

As dificuldades para sua instalação (e, consequentemente, o alto preço) são, principalmente, o sensoriamento e a atuação sobre o freio.  O processamento, embora complexo, é hoje relativamente barato, já que a eletrônica moderna disponibiliza processadores de alta capacidade e velocidade a custos muito baixos.

No lado do sensoriamento, precisamos medir rapidamente, e com precisão, a velocidade de cada roda.  Durante a frenagem o sistema monitora continuamente essas velocidades e, como as quatro rodas nunca começam a travar exatamente ao mesmo tempo, usa as diferenças entre essas velocidades para detectar o iminente travamento de uma roda.  Detectada essa situação, o sistema desaciona o freio da roda afetada, espera sua velocidade voltar ao normal (o que leva de poucos mili-segundos a quase um segundo) e reaplica o freio.

Esse ciclo de funcionamento (início de travamento, desaplicar o freio, aguardar normalização, reaplicar o freio) é o que causa a característica "vibração" no pedal do freio, que costuma assustar os motoristas desavisados na primeira vez que causam a intervenção do ABS em seus carros.

É consenso entre os especialistas em automóveis, hoje, que o ABS, apesar de caro, é talvez o mais importante avanço na segurança ativa já conseguido em automóveis.  Nas palavras de um especialista:

"- É um acessório caro.  Mas se ele for acionado uma única vez no seu carro, em condições reais, ele se pagou.  Porque provavelmente ele evitou um acidente, e quem sabe salvou sua vida."

sábado, 30 de julho de 2011

Mais Luz... Mais Luz !!!

Putz... não imaginei que falar sobre lâmpadas automotivas gerasse tantas perguntas!

Depois de falar sobre Xenon (metendo o malho nos kits adaptados, claro) e sobre as halógenas (e meter o malho nas "cool blue"), me perguntaram sobre LEDs.

Bem... todo mundo sabe o que é um LED, não?  Mas nem todos sabem como ele funciona.  Quem não está interessado em física de semicondutores pode pular o próximo parágrafo, e não vai perder nada da história... hehehe...

Um LED (Light Emitting Diode) é um semicondutor (mais especificamente, um diodo) com uma propriedade especial: Os átomos do cristal semicondutor perto da junção mudam de estado com a passagem dos ions, aumentando sua energia.  Ao retornar ao estado inicial liberam essa energia na forma de fotons, que são a unidade básica da radiação eletromagnética.  Corretamente projetado, esse diodo emite radiação na frequência desejada.

Os primeiros LEDs, e mais fáceis de produzir, emitiam radiação na faixa dos IR curtos (cerca de 900nm).  Depois conseguiu-se produzir LEDs que emitem radiações mais curtas, na faixa visível - vermelha, depois amarela, verde, e finalmente, nos últimos anos, azul.  E conseguiu-se também produzir LEDs com áreas diferenciadas na junção, que emitem 3 ou 4 frequências simultaneamente, calibradas de forma a parecer brancos ao olho humano.

Os LEDs modernos emitem altas quantidades de luz, e são muito eficientes - cerca de 50%, similar a uma lâmpada fluorescente compacta.  Daí é claro que os projetistas de automóveis começaram a ter idéias!  Além de eficientes, os LEDs são bem pequenos, podendo ser agrupados em qualquer forma desejada.  Ficou fácil fabricar luzes automotivas no formato e cor desejados, criando efeitos especiais, práticos e bonitos.  Reparem neste exemplo - a lanterna dianteira de um Audi A4:


Hoje a maioria dos automóveis mais caros utiliza LEDs em todas as suas luzes, com exceção dos faróis principais - luzes de posição, direção, freio, ré... além das internas, na iluminação da cabine e do painel.

O grande desafio ainda é nos faróis principais do veículo.  Embora alguns carros de luxo (Mercedes classe E e BMW série 7) já comecem a aparecer com faróis LED, os problemas ainda não estão completamente resolvidos.

Para começar, os LEDs atuais, embora emitam muita luz (e cada dia mais), ainda não chegaram ao nivel dos HID (Xenon).  Um farol LED atual emite bem mais luz do que os halógenos convencionais, mas não tanto quanto os HID.  Acredita-se que isso vai mudar em breve, cada geração de LEDs está chegando ao mercado com mais luz e mais eficiência.

O segundo problema é um pouco mais complicado, e também interessante: como nenhum sistema de iluminação é 100% eficiente, sempre é gerado calor, que precisa ser dissipado.

As lâmpadas halógenas, pouco eficientes, emitem muito calor.  Porém esse calor é emitido em forma de radiação IR, e deixa a lâmpada.  Parte desse IR é absorvido pela lente externa do farol, o que é uma vantagem, especialmente em climas frios e úmidos: ela aquece a lente, evitando formação de condensação e acúmulo de água.

As HID, mais eficientes, produzem bem menos calor.  Da mesma forma, esse calor é emitido como IR, parte dele é absorvido pela lente externa, com o mesmo efeito de mante-la limpa.

Agora o LED... ele não emite praticamente nenhuma radiação IR.  O calor é gerado na junção do semicondutor, e se não for corretamente dissipado vai em pouco tempo destruir o LED.  E para piorar, não há calor para manter a lente limpa.  Os desenhos atuais empregam um dissipador metálico para retirar calor do LED, e esse dissipador é conectado à lente externa, como tentativa de aquece-la e mante-la limpa.  Funciona, mas é uma construção mais cara e complicada.  Nada que altere significativamente o custo de uma Classe E ou de uma Série 7, mas vai ser um problema para sua utilização em carros mais simples.  Por enquanto...

Aguardamos os próximos capítulos, que certamente trarão novos desenvolvimentos tecnológicos, e talvez em breve a solução desses problemas!

E para finalizar o assunto segue uma tabela com as eficiências máximas conseguidas atualmente pelos tipos de lâmpadas mais comuns (automotivas ou não), em Lumens / Watt:

quinta-feira, 28 de julho de 2011

Criatividade e Arte

Descobri que sou um artista.

Sério!  Depois de décadas me acreditando um Engenheiro, um homem das Ciências Exatas... descobri o quanto a Engenharia é arte.

Esta semana assisti a um filme - "Os Pilares da Terra", baseado em livro de Ken Follett.  Agora preciso ler o livro, a história é verdadeiramente apaixonante!  Para vocês terem ideia, o filme é longo - cerca de 7h - e dividido em quatro partes.  Adriana e eu pegamos a primeira parte na locadora, com o comentário: "Se for bom mesmo, vamos devolvendo e pegando o próximo, e daqui a umas 3 ou 4 semanas terminamos".  Vã esperança!  Vimos o primeiro, no dia seguinte corremos na locadora para o segundo... passaram-se 5 dias, e vimos tudo!

A história, bastante complexa, gira em torno da construção de uma Catedral, na Inglaterra, no século XII.  E o personagem principal, como não podia deixar de ser, é o Mestre Construtor.  O que na época significava Engenheiro MAIS Arquiteto MAIS Mestre de Obras MAIS Escultor MAIS Pedreiro.

Em uma cena do filme perguntam como ele conseguia esculpir peças tão belas e perfeitas.  E ele responde: "A pedra fala comigo.  Ela me diz o que quer ser".

Aí está a grande diferença entre este Artista (sim, com "A" maiúsculo) e a maior parte dos engenheiros modernos.  Ou você OUVE a sua obra, e através dela o Espírito Criador... nutre verdadeiro Amor pela sua criação... ou você é apenas mais um engenheiro (aqui com "e" minúsculo).

E descobri porque sou um Engenheiro: Cada novo projeto, para mim, é a Catedral a ser construída.  Tenho que aprender novas técnicas.  Tenho que ouvir minha criação, sentir seus problemas e seus desejos.  Tenho que ver as rachaduras no teto, descobrir porque elas apareceram e inventar todo um novo sistema de arcos para aumentar a rigidez das paredes.

Sim, sou um Engenheiro.  Programador.  Desenhista de Equipamentos.  Montador também, pois nenhum pedreiro... ops, montador, terá o meu carinho com a minha criação.

Talvez por isso eu consiga fazer belas Catedrais, mais altas, luminosas e belas - porque não me contento em fazer mais uma capela, igual a tantas que estão por aí, feitas por simples engenheiros.

terça-feira, 26 de julho de 2011

O Brilho do Negro

Não, pessoal, este não é um texto sobre a consciência negra, nem qualquer tipo de manifesto politicamente correto.  É apenas um texto sobre física!

Depois de falar sobre "corpo negro" e "espectro contínuo" no post sobre Iluminação Xenon x Halógena foi que eu descobri que falei grego para muita gente!  Desculpem, essa é uma falha comum dos técnicos.  Falamos "tecniquês" sem nem percebermos...

Mas então vamos falar um pouco sobre isso, e tentar esclarecer essa história de espectros.  Ahhh... mas cuidado, "espectro" aqui refere-se apenas a iluminação e cores.  Não vamos nem tentar explicar sobre fantasmas e fenômenos paranormais...

Nosso universo está coberto por radiação eletromagnética.  Em toda parte existe essa radiação - parte natural, parte produzida pelo Homem.  Ondas de rádio fazem parte desse conjunto.  O calor emitido pelo Sol também.  Assim como a luz visível.  E raios invisíveis, como os UV (ultra violeta) e Raios X.

A diferença fundamental entre todos esses tipos de radiação é o comprimento de onda.  As ondas de rádio são bastante longas - desde 300m para as rádios AM, passando por uns 3m para as rádios FM, até cerca de 15cm para micro ondas e algumas bandas de telefonia celular.

Bem mais curta é a radiação infravermelha, que sentimos sob a forma de calor (quando estamos ao sol, o calor que sentimos onde o sol "bate" é proveniente dessa radiação), que tem entre 0,3mm e 750nm.  Um nm (nanômetro) é um bilionésimo do metro, ou um milionésimo de milímetro.

A partir daí vem a luz visível, entre 750 e 380nm.  Nossos olhos vêem esses diferentes comprimentos de onda como diferentes cores.  A partir dos 380nm estão o ultravioleta e raios X, invisíveis para o olho humano.

Tudo isso é muito interessante, mas vamos nos focar na luz visível e como a percebemos.  Se olharmos para um espectro visível como este abaixo, veremos a relação aproximada entre comprimento de onda e a cor que nossos olhos percebem:
Percebemos as ondas mais curtas como violeta, e as mais longas como vermelho.  Perto do centro está o verde, com cerca de 520nm.

Reparem que várias cores, entre elas o branco, não estão nesse espectro.  Não existe uma frequência "branca".  O branco é o que nossos olhos percebem quando nos chega todo o espectro ao mesmo tempo, com toda essa gama de frequências.

Um objeto branco reflete a luz que incide sobre ele.  Só o percebemos como branco se o iluminarmos com luz branca!  Por exemplo, iluminem uma parede branca com uma lâmpada vermelha, e vocês verão a parede vermelha.  Óbvio, não?  Portanto, só podemos perceber corretamente as cores dos objetos se os iluminarmos com luz branca!

Agora vamos ao corpo negro...

Qualquer objeto aquecido emite radiação.  Inclusive nós, já que nossa temperatura de 36,5ºC é suficiente para emitirmos infravermelhos.  à medida em que aquecemos mais um objeto, ele passa a emitir mais radiação, e em comprimentos de onda menores.  Coloquem uma barra de ferro sobre o fogo, e em pouco tempo ela começa a "ficar vermelha".  Sua temperatura subiu e, perto dos 600ºC, ela começa a emitir luz visível, além da infravermelha.  Continuem aquecendo-a e ela irá brilhar cada vez mais, passando a laranja e depois amarelo.  Não vai passar do amarelo, pelo menos como uma barra de ferro sólida, porque a cerca de 1.500ºC ela vai derreter.

Observem este gráfico:
A linhas brancas mostram quanta radiação, e de que comprimento de onda, emite um corpo aquecido, em várias temeraturas diferentes.  A linha mais baixa é de um corpo a 3.500ºK (cerca de 3.227ºC).  A mais alta é de um corpo a 5.500ºK (cerca de 5.227ºC).  No meio do gráfico está representado o espectro visível.  À sua direita, a área negra é de radiação IR (infravermelha), e à esquerda a UV (ultra violeta), ambas invisíveis.

Reparem que, a 5.500ºK, a parte mais importante da radiação emitida está bem na faixa visível ao olho humano.  Não é coincidência, já que esta é a temperatura superficial do Sol, portanto essa é a curva de radiação que ilumina a nossa Terra.  E nossos olhos, é claro, evoluíram nesse ambiente, adaptando-se para enxergar a radiação que aqui existe em maior quantidade!

Esse tipo de emissão de luz é  chamado de "emissão de corpo negro" porque a radiação emitida depende apenas da temperatura do corpo, e não de sua cor.  Um corpo negro, que normalmente não emite luz visível (por isso negro), ao ser aquecido emitirá exatamente esse espectro luminoso.

E agora, depois de tantas explicações, finalmente chegamos às lâmpadas e à iluminação automotiva!

Uma lâmpada incandescente brilha porque seu filamento é aquecido, pela passagem de corrente elétrica, o suficiente para emitir luz visível.  Uma lâmpada comum tem seu filamento aquecido a cerca de 3.200ºK.  Uma halógena automotiva é um pouco mais quente - cerca de 3.400ºK.  Se olharmos no gráfico acima, veremos que a maior parte da radiação emitida por ela é infravermelha, e não luz visível!!

Que horror!! Por isso uma lâmpada incandescente tem eficiência tão baixa - menos de 20%.  E por isso ela aquece tanto o que está por perto - ela emite um monte de radiação IR!!  E por isso sua luz é um pouco "amarelada" - ela emite mais luz no  extremo vermelho-amarelo do espectro do que no extremo azul-violeta.

As lâmpadas de descarga, sejam as de baixa intensidade (vapor de sódio ou mercúrio) ou de alta intensidade (Xenon) emitem luz em uma (ou algumas) frequências isoladas, e não em um espectro contínuo como o do gráfico.  Seu princípio de funcionamento é radicalmente diferente.  Com isso, consegue-se produzir uma emissão quase totalmente dentro do espectro visível - mais de 70% da energia, em alguns casos.  Essa é a boa notícia!

Mas também há uma má notícia:  Como o espectro não é contínuo, nós não estamos "iluminando a parede" com uma luz branca, mas sim com uma mistura de cores isoladas.  Em alguns casos, como na luz de Sódio, essas cores são predominantemente amarelas, e sob sua iluminação vemos tudo amarelo e meio sem cor.

Em outros, como na Xenon, essa mistura nos aparece como branco.  Mas será branco mesmo?  Infelizmente não.  É uma mistura de algumas frequências, bem diferente do espectro da luz natural do Sol, que até consegue enganar nossos olhos.  Até que iluminemos com essa luz um objeto colorido.  E aí vamos ver as cores distorcidas.  Algumas cores podem quase sumir, enquanto outras ficam mais brilhantes, ou parecem diferentes.

E é esse o argumento que alguns apresentam contra a iluminação HID em automóveis.  Em uma situação de emergência - um objeto cruzando subitamente a estrada à nossa frente - a falsa impressão de cores pode enganar nossos olhos, fazendo com que o cérebro leve alguns segundos a mais para interpretar corretamente o que está vendo.  E esses segundos podem ser fatais!

Será válido esse argumento?  Não sei.  Não existem ainda estudos sérios, com dados confiáveis, sobre esse efeito.  Mas é um argumento com base lógica, e como tal deve ser devidamente tratado, e estudos realizados.

quarta-feira, 20 de julho de 2011

Poliglota? Eu??

- Professor, qual é a melhor linguagem de programação?

Ai, meu santo padin Padre Cícero... vocês só fazem perguntas impossíveis???

Vou ter que me repetir, e responder... depende! Melhor pra que, bro?

Eu já esqueci mais linguagens de programação do que sei atualmente... incluindo algumas que aprendi quando a maioria de vocês ainda não estava nem na prancheta de desenho!

Senão vejamos: Fortran, Algol, Cobol, Basic, Miis/Mumps, dBase/Clipper, Linc,  Pascal, Delphi/Pascal, C/C++, Assembler '80, Assembler '86, Assembler PIC16, Assembler 8051, Assembler S08, Java... (as amarelas são as obsoletas, que já não uso há tanto tempo que certamente esqueci tudo!)

Putz, será que esqueci alguma?

Na década de '60, Niklaus Wirth, que considero um gênio na área da informática, tanto quanto considero meu ídolo Ferdinand Porsche na área da mecânica, desenhou o Algol, a primeira linguagem de programação estruturada.

O projeto do Algol é tão bom e consistente que, baseado nele, Wirth desenhou o Pascal, publicado em '70 e em uso até hoje e, 50 anos depois do Algol, todos programamos em C e Java, cujas estruturas e sintaxe são notavelmente parecidas com as do Algol e do Pascal.

Aliás, é interessante notar que o Unix tem a fama de ser o primeiro sistema operacional desenvolvido em linguagem de alto nível - C - mas muuuitos anos antes, na década de '60, os equipamentos Burroughs utilizavam um sistema operacional, o Burroughs MCP, totalmente desenvolvido em Algol.

Mas vamos simplificar, deixar de lado as reminiscências históricas, e responder à pergunta:

Programar sistemas comerciais em um PC é bem diferente de programar sistemas de automação em microcontroladores.

Em um PC, geralmente temos hardware sobrando, e estamos bastante isolados da camada física do hardware.  No máximo vemos a camada de APIs do SO.  Portanto não há razão para se utilizar um Assembler, e iremos sempre programar em alto nivel.  Se essa pergunta me fosse feita poucos anos atrás, eu não hesitaria em citar o Delphi/Pascal (e seu irmão Kylix para quem gera código para Linux) como a melhor alternativa.  É uma linguagem bem estruturada, poderosa, e extremamente bem documentada.

No entanto o Delphi, nos últimos anos, "parou no tempo", e seus recursos para programação web-based são muito fracos.  E ele começou a perder fôlego.  Aí apareceu o Java, já no fim dos anos '90.

Hesitei muito em utilizar o Java.  Em primeiro lugar, como programador "antigo" (aiii... que termo horrível!) tenho um enorme respeito pelos recursos de hardware, que são tratados pelos programadores modernos como inesgotáveis.  E o Java não é um código nativo - sua proposta é ser um código universal, que rode em qualquer plataforma.  Lindo isso - pena que não é verdade.  Até hoje não se conseguiu realizar a utopia de um código realmente independente da plataforma.  Sempre existe aquele pequeno detalhe diferente que nos obriga a particularizar o código.  Só que para ser universal ele roda sobre uma outra camada de software, a JVM (Java Virtual Machine).  Ou seja, no fundo é um código interpretado.  Daí bem menos eficiente.

Mas finalmente me rendi ao inevitável.  E o inevitável é utilizar o que o mundo todo utiliza.  Não adianta um dinossauro ficar falando que Cobol é a melhor linguagem do mundo, se nem compiladores Cobol se encontra mais para as plataformas modernas!  Assim passei a programar Java, feliz da vida - procuro sempre ver o lado bom das coisas - porque ele é bem estruturado, e sua sintaxe quase igual à do C, que conheço bem e utilizo muito.

Já quando se fala de microcontroladores...  Aqui, senhores, o buraco é mais embaixo!  Estamos programando em um ambiente pequeno.  Poucos recursos.  Hardware extremamente limitado.  Diretamente sobre o hardware, ou em um SO muito simples, basicamente um gerenciador de tarefas, algumas vezes nem mesmo preemptivo.

Nesse caso (sei que muitos discordam de mim, mas mantenho minha posição) é necessário conhecer muito bem o seu hardware!  Conhecer o Assembler do "core" utilizado, para ser capaz de otimizar os loop mais apertados - codificando em Assembler ou, no mínimo, verificando o código gerado pela linguagem de alto nivel.  Se olharem na lista ali em cima, vocês verão os "Assembler" de todos os "core" que eu utilizei a fundo até hoje.

E, claro, conhecer uma linguagem de mais alto nivel adequada, que ninguém é de ferro para desenvolver toda uma aplicação complexa em Assembler.  E aí, no domínio dos microcontroladores, a única opção atual - e parece que por mais um bom tempo - é o C.

terça-feira, 19 de julho de 2011

Mais luz sobre a questão das Lâmpadas...

Depois de falar mal dos "kits" Xenon, me perguntaram sobre as lâmpadas halógenas "especiais" que estão no mercado.  Valem a pena, ou são apenas mais um truque para meter a mão no bolso dos desavisados?

A resposta a essa pergunta é, como tantas outras: depende...

Eu uso um par de lâmpadas especiais no meu carro.  Sem querer fazer propaganda, uso as Philips "X-treme Power".  Vamos analisar o que essas lâmpadas têm diferente, o que vale a pena e o que não vale.

Para começar, as lâmpadas halógenas têm uma relação entre brilho e vida bastante marcada.  A lâmpada padrão, que vem de fábrica na maioria dos carros, tem vida média de 600 horas.  Encontra-se no mercado lâmpadas "long life" (vida longa), que brilham menos, mas duram até 900 horas.  E as de alto brilho, que duram menos.

Até aí vale a opinião de cada um.  A Philips X-treme, por exemplo, tem um brilho de 2.000 lumens, contra 1.650 da padrão.  Em compensação, sua vida média está em torno de 400 horas.  Eu considerei a troca válida para o meu caso.  Você pode preferir a lâmpada que dure mais.  Nenhum de nós está errado.

O problema começa quando outras alterações são feitas.  A mais comum é utilizar lâmpadas de maior potência - existem as de 70, 80, 100 e até 110W, contra 60 da padrão.  Elas são produzidas especialmente para uso em "rallyes" e outros tipos de competição.  Se você as utilizar em seu carro normal, várias serão as consequências:
  • Você estará ilegal - essa alteração vai contra o código de trânsito de quase todos os países, inclusive o Brasil;
  • O refletor e a lente do seu farol não foram projetados para esse calor adicional.  Vão amarelar e envelhecer, depois de um ano vão parecer de um carro de 20 anos de idade;
  • Os interruptores e chaves podem não aguentar - o mais seguro seria colocar um relé;
  • A fiação pode também não aguentar - aí só trocando parte do chicote, o que é bastante complicado!
Outra alteração comum é colocar filtros azuis nas lâmpadas - as chamadas "cool blue" e similares.  Esses filtros só servem para uma coisa: fingir que você tem grana suficiente para ter um carro com Xenon!

Fala sério: você paga caro por uma lâmpada especial... aí paga mais caro ainda por um filtro que bloqueia parte dessa luz???  Só pra ficar mais branquinha??  Como é, mesmo?  Não entendi bem...

Resumo da história: se você quer mais luz, e acha que a menor vida da lâmpada vale a pena... perfeito, há boas opções no mercado.  Mas potências altas são para competições, em carros especiais e locais permitidos.  E filtro azul é só pra "bonito", só serve mesmo para piorar a iluminação!

Xe non dá certo... faça diferente!

Mein Gott... até eu me arrepiei com esse trocadilho horrível aí em cima!

Pois é... e essa polêmica sobre os faróis HID (Xenon) para automóveis?

Os faróis automotivos sofreram grande evolução ao longo do tempo.  Lanternas de carbureto em 1910, lâmpadas elétricas com refletores na década de '30.  Isso ficou sem grandes alterações até a década de '60, quando apareceram os "sealed beam" (faróis selados), aportuguesados aqui para "cilibim", que nada mais eram do que lâmpadas enormes, do tamanho do farol completo, e já com o refletor atrás.  Vantagem: uma camada de vidro a menos (e esse vidro costumava escurecer com o tempo), mais transparência, mais luz.

Depois, já nos anos '70, apareceram as lâmpadas halógenas.  A idéia é simples: na lâmpada convencional, a alta temperatura sublima (vaporiza), lentamente, o filamento de tungstênio.  Esse vapor, em contato com o vidro relativamente mais frio, vira pó e se deposita, escurecendo o vidro com o tempo.  Além disso, o filamento vai ficando mais fino, até que um dia se rompe (a lâmpada queima).

Os halogênios (especialmente o Iodo), em forma de gás devido à alta temperatura da lâmpada, combinam-se com o tungstênio, formando halido de tungstênio.  Ao passar junto ao filamento, a maior temperatura decompõe o halido, sendo o tungstênio metálico novamente depositado no filamento, e o halogênio liberado para um novo ciclo.  Resultado prático: pode-se aquecer mais o filamento, criando uma luz mais branca e maior eficiência, e o bulbo não fica escuro com o tempo.  Esse tipo de lâmpada acabou substituindo completamente as convencionais nos faróis automotivos, sendo absoluta na década de '90.

Mas aí começaram a aparecer novas tecnologias.  As lâmpadas de descarga já existem há bastante tempo - bons exemplos são as lâmpadas a vapor de mercúrio ou de sódio tão utilizadas em iluminação pública.  A novidade consistiu nas lâmpadas de descarga de alta intensidade (High Intensity Discharge, ou HID), utilizando Xenon em vez do Mercúrio ou do Sódio.  Essas lâmpadas têm uma intensidade de luz muito maior em relação ao seu tamanho, permitindo a construção de bulbos pequenos o suficiente para serem posicionados no ponto focal de um farol automotivo.

Os primeiros carros de luxo a utilizarem esses faróis foram alguns Mercedes e, logo depois, BMW.  Como não podia deixar de ser, a Mercedes criou um padrão de lâmpada (conhecido como D2R), e a BMW o alterou em alguns detalhes só para ser diferente (D2S).

Os faróis HID apresentam uma grande vantagem sobre os halógenos: a quantidade de luz emitida.  Os HID atualmente utilizados emitem cerca de 3.200 lumens, contra 1.600 de um halógeno comum, ou até 2.000 de um halógeno de última geração.  Mas essa vantagem não vem de graça: o bulbo HID é maior do que o filamento halógeno, apresentando maiores problemas para se projetar corretamente um farol que concentre e focalize a luz como desejado.  Seu sistema elétrico é bem mais complexo, sendo necessários inversores para fornecer tensões de 100V a 200V necessárias ao seu correto funcionamento.  Além disso, a lâmpada HID não emite como um corpo negro (um espectro contínuo) como a incandescente, prejudicando bastante a interpretação de cores pelo olho humano.

Esse último ponto é bastante discutível, mas muitos especialistas sustentam que o motorista, sem distinguir corretamente as cores, pode interpretar erroneamente um obstáculo, em uma emergência, sendo levado a um acidente.

Mas o pior de tudo ainda não foi dito!!!!!!

Fabricantes "picaretas" passaram a colocar no mercado lâmpadas HID "iguaizinhas" às halógenas, em forma de "kits de conversão" que permitem transformar um farol halógeno num HID!!

Iguaizinhas como, cara-pálida, se o bulbo de gás, parte fundamental da lâmpada, é diferente em forma e tamanho do filamento halógeno???  Observem aqui:

Aí o dono de um automóvel equipado com bons faróis halógenos vê um anúncio desses (ou tem um amigo que fez essa adaptação) e adapta esse kit maligno!  Resultado prático: ganha um farol com muito mais luz, mas pessimamente focalizada.  A quantidade de luz que ilumina o que interessa (a estrada, a área à sua frente) fica MENOR, a quantidade de luz espalhada que ofusca os outros motoristas fica drasticamente maior!  E o incauto sai por aí, enxergando menos, ofuscando muito mais, e feliz da vida, achando que está mais seguro.

Ou, pior ainda: sabe disso, mas quer porque quer o HID, por uma questão de "status" - EU tenho HID no meu possante, e você???  Desses não dá nem para ter pena, dá vontade de sair do carro com um martelo na mão e quebrar os seus queridos faróis Xenon!

E como estamos no Brasil... qualquer adaptação de veículos deve ser, obrigatoriamente, homologada por empresa credenciada e idônea.  Mas esse lei "não pegou", e as empresas "idôneas" muitas vezes aceitam um "por fora" para aprovar lixos como esse.  Agora saiu uma nova norma do DENATRAN, proibindo categoricamente a adaptação de HID em faróis não projetados especialmente para isso... será que vai pegar?

CAN do!

Mais uma perguntinha difícil que ouço sempre... afinal, que história é essa de carros com rede?  E essa tal de CAN?

Bom... é uma história um pouco longa, mas vamos lá!: nos primórdios do automobilismo, os carros não tinham sistema elétrico.  Um magneto, ligado direto ao motor, gerava impulsos elétricos para as velas, proporcionando a ignição do combustível... e só!  A iluminação era feita com lanternas de carbureto.  Sinal de freio era a mão do motorista levantada.  Partida era na manivela.

Percorremos um longo caminho desde essa época, não?  Os carros ganharam partida elétrica.  Faróis e lanternas elétricos.  Luzes de freio.  Limpadores de parabrisa.  Setas.

Depois, por um loooongo tempo (de 1940 até, aproximadamente, 1970) as coisas não mudaram muito (eletricamente) nos carros.  Aí, de repente, as coisas ganharam outro ritmo:  Segurança (ABS, air bags, faróis e limpadores de parabrisa automáticos).  Gerenciamento do motor (injeção eletrônica, câmbio eletrônico).  Conforto (ar condicionado, vidros e travas elétricos, painel de instrumentos, computador de bordo).  Manutenção (diagnóstico eletrônico).

Chegamos a um ponto em que o chicote elétrico de um carro é algo assustador.  Em alguns locais - perto dos instrumentos e comandos do painel, por ex. - passam literalmente centenas de fios em um ramo do chicote.

Vários fabricantes de sistemas automotivos começaram a procurar soluções para simplificar o processo.  A Bosch®, tradicional fabricante de equipamentos elétricos e centrais de controle automotivos, desenvolveu uma especificação de rede de comunicação especialmente para esse ambiente.  Anunciada em 1983 e padronizada em 1991, a CAN - Control Area Network - é uma rede de alta velocidade (até 1 Mb/s) voltada para controle de processos em tempo real.

A característica mais importante da CAN, comparada às redes mais comuns de computadores (como a Ethernet), é a priorização de mensagens.

Explico: em um controle em tempo real, algumas mensagens devem ter prioridade maior do que outras.  Por exemplo, é claro que uma mensagem "acionar air-bags" é MUITO mais importante do que uma "trocar estação do rádio".  A primeira PRECISA ser transmitida e executada imediatamente.  A segunda pode esperar até alguns segundos, sem qualquer prejuízo.

Para isso a CAN atribui um número de código a cada tipo de mensagem.  Esse código tem 11 bits, o que significa que podem haver cerca de 2.000 códigos diferentes.  Quando dois ou mais transmissores tentam utilizar o barramento ao mesmo tempo, o que está transmitindo o código mais baixo ganha o controle, e os outros são obrigados a esperar.  Assim, numerando as mensagem do código mais baixo (mais importantes) para o mais alto (menos importantes), é estabelecida a priorização das mensagens.

O resultado prático da utilização da rede é que, onde anteriormente era necessário passar centenas de fios, com a CAN passa-se apenas a alimentação e um par trançado para comunicação.  E a microeletrônica atual chegou a um nivel de custos que os controladores CAN espalhados pelo carro podem acabar sendo mais baratos do que o enorme chicote convencional - e a mão de obra utilizada para conectar todos aqueles fios.

segunda-feira, 18 de julho de 2011

Resposta I - a família ARM

No início da década de '90, Acorn Computers projetou e produziu uma linha de processadores de 32 bits RISC que foram chamados de Acorn RISC Machine. Esse nome foi logo mudado para Advanced RISC Machine (ARM), como são conhecidos até hoje esses processadores.

A relativa simplicidade dos ARM os torna adequados para aplicações de baixo consumo.  Assim eles se tornaram dominantes no mercado de Telefones Celulares e equipamentos de automação.  Em 2009, os ARM já constituíam 90% de todos os processadores RISC de 32 bits, e são hoje muito utilizados em eletrônicos domésticos, como PDAs, Celulares (especialmente "smartphones"), "players" de música e vídeo, calculadoras e periféricos como HDs e Roteadores.

A arquitetura ARM pode ser licenciada, e grande número de empresas hoje produzem suas versões de ARM, entre elas Alcatel-Lucent, Apple Inc., Atmel, Broadcom, Cirrus Logic, Digital Equipment Corporation, Freescale, Intel, LG, Marvell Technology Group, Microsoft, NEC, Nuvoton, Nvidia, NXP (Philips), Oki, ON Semiconductor, Qualcomm, Samsung, Sharp, STMicroelectronics, Symbios Logic, Texas Instruments, VLSI Technology, Yamaha and ZiiLABS.

Por ser uma arquitetura RISC de 32 bits, e de projeto bastante recente, ARM é atualmente a família de maior desempenho entre os microprocessadores e microcontroladores em uso.  Por isso sua extensiva utilização em equipamentos que exigem alta velocidade de processamento e de transmissão de dados, como os citados acima.

É importante notar que, ao contrário das outras famílias citadas aqui, nem todos os ARM são, tecnicamente, microcontroladores.  Vários modelos ARM (especialmente os maiores) não dispõem de memória Flash e/ou RAM internas, sendo responsabilidade do programador escolher que tipo e quanta memória de cada tipo quer utilizar, e incluir essas memórias no hardware, junto com o processador.

Vários modelos de ARM chegam a desempenhos de mais de 10 MIPS.  Leve-se em conta que, comparado a processadores de 8 bits, cada instrução de um modelo 32 bits vale por (teoricamente) até 4, e fica patente seu alto desempenho frente às arquiteturas mais simples.

Mas nada disso é gratuito.  Os ARM são processadores bem mais caros que os mais simples, de 8 ou 16 bits.  Esse custo é, com certeza, justificado em dispositivos de alto desempenho.  Mas o projetista deve ter sempre o bom senso de analisar cuidadosamente seu projeto, e decidir frente às necessidades envolvidas (e não frente à sua preguiça em otimizar os códigos) qual a família mais adequada.

Resposta I - a família Freescale

Freescale foi um dos primeiros fabricantes de semicondutores do mundo, tendo começado como uma divisão da Motorola, em 1949.  Nos anos '60, a Freescale forneceu milhares de semicondutores para a NASA, incluindo rastreadores em terra e unidades de rastreamento e comunicações a bordo das naves Apolo.  O primeiro microprocessador da empresa, o MC6800 de 8 bits, de 1964, foi utilizado em aplicações automotivas, de computação e de jogos.  Entre nós, os informatas mais... errrrr... experientes... quem não se lembra do Apple® II e seu processador MC6800?

A geração seguinte, o MC68000 de 32 bits, de 1984, provocou uma verdadeira revolução, equipando os computadores da Apple®, Sun®, e Hewlett Packard®

Nos anos '90, seus controladores equiparam as primeiras unidades de chaveamento inteligente de freios ABS e sensores para "air bags".  Até hoje seus controladores são responsáveis por inúmeros equipamentos que utilizamos no dia a dia.

Atualmente a Freescale utiliza uma filosofia de desenvolvimento bem interessante em sua linha de microcontroladores: em torno de alguns "cores", como o S08 e HC08 de 8 bits, o S12 de 16 bits e o ColdFire de 32 (este último baseado no original MC68000), foi desenvolvido um grande número de periféricos, como interfaces de comunicação (SCI, SPI, I2C, USB, CAN), A/D de 10 e 12 bits, Timers com captura e PWM, funções especiais (como controle de LCD) e outros.  Combinando esses periféricos com diferentes quantidades de memórias Flash e RAM e de portas de IO (encapsulamentos maiores ou menores), o resultado é uma enorme linha de microcontroladores, entre os quais se pode escolher o mais adequado a uma determinada necessidade.

O comentário que fiz sobre os Atmel 89C é válido também aqui: o projeto do "core" MC6800 é digno de um Ferdinand Porsche!  Esse "core" de quase 40 anos de idade continua atual, robusto e confiável, além de ter, em suas versões de 8 bits, talvez a melhor razão custo/benefício entre todas as famílias em uso atualmente.  Isto não deixa de ser um alento para mim, que com meu "core" de mais de 50 anos pretendo continuar ativo, projetando equipamentos, tendo idéias originais e, de uma maneira geral, enchendo o saco de todos em volta por bastante tempo ainda!!

S08 (o "core" mais comum entre os de 8 bits) é uma família de microcontroladores CISC de 8 bits.  Conta com uma RAM bem mais generosa do que outras famílias de 8 bits, chegando a 8 kB, e Flash de até 128kB.  Frequências de clock até 20 MHz geram ciclos de instrução de até 5 MHz.  Levando em conta a arquitetura CISC, esse clock permite um desempenho da ordem de 3 MIPS.

Resposta I - a família Microchip PIC

Embora baseado num processador - o CP1600 da General Instruments - de 1975, o primeiro PIC como o conhecemos hoje foi o PIC16C84, de 1993.

Bastante revolucionário na época, ele introduziu conceitos hoje comuns, como a arquitetura "Harvard", que apresenta barramentos de dados e programa separados, e o RISC.  A idéia original era um microcontrolador de baixo custo, fácil de programar e de alto desempenho.

Ao contrário do esperado, a família PIC de 8 bits (a primeira) não fez tanto sucesso na área industrial.  Porém seu baixo custo e facilidade de programação a tornaram a preferida dos "hobistas" de todo o mundo.

Atualmente os modelos PIC16 de controladores de 8 bits e instruções de 14 bits são os mais conhecidos, embora os PIC18, mais modernos e com instruções de 16 bits, tenham maior desempenho.

Talvez a maior limitação dos PIC16 - quem sabe a razão de seu sucesso menor do que o esperado - seja a "stack" não endereçável.  A "stack" desses modelos só é utilizada internamente, para controle de retorno de funções.  O programador não pode ler, escrever ou alterar a "stack" ou seu ponteiro.  Isso significa, na prática, que gerenciamento de tarefas preemptivo é impossível e, mais importante ainda, é extremamente difícil implementar código reentrante, já que não se pode alocar variáveis na "stack".

Os PIC18 resolveram esse problema - sua "stack" já é endereçável - mas quando foram lançados, em 2000, os PIC já eram conhecidos há quase uma década, tendo feito sua fama de "baixo custo, porém simples e limitados".  Além do que os PIC18 sempre foram muito caros, o que em nada ajudou sua popularização.

Posteriormente a Microchip introduziu as linhas de controladores de 16 bits (PIC24 e dsPIC, em 2004) e 32 bits (PIC32, em 2007), com muito alto desempenho.

PIC16 é uma família de microcontroladores RISC de 8 bits.  Conta com uma RAM bastante limitada (256 Bytes), e Flash de até 8kB.  Frequências de clock até 20 MHz geram ciclos de instrução de até 5 MHz.  A arquitetura RISC, se por um lado exige instruções muito simples, por outro reduz o número de ciclos por instrução a praticamente 1/1, apresentando um desempenho da ordem de 5 MIPS.

PIC18 tem como seus maiores diferenciais instruções mais complexas, de 16 bits, e "stack" endereçável.

Resposta I - a família Atmel 89C

Na década de 1930 Ferdinand Porsche projetou um novo carro, bem diferente dos padrões da época.  Porsche era uma gênio, e sua criação foi a origem de não apenas uma, mas DUAS lendas: o VW "Beetle" (o "Fusca") e o Porsche 911.

Quarenta anos depois, já na década de '70, o Fusca ainda era campeão de vendas no Brasil.  Ainda hoje, quase 80 anos depois de seu projeto inicial, ainda é visto por aí, rodando e prestando bons serviços.

Neste ano, já na segunda década do século XXI, a Porsche apresentou mais uma versão do consagrado 911.  Claro que ele mudou muito nesses quase 80 anos, mas suas linhas ainda podem ser reconhecidas.  E esse clássico faz a cabeça de milhões de entusiastas no mundo todo (incluindo este que vos fala!)

Na década de 1970 a Intel criou uma família de microprocessadores chamada inicialmente de 8051.  Foi um sucesso estrondoso, utilizado em projetos de automação pelo mundo todo.  Posteriormente agregou a ele memória RAM volátil, memória EPROM não volátil para programas, transformando-o num microcontrolador, e redesenhou o chip com arquitetura CMOS, mais moderna, criando o 87C51 (o "7" tradicionalmente indica a presença de memória EPROM, e o "C" é testemunha da arquitetura CMOS).

No fim da década de '80, a Intel começou a fazer um enorme sucesso com sua linha de grandes processadores - na época o 8086, pioneiro de 16 bits, que evoluiu para o 80286, '386, '486, Pentium... e que até hoje equipa milhões de computadores pelo mundo.  Comprometida com esse novo foco, vendeu seu projeto de automação para outra empresa, a Atmel.

Mais tarde, ficando mais comum e barata a tecnologia de memória não volátil "Flash", a Atmel criou o AT89C51, já com essa memória.  Evoluções posteriores foram o AT89C52, AT89C55WD, o "compacto" AT89C2051 de 20 pinos, e toda uma série mais moderna de microcontroladores.

O "core" 8051 foi um projeto digno de um Ferdinand Porsche.  Hoje, quase 40 anos depois, não se pode dizer que os Atmel 89C sejam a família mais moderna, mais rápida ou com mais recursos no mercado.  Mas em quase qualquer lugar que se procure, lá está um AT89C.  Robusto, confiável, prestando bons serviços.

AT89C é uma família de microcontroladores CISC de 8 bits.  Tradicionalmente conta com uma RAM bastante limitada (256 Bytes), embora muitos possam endereçar memória externa, e Flash de até 20kB.  Frequências de clock até 24 MHz geram ciclos de instrução de até 2 MHz.  Mas a arquitetura CISC, se por um lado permite instruções mais complexas, por outro aumenta o número de ciclos por instrução, apresentando um desempenho da ordem de 1 MIPS.

Pergunta I

A pergunta que ouço quase todos os dias, de todos os interessados em aprender microeletrônica:

- Mas afinal qual é a melhor família de microcontroladores? Qual devo me dedicar a aprender?

Ihhhhhhhhhhhh... (se você está em dúvida, este é o "Ihhhhhhhhhhh" que você ouve do seu mecânico, logo após descrever o defeito estranho que apareceu no seu carro - e que faz você se arrepiar todo).

Isso é que nem perguntar: "qual é o melhor meio de transporte?"

O melhor para onde, cara-pálida?  Você está indo do Rio a São Paulo?  Ou será que seu destino é a África Equatorial?  Não acho muito boa idéia tentar ir à África no seu fusca, assim como ir de navio a Sampa talvez não seja prático...

Claro que existem limites.  Entre um Ford Modelo T de 1922 e um VW Gol 2000, eu escolheria o VW sem grandes medos de errar, já que o outro é tão obsoleto que provavelmente vai ter montes de desvantagens, sem nenhuma vantagem em contrapartida.

Mas geralmente a resposta não é tão óbvia: você tem um sítio, num local cheio de poeira no verão e lama no inverno.  Um SUV 4x4?  Perfeito!!  Mas visite alguns sítios desses e você vai ver montes de fuscas com 40 anos de idade prestando bons serviços.  E por que?  Porque ele passa pelos mesmos lugares (talvez com menos conforto), e custa muuuuuuuuito menos para comprar, manter e abastecer.  É o onipresente conceito do custo-benefício mandando na nossa vida!

Microcontroladores, como tudo o mais nessa vida, apresentam problemas parecidos de escolha.  Podemos descreve-los, citar características, vantagens e desvantagens... mas é quase impossível apontar para um e dizer: "Este é o ideal!" - mesmo quando se conhece em detalhes a aplicação desejada.

Nos próximos textos vamos falar um pouco de várias famílias em uso atualmente, e tentar clarear um pouco esse caminho.