สารบัญ:

กระบองเพชร 2000: 7 ขั้นตอน
กระบองเพชร 2000: 7 ขั้นตอน

วีดีโอ: กระบองเพชร 2000: 7 ขั้นตอน

วีดีโอ: กระบองเพชร 2000: 7 ขั้นตอน
วีดีโอ: จามาคารู ปลูกยังไงให้ขายได้ผลละ2000 | เอิร์ธสดชื่น 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. Pour ce faire, nous avions à notre จำหน่าย:

  • Une carte DE0 นาโน ซอค
  • Des oscilloscopes, des multimètres
  • Des composants de différents types (เครื่องขยายเสียง, ความต้านทาน, ความจุ…)
  • 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 Beginr, 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 จี้ 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 haut-parleur. สุดท้าย, il nous a fallu créer des effets sonores pour modifier le son.

ภาษาอังกฤษ:

ในช่วงปีสี่ของการศึกษา ในการทำเช่นนี้ เรามีพร้อม:

  • แผนที่ DE0 Nano Soc
  • ออสซิลโลสโคป มัลติมิเตอร์
  • ส่วนประกอบประเภทต่างๆ (แอมพลิฟายเออร์, ความต้านทาน, ความจุ …)
  • ไมโครโฟนและลำโพง
  • หน้าจอเล็กๆ

เราต้องผ่านขั้นตอนอันตรายต่างๆ เพื่อให้โครงการประสบความสำเร็จ เราจะแนะนำให้คุณรู้จักกับคำแนะนำนี้

ประการแรกการออกแบบวงจรพื้นฐานที่จำเป็นในการกู้คืนลูกชายของไมโครโฟนและสร้างลำโพง เมื่อวาดวงจรแล้ว ให้ทำ PCB บนซอฟต์แวร์ Altium ในขณะที่นักเรียนสองคนกำลังยุ่งอยู่กับการจัดการ PCB อินพุตและเอาต์พุต อีกสองคนกำลังทำงานเพื่อเรียกใช้การ์ด DE0 Nano Soc เพื่อให้การ์ดสามารถรับตัวอย่างไมโครโฟนและส่งสัญญาณไปยังลำโพงได้ สุดท้ายเราต้องสร้างเอฟเฟกต์เสียงเพื่อเปลี่ยนเสียง

ขั้นตอนที่ 1: Conception Du Circuit En Entrée / การออกแบบวงจรทางเข้า

Conception Du Circuit En Entrée / การออกแบบวงจรทางเข้า
Conception Du Circuit En Entrée / การออกแบบวงจรทางเข้า

ฝรั่งเศส:

La première étape ประกอบด้วย à mettre en place un circuit qui puisse prendre le signal envoyer sur 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 ใช้งานได้หลากหลาย que nous verrons ci-dessous

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

Vs = เว (1 + Z1/Z2)

ที่ตัวเลือก un gain de 101 en mettant R1 = 100 kOhm et R2 = 1 kOhm

Cet amplificateur va servir เครื่องขยายเสียง le son du micro.

(3) Les deux résistances vont créer un offset afin que la tension de sortie soit ประกอบด้วย entre 0 et 4 V.

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

(5) CAG (คอนโทรล ออโตมาติค เดอ เกน)

(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 / ทศวรรษ La frequence de coupure choisit est 20 kHz.

ภาษาอังกฤษ:

ขั้นตอนแรกคือการตั้งค่าวงจรที่สามารถรับสัญญาณที่ส่งไปยังไมโครโฟนเพื่อส่งไปยังการ์ด DE0 Nano Soc เหนือไดอะแกรมของรายการของเรา

(1) อินเวอร์เตอร์จะกู้คืน 5 โวลต์และแปลงเป็น - 5 V. - 5 V จะทำหน้าที่สำหรับเครื่องขยายเสียงเราจะดูด้านล่าง

(2) ที่นี่เรามีแอมพลิฟายเออร์ที่ไม่กลับด้าน ตามสูตรต่อไปนี้:

Vs = เว (1 + Z1 / Z2)

เกน 101 ถูกเลือกโดยการตั้งค่า R1 = 100 kOhm และ R2 = 1 kOhm

แอมพลิฟายเออร์นี้จะใช้ในการขยายเสียงของไมโครโฟน

(3) ตัวต้านทานสองตัวจะสร้างออฟเซ็ตเพื่อให้แรงดันเอาต์พุตอยู่ระหว่าง 0 ถึง 4 V

(4) ไมโครโฟนที่จะขยายโดยเครื่องขยายเสียง

(5) AGC (การควบคุมอัตราขยายอัตโนมัติ)

(6) สุดท้าย เราได้สร้างตัวกรองสัญญาณความถี่ต่ำอันดับสองที่มี RC สองตัว ลำดับที่ 2 จำเป็นต้องมีการลดทอนที่ -40db / ทศวรรษ ความถี่ตัดที่เลือกคือ 20 kHz

ขั้นตอนที่ 2: Conception Du Circuit En Sortie / การออกแบบวงจรเอาต์พุต

Conception Du Circuit En Sortie / การออกแบบวงจรเอาท์พุต
Conception 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 (ตัวแปลงดิจิทัลเป็นแอนะล็อก) ที่ใช้งานได้จริง ตัวประมวลผลสัญญาณ numérique envoyer par la carte DE0 Nano Soc et le convertir en signal แบบอะนาล็อก (สำหรับใช้ทั่วไป)

(2) La capacité va servir a virer la composante ดำเนินการต่อ de notre signal.

(3) การตัดต่อ qui va permettre d'amplifier la puissance de notre signal. Nous avons prit le schéma:

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

หน้า 10

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

ภาษาอังกฤษ:

เหนือไดอะแกรมของผลลัพธ์ของเรา

(1) DAC (Digital to Analog Converter) ซึ่งจะช่วยให้สามารถกู้คืนสัญญาณดิจิตอลที่ส่งโดยการ์ด DE0 Nano Soc และแปลงเป็นสัญญาณแอนะล็อก (จำเป็นสำหรับลำโพง)

(2) ความจุจะใช้ในการถ่ายโอนองค์ประกอบต่อเนื่องของสัญญาณของเรา

(3) การติดตั้งที่จะขยายกำลังของสัญญาณของเรา เราใช้โครงการ:

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

หน้า 10

แบบแผนนี้ทำให้สามารถได้รับ 200 ซึ่งจำเป็นเนื่องจากสัญญาณของเราอ่อนมาก

ขั้นตอนที่ 3: Conception Des PCB / การออกแบบ PCB

Conception Des PCB / การออกแบบ PCB
Conception Des PCB / การออกแบบ PCB

ฝรั่งเศส:

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

ริน ce faire, nous avons utiliser le logiciel Altium. Il faut que tout soit แก้ไขตัวเชื่อมต่อ puis cliquer sur:

การออกแบบเมนู -> อัปเดตเอกสาร PCB

ห้องน้ำในตัว, cliquez sur «ตรวจสอบการเปลี่ยนแปลง». Pour chaque changement 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

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

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

  • เมนู Le "Layers" qui vous permettra de choisir sur quellayer va s'appuyer votre PCB.
  • เมนู "Drill Drawing" dans lequel il faut que tout soit décocher.
  • เมนู Le "Apertures" dans 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

ไฟล์ -> เอาต์พุตการประดิษฐ์ -> ไฟล์เจาะ 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.

ภาษาอังกฤษ:

เมื่อวงจรของเราสร้างอินสแตนซ์แล้ว เราต้องใส่มันลงบน PCB

ในการดำเนินการนี้ เราใช้ซอฟต์แวร์ Altium ทุกอย่างจะต้องเชื่อมต่ออย่างถูกต้องจากนั้นคลิกที่:

การออกแบบเมนู -> อัปเดตเอกสาร PCB

จากนั้นคลิกที่ "ตรวจสอบการเปลี่ยนแปลง" สำหรับการเปลี่ยนแปลงที่ตรวจสอบแล้วแต่ละรายการ เครื่องหมายถูกสีเขียวจะปรากฏในคอลัมน์ "ตรวจสอบ"

หลังจากนั้น คุณจะมีแท็บใหม่ที่จะเปิดขึ้น และคุณจะต้องวางส่วนประกอบในหน้าต่างนี้

จากนั้นคุณต้องไปที่ "ไฟล์" -> "เอาต์พุตเอาต์พุต" -> เมนู "ไฟล์ Gerber"

หน้าต่างจะเปิดขึ้นในหน้าต่างนี้คุณจะพบ

เมนู "เลเยอร์" ที่ให้คุณเลือกได้ว่าเลเยอร์ใดจะรองรับ PCB ของคุณ เมนู "Drill Drawing" ที่ต้องยกเลิกการเลือกทุกอย่าง เมนู "Apertures" ที่คุณต้องเลือก "Embedded appertures"

ทุกขั้นตอนของเขาเสร็จสมบูรณ์แล้ว?

กลับไปที่หน้าต่างที่มีส่วนประกอบในหน้าต่างนี้ที่คุณคลิก

ไฟล์ -> เอาต์พุตการผลิต -> ไฟล์เจาะ NC

มันจบลงแล้ว สิ่งที่คุณต้องทำคือมอบไฟล์ให้กับเครื่องพิมพ์ 3 มิติ

คุณจะพบรูปถ่ายของ PCB ทั้งสองของเราที่แนบมา

ขั้นตอนที่ 4: Périphériques Pour La Carte DE0 Nano Soc / อุปกรณ์ต่อพ่วงสำหรับการ์ด DE0 Nano Soc

Périphériques Pour La Carte DE0 Nano Soc / อุปกรณ์ต่อพ่วงสำหรับการ์ด DE0 Nano Soc
Périphériques Pour La Carte DE0 Nano Soc / อุปกรณ์ต่อพ่วงสำหรับการ์ด DE0 Nano Soc

ฟรานซิส:

ทางเลือกในการเพิ่มประสิทธิภาพ IP สำหรับการทดสอบ Intel FPGA และประสิทธิภาพสำหรับการทดสอบ

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

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

  • การสื่อสาร SPI สำหรับ DAC
  • ADC pour recupérer les valeurs analogique de notre signal et les convertir en donnée digitales
  • HPS (ตัวประมวลผล) เท gérer tout les codes
  • GPIO เท les boutons qui vont servir à exécuter ผลลัพธ์ที่แน่นอน
  • Mémoire (บนหน่วยความจำชิป)

ภาษาอังกฤษ:

แกน IP ได้รับการปรับให้เหมาะสมสำหรับอุปกรณ์ Intel FPGA และสามารถใช้งานได้ง่ายเพื่อลดเวลาในการออกแบบและทดสอบ

ด้วยซอฟต์แวร์ Qsys เราจึงสามารถสร้างอุปกรณ์ต่อพ่วงแบบฝังในแผนที่ของเราได้ นี่คือรายการอุปกรณ์ที่เราเพิ่ม:

  • การสื่อสาร SPI สำหรับ DAC
  • ADC เพื่อดึงค่าแอนะล็อกจากสัญญาณของเราและแปลงเป็นข้อมูลดิจิทัล
  • HPS (โปรเซสเซอร์) เพื่อจัดการรหัสทั้งหมด
  • GPIO สำหรับปุ่มที่จะใช้เพื่อรับมือกับเอฟเฟกต์บางอย่าง
  • หน่วยความจำ (บนหน่วยความจำของชิป)

ขั้นตอนที่ 5: L'écran LT24

L'écran LT24
L'écran LT24

ฝรั่งเศส:

Il nous a fallu comprendre et gérer l'écran LT24 celui-ci sera guidé par un กระบวนการจำลอง NIOS

เท l'initaliser, nous avons lu beaucoup de document sur celui-ci.

สุดท้าย, notre écran sert à afficher la FFT, à sélectionner l'effet voulu.

ภาษาอังกฤษ:

เราต้องทำความเข้าใจและจัดการหน้าจอ LT24 ซึ่งจะได้รับคำแนะนำจากโปรเซสเซอร์ NIOS จำลอง เพื่อเริ่มต้น เราอ่านเอกสารจำนวนมากเกี่ยวกับมัน

ในท้ายที่สุด หน้าจอของเราจะใช้เพื่อแสดง FFT เพื่อให้ได้เอฟเฟกต์ที่ต้องการ

ขั้นตอนที่ 6: รหัสยูทิลิตี้ En C ++ / รหัสที่มีประโยชน์ใน C ++

รหัสยูทิลิตี้ En C ++ / รหัสที่เป็นประโยชน์ใน C ++
รหัสยูทิลิตี้ En C ++ / รหัสที่เป็นประโยชน์ใน 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 peu exhaustif…):

ฉันจะแสดงรหัสในภาษา C ++ ที่เป็นประโยชน์สำหรับเราในการสร้างเอฟเฟกต์เสียง

อันดับแรก ข้อความทั้งหมดของเรา (ใช่ ค่อนข้างละเอียดถี่ถ้วน…):

#รวม

#รวม #รวม #รวม #รวม #รวม #รวม #รวม #รวม #รวม "WavUtils.cpp" #รวม "Biquad.cpp" #รวม #รวม #รวม #รวม "hps_0.h" #รวม "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) #define HWSK_ 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 โดยใช้เนมสเปซ std; const ยาว SAMPLE_RATE = 12500000; // Création de la configuration และ des buffers ใน et out เท 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* ใน = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx)); kiss_fft_cpx* ออก = (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 ผม = 0; ข้อมูลสั้น data2;

Ci-dessous une de nos fonctions permettant la modulation:

ด้านล่างหนึ่งในฟังก์ชันของเราที่อนุญาตให้มอดูเลต:

โมฆะมอดูเลต (ความถี่ int)

{ if(i<NFFT) { data=data*cos(2*PI*freq*i/FE); ใน.r=data; ผม++; } อื่น i="0"; }

Voici notre fonction หลัก:

หน้าที่หลักของเราเหล่านี้:

int main (int argc, ถ่าน **argv)

{ ตัวแปร unsigned long *h2p_lw_spi_addr=NULL; ผันผวน unsigned long *h2p_lw_led_addr=NULL; ผันผวน unsigned long *h2p_lw_adc_addr=NULL; ผันผวน unsigned long *h2p_lw_blue_addr=NULL; ผันผวน unsigned long *h2p_lw_red_addr=NULL; ผันผวน unsigned long *h2p_lw_black_addr=NULL; เป็นโมฆะ *virtual_base; int fd; printf("1\n"); // แมปพื้นที่ที่อยู่สำหรับการลงทะเบียน spi ลงในพื้นที่ผู้ใช้เพื่อให้เราสามารถโต้ตอบกับพวกเขาได้ // เราจะแมปในช่วง CSR ทั้งหมดของ HPS เนื่องจากเราต้องการเข้าถึงการลงทะเบียนต่างๆ ภายในช่วงนั้น if((fd = open("/dev/mem", (O_RDWR | O_SYNC))) == -1) { printf("ข้อผิดพลาด: ไม่สามารถเปิด \"/dev/mem\"…\n"); กลับ(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("ข้อผิดพลาด: mmap() ล้มเหลว…\n"); ปิด(fd); กลับ(1); } printf("4\n"); printf("5\n"); h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_led_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_adc_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + ADC_0_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_blue_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLUE_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_black_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_BLACK_BASE) & (unsigned long) (HW_REGS_MASK)); h2p_lw_red_addr= virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + PIO_RED_BASE) & (unsigned long) (HW_REGS_MASK)); //int i=0; ข้อมูล int; int ผม= 0, เจ; // Création de la configuration และ des buffers ใน et out เท s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL); kiss_fft_cpx* ใน = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx)); kiss_fft_cpx* ออก = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx)); ในขณะที่(1){ data = *(h2p_lw_adc_addr+2); if(*h2p_lw_blue_addr == 1) data = echo(data, 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); } ฟรี (config); ฟรี(ใน); ฟรี(ออก); กลับ 0; }

ขั้นตอนที่ 7: Le 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 นาโน Soc.

ห้องน้ำในตัว ses composants sont places à l'interieur d'une boite jaune

Sur la boîte บน 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 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 คำแนะนำ vous soit utile

ภาษาอังกฤษ:

นี่คือ (ในที่สุด) การเรนเดอร์สุดท้ายของ Cactus 2000 ของเรา

เราใส่ PCB อินพุตและเอาต์พุตที่เชื่อมต่อกับบอร์ด DE0 Nano Soc

จากนั้นจึงนำส่วนประกอบต่างๆ มาใส่ในกล่องสีเหลือง

ในกล่องมีโพเทนชิออมิเตอร์แบบสไลด์ซึ่งสามารถจัดการระดับเสียง ลูกบิดและปุ่มที่จะเปิดใช้เอฟเฟกต์บางอย่าง และหน้าจอที่จะแสดง FFT

ลำโพงอยู่ในตำแหน่งตั้งฉากกับปุ่มต่างๆ ไมโครโฟนอยู่ในตำแหน่งอีกด้านหนึ่งของกล่องที่สัมพันธ์กับลำโพง

นั่นคือทั้งหมดสำหรับวันนี้

หวังว่าคำแนะนำนี้จะเป็นประโยชน์กับคุณ

แนะนำ: