اطلاعیه

Collapse
No announcement yet.

تاخیر دهنده صدا با میکروی PIC

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تاخیر دهنده صدا با میکروی PIC

    من می خواستم با PIC یک تاخیر دهنده صوتی (صدای انسان) که بین 20 تا 200 میلی ثانیه تاخیر ایجاد می کنه درست کنم. یعنی میزان تاخیرش دست کاربر باشه و گام اون هم مثلا 10 میلی ثانیه باشه.
    لطفا اگه کسی در این زمینه قبلا کار کرده یا میتونه کمک کنه، راهنماییم بکنه ممنون میشم.

    #2
    پاسخ : تاخیر دهنده صدا با میکروی PIC

    اینو عملی امتحان نکردم ولی فکر روش مناسبی برای تاخیر باشه...
    بهتره در وهله ی اول خروجی یک میکروفون رو به adc میکرو متصل کنی (بهتره از پری آمپلی فایر استفاده کنی یا اینکه vref- , +vref رو کوچک کنی مثلا بین 0 تا 2 ولت ) و در برنامه میکرو مقدار adc رو روی یکی از پورت ها قرار بده و از اون طرف بوسیله ی یک dac صدای خروجی رو بشنوی ....اگر خروجی صدا مطلوب بود وارد مرحله دوم میشی که برای ایجاد تاخیر باید از sram میکرو استفاده کنی بنابراین بهتره از یک میکرویی که دارای sram بالا باشه مثلا از سری 18f یکی رو انتخاب کنی....(البته نظر من اینه که از میکرو های avr استفاده کنی چون دارای sram بالاتری نسبت به pic هستند)......در این مرحله دیگه بلافاصله مقدار adc رو روی پورت قرار نمیدیم بلکه با استفاده از حلقه for اونو توی یک آرایه مثلا 2000 بایتی قرار میدهیم و و وقتی 2000 بایت کاملا پر شد توسط یک حلقه ی for دیگه اونو روی پورت و dac قرار میدهیم..تاخیرش هم بستگی به مقدار آرایه داره که هر چقدر آرایه بزرگتری اتخاب کنی تاخیر بیشتره...
    دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

    دیدگاه


      #3
      پاسخ : تاخیر دهنده صدا با میکروی PIC

      من تازه کار با PIC رو شروع کردم. حالا می تونم تاخیر تا 200 میلی ثانیه رو با این میکرو به دست بیارم یا باید سراغ AVR برم؟میشه یه توضیحی در مورد sram بدید؟و میشه بگید هر مدل PIC چه sram ای داره و از کدوما می تونم استفاده کنم؟

      دیدگاه


        #4
        پاسخ : تاخیر دهنده صدا با میکروی PIC

        ببین SRAM همون RAM است که هر چقدر میزان SRAM بالاتر باشه تو میتونی متغیر های بیشتری رو در برنامت ایجاد کنی..مثلا اگر SRAM میکروت 300 بایت باشه تو فقط میتونی 300 تا متغیر از نوع بایت تعریف کنی یا 150 تا متغیر از نوع WORD ........حالا میزان SRAM هر دو میکرو AVR و PIC

        PIC16F877 = 368
        PIC18F458 = 1536
        PIC18F6620 = 3840

        MEGA8 = 1024
        MEGA16 = 1024
        MEGA32 = 2048

        و چون سری 18F قیمت زیادی داره بهتره از MEGA32 استفاده کنی...

        در ضمن برای ایجاد تاخیر شاید روش های دیگری هم باشه ولی من این مدلی به ذهنم رسید...
        دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

        دیدگاه


          #5
          پاسخ : تاخیر دهنده صدا با میکروی PIC

          با حافظه های جانبی چطور می توان این کار رو انجام داد؟

          دیدگاه


            #6
            پاسخ : تاخیر دهنده صدا با میکروی PIC

            توی پاسخ قبلیم فکر کنم اشتباهی enter رو فشار دادم که نصفه شد.....داشتم می گفتم تا وقتی که میشه از sram میکرو استفاده کرد واسه چی بریم از حافظه جانبی استفاده کنیم......به نظر من یا از pic18f458 استفاده کن یا از میکرو های Avr ............و دیگر خود دانی ...
            دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

            دیدگاه


              #7
              پاسخ : تاخیر دهنده صدا با میکروی PIC

              سلام ...این برنامه یک تاخیر کوچولویی ایجاد میکنه ولی نمیدونم چقدره...

              unsigned int rd_adc,i;
              unsigned short first[750],two[750];
              void main() {
              adcon1=0xce;
              trisb=0x00;

              do{
              for (i=0;i<750;i++){
              rd_adc= ADC_Read(0);
              first[i]=rd_adc/4;
              portb=two[i];
              delay_us(50);
              }
              for (i=0;i<750;i++){
              rd_adc= ADC_Read(0);
              two[i]=rd_adc/4;
              portb=first[i];
              delay_us(50);
              }}while(1);
              }
              دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

              دیدگاه


                #8
                پاسخ : تاخیر دهنده صدا با میکروی PIC

                من تازه دارم زبان سی رو یاد میگیرم.همونطور که گفتم با میکرو هم زیاد کار نکردم. این برنامه ای که گفتید مربوط به PIC میشه یا AVR؟
                البته خود برنامه هم می تونه کمک کنه.
                اگه راه های دیگه ای به ذهنتون رسید ممنون می شم کمکم کنید.
                بازم ممنون

                دیدگاه


                  #9
                  پاسخ : تاخیر دهنده صدا با میکروی PIC

                  واسه pic18f458 است و با کامپایلر mikroC ....یک dac هم باید روی پورت b بزاری حالا میخوای مقاومتی باشه یا با آی سی dac ....تاخیر هم به اندازه ای است که متوجه بشیم....البته اگر sram اجازه میداد میشد تاخیر بیشتری ایجاد کرد ولی sram این PIC حدودا 1.5k است که به دوتا 750 تا تبدیل کردم
                  دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

                  دیدگاه


                    #10
                    پاسخ : تاخیر دهنده صدا با میکروی PIC

                    سلام
                    اگه خروجی یک میکروفون رو به adc میکرو متصل کنیم و در برنامه میکرو مقدار adc رو روی یکی از پورت ها قرار بده و از اون طرف بوسیله ی یک dac صدای خروجی رو بشنوی ....آیا خروجی صدا مطلوبه؟ کسی امتحان کرده؟
                    چرا بهتره از پری آمپلی فایر استفاده کنیم یا اینکه vref- , +vref رو کوچک کنیم مثلا بین 0 تا 2 ولت ؟ خیلی تو کیفیت تاثیر داره؟
                    poweng

                    دیدگاه


                      #11
                      پاسخ : تاخیر دهنده صدا با میکروی PIC

                      این دوستمون مثال زدن 0 تا 2 ولت تنظیم کنی . در عمل اگه میکروفون رو مستقیم به میکرو متصل کنید یا صدایی نخواهید داشت به جز پر پر (!) یا صدا عملا به قدری بی کیفیت هست که به درد نمیخوره . خروجی میکروفون ( بسته به نوعش ) حدود چند میلی ولت بیشتر نیست . مثلا 5 تا 20 میلی ولت هستش که بسیار هم از نظر دامنه ای متغیر هست . وقتی از یک پری آمپلی استفاده کنید میتونید ولتاژ خروجی رو درست تنظیم کنید و بین 0 تا 5 ولت خروجی بده که مستقیم به میکرو متصل میشه و بهترین کیفیت رو خواهد داشت . فراموش نکنید که adc هاتون رو 10 بیتی تنظیم میکنید یا 8 بیتی . میکروهای pic هست که خودشون dac داخلی 10 بیتی هم دارن . اما معلوم نیست تو بازار پیدا میشن یا نه . به دیتا شیت ها نگاه کنید انواع این مدل ها رو پیدا میکنید . متصل کردن ram خارجی به میکرو خیلی هم سخت نیست . البته اگه با pic و زبان بیسیک کار کنید . ولی در حد یک تازه کار نیست . از mmc هم میتونید برای این کار استفاده کنید . در ضمن به سمپل ریت ( سرعت خواندن adc و dac ) هم توجه کنید . اگه میخوای ته خفن کاری بکنی من اینو پیشنهاد میدم : PIC24HJ128GP310
                      این میکرو رو خودم از تهران از جهان کیت خریدم . 12 تومن . یکم از مشخصاتش رو میدم تا این Avr کارا برن بوغ بزنن !
                      Up to 40 MIPS operation (at 3.0-3.6V):
                      • 16-bit wide data path
                      • 24-bit wide instructions
                      • Linear program memory addressing up to 4M
                      instruction words
                      • Linear data memory addressing up to 64 Kbytes
                      • 71 base instructions: mostly 1 word/1 cycle
                      • Sixteen 16-bit General Purpose Registers
                      • Flexible and powerful Indirect Addressing modes
                      • Software stack
                      • 16 x 16 multiply operations
                      • 32/16 and 16/16 divide operations
                      • Up to ±16-bit data shifts
                      Direct Memory Access (DMA):
                      • 8-channel hardware DMA
                      • 2 Kbytes dual ported DMA buffer area
                      (DMA RAM) to store data transferred via DMA:
                      - Allows data transfer between RAM and a
                      peripheral while CPU is executing code
                      (no cycle stealing)
                      • Most peripherals support DMA
                      Interrupt Controller:
                      • 5-cycle latency
                      • Up to 61 available interrupt sources
                      • Up to five external interrupts
                      • Seven programmable priority levels
                      • FIve processor exceptions
                      Digital I/O:
                      • Up to 85 programmable digital I/O pins
                      • Wake-up/Interrupt-on-Change on up to 24 pins
                      • Output pins can drive from 3.0V to 3.6V
                      • All digital input pins are 5V tolerant
                      • 4 mA sink on all I/O pins
                      On-Chip Flash and SRAM:
                      • Flash program memory, up to 256 Kbytes
                      • Data SRAM, up to 16 Kbytes (includes 2 Kbytes
                      of DMA RAM)
                      System Management:
                      • Flexible clock options:
                      - External, crystal, resonator, internal RC
                      - Fully integrated PLL
                      - Extremely low jitter PLL
                      • Power-up Timer
                      • Oscillator Start-up Timer/Stabilizer
                      • Watchdog Timer with its own RC oscillator
                      • Fail-Safe Clock Monitor
                      • Reset by multiple sources
                      Power Management:
                      • On-chip 2.5V voltage regulator
                      • Switch between clock sources in real time
                      • Idle, Sleep and Doze modes with fast wake-up
                      Timers/Capture/Compare/PWM:
                      • Timer/Counters, up to nine 16-bit timers:
                      - Can pair up to make four 32-bit timers
                      - One timer runs as Real-Time Clock with
                      external 32.768 kHz oscillator
                      - Programmable prescaler
                      • Input Capture (up to eight channels):
                      - Capture on up, down or both edges
                      - 16-bit capture input functions
                      - 4-deep FIFO on each capture
                      • Output Compare (up to eight channels):
                      - Single or Dual 16-Bit Compare mode
                      - 16-bit Glitchless PWM mode
                      Communication Modules:
                      • 3-wire SPI (up to two modules):
                      - Framing supports I/O interface to simple
                      codecs
                      - Supports 8-bit and 16-bit data
                      - Supports all serial clock formats and
                      sampling modes
                      • I2C™ (up to two modules):
                      - Full Multi-Master Slave mode support
                      - 7-bit and 10-bit addressing
                      - Bus collision detection and arbitration
                      - Integrated signal conditioning
                      - Slave address masking
                      • UART (up to two modules):
                      - Interrupt on address bit detect
                      - Interrupt on UART error
                      - Wake-up on Start bit from Sleep mode
                      - 4-character TX and RX FIFO buffers
                      - LIN bus support
                      - IrDA® encoding and decoding in hardware
                      - High-Speed Baud mode
                      - Hardware Flow Control with CTS and RTS
                      • Enhanced CAN (ECAN™ module) 2.0B active
                      (up to two modules):
                      - Up to eight transmit and up to 32 receive buffers
                      - 16 receive filters and 3 masks
                      - Loopback, Listen Only and Listen All
                      Messages modes for diagnostics and bus
                      monitoring
                      - Wake-up on CAN message
                      - Automatic processing of Remote
                      Transmission Requests
                      - FIFO mode using DMA
                      - DeviceNet™ addressing support
                      Analog-to-Digital Converters:
                      • Up to two Analog-to-Digital Converter (ADC)
                      modules in a device
                      • 10-bit, 1.1 Msps or 12-bit, 500 ksps conversion:
                      - Two, four, or eight simultaneous samples
                      - Up to 32 input channels with auto-scanning
                      - Conversion start can be manual or
                      synchronized with one of four trigger sources
                      - Conversion possible in Sleep mode
                      - ±1 LSb max integral nonlinearity
                      - ±1 LSb max differential nonlinearity
                      CMOS Flash Technology:
                      • Low-power, high-speed Flash technology
                      • Fully static design
                      • 3.3V (±10%) operating voltage
                      • Industrial temperature
                      • Low-power consumption
                      Packaging:
                      • 100-pin TQFP (14x14x1 mm and 12x12x1 mm)
                      • 64-pin TQFP (10x10x1 mm)

                      یکم فارسی بخوام بگم :
                      حافظه ی فلش فقط 128 کیلو بایت .
                      حافظه ی sram هم 16 کیلوبایت ناقابل
                      8 فروند DMA Channels
                      همش 9 تا Timer 16-bit داره !
                      میدونی چندتا کانال adc داره ؟ همش 32 تا کانال ناقابل ورودی آنالوگ 12 بیتی داره ! ( کیفیتش از mp3 که با کامپیوترت گوش میدی بیشتره ) با سمپل ریت 500 ksps conversion در حالت 12 بیتی و در حالت ورودی 10 بیتی همش 1.1 Msps . ینی اگه در حالت 10 بیتی استفاده کنی هر رودی آنالوگ برات در یک ثانیه میتونه یک میلون و یکصد هزار سمپل بگیره ! ( باهش میتونی فیلم ضبط کنی ) .
                      در آن واحد ( همزمان) میتونه تا 8 تا کانال آنالوگ رو باهم بخونه .
                      85 تا I/O Pins باز هم ناقابل .
                      dma هم که داره . ینی یک حافظه ی مخصوص فوق سریع که اصلا ربطی به ram نداره . توضیحش خیلی طولانی هستش . فقط همینقدر بدون که میتونی یک دیتا رو از ورودی آنالوگ بخونی و مستقیم بریزی روی یکی از پورت هاش بدون اینکه cpu اصلا متوجه این عمل بشه یا درگیر بشه .
                      پورت هاش هم که 16 بیتی هستن .
                      اینتراپت هم 24 تا داره .
                      • 16 x 16 multiply operations ناقابل هم داره . ینی میخوای مخت دود کنه : سرعت کلاک cpu میتونه به 180 مگاهرتز برسه و با هر کلاک هم cpu میتونه یک دستورالعمل 16 تا 24 بیتی رو انجام بده !!!!
                      بسه .
                      در آخر باز هم ذکر میکنم که من این میکرو رو دارم . موفق باشید .
                      if all men are the same
                      then
                      why do women take so long to choose one ?

                      دیدگاه


                        #12
                        پاسخ : تاخیر دهنده صدا با میکروی PIC

                        نوشته اصلی توسط josef2600
                        یکم از مشخصاتش رو میدم تا این Avr کارا برن بوغ بزنن !
                        با این جملت خیلی حال کردم! ‎
                        ممنون . اطلاعات خوبی دادید.

                        دیدگاه


                          #13
                          پاسخ : تاخیر دهنده صدا با میکروی PIC

                          با تشکر از معرفی و اطلاعات شما
                          اگر سرعت کلاک CPU به 180 مگاهرتز برسه و با هر کلاک CPU بتونه یک دستوالعمل اجرا کنه سرعتش میشه 180 MIPS در صورتی که طبق فرمایش خود شما 40 MIPS هست، منظورم این هست که با هر کلاک، CPU یک دستورالعمل اجرا نمیکنه.
                          از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                          هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                          اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                          اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                          شاد و موفق باشید

                          دیدگاه


                            #14
                            پاسخ : تاخیر دهنده صدا با میکروی PIC

                            درسته .
                            در pic ها ، کلاک تقسیم بر 4 میشه . یعنی با هر 4 کلاک یک دستور اجرا میشه . پس با 180MHz تقریبا میشه 40mips

                            دیدگاه


                              #15
                              پاسخ : تاخیر دهنده صدا با میکروی PIC

                              میکرویی که dac داشته باشه و توی بازار ایران هم باشه کسی سراغ داره..البته به غیر از xmega
                              دست هایی که کمک میکنند از دست هایی که دعا میکنند مقدس ترند....کوروش کبیر

                              دیدگاه

                              لطفا صبر کنید...
                              X