Índice:

Cactus 2000: 7 etapas
Cactus 2000: 7 etapas

Vídeo: Cactus 2000: 7 etapas

Vídeo: Cactus 2000: 7 etapas
Vídeo: Купил САМОЕ ДЕШЁВОЕ и ДОРОГОЕ геймерское кресло и СРАВНИЛ ИХ. Я в шоке...И как на этом играть? 2024, Novembro
Anonim
Cactus 2000
Cactus 2000

PROJETO MIDI-CONTROLEUR EISE4

Français:

Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. Pour ce faire, nous avions à notre disposition:

  • Une carte DE0 Nano Soc
  • Des osciloscópios, des multimètres
  • Des composants de différents types (amplificateur, résistance, capacité …)
  • Un micro et un haut-parleur
  • Un petit ecran

Il nous a fallu passer par différentes étapes périlleuses afin de réussir le projet. Nous allons vous les présenter dans cet Instructable.

Pour commencer, le dessin du circuit de base était nécessaire afin de récupérer le son du micro et le rendre au haut-parleur. Une fois le circuit dessiner, le PCB était à faire sur le logiciel Altium. Pendente que deux élèves s'occupaient de gérer les PCB de l'entrée et de la sortie, les deux autres s'occupaient de faire fonctionner la carte DE0 Nano Soc afin que la carte puisse récupérer les echantillons du micro et redonner un signal pour le haut-parleur. Finallement, il nous a fallu créer des effets sonores pour modifier le son.

Inglês:

Durante nosso quarto ano de escola, descobrimos um midi-controlador. Para isso, tínhamos à nossa disposição:

  • Um mapa DE0 Nano Soc
  • Osciloscópios, multímetros
  • Componentes de diferentes tipos (amplificador, resistência, capacidade …)
  • Um microfone e um alto-falante
  • Uma pequena tela

Tivemos que passar por várias etapas perigosas para tornar o projeto um sucesso. Vamos apresentá-lo a este Instructable.

Em primeiro lugar, o projeto do circuito básico necessário para recuperar o filho do microfone e fazer o alto-falante. Uma vez que o circuito foi desenhado, o PCB deveria ser feito no software Altium. Enquanto dois alunos estavam ocupados gerenciando os PCBs de entrada e saída, os outros dois trabalhavam para executar o cartão DE0 Nano Soc para que o cartão pudesse pegar as amostras do microfone e dar um sinal para o alto-falante. Finalmente, tivemos que criar efeitos sonoros para mudar o som.

Etapa 1: Conception Du Circuit En Entrée / Projeto de Circuito de Entrada

Conception Du Circuit En Entrée / Projeto de Circuito de Entrada
Conception Du Circuit En Entrée / Projeto de Circuito de Entrada

Français:

A estreia étape consiste à metro no lugar de um circuito qui puisse prendre o sinal enviado sobre o micro para o transmissor à la carte DE0 Nano Soc.

Ci-dessus le schéma de notre entrée.

(1) L'inverseur va permettre de récupérer le 5 Volt et le transformador en - 5 V. Le - 5 V servira pour l'amplificateur that nous verrons ci-dessous.

(2) Ici, nous avons un amplificateur non-inversseur. D'après la formule suivante:

Vs = Ve (1 + Z1 / Z2)

Em uma escolha, um ganho de 101 en mettant R1 = 100 kOhm e R2 = 1 kOhm.

Cet amplificateur va servir um amplificador le son du micro.

(3) Les deux résistances vont créer un offset afin que la tension de sortie soit compreis entre 0 e 4 V.

(4) Le micro qui va être amplifier par l'amplificateur.

(5) CAG (Controle Automático de Ganho)

(6) Pour finir, nous avons créé un filtro passe-bas du second ordre avec deux RC. L'ordre 2 était nécessaire pour avoir une atténuation de - 40db / década. La fréquence de coupure choisit est 20 kHz.

Inglês:

O primeiro passo é configurar um circuito que possa receber o sinal enviado pelo microfone para transmiti-lo ao cartão DE0 Nano Soc. Acima do diagrama de nossa entrada.

(1) O inversor irá recuperar os 5 Volt e transformá-los em - 5 V. Os - 5 V servirão para o amplificador que veremos a seguir.

(2) Aqui temos um amplificador não inversor. De acordo com a seguinte fórmula:

Vs = Ve (1 + Z1 / Z2)

Um ganho de 101 foi escolhido definindo R1 = 100 kOhm e R2 = 1 kOhm.

Este amplificador será usado para amplificar o som do microfone.

(3) Os dois resistores criarão um deslocamento para que a tensão de saída fique entre 0 e 4 V.

(4) O microfone que será amplificado pelo amplificador.

(5) AGC (Controle Automático de Ganho)

(6) Finalmente, criamos um filtro passa-baixa de segunda ordem com dois RCs. A ordem 2 era necessária para ter uma atenuação de -40db / década. A frequência de corte escolhida é 20 kHz.

Etapa 2: Concepção do circuito em sorte / Projeto do circuito de saída

Conception Du Circuit En Sortie / Projeto do Circuito de Saída
Conception Du Circuit En Sortie / Projeto do Circuito de Saída

Français:

Dans un second temps, nous avons penser à la création du circuit en sortie.

Ci-dessus le schéma de notre sortie.

(1) Le DAC (Digital to Analog Converter) qui va permettre de récupérer le signal numérique envoyer par la carte DE0 Nano Soc et le convertir en signal analogique (nécessaire pour le haut parleur)

(2) La capacité va servir a virer la composante continue de notre signal.

(3) Montage qui va permettre d'amplifier la puissance de notre signal. Nous avons prit le schéma:

www.ti.com/lit/ds/symlink/lm386.pdf

página 10

Ce schéma permet d'avoir un gain de 200 qui est nécessaire car notre signal est vraiment faible.

Inglês:

Acima do diagrama de nossa saída.

(1) O DAC (Conversor Digital para Analógico) que permitirá recuperar o sinal digital enviado pelo cartão DE0 Nano Soc e convertê-lo em um sinal analógico (necessário para o alto-falante).

(2) A capacidade será usada para transferir o componente contínuo do nosso sinal.

(3) Montagem que amplificará a potência do nosso sinal. Pegamos o esquema:

www.ti.com/lit/ds/symlink/lm386.pdf

página 10

Este esquema permite obter um ganho de 200 que é necessário porque o nosso sinal é muito fraco.

Etapa 3: Concepção Des PCB / Design do PCB

Concepção Des PCB / Desenho do PCB
Concepção Des PCB / Desenho do PCB

Français:

Une fois que nos circuitos ont été instanciés il nous a fallu les mettre sur des PCB.

Pour ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit correctement connecter puis cliquer sur:

Projeto do Menu -> Atualizar Documento PCB.

Ensuite, clique em «Validate Changes». Pour chaque changement validé, un crochet vert apparaît dans la colonne: «Check».

Après cela, vous aurez un nouvel onglet qui va s'ouvrir et il faudra placer les composants dans cette fenêtre.

Puis, il faut aller dans le menu "File" -> "Fabrication Output" -> "Gerber Files"

Une fenêtre s'ouvre, dans celle-ci vous trouverez;

  • O menu "Camadas" que possui a permettra de choisir sur quel layers va s'appuyer to PCB.
  • O menu "Drill Drawing" dans lequel il faut que tout soit décocher.
  • Le menu "Aberturas" em lequel il faut cocher "Embedded appertures".

Toute ses étapes sont complétées?

Revenons maintenant à la fenêtre avec les composants sur celle-ci vous cliquez sur

Arquivo-> Saída de Fabricação -> Arquivos de Broca NC

C'est enfin finit, il ne reste plus qu'à donner à l'imprimante 3D les fichiers.

Vous trouverez ci-joint les photos de nos deux PCB.

Inglês:

Uma vez que nossos circuitos foram instanciados, tivemos que colocá-los em PCBs.

Para fazer isso, usamos o software Altium. Tudo deve estar conectado corretamente e clique em:

Projeto do Menu -> Atualizar Documento PCB.

Em seguida, clique em "Validar Alterações". Para cada alteração validada, uma marca de verificação verde aparece na coluna "Verificar".

Depois disso, você terá uma nova aba que se abrirá e você terá que colocar os componentes nesta janela.

Então você tem que ir ao menu "Arquivo" -> "Saída de saída" -> "Arquivos Gerber"

Uma janela se abre, nesta você encontrará;

O menu "Camadas" permite que você escolha quais camadas darão suporte ao seu PCB. O menu "Drill Drawing" onde tudo deve ser desmarcado. O menu "Aberturas" em que você deve marcar "Acessórios incorporados".

Todas as suas etapas foram concluídas?

Vamos voltar agora para a janela com os componentes neste você clica

Arquivo-> Saída de Fabricação -> Arquivos de Perfuração NC

Finalmente acabou, tudo o que você precisa fazer é entregar os arquivos à impressora 3D.

Você encontrará em anexo as fotos de nossos dois PCBs.

Etapa 4: Périphériques Pour La Carte DE0 Nano Soc / Peripherals para o cartão DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / Periféricos para o DE0 Nano Soc Card
Périphériques Pour La Carte DE0 Nano Soc / Periféricos para o DE0 Nano Soc Card

Francais:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA et peuvent être implementés for reduire la conception et le temps de test.

Grâce au logiciel Qsys nous avons pu créer des périphériques embarqués dans notre carte.

Voici une liste des périphériques que nous avons ajouter:

  • Comunicação SPI para o DAC
  • ADC pour recupérer les valurs analogique de notre signal et les convertir en donnée digitales
  • HPS (processeur) pour gérer tout les codes
  • GPIO pour les boutons qui vont servir à exécuter certos effets
  • Mémoire (memória no chip)

Inglês:

Os núcleos IP são otimizados para dispositivos Intel FPGA e podem ser facilmente implementados para reduzir o design e o tempo de teste.

Graças ao software Qsys, fomos capazes de criar periféricos embutidos em nosso mapa. Aqui está uma lista dos dispositivos que adicionamos:

  • Comunicação SPI para o DAC
  • ADC para recuperar os valores analógicos do nosso sinal e convertê-los em dados digitais
  • HPS (processador) para gerenciar todos os códigos
  • GPIO para os botões que serão usados para lidar com certos efeitos
  • Memória (na memória do chip)

Etapa 5: L'écran LT24

L'écran LT24
L'écran LT24

Français:

Il nous a fallu comprendre et gérer l'écran LT24 celui-ci sera guidé par un processeur simulé NIOS.

Pour l'initaliser, nous avons lu beaucoup de documentations sur celui-ci.

Au final, notre écran sert à afficher la FFT, à selectionner l'effet voulu.

Inglês:

Tivemos que entender e gerenciar a tela LT24 que será guiada por um processador NIOS simulado. Para iniciá-lo, lemos muita documentação sobre ele.

No final, nossa tela é usada para mostrar o FFT, para o efeito desejado.

Etapa 6: códigos úteis em C ++ / códigos úteis em C ++

Codes Utiles En C ++ / Códigos úteis em C ++
Codes Utiles En C ++ / Códigos úteis em C ++

Je vais vous montrer les codes en C ++ qui nous ont utiles afin de réaliser des effets sonores.

Voici d'abord toutes nos déclarations (oui un peuhaustif …):

Vou mostrar os códigos em C ++ que foram úteis para criarmos efeitos sonoros.

Em primeiro lugar, todas as nossas afirmações (sim, um pouco exaustivas …):

#incluir

#include #include #include #include #include #include #include #include #include "WavUtils.cpp" #include "Biquad.cpp" #include #include #include #include "hps_0.h" #include "hps.h" #include "alt_gpio.h" #include "hwlib.h" #include "socal.h" #include #include "kiss_fft.h" #define nbpoint 1000 #define HW_REGS_BASE (ALT_STM_OFST) #define HW_REGS_SPAN (0x04000000) HW_REGS_SPAN - 1) #define PI 3.1415926535 #define NFFT 80 #define FE 41000 #define F2 10000 #define F1 5925 #define PH 5000 #define PB 15000 #define MOD 2000 usando namespace std; const long SAMPLE_RATE = 12500000; // Criação da configuração e dos buffers de entrada e saída s (t) e S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL); const kiss_fft_cfg config_inv = kiss_fft_alloc (NFFT, 1, NULL, NULL); kiss_fft_cpx * in = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); kiss_fft_cpx * inv = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); queueoutBuf; int global = 0; int i = 0; dados curtos, dados2;

Ci-dessous une de nos fonctions permettant la modulation:

Abaixo uma de nossas funções permitindo a modulação:

modulação vazia (int freq)

{if (i <NFFT) {data = data * cos (2 * PI * freq * i / FE); em .r = dados; i ++; } else i = "0"; }

Voici notre fonction main:

Estas são nossas principais funções:

int main (int argc, char ** argv)

{volátil sem sinal longo * h2p_lw_spi_addr = NULL; volátil sem sinal longo * h2p_lw_led_addr = NULL; volátil sem sinal longo * h2p_lw_adc_addr = NULL; volátil sem sinal longo * h2p_lw_blue_addr = NULL; volátil sem sinal longo * h2p_lw_red_addr = NULL; volátil sem sinal longo * h2p_lw_black_addr = NULL; void * virtual_base; int fd; printf ("1 / n"); // mapeia o espaço de endereço para os registradores spi no espaço do usuário para que possamos interagir com eles. // Na verdade, mapearemos todo o intervalo CSR do HPS, pois queremos acessar vários registros dentro desse intervalo if ((fd = open ("/ dev / mem", (O_RDWR | O_SYNC))) == -1) {printf ("ERRO: não foi possível abrir \" / dev / mem / "… / n"); return (1); } printf ("2 / n"); virtual_base = mmap (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); if (virtual_base == MAP_FAILED) {printf ("ERRO: mmap () falhou… / n"); fechar (fd); return (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (longo sem sinal) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (longo sem sinal) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (longo sem sinal) (HW_REGS_MASK)); h2p_lw_blue_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (longo sem sinal) (HW_REGS_MASK)); h2p_lw_black_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (longo sem sinal) (HW_REGS_MASK)); h2p_lw_red_addr = virtual_base + ((longo sem sinal) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (longo sem sinal) (HW_REGS_MASK)); // int i = 0; dados internos; int i = 0, j; // Criação da configuração e dos buffers de entrada e saída s (t) e S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL); kiss_fft_cpx * in = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx)); enquanto (1) {dados = * (h2p_lw_adc_addr + 2); if (* h2p_lw_blue_addr == 1) dados = echo (dados, 20); if (* h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); if (* h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr + 1, dados | 0b111000000000000); } grátis (configuração); livre (em); livre (fora); return 0; }

Etapa 7: Le Final / the Final

Le Final / the Final
Le Final / the Final

Français:

Eh voilà (enfin) le rendu final de notre Cactus 2000.

Nous avons mis les PCB entrée et sortie qui sont reliés à la carte DE0 Nano Soc.

Ensuite, ses compositants sont placés à l'interieur d'une boite jaune.

Sur la boîte on trouve un potentiomètre glissière, qui permet de gérer le volume du son, des potentiomètres et des boutons qui permettrons de lancer certos effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur est positionné perpendiculairement par rapport aux boutons. Le micro est positionné de l'autre coté de la boîte par rapport au haut-parleur.

C'est tout pour aujourd'hui.

En esperant que cet Instructable vous soit utile.

Inglês:

Aqui estamos (finalmente) a versão final do nosso Cactus 2000.

Colocamos as placas de entrada e saída que estão conectadas à placa DE0 Nano Soc.

Em seguida, seus componentes são colocados dentro de uma caixa amarela.

Na caixa está um potenciômetro deslizante, que pode controlar o volume do som, knobs e botões que irão lançar alguns efeitos e uma tela que exibirá o FFT.

O alto-falante é posicionado perpendicularmente aos botões. O microfone está posicionado do outro lado da caixa em relação ao alto-falante.

Isso é tudo por hoje.

Esperando que este Instructable seja útil para você.

Recomendado: