Fácil Atmel Xmega senóide / gerador

Fácil Atmel Xmega senóide / gerador

Categoria: EletrônicaAutor: Madeleine Roques • Vistas: 92

Isto é como você pode usar uma das placas de avaliação BostonAndroid.com Xmega ($20) para criar um gerador de forma de onda senoidal ajustável simples com 12 resolução de bits e capaz de produzir freqüências de 125 Hz – 20 KHz usando o DAC integrado. Você pode modificar o código para produzir qualquer forma de onda arbitrária de até 1 MHz em 2 canais. Você precisa de apenas um PC, um Conselho eval e programador Atmel adequado (AVRISP é inferior a US $30 novos).

Há um monte de recursos embalado para os microcontroladores de Xmega. Neste instructable é destinado a demonstrar alguns dos realmente poderoso como um 12 bits DAC, ADC de 12 bits, controlador de DMA e compilador de código aberto (avr-gcc).

Passo 1. O que você precisa

Você precisará do seguinte para concluir este projeto:

Boston Android Xmega EVAL-01 Development Board ($20) ou construir seu próprio
Murata PV36W103C01B00 Trimpot 10KΩ, 25turn (ou equiv de Mouser)
PC com AVR Studio 4 (gratuito)
Programador de mkII AVRISP ($30)

Passo 2. Teoria de operação

Para criar um gerador de forma de onda ajustável usaremos um divisor de tensão do resistor simples para ser lido por Xmega bordo ADC de 12 bits. Este valor será, em seguida, usado para definir a freqüência de freqüência de onda senoidal DAC, mas a fórmula a seguir:

leitura = (Vin / 1.6V) * 256
Freq = (leitura * leitura) + 1;

Adicionando um 3pin ajustável potenciômetro para PortA em XMega-Eval01 podemos criar esta simple divisor de tensão. Você pode também se alimentam de sua própria fonte de tensão entre 0-1.6V para fazer o ajuste em seu lugar.

A forma de onda é saída do DAC com 50 amostras por ciclo a resolução 12 bit de PORTB pin2. Pin1 está configurado como referência de terra.

Passo 3. Esquemático para EVAL-01 a bordo ou construir seu próprio

As instruções aqui são simplesmente comprar a Boston Android EVAL-01 Xmega dev placa. Mas você também pode construir sua própria pela compra de uma placa de adaptador de TQFP-64 (Verifique ebay ~$ 5) e comprar um chip de Xmega64a3 de Digikey ou Mouser (~ US $8). Abaixo está o esquema para a placa de EVAL-01.


Etapa 4. Adicionar potenciómetro

Solde o Trimpot PV36W103C01B00 a PortA pinos 1-3 com o ajuste do parafuso para a direita.

Passo 5. Adicionar teste fio conduz

Solde dois fios aos pinos do PORTB 1 e 2.

Etapa 6. Compilar firmware

Usando o Atmel AVR Studio 4:

1) Iniciar Atmel AVR Studio 4
2) Selecione “New Project”
3) Selecione “avr-gcc” projeto
4) Nomeie seu projeto
5) Selecione “AVR Simulator 2″ e o dispositivo de destino: “Atmel AVR ATXmega64A3″
6) Obter o arquivo de código origem c xmega-waveform.c de BostonAndroid site e salvar no seu diretório do projeto e adicionar ao seu projeto (ou copiar código fonte no arquivo c padrão criado pela AVR studio)
7) Vá ao menu “Build” e selecione “Build”


Passo 7. Dispositivo de programa

Conecte a fonte de alimentação de 5VDC à placa. A maneira mais fácil é usando um adaptador de parede 5VDC com centro positivo (você provavelmente possui um e não o sabe; eles são muito comuns). Se não, use uma fonte de alimentação ajustável ou 3 pilhas AA e conectar-se a solda guias na parte inferior da placa. O contato próximo à parte dianteira do conector é negativo, a parte de trás um é positivo.

Em seguida ligue o programador mkii Atmel AVRISP à porta USB do PC.

Em seguida ligue o cabo de fita 6 pinos entre o programador e a placa como mostrado.

Abra o projeto de software em AVRstudio que você compilado na etapa anterior e carregar o software do dispositivo, clicando no botão de “AVR” na barra de ferramentas (ou também no menu “programa AVR device”)

Irá aparecer uma janela que lista opções como “Dispositivo” de “Flash” & “eeprom”. Você deseja programar a memória flash no dispositivo de destino. Selecione “…” em FLASH e localize um arquivo. Hex para o seu projeto e, em seguida, clique em “Programa”. O nome do arquivo. Hex é. hex.

Uma pequena caixa na parte inferior desta caixa de diálogo, você verá várias mensagens olha bem sucedidas. :-)

Passo 8. Utilize o dispositivo!

Conecte um osciloscópio (ou freq contador ou altifalantes de alta impedância como um alto-falante do fone de ouvido) entre pinos do PORTB 1 & 2. Você deve ver uma onda sinusoidal, de amplitude 3V p-p. Ajuste o potenciômetro no sentido horário para aumentar a frequência de n/a KHz. turno anti-horário para diminuir a frequência.

Etapa 9. O que vem depois? O que mais pode fazer esta coisa?

Assim, este é um exemplo simples de como você pode usar o microcontrolador Atmel XMega para gerar ondas sinusoidais. Aqui estão algumas coisas que você pode fazer com pequenas alterações para o firmware:

1) Ir mais alto! A freqüência máxima é limitada pela onda de seno de amostra e 1Msps 50 DAC. Você pode modificar a função LoadSineWave() e definir o número de amostras a ser digamos 10: LoadSineWave(10). Isso fará com que 5 x mais ciclos. Agora você pode usar SetWaveFreq() para ir além de 20 KHz a 100 KHz!

2) Formas de onda arbitrárias. LoadSineWave() carrega uma onda senoidal simple. Mas você pode colocar qualquer forma de onda desejada em data12 [] matriz. No c você pode fazer isso na declaração:

data12 int [10] = {1,2,3,4,5,6,7,8,9,10};

3) Variam de amplitude. A forma de onda de saída é 0-3, 3V, mas você pode fazer isso menor dimensionando os dados carregados no data12 [].

4) Aumente a resolução do potenciômetro de ajuste de Freq. O código das ações usa o ADC no modo de 8 bits (256 configurações de freqüência discreta). Você pode alterar isso para 12 bits e permite 2 ^ 12 = 4096 freqüências diferentes


Passo 2. Teoria de operação

Para criar um gerador de forma de onda ajustável usaremos um divisor de tensão do resistor simples para ser lido por Xmega bordo ADC de 12 bits. Este valor será, em seguida, usado para definir a freqüência de freqüência de onda senoidal DAC, mas a fórmula a seguir:

leitura = (Vin / 1.6V) * 256
Freq = (leitura * leitura) + 1;

Adicionando um 3pin ajustável potenciômetro para PortA em XMega-Eval01 podemos criar esta simple divisor de tensão. Você pode também se alimentam de sua própria fonte de tensão entre 0-1.6V para fazer o ajuste em seu lugar.

A forma de onda é saída do DAC com 50 amostras por ciclo a resolução 12 bit de PORTB pin2. Pin1 está configurado como referência de terra.

Passo 3. Esquemático para EVAL-01 a bordo ou construir seu próprio

As instruções aqui são simplesmente comprar a Boston Android EVAL-01 Xmega dev placa. Mas você também pode construir sua própria pela compra de uma placa de adaptador de TQFP-64 (Verifique ebay ~$ 5) e comprar um chip de Xmega64a3 de Digikey ou Mouser (~ US $8). Abaixo está o esquema para a placa de EVAL-01.


Etapa 4. Adicionar potenciómetro

Solde o Trimpot PV36W103C01B00 a PortA pinos 1-3 com o ajuste do parafuso para a direita.

Passo 5. Adicionar teste fio conduz

Solde dois fios aos pinos do PORTB 1 e 2.

Etapa 6. Compilar firmware

Usando o Atmel AVR Studio 4:

1) Iniciar Atmel AVR Studio 4
2) Selecione “New Project”
3) Selecione “avr-gcc” projeto
4) Nomeie seu projeto
5) Selecione “AVR Simulator 2″ e o dispositivo de destino: “Atmel AVR ATXmega64A3″
6) Obter o arquivo de código origem c xmega-waveform.c de BostonAndroid site e salvar no seu diretório do projeto e adicionar ao seu projeto (ou copiar código fonte no arquivo c padrão criado pela AVR studio)
7) Vá ao menu “Build” e selecione “Build”


Passo 7. Dispositivo de programa

Conecte a fonte de alimentação de 5VDC à placa. A maneira mais fácil é usando um adaptador de parede 5VDC com centro positivo (você provavelmente possui um e não o sabe; eles são muito comuns). Se não, use uma fonte de alimentação ajustável ou 3 pilhas AA e conectar-se a solda guias na parte inferior da placa. O contato próximo à parte dianteira do conector é negativo, a parte de trás um é positivo.

Em seguida ligue o programador mkii Atmel AVRISP à porta USB do PC.

Em seguida ligue o cabo de fita 6 pinos entre o programador e a placa como mostrado.

Abra o projeto de software em AVRstudio que você compilado na etapa anterior e carregar o software do dispositivo, clicando no botão de “AVR” na barra de ferramentas (ou também no menu “programa AVR device”)

Irá aparecer uma janela que lista opções como “Dispositivo” de “Flash” & “eeprom”. Você deseja programar a memória flash no dispositivo de destino. Selecione “…” em FLASH e localize um arquivo. Hex para o seu projeto e, em seguida, clique em “Programa”. O nome do arquivo. Hex é. hex.

Uma pequena caixa na parte inferior desta caixa de diálogo, você verá várias mensagens olha bem sucedidas. :-)

Passo 8. Utilize o dispositivo!

Conecte um osciloscópio (ou freq contador ou altifalantes de alta impedância como um alto-falante do fone de ouvido) entre pinos do PORTB 1 & 2. Você deve ver uma onda sinusoidal, de amplitude 3V p-p. Ajuste o potenciômetro no sentido horário para aumentar a frequência de n/a KHz. turno anti-horário para diminuir a frequência.

Etapa 9. O que vem depois? O que mais pode fazer esta coisa?

Assim, este é um exemplo simples de como você pode usar o microcontrolador Atmel XMega para gerar ondas sinusoidais. Aqui estão algumas coisas que você pode fazer com pequenas alterações para o firmware:

1) Ir mais alto! A freqüência máxima é limitada pela onda de seno de amostra e 1Msps 50 DAC. Você pode modificar a função LoadSineWave() e definir o número de amostras a ser digamos 10: LoadSineWave(10). Isso fará com que 5 x mais ciclos. Agora você pode usar SetWaveFreq() para ir além de 20 KHz a 100 KHz!

2) Formas de onda arbitrárias. LoadSineWave() carrega uma onda senoidal simple. Mas você pode colocar qualquer forma de onda desejada em data12 [] matriz. No c você pode fazer isso na declaração:

data12 int [10] = {1,2,3,4,5,6,7,8,9,10};

3) Variam de amplitude. A forma de onda de saída é 0-3, 3V, mas você pode fazer isso menor dimensionando os dados carregados no data12 [].

4) Aumente a resolução do potenciômetro de ajuste de Freq. O código das ações usa o ADC no modo de 8 bits (256 configurações de freqüência discreta). Você pode alterar isso para 12 bits e permite 2 ^ 12 = 4096 freqüências diferentes