Съдържание:

Автонастройка: 7 стъпки
Автонастройка: 7 стъпки

Видео: Автонастройка: 7 стъпки

Видео: Автонастройка: 7 стъпки
Видео: Фреза работающая от вала отбора мощности, на самодельном минитракторе. 2024, Ноември
Anonim
Автонастройка
Автонастройка

Bienvenue dans notre projet Autotune

Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composee de 3 élèves ingénieurs de Polytech Sorbonne и EISE4 (4ème année du cycle ingénieur en électronique informatique systèmes embarqués).

Notre projet се състои от émettre un son capter par un micro, emit par un haut parleur et afficher la FFT sur un écran PC. Il sera possible de modifier le son audio comme le volume et créer un écho.

C'est parti pour les explications !!

Стъпка 1: Composants Utilisés

  • Карта DEO-Nano-SoC
  • Изход на батерия 2 à 5V2A
  • Микро
  • Haut Parleur 8 ома
  • Регулатор: MAX660
  • Capteur IR: GP2Y0E02A
  • Аудио усилвател: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Диод: 1N4148
  • Транзитор: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Съпротивления
  • Кондензатори
  • Wifi: ESP8266EX
  • 4 превключвателя
  • 3 Led de couleurs

Стъпка 2: Архитектура

Архитектура
Архитектура

Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.

Comme vous pouvez le voir, notre projet va pouvoir capter un son à l'aide du micro dont le signal analogique capté sera converti en un signal numérique dont l'ADC est intégré dans la carte FPGA. Puis le signal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité et des switchs. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.

Стъпка 3: Partie Analogique

Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique

Notre partie analogie est composée от 2 вериги:

Un premier circuit qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, композиция от усилвател на усилвател и усилване на филтър passif après avoir récupérer le signal.

Un deuxieme circuit qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, композиция от DAC, d'un diviseur de напрежение и d'un усилвател на аудио.

Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.

Стъпка 4: Впечатление от печатни платки

Впечатление от печатни платки
Впечатление от печатни платки
Впечатление от печатни платки
Впечатление от печатни платки
Впечатление от печатни платки
Впечатление от печатни платки

Maintenant, nous allons créer nos PCB afin de les imprimer et de les relier!

A l'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Voici le кореспондент на сайта au tutoriel Altium qui peut certainement vous aider!

Стъпка 5: Partie Numérique

Partie Numérique
Partie Numérique

Après avoir imprimer срещу PCBs, vous pouvez enfin brancher le tout à la carte FPGA!

Pour la partie numérique, nous avons créer un code C qui est séparé en deux en utilisant un thread. D'un coté, on récupère le signal on le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté, on Calcule la fft et on envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.

При използване на Qsys et quartus за разклоняване на HPS с различни компоненти. При използване на номенклатура за IP SPI за комуникация avec le dac и др IP UART за комуникация avec la carte wifi.

Стъпка 6: Le Code

Voici le lien oùnous avons récuperé le code pour faire la fft.

При използване на кода се изсипва калкулатор la fft:

// Création de la configuration и des buffers in et out pour s (t) et 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));

за (j = 0; j <NFFT; j ++) {Стойност = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Стойност-2000.0; // при пенсиониране l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // посещавам un temps bien précis pour avoir une fréquence d’échantillonnage connue}

// Calcul de la FFT depuis in vers outkiss_fft (config, in, out); bzero (C_val, 110); // remet à zero le tableau qui nous sert de buffer que l'on va envoyer par wififor (t = 0; t <(NFFT/4); t ++) {// изливане на ограничител la taille du buffer on limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log = 20*(log (abs (out [t].r/1000.0))*9;

tmp_log = tmp_log/50; ако (tmp_log <0) {tmp_log = 0; } ако (tmp_log> 9) {tmp_log = 9; } sprintf (tmp_val, "%d", tmp_log); strcat (C_val, tmp_val); // ajoute au buffer la nouvelle valeur

} send_wifir (C_val); // на envoi le buffer par wifi

fonction изпрати wifir:

невалиден send_wifir (char* com_AT) {int num, z; for (z = 0; z <22000000; z ++) {} за (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}

Изсипете инициализатора la carte wifi, използвайте le code suivant:

send_wifi ("AT+RST / r / n"); // изискване за нулиране по меню (3); // посещавам qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // choisit le mode de la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // при посещение qu'elle se connectesend_wifi ("AT+CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // On lui demande de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep (3); // присъства на la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // включен в режим envoie en continueleep (3); send_wifi ("AT+CIPSEND / r / n"); // при започване на предаване

fonction изпрати wifi:

невалиден send_wifi (char * com_AT) {int num, z; for (num = 0; num <(int) strlen (com_AT); num ++) { * (h2p_lw_rs232_addr) = com_AT [num]; за (z = 0; z <2500000; z ++) {}}}

Код на обслужване:

affichage de la fft:

int i, j, Стойност = 0; система ("изчистена");

for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (таблица [j]*4> (40 - i)) {if (таблица [j]*4> 35) printf (ЧЕРВЕН "|" RESET); else if (таблица [j]*4> 28) printf (L_RED "|" RESET); else if (таблица [j]*4> 21) printf (YEL "|" RESET); else if (таблица [j]*4> 14) printf (L_YEL "|" RESET); else if (таблица [j]*4> 7) printf (L_GRN "|" RESET); else printf (GRN "|" RESET); } else printf (""); } printf ("\ n"); } else {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*за (j = 0; j <(BUFSIZE/2); j ++)

Препоръчано: