Სარჩევი:

Cactus 2000: 7 ნაბიჯი
Cactus 2000: 7 ნაბიჯი

ვიდეო: Cactus 2000: 7 ნაბიჯი

ვიდეო: Cactus 2000: 7 ნაბიჯი
ვიდეო: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, ნოემბერი
Anonim
კაკტუსი 2000 წ
კაკტუსი 2000 წ

პროექტი MIDI-CONTROLEUR EISE4

ფრანგული:

Lors de notre quatrième année d'école ingénieur, nous avons réalisé un midi-contrôleur. დაასხით ce faire, nous avions à notre განწყობა:

  • Une carte DE0 ნანო სოც
  • Des oscilloscopes, des multimètres
  • სხვადასხვა სახის ტიპები (გამაძლიერებელი, წინააღმდეგობა, ტევადობა …)
  • მიკრო და უმეტესი ნაწილი
  • უმცირესი ეკლანი

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.

დაასხით დაწყებული, le dessin du circuit de base était nécessaire afin de récupérer le son du micro et le rendre au haut-parleur. გამოვიყენოთ მიკროსქემის განმსაზღვრელი, PCB– ის გამოყენება და ლოგიკა ალტერნატივაზე. Pendant 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. დასასრულს, თქვენ გექნებათ უნარი, რომ შეცვალოთ ცვლილებები მოდიფიკატორში.

ინგლისური:

სკოლის მეოთხე კურსის განმავლობაში ჩვენ მივხვდით midi-controller- ს. ამისათვის ჩვენ განკარგულებაში გვქონდა:

  • რუქა DE0 ნანო სოც
  • ოსცილოსკოპები, მულტიმეტრი
  • სხვადასხვა ტიპის კომპონენტები (გამაძლიერებელი, წინააღმდეგობა, სიმძლავრე …)
  • მიკროფონი და სპიკერი
  • პატარა ეკრანი

ჩვენ გვჭირდებოდა სხვადასხვა საშიში ნაბიჯების გავლა, რათა პროექტი წარმატებული ყოფილიყო. ჩვენ გაგაცნობთ ამ ინსტრუქციულს.

პირველ რიგში, ძირითადი სქემის დიზაინი, რომელიც საჭიროა მიკროფონის შვილის აღდგენისა და სპიკერის გასაკეთებლად. წრიული გათამაშების შემდეგ, PCB უნდა გაკეთდეს Altium პროგრამულ უზრუნველყოფაზე. სანამ ორი სტუდენტი დაკავებული იყო შეყვანისა და გამომავალი PCB- ების მართვით, დანარჩენი ორი მუშაობდა DE0 Nano Soc ბარათის გაშვებაზე, რათა ბარათს შეეძლო მიკროფონის ნიმუშების აღება და სიგნალის მიცემა დინამიკისთვის. დაბოლოს, ჩვენ უნდა შევქმნათ ხმოვანი ეფექტები ხმის შესაცვლელად.

ნაბიჯი 1: Conception Du Circuit En Entre / Entrance Circuit Design

Conception Du Circuit En Entre / Entrance Circuit Design
Conception Du Circuit En Entre / Entrance Circuit Design

ფრანგული:

La première étape შედგება à mettre en place un circuit qui puisse prendre le სიგნალის ელჩის მიერ le le micro pour le transmettre à 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 transformer en - 5 V. Le - 5 V servira pour l'amplificateur que nous verrons ci -dessous.

(2) Ici, nous avons un amplificateur არა ინვერსიული. D'après la formule suivante:

Vs = Ve (1 + Z1/Z2)

არჩევისას un 101 de met en Rt = 100 kOhm და R2 = 1 kOhm.

Cet amplificateur და servir a გამაძლიერებელი le son du micro.

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

(4) Le micro qui va être გამაძლიერებელი am amplificateur.

(5) CAG (Controle Automatique de Gain)

(6) Pour finir, nous avons créé un filtre passe-bas du second ordre avec deux RC. L'ordre 2 était nécessaire pour avoir une atténuation de - 40db / ათწლეულში. შერჩევის სიხშირე არის 20 kHz.

ინგლისური:

პირველი ნაბიჯი არის სქემის დაყენება, რომელსაც შეუძლია მიიღოს მიკროფონზე გაგზავნილი სიგნალი, რომ გადასცეს იგი DE0 Nano Soc ბარათზე. ჩვენი ჩანაწერის დიაგრამის ზემოთ.

(1) ინვერტორი აღადგენს 5 ვოლტს და გადააქცევს მას - 5 ვ. 5 - V ემსახურება გამაძლიერებლისთვის, რომელსაც ქვემოთ ვნახავთ.

(2) აქ ჩვენ გვაქვს არაინვერტირებული გამაძლიერებელი. შემდეგი ფორმულის მიხედვით:

Vs = Ve (1 + Z1 / Z2)

101 მოგება შეირჩა R1 = 100 kOhm და R2 = 1 kOhm პარამეტრებით.

ეს გამაძლიერებელი გამოყენებული იქნება მიკროფონის ხმის გასაძლიერებლად.

(3) ორი რეზისტორი შექმნის ოფსეტს ისე, რომ გამომავალი ძაბვა იყოს 0 -დან 4 ვ -მდე.

(4) მიკროფონი, რომელიც გაძლიერდება გამაძლიერებლის მიერ.

(5) AGC (ავტომატური მოგების კონტროლი)

(6) საბოლოოდ, ჩვენ შევქმენით მეორე რიგის დაბალი გამავლობის ფილტრი ორი RC– ით. ბრძანება 2 საჭირო იყო შესუსტება -40 დბ / ათწლეულში. შერჩეული შეწყვეტის სიხშირეა 20 kHz.

ნაბიჯი 2: Conception Du Circuit En Sortie / Design of Output Circuit

კონცეფცია Du Circuit En Sortie / გამომავალი სქემის დიზაინი
კონცეფცია Du Circuit En Sortie / გამომავალი სქემის დიზაინი

ფრანგული:

მას შემდეგ, რაც მეორე დროს, nous avons penser à la création du circuit en sortie.

Ci-dessus le schéma de notre sortie.

(1) Le DAC (ციფრული ანალოგური გადამყვანი) 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 გააგრძელოს სიგნალი.

(3) Montage qui va permettre d'amplifier la puissance de notre სიგნალი. Nous avons prit le schéma:

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

გვერდი 10

ეს ნიშნავს, რომ 200 მგ არ არის საჭირო მანქანის სიგნალი არ არის შესაძლებელი.

ინგლისური:

ჩვენი გამომავალი დიაგრამის ზემოთ.

(1) DAC (ციფრული ანალოგური გადამყვანი), რომელიც საშუალებას მოგცემთ აღადგინოთ DE0 Nano Soc ბარათით გაგზავნილი ციფრული სიგნალი და გადააკეთოთ იგი ანალოგიურ სიგნალად (აუცილებელია დინამიკისთვის).

(2) სიმძლავრე გამოყენებული იქნება ჩვენი სიგნალის უწყვეტი კომპონენტის გადასატანად.

(3) სამონტაჟო, რომელიც გააძლიერებს ჩვენი სიგნალის ძალას. ჩვენ ავიღეთ სქემა:

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

გვერდი 10

ეს სქემა შესაძლებელს ხდის მოგების მიღებას 200 რაც აუცილებელია, რადგან ჩვენი სიგნალი მართლაც სუსტია.

ნაბიჯი 3: კონცეფცია Des PCB / PCB დიზაინი

კონცეფცია Des PCB / PCB დიზაინი
კონცეფცია Des PCB / PCB დიზაინი

ფრანგული:

თქვენ შეგიძლიათ დაუშვათ ის სქემები, რომლებიც წარმოიქმნება მყისიერად PCB– სგან.

დაასხით ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit correctement connector puis cliquer sur:

მენიუს დიზაინი -> PCB დოკუმენტის განახლება.

დარწმუნდით, რომ აირჩიეთ "დაადასტურეთ ცვლილებები". ჩაასხით chaque chancement validé, un crochet vert apparaît dans la colonne: «შემოწმება».

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

თქვენ შეგიძლიათ აირჩიოთ მენიუ "ფაილი" -> "წარმოების გამომავალი" -> "გერბერის ფაილები"

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

  • მენიუ "ფენები" qui vous permettra de choisir sur quel ფენები და s'appuyer votre PCB.
  • მენიუ "Drill Drawing" dans lequel il faut que tout soit décocher.
  • Le menu "Apertures" dans lequel il faut cocher "Embedded appertures".

Toute ses étapes sont complétées?

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

ფაილი-> დამზადების გამომუშავება -> NC საბურღი ფაილები

თქვენ შეგიძლიათ დაასრულოთ, დაველოდოთ დამატებით და შევადგინოთ 3D გამოსახულებები.

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

ინგლისური:

მას შემდეგ, რაც ჩვენი სქემები დადასტურდა, ჩვენ უნდა მოვათავსოთ ისინი PCB– ზე.

ამისათვის ჩვენ ვიყენებთ Altium პროგრამულ უზრუნველყოფას. ყველაფერი სწორად უნდა იყოს დაკავშირებული, შემდეგ დააწკაპუნეთ:

მენიუს დიზაინი -> PCB დოკუმენტის განახლება.

შემდეგ დააჭირეთ ღილაკს "ცვლილებების დადასტურება". თითოეული გადამოწმებული ცვლილებისთვის მწვანე შემოწმება ჩნდება "შემოწმება" სვეტში.

ამის შემდეგ, თქვენ გექნებათ ახალი ჩანართი, რომელიც გაიხსნება და თქვენ მოგიწევთ კომპონენტების განთავსება ამ ფანჯარაში.

შემდეგ თქვენ უნდა შეხვიდეთ "ფაილი" -> "გამოყვანის გამომავალი" -> "გერბერის ფაილები" მენიუში

იხსნება ფანჯარა, ამ ერთში ნახავთ;

"ფენების" მენიუ, რომელიც საშუალებას მოგცემთ აირჩიოთ რომელი ფენები დაუჭერს მხარს თქვენს PCB- ს. "საბურღი ხატვის" მენიუ, სადაც ყველაფერი უნდა იყოს მონიშნული. მენიუ "დიაფრაგმები", რომელშიც თქვენ უნდა შეამოწმოთ "ჩაშენებული აპები".

ყველა მისი ნაბიჯი დასრულებულია?

მოდით დავუბრუნდეთ ფანჯარას იმ კომპონენტებით, რომელზეც თქვენ დააწკაპუნებთ

ფაილი-> წარმოების გამომუშავება -> NC საბურღი ფაილები

საბოლოოდ დასრულდა, ყველაფერი რაც თქვენ გჭირდებათ არის 3D პრინტერს მიაწოდოთ ფაილები.

თქვენ ნახავთ ჩვენი ორი PCB- ის ფოტოს.

ნაბიჯი 4: Périphériques Pour La Carte DE0 Nano Soc / პერიფერიული მოწყობილობები DE0 Nano Soc ბარათისთვის

Périphériques Pour La Carte DE0 Nano Soc / პერიფერიული მოწყობილობები DE0 ნანო სოკოს ბარათისთვის
Périphériques Pour La Carte DE0 Nano Soc / პერიფერიული მოწყობილობები DE0 ნანო სოკოს ბარათისთვის

ფრანსე:

Les cœurs IP sont optimisés pour les périphériques Intel FPGA და peuvent étre implémentés pour réduire 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:

  • საკომუნიკაციო SPI pour le DAC
  • ADC pour recupérer les valeurs analogique de notre signal და les convertir en donnée digitales
  • HPS (პროცესორი) დაასახელეთ მეტი კოდი
  • GPIO pour les boutons qui vont servir à exécuter sures effets
  • Mémoire (ჩიპების მეხსიერებაზე)

ინგლისური:

IP ბირთვები ოპტიმიზირებულია Intel FPGA მოწყობილობებისთვის და ადვილად შეიძლება განხორციელდეს დიზაინისა და გამოცდის დროის შესამცირებლად.

Qsys პროგრამული უზრუნველყოფის წყალობით ჩვენ შევძელით შევქმნათ ჩართული პერიფერიული მოწყობილობები ჩვენს რუქაზე. აქ არის ჩვენ მიერ დამატებული მოწყობილობების სია:

  • SPI კომუნიკაცია DAC– სთვის
  • ADC რომ ამოიღოს ანალოგური მნიშვნელობები ჩვენი სიგნალიდან და გადააქციოს ისინი ციფრულ მონაცემებად
  • HPS (პროცესორი) მართავს ყველა კოდს
  • GPIO ღილაკებისათვის, რომლებიც გამოყენებული იქნება გარკვეული ეფექტების დასაძლევად
  • მეხსიერება (ჩიპის მეხსიერებაზე)

ნაბიჯი 5: L'écran LT24

L'écran LT24
L'écran LT24

ფრანგული:

თქვენ შეგიძლიათ შეცვალოთ იგი და შეასრულოთ LT24 celui-ci sera სახელმძღვანელო NIOS პროცესის პროცესის გარეშე.

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

საბოლოო ჯამში, notre écran sert à afficher la FFT, é sélectionner l'effet voulu.

ინგლისური:

ჩვენ უნდა გვესმოდეს და მართოს ეკრანი LT24 ის იხელმძღვანელებს იმიტირებული NIOS პროცესორით. ამის დასაწყებად, ჩვენ ვკითხულობთ უამრავ დოკუმენტაციას მასზე.

საბოლოო ჯამში, ჩვენი ეკრანი გამოიყენება FFT- ის საჩვენებლად, სასურველ ეფექტამდე.

ნაბიჯი 6: კოდების გამოყენება C ++ / სასარგებლო კოდები C ++ - ში

Codes Utiles En C ++ / სასარგებლო კოდები C ++ - ში
Codes Utiles En C ++ / სასარგებლო კოდები C ++ - ში

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

Voici d'abord აცხადებს არა დეკლარაციებს (oui un peu exhaustif…):

მე ვაჩვენებ C ++ კოდებს, რომლებიც ჩვენთვის სასარგებლო იყო ხმოვანი ეფექტების შესაქმნელად.

პირველი, ყველა ჩვენი განცხადება (დიახ ცოტა ამომწურავი …):

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს #მოიცავს #WavUtils.cpp " #მოიცავს" Biquad.cpp " #Include #include #include #include" hps_0.h " #include" hps.h " #მოიცავს "alt_gpio.h" #მოიცავს "hwlib.h" #მოიცავს "socal.h" #მოიცავს #მოიცავს #მოიცავს "kiss_fft.h" #განსაზღვრეთ nbpoint 1000 #განსაზღვრეთ HW_REGS_BASE (ALT_STM_OFST) #განსაზღვრეთ HW_REGS_SPAN HW_REGS_SPAN - 1) #განსაზღვრეთ PI 3.1415926535 #განსაზღვრეთ NFFT 80 #განსაზღვრეთ FE 41000 #განსაზღვრეთ F2 10000 #განსაზღვრეთ F1 5925 #განსაზღვრეთ PH 5000 #განსაზღვრეთ PB 15000 #განსაზღვრეთ MOD 2000 სახელის სივრცის std გამოყენებით; მუდმივი SAMPLE_RATE = 12500000; // Création de la configuration et des buffers in et out pour s (t) et 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 გლობალური = 0; int i = 0; მოკლე მონაცემები, მონაცემები 2;

Ci-dessous une de nos fonctions permettant la modulation:

ქვემოთ მოცემულია ჩვენი ერთ -ერთი ფუნქცია მოდულაციის საშუალებას:

ბათილი მოდულაცია (int freq)

{if (i <NFFT) {data = data*cos (2*PI*freq*i/FE); .r = მონაცემებში; მე ++; } else i = "0"; }

Voici notre fonction main:

ეს არის ჩვენი ძირითადი ფუნქცია:

int main (int argc, char ** argv)

{არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_spi_addr = NULL; არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_led_addr = NULL; არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_adc_addr = NULL; არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_blue_addr = NULL; არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_red_addr = NULL; არასტაბილური ხელმოუწერელი გრძელი *h2p_lw_black_addr = NULL; void *ვირტუალური_ბაზი; int fd; printf ("1 / n"); // spi რეგისტრების მისამართების სივრცის რუქა მომხმარებლის სივრცეში, რათა მათთან ურთიერთქმედება შევძლოთ. // ჩვენ რეალურად დავხატავთ HPS– ის მთელ CSR– ში, რადგან ჩვენ გვსურს შეხვიდეთ სხვადასხვა რეგისტრებში ამ პერიოდის განმავლობაში, თუ ((fd = open ("/dev/mem", (O_RDWR | O_SYNC))) == -1) {printf ("ERROR: ვერ გაიხსნა \"/dev/mem / "… / n"); დაბრუნება (1); } printf ("2 / n"); ვირტუალური_ბაზი = მმ (NULL, HW_REGS_SPAN, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, HW_REGS_BASE); printf ("3 / n"); if (ვირტუალური_ბაზი == MAP_FAILED) {printf ("შეცდომა: mmap () ვერ მოხერხდა … / n"); დახურვა (fd); დაბრუნება (1); } printf ("4 / n"); printf ("5 / n"); h2p_lw_spi_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); h2p_lw_led_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); h2p_lw_adc_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); h2p_lw_blue_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); h2p_lw_black_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); h2p_lw_red_addr = ვირტუალური_ბაზი + ((ხელმოუწერელი გრძელი) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (ხელმოუწერელი გრძელი) (HW_REGS_MASK)); // int i = 0; int მონაცემები; int i = 0, j; // Création de la configuration et 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)); ხოლო (1) {data = *(h2p_lw_adc_addr+2); თუ (*h2p_lw_blue_addr == 1) მონაცემი = ექო (მონაცემები, 20); თუ (*h2p_lw_black_addr == 1) alt_write_word (h2p_lw_led_addr, 0x0F); თუ (*h2p_lw_red_addr == 0) alt_write_word (h2p_lw_led_addr, 0xF0); alt_write_word (h2p_lw_spi_addr+1, მონაცემები | 0b111000000000000); } უფასო (კონფიგურაცია); უფასო (in); უფასო (გარეთ); დაბრუნება 0; }

ნაბიჯი 7: Le Final / The Final

Le Final / ფინალი
Le Final / ფინალი

ფრანგული:

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 composants 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 sures effets, ainsi que un ecran qui permettra d'afficher la FFT.

Le haut-parleur არის პოზიციონირებული perpendiculairement თანაფარდობა 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.

სასწრაფოდ უნდა გამოიყენოთ ინსტრუქციულად, რაც შეიძლება სასარგებლო იყოს.

ინგლისური:

აქ ჩვენ ვართ (საბოლოოდ) ჩვენი Cactus 2000 -ის საბოლოო რენდერი.

ჩვენ ვდებთ შემავალ და გამომავალ PCB- ებს, რომლებიც დაკავშირებულია DE0 Nano Soc დაფასთან.

შემდეგ, მისი კომპონენტები მოთავსებულია ყვითელ ყუთში.

ყუთზე არის სლაიდ პოტენომეტრი, რომელსაც შეუძლია მართოს ხმის მოცულობა, ღილაკები და ღილაკები, რომლებიც გაუშვებს ზოგიერთ ეფექტს და ეკრანი, რომელიც აჩვენებს FFT- ს.

სპიკერი განლაგებულია ღილაკების პერპენდიკულარულად. მიკროფონი მოთავსებულია ყუთის მეორე მხარეს დინამიკთან შედარებით.

სულ ეს არის დღეისთვის.

იმ იმედით, რომ ეს ინსტრუქცია თქვენთვის სასარგებლოა.

გირჩევთ: