Frequência de medição de um sinal acima de 5V com um microcontrolador


11

Quero medir a frequência (até 300 Hz) de um sinal retangular, que varia entre 0V e Vtop, onde Vtop é qualquer coisa entre 5V e 15V. Como não posso aplicar mais de 5V no microcontrolador ( PIC16F1827 ), preciso limitar a tensão de alguma forma.

Minha primeira idéia foi usar um divisor de tensão. Mas então o sinal de entrada de 5V seria baixo.

A segunda abordagem é usar um opamp ( TS914 ). Quando eu estiver ligando a 5V, a saída não excederá 5V. Eu já tenho esse opamp no meu projeto, para filtrar outra medição de tensão. Mas quando olho para a folha de dados, diz (Na seção "Avaliações máximas absolutas"):

A magnitude das tensões de entrada e saída nunca deve exceder VCC + + 0,3V.

Devo adicionar outro opamp, por exemplo, LM324 ? A folha de dados diz (Faixa de tensão de modo comum de entrada (Nota 10)):

A tensão do modo comum de entrada de qualquer tensão do sinal de entrada não deve ser negativa em mais de 0,3 V (a 25 ° C). A extremidade superior da faixa de tensão em modo comum é V + - 1,5V (a 25˚C), mas uma ou ambas as entradas podem ir para + 32V sem danos (+ 26V para LM2902), independentemente da magnitude de V +.

Portanto, o LM324 não seria danificado, mas funcionaria no meu design (emitindo um sinal retangular de 5V)?

A última idéia que tive foi usar diodos zener. Isso funcionaria?

O que você faria para resolver esse problema? Existe outra possibilidade em que eu não pensei?


1
O documento que o @Curd mencionou - TI - Latchup, ESD e outros fenômenos é excelente e deve ser uma leitura obrigatória para todos os projetistas de circuitos. NO ENTANTO , observe que na seção 3, onde ele cita os comentários que eles fazem sobre diodos de proteção externos e resistores de entrada em série, o contexto e o assunto são descargas eletrostáticas transitórias - alta tensão, mas energia máxima bem definida, NÃO aplica sinais externos a sinais contínuos. A seção 4 discute os transistores parasitários aos quais me referi.
Russell McMahon

Respostas:


17

Solução resumida:

  • Um único transistor e 3 resistores receberão um sinal de 0V \ "5V ou mais" e produzirão uma saída de 5V / 0V. Com um exemplo de valor do resistor, a carga no sinal é de cerca de 80 uA a 5V e 250 uA a 15V. Isso pode ser reduzido para dizer 8 uA / 25 uA, se desejado, e ainda mais baixo, se necessário. (Versão maior do diagrama abaixo).

insira a descrição da imagem aqui

  • Um resistor de 390 ohm e um zener de 4V7 farão o que você deseja, desde que você possa tolerar a carga de corrente de entrada de 25 mA.

  • O uso de um amplificador operacional permite resultados um pouco melhores, mas a solução de um transistor deve ser totalmente adequada.

  • NUNCA permita que o diodo de aperto / proteção do IC carregue corrente durante a operação normal. Você está convidando a não confiabilidade e a operação inesperada e possivelmente inadequada todos os dias da vida do seu produto. Fazer isso durante a operação normal sempre viola as condições da folha de dados.

    • Você PODE se safar com alguns uA ou mesmo alguns 10s de uA e pode achar que se safou de usá-los para transportar 100's de uA. CADA aplicação que utiliza os diodos de proteção para transportar mais de meio cheiro de corrente em operação normal está violando as especificações da folha de dados e convidando Murphy para almoçar.
      Os resultados são imprevisíveis.
      Nenhum design profissional faria isso .
      As notas de aplicativos que recomendam geralmente não são profissionais.
      Veja a seção no final desta resposta.

Solução de transistor único:

A entrada é mostrada como 5-15V, mas qualquer coisa acima de 4V funcionará.
Quando vin = 4V Vbase = R2 / (R1 + r2) x 4V = 0,6V.
Isso é idealmente adequado, mas em 5V você tem drive mais do que suficiente.

Os valores R1 e R2 mostrados são sugestões.
Valores de, por exemplo, 100k e 560k poderiam ser usados ​​se R3 apropriado e transistor beta alto fossem usados.

A saída é inversa da entrada. ou seja, Vout é baixo quando Vin está alto.

insira a descrição da imagem aqui

R3 pode ser 10k ou o que for mais adequado.

Q1 para se adequar. Eu usaria um equivalente BC337 ou SMD (BC817?)

Se se deseja uma corrente de entrada muito baixa, R1 e R2 podem ser aumentados bastante com algum cuidado. por exemplo, com R1 = 1 megaohm, a corrente de entrada é de cerca de 15 uA a 15V e 5uA a 5 Volts. Se o transistor Q1 tiver um ganho de corrente de 100 (muito seguro, por exemplo, BC337-40), então Icollector = 500 uA, portanto, para um balanço de 5V R3> = 10k, diga que 22k up está OK.

Um fato extremamente valioso para saber sobre divisores resistivos !!!

Um fato pouco apreciado é que a razão entre dois valores de resistores N separados em uma escala de resistores padrão é quase constante.
Isso está implícito na maneira como os valores da escala são escolhidos.
Os valores do resistor E12 são

1
1,2
1,5
1,8
2,2
2,7
3,3
3,9
4,7
5,6
6,8
8,2
(10, 12, 15 ...)

12 valores e, em seguida, a série repete uma escala de 10x mais alto.

Então - os valores de 56k e 10k que mostrei para R2 e R1 estão separados por 8 valores. ou seja, comece com o valor 1 acima e conte 9 lugares e você obtém 5,6
QUALQUER dois valores 9 separados têm a mesma proporção (dentro da tolerância da escala) e podem ser usados ​​para formar um divisor aproximadamente equivalente.
por exemplo, qualquer um dos 56k / 10k, 68k / 12k, 82k / 15k 100k / 18k etc.

Um diodo zener + um resistor farão o que você deseja, desde que a carga no circuito de entrada seja aceitável. Se você deseja reduzir a carga, um projeto baseado em opamp seria melhor.

A página 350 da folha de dados fornece níveis de tensão de entrada altos e baixos. O nível adequado depende do pino de entrada que você está usando, mas o valor mais seguro é> = 0,8 x Vdd ou em Vdd = 5V, Vinhi> = 4V.
A folha de dados também observa que Vin não deve ser maior que Vdd + 0,3V ABSOLUTE MAXIMUM (mesmo que não esteja funcionando corretamente) e, na prática, qualquer coisa acima de Vdd seria arriscado.


AVISO:

A recomendação da coalhada de usar uma braçadeira de diodo para o Vdd é prática comum, mas muito arriscada, pois injeta corrente no CI em locais não desejados pelo fabricante durante a operação normal. Os resultados variam e serão imprevisíveis. O uso de um Shottky em vez de um diodo de silício torna isso menos arriscado, mas ainda desaconselhado, e viola até as especificações máximas absolutas do fabricante.


Braçadeira Zener:

Este circuito simples pode muito bem ser suficiente.

insira a descrição da imagem aqui

O importante é garantir que o Vout atenda às suas especificações o tempo todo. Muitas pessoas usam um diodo zener xx Volt e assumem que terão XX volts. Em correntes baixas, isso geralmente está longe de ser verdade. As curvas abaixo mostram a tensão do zener com corrente para os zeners típicos. Observe que o zener 4V7 requer cerca de 1 mA de corrente para conduzi-lo acima de 4V. Se projetarmos no mínimo 2 mA, tudo ficará bem. Isso produz um resultado talvez inesperado.
5V in. I = 2 mA. Vzener esperado = 4V2.
R = (5V - 4,2) / 0,002 A = 0,8 / 0,002 = 400 ohms.
Diga 390 ohms = valor padrão do resistor E12.

Em 15 V, esperamos que a corrente seja SOBRE (15-5) / 400 = 25 mA.

25 mA pode ser mais do que você deseja permitir.

Uma faixa mais baixa de Vin permitirá uma faixa mais baixa de Imin-Imax e Vin min alguns volts acima de 5V também ajudaria bastante.

Potência no resistor = V x I = (15-5) x 25 mA = 250 mW = resistor de 500 mW.

insira a descrição da imagem aqui

Curvas de tensão de corrente Zener V02 x2.jpg

Exemplo de folha de dados zener


DIODOS DE PROTEÇÃO:

Muitas pessoas desconhecem ou simplesmente ignoram a distinção entre as especificações "Máximo absoluto" e as condições operacionais recomendadas.

As classificações máximas absolutas são aquelas que garantem a sobrevivência do dispositivo sem danos. A operação correta não é garantida.

O PIC em questão permite Vdd + 0.3V em seus pinos como uma classificação máxima absoluta. A operação não é garantida durante esta condição.

A maioria das folhas de dados especifica claramente que, durante a operação normal, as tensões de entrada não devem exceder a faixa de terra para Vdd. Esta folha de dados pode ou não ro-lo em várias centenas de páginas. Ainda é errado fazer isso.

Muitas pessoas pensam que as preocupações com as correntes dos diodos de proteção são infundadas. Apenas alguns deles estragaram o dia em que pensaram assim e a maioria provavelmente viveu para lamentar ou não :-).

Observe que a nota de aplicação Atmel (má) aqui usa um resistor de 1 megaohm (conectado à rede elétrica CA!) E a nota do aplicativo Microchip aqui - as figuras 10-1 10-2 têm pelo menos a graça de dizer "... A corrente através os diodos de fixação devem ser mantidos pequenos (na faixa de micro amp). Se a corrente através dos diodos de fixação for muito grande, você corre o risco de a peça travar. " Atmels centenas de uA NÃO são "inh the microamp range".

MAS trancar é o menor dos seus problemas. Se você prender a peça (ação de SCR desencadeada por correntes no substrato do CI), o IC geralmente se transforma em uma ruína de fumar e você percebe que algo pode estar errado.

O problema com as correntes de diodos corporais é quando você NÃO recebe uma ruína imediata do fumo. O que acontece é que o IC nunca foi projetado para aceitar corrente entre o pino de entrada e o substrato - a camada em que o IC é colocado. Quando você eleva Vin> Vdd, a corrente eficientemente flui para fora do ICV propriamente dita, em um mundo de fadas fantasma, do qual o iC desconhece e que o designer não projetou e geralmente não pode projetar. Uma vez lá, você tem pequenas potências configuradas que nunca estão normalmente lá e a corrente pode fluir de volta para os modos de circuito adjacentes, de nós não muito adjacentes ou mesmo para locais a alguma distância, dependendo do tamanho das correntes e das tensões configuradas. A razão pela qual isso é difícil de descrever e definir é porque é totalmente indesejável e essencialmente indesejável. Um efeito é injetar correntes em nós flutuantes que não possuem caminho de saída formal. Eles podem atuar como portões para os TFE - formais ou acidentais, que ativam ou desativam partes semi-aleatórias do seu circuito. Quais partes? Quando? Com que frequência? Quão mais? Quão difícil? A resposta - quem pode dizer / ninguém pode dizer - é indesejável e não designável.

P: Isso realmente acontece? A: Ah sim! P: Eu já vi isso acontecer? A: sim

Comecei o que agora provou ser uma cruzada de mais de uma década para conscientizar as pessoas sobre o assunto (mesmo que eu devesse estar ciente disso) depois de ter sido muito picado por ele.
Eu tinha um circuito serial assíncrono relativamente simples que não me causou nenhum fim. A operação do processador foi intermitente ou semi-aleatória. Código com falha algumas vezes e outras não. Nada estava estável. O problema? Condução do diodo corporal, é claro. Eu havia copiado um circuito simples de uma nota de aplicação fornecida com um produto e fomos embora.

Se você fizer isso sem o devido cuidado, ele o morderá.
Se você fizer isso com cuidado, inteligência e design, pode não mordê-lo. Mas pode.
Isso é semelhante a puxar a linha central para o tráfego contínuo para ultrapassar - feito com cuidado e com pouca frequência e deixando margens que podem ser boas o suficiente para que você geralmente não morra. Se você o fizer, provavelmente não ficará surpreso :-). O mesmo acontece com a condução do diodo corporal. O alcance do microamp da microchips "pode ​​estar OK. O 1 megaohm da Atmel fora da rede elétrica é um acidente esperando para acontecer.


Russel, acho que suas preocupações são infundadas. O que propus não é apenas uma prática comum, mas também é recomendado por um fabricante em uma de suas notas de aplicação. Veja o complemento na minha postagem.
Coalhada

Russel, apoie seus avisos em algumas publicações substanciais ou em dados experimentais próprios que podem ser reproduzidos. Caso contrário, você está apenas fazendo esoterismo.
Coalhada

1
@ Curd - Sua resposta foi mais de 30 minutos após a minha atualização, por isso suponho que você não a leu, ou não a entendeu, ou optou por ignorá-la. Como eu disse (1), isso aconteceu (2) Por definição, NÃO é reproduzível com precisão, exceto em casos graves. (3) Você pode facilmente fazer isso sozinho. Descrevi minha configuração experimental suficientemente bem para 'um especialista na técnica' = recebimento em série assíncrono com diodos corporais agindo como grampos. Resultados = caos. (4) Esoterismo é uma grande palavra, MAS você entendeu o aspecto indesejável e indigno de design e que DEVE violar a folha de especificações para fazê-lo?
Russell McMahon

1
Primeiro fiquei impressionado com essa parede de texto, mas depois de passar por ela, gosto muito da sua resposta. Ele ainda tem algumas informações úteis. Obrigado!
precisa saber é o seguinte

1
+1 Isso precisa chegar ao topo, especialmente em contraste com a resposta ruim do @Curd.
26612 Olin Lathrop

5

Basta usar um inversor feito de um único transistor e alguns resistores. Como você está medindo a frequência, não importa se o sinal está invertido ou não - a frequência é a mesma. Você pode usar um "transistor digital" que tenha os resistores internos ou quase todos os transistores comuns e adicionar o resistor de base (mais ou menos 10K) do lado de fora (aquele entre a base e o emissor não é obrigatório, mas você também pode adicioná-lo) . Eu usei este circuito para converter tensão de 25Vtop para 5Vtop para medir a frequência da linha CA.

inversor de transistor único


5

A maneira mais fácil é fixar o sinal de entrada em Vcc (+ 5V):

braçadeira para Vcc

O valor do resistor não é crítico, mas não deve ser muito pequeno; talvez na faixa de 10 a 100 kOhms.

Se você é realmente exigente quanto ao requisito de Vcc + 0.3V, use um diodo Schottky; mas acho que seu µC não será prejudicado se você usar um 1N4148 comum.

EDIT:
Para apoiar minha opinião de que é completamente salvo usar este circuito (em contraste com as preocupações mencionadas nos comentários), consulte as seguintes publicações sobre este tópico; principalmente dos fabricantes de IC:

Microchip:

capítulo 8.pdf , dica nº 10, figuras 10-1 e 10-2

Muitos fabricantes protegem seus pinos de E / S de exceder a especificação de tensão máxima permitida usando diodos de aperto. Esses diodos de fixação evitam que o pino fique mais do que uma queda de diodo abaixo do VSS e uma queda de diodo acima do VDD. Para usar o diodo de fixação para proteger a entrada, você ainda precisa observar a corrente através do diodo de fixação. A corrente através dos diodos do grampo deve ser mantida pequena (na faixa de micro amp). Se a corrente pelos diodos de aperto for muito grande, você corre o risco de a peça travar.

Microchip-Fig10

Atmel:

doc2508.pdf , Figura 1

Para proteger o dispositivo de tensões acima do VCC e abaixo do GND, o AVR possui diodos de fixação internos nos pinos de E / S (consulte a Figura 1). Os diodos são conectados dos pinos ao VCC e ao GND e mantêm todos os sinais de entrada dentro da tensão de operação do AVR (veja a Figura 2). Qualquer voltagem maior que VCC + 0,5V será forçada até VCC + 0,5V (0,5V é a queda de tensão no diodo) e qualquer voltagem abaixo de GND - 0,5V será forçada até GND - 0,5V.
Ao adicionar um resistor grande em série, esses diodos podem ser usados ​​para converter um sinal sinusal de alta tensão em um sinal de onda quadrada de baixa tensão, com amplitude dentro da tensão operacional do AVR ± 0,5V. Os diodos fixam, assim, o sinal de alta tensão na tensão operacional do AVR.

Atmel-Fig1

Instrumentos Texas

slya014a.pdf "3.7 Circuitos de proteção externa", Fig. 13

Normalmente, não há dificuldade em escolher um resistor adequado para o circuito de entrada. Valores de resistores de 1 kΩ a 10 kΩ geralmente são adequados. Na prática, geralmente é adequado usar apenas um resistor de alto valor, sem diodos adicionais.

TI-Fig13

e mesmo para CIs analógicos, a
Analog Devices propõe

Sobretensão EDch 11 e emi.pdf

Para os amplificadores em que a proteção externa é claramente necessária contra abuso de sobretensão e inversão de fase de saída, uma técnica comum é usar uma resistência em série, Rs, para limitar a corrente de falta e os diodos Schottky para prender o sinal de entrada às fontes, como mostrado em Figura 11.7. A resistência da série de entrada externa, Rs, será fornecida pelo fabricante do amplificador ou determinada empiricamente pelo usuário com o método mostrado anteriormente na Figura 11.2 e na Eq. 11.1 Frequentemente, o valor desse resistor fornecerá proteção suficiente contra a inversão de fase da tensão de saída, além de limitar a corrente de falha através dos diodos Schottky.

AnalogDevices-Fig11.2

AnalogDevices-Fig11.7

Máxima

Proteção contra sobretensão (OVP) para aplicações de amplificadores sensíveis

Uma regra prática do setor é selecionar RLIMIT para que não mais que 5mA flua através da entrada do IC.

MaximFig01

Finalmente, vamos ver o que
Horowitz / Hill "A Arte de Electronis" tem a dizer sobre este tópico:

Uma entrada CMOS não consome corrente (...) para tensões de entrada entre o terra e as tensões de alimentação. Para tensões além da faixa de suprimento, a entrada parece um par de diodos de aperto no suprimento positivo e no terra. É necessário apenas correntes momentâneas superiores a cerca de 10mA através desses diodos para colocar muitos dispositivos CMOS no trinco SCR (...; projetos mais recentes suportam correntes mais altas e tendem a ser resistentes ou imunes a esta doença; por exemplo, HC e HCT as famílias podem ser conduzidas 1,5V além dos trilhos de suprimento sem mau funcionamento ou danos).

EDIT2:
Acho que Russel está tão preocupado com o efeito Latch-up, que os CIs modernos são muito mais resistentes, como nos primeiros dias. Talvez isso explique de alguma forma sua "cruzada de mais de uma década".

EDIT3:
A folha de dados do PIC16F1827 ("30.0 ESPECIFICAÇÕES ELÉTRICAS") diz que as classificações máximas absolutas para a corrente Ik da braçadeira são 20mA. Essa é a corrente que danificaria o chip. A nota do aplicativo propõe uma corrente na faixa de µA.

EDIT4
Encontrei outra nota de aplicativo da Microchip dedicada exclusivamente à questão "Usando os diodos parasitários ESD em microcontroladores de sinais mistos" .

Diz que sobretensão (mais que Vdd + 0.3V) pode causar problemas se aplicada aos pinos que podem ser usados ​​como entradas analógicas.

A primeira solução é impedir que qualquer sobretensão apareça nos pinos de E / S do microcontrolador. Isso pode ser feito adicionando diodos Schottky ao VDD e ao VSS em cada pino que pode ver uma alta tensão. Isso prenderá as tensões em VDD + 0.3V

... como sugeri desde o início.

O documento também deixa claro que não é verdade que a sobretensão aplicada a uma entrada do controlador Microchip resulte em correntes no substrato (conforme reivindicado nos comentários). Isso só pode acontecer com subtensão (= abaixo de Vss; consulte o parágrafo "Subtensão"), que não é o tópico desta pergunta.

(Essas correntes no substrato não podem ocorrer com sobretensão e subtensão, porque depende do dopagem do substrato. É dopado em p ou em n, e não ambos ao mesmo tempo)


1
O exposto acima não pretende ser um "ataque". Compreendo que criticar as sugestões de alguém muitas vezes não é agradável. | Você está em boa companhia :-) - MUITAS pessoas fazem esse tipo de coisa e defendem a prática teimosamente. O fato é que ele viola as especificações da folha de dados e PODE causar problemas ocultos desconhecidos. Pode funcionar bem por horas, dias, semanas, meses ou anos. E também pode causar problemas desconhecidos e não rastreáveis ​​em andamento. DEVE ser "evitado como uma praga". | Um dos meus objetivos de vida é educar a humanidade sobre este problema em particular :-) :-) :-)
Russell McMahon

1
@ Russell McMahon: obrigado por sua opinião cética, mas eu apreciaria mais se você pudesse fornecer alguma justificativa substancial (por exemplo, links para publicações sobre o assunto ou experiências próprias que possam ser reproduzidas).
Coalhada

2
@ Curd: Russell está certo. Seu circuito provavelmente funcionaria na maioria das vezes, mas não é uma boa ideia. No mínimo, não deve ser recomendado sem apontar esse problema. Uma solução simples seria seguir a sua saída com um divisor de tensão que reduz 5,7V a 5,0V.
Olin Lathrop

1
@Olin e Russell: você não forneceu nenhuma justificativa substancial para o que está dizendo - e muito menos que os fabricantes (por exemplo, Mircochip, Atmel) recomendam nas notas de aplicativos exatamente o que eu propus. Por favor, leia-os antes de continuar a discutir.
Coalhada

1
Eu já vi todo tipo de design ruim nas notas do aplicativo. Verifique as especificações reais, que estão na folha de dados. Observe a tensão máxima do pino durante a operação e você verá que uma queda de diodo acima de Vdd é muito alta. Eu pessoalmente vi problemas de uma pinça de diodo exatamente como você mostra. Não me lembro do PIC exato, mas as leituras A / D foram confusas quando a corrente passou pelo diodo de proteção lateral alto de outro pino. Esse material é real.
26612 Olin Lathrop

1

Basta usar um divisor e um amplificador não inversor alimentado a 5V com ganho de pelo menos 3x.

Então, em 5V, você terá novamente uma saída de 5V, e o mesmo em 15V, porque irá saturar. Talvez seja melhor usar uma solução ferroviário a ferroviário, mas não é completamente necessário se você deseja apenas detectar arestas.


0

Você pode considerar algo pronto para uso, como um transceptor ou receptor RS232. A maioria suporta até 25V (já que a especificação RS232 é +/- 25V máx.) E algumas tensões ainda mais altas, além disso, você pode obter isolações 100% para proteger seu circuito de loops de terra e outros problemas elétricos ruins.

Embora o RS232 deva ter +/- tensões, os chips RS232 mais modernos consideram um pouco acima do solo como o limiar para um sinal negativo; portanto, sua entrada deve funcionar com eles. A razão pela qual isso deve funcionar nos chips RS232 é que muitas saídas bastardizadas do RS232 não produzem +/-, mas são sinal positivo ou terra, portanto os modernos chips RS232 devem trabalhar com esses tipos de sinais. Verifique cada folha de dados para o limite.

Os sinais no nível lógico emitidos serão invertidos, mas isso não deve ser motivo de preocupação, porque você está medindo a frequência.

+/- 50V isolado, 3.0V a 5.5V, 250kbps, 2 Tx / 2 Rx, transceptor RS-232: http://www.maxim-ic.com/datasheet/index.mvp/id/3368

Vários outros chips RS232: http://www.maxim-ic.com/products/protection/esd/rs232.cfm


A menos que você já tenha um transceptor RS232 não utilizado no circuito, isso não é muito econômico. As entradas de alta tensão são uma pequena parte do silício que você está comprando. A resposta da Pentium100 descreve um circuito equivalente muito mais barato e menor.
Kevin Vermeer

-1

Vocês com problemas especiais com diodos corporais ou diodos de fixação provavelmente não tinham um capacitor grande o suficiente na fonte de alimentação próxima ao IC.

O diodo está desviando a corrente para o suprimento +. Se não houver um capacitor grande o suficiente para absorver isso, isso causará problemas. É apenas o trilho de suprimento sendo aumentado. Porque você está usando um capacitor rediulously pequeno (0.1uF?)

Não tem nada a ver com nenhum mistério dentro do silício.

Apenas certifique-se de ter uma tampa decente (10uF) perto do chip Dependendo da quantidade de corrente que você está colocando nos diodos do corpo.

10mA está bom. É um diodo.

Não uso diodos de proteção externos. Eu uso resistores 2k7. Você pode conectar 12 volts à entrada de uma peça de 5V, sem problemas. Não se preocupe. Tente entender o que realmente está acontecendo antes de começar a falar sobre os hábitos flutuantes e a injeção de correntes na terra das fadas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.