Inhoudsopgave:

Sampling Rate/Aliasing Instructable - Ajarnpa
Sampling Rate/Aliasing Instructable - Ajarnpa

Video: Sampling Rate/Aliasing Instructable - Ajarnpa

Video: Sampling Rate/Aliasing Instructable - Ajarnpa
Video: Nyquist-Shannon; The Backbone of Digital Sound 2024, December
Anonim
Sampling Rate/Aliasing Instructable
Sampling Rate/Aliasing Instructable

Ik wil een educatief project maken dat aliasing (en steekproeffrequenties) demonstreert en dat bedoeld is om op een website te worden geplaatst als hulpmiddel voor studenten die leren over aliasing.

Stap 1: Ciruit-lay-out

Ciruit-indeling
Ciruit-indeling
Ciruit-indeling
Ciruit-indeling

Arduino

De Arduino is de basis van het circuit; ondersteuning van de servomotor (met gemonteerd encoderwiel) en de gepositioneerde hall-effectsensor.

-Encoderwiel: het doel van het encoderwiel is om een magneet op te hangen die in een cirkelvormig pad draait en boven een gepositioneerde hall-effectsensor zweeft.

-Sensoropstelling: de hall-effect-senor wordt onder het rotatiepad van de magneet geplaatst, het doel is om het passeren van de magneet te volgen met verschillende rotatiesnelheden en gegevensverzamelingssnelheden.

---------------------------------------------------------------------------------------------------------

Substappen:

  1. Verkrijg materialen:

    Arduino (+ breadboard), draden, encoderwiel, magneet, hall-effectsensor, servomotor, Matlab-applicatie, Arduino-applicatie

  2. Knip het encoderwiel uit, monteer op servo, druk de magneet in de gleuf.
  3. Bevestig de hall-effect-sensor onder het pad van de magneet (draadverlengingen van de sensor kunnen nodig zijn).
  4. Circuit bouwen.

Stap 2: Arduino-code

Arduino-code
Arduino-code

Wijze van gegevensverzameling

De Arduino-code gebruikt [Line 41] om informatie te verzamelen, via de 'Analog In' A0-poort, van de hall-effectsensor

Methode van seriële gegevensoverdracht:

  • [Regel 43] Toont in de seriële monitor een variabele 'timer' die de functie 'millis()' implementeert om een lopende timer in milliseconden te houden voor de duur van het programma.
  • [Line 45] Toont in de seriële monitor een variabele 'hallsensor' die 'analogRead' implementeert om informatie te verkrijgen van de hall-effect-sensor terwijl het programma wordt uitgevoerd.

Doel van de parameter delay()

Het doel van de parameter delay() is om de responstijd van de gegevensverzameling die wordt ontvangen van de hall-effectsensor te variëren

---------------------------------------------------------------------------------------------------------

Substappen:

Voer de Arduino-code in de Arduino-toepassing in

Stap 3: Matlab-code (HallRT-bestand)

Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)
Matlab-code (HallRT-bestand)

-Wijze van gegevensontvangst - [Figuur 3: Regel 77]

Gegevens verkrijgen van de ArduinoStep

---------------------------------------------------------------------------------------------------------

Substappen:

Invoer Matlab-code is boven de cijfers, opslaan in HallRT-bestand

Stap 4: Matlab-code (thresh_analyze)

Matlab-code (thresh_analyze)
Matlab-code (thresh_analyze)
Matlab-code (thresh_analyze)
Matlab-code (thresh_analyze)

Methode voor het tellen van pieken [Figuur 2: Regels 45-53]

  • Het gebruik van de vlag in deze Matlab-code is zo dat zodra de for-lus een 'aRval' tegenkomt die groter is dan de vooraf ingestelde 'thresh'-waardetelling met één zal toenemen, de piek wordt gemarkeerd met een asterisk, en het if-statement [Line 45-50] zal breken omdat flag = 1. Het tweede if-statement met een flag [Line 51-53] geeft aan dat zodra de piek is bereikt en de waarden rond de piek beginnen af te nemen, dan flag = 0 en de for-lus blijft zoeken naar meer pieken.
  • Parameters/noodzakelijke waarden:

    • 'aRval': De verzamelde gegevens van een proefrun.
    • 'thresh': Een gekozen waarde om alles erboven in aRval als een piek aan te geven.

---------------------------------------------------------------------------------------------------------

Substappen:

Maak een tweede Matlab-bestand "thresh_analyze"

Stap 5: Proef 1: Geen aliasing

Proef 1: Geen aliasing
Proef 1: Geen aliasing
Proef 1: Geen aliasing
Proef 1: Geen aliasing

Afbeelding 1: Gegevensproef @ Delay 200 Afbeelding 2: Geanalyseerde drempelgegevens

-Vertragingsparameter: 200

Pieken:

Telling = 45

-Aantal omwentelingen per minuut:

45 omwentelingen/minuut

---------------------------------------------------------------------------------------------------------

Substappen:

  1. Sluit de Arduino aan op je laptop.

    Stel de vertraging in de Arduino-code in op "200". Druk op Uploaden (in de linkerbovenhoek van de applicatie)

  2. Ga naar je Matlab-bestand HallRT [Line 37] en verander de variabele 'delayTime' naar 200.
  3. Voer het HallRT-programma uit.
  4. Sla het Matlab-bestand op onder "delay_200". (Afbeelding opslaan)
  5. Laad het delay_200.mat-bestand.
  6. Voer het programma thresh_analyze uit. (Afbeelding opslaan)

Stap 6: Proef 2: Aliasing van sensor (i)

Proef 2: Aliasing van sensor (i)
Proef 2: Aliasing van sensor (i)
Proef 2: Aliasing van sensor (i)
Proef 2: Aliasing van sensor (i)

Figuur 1: Data Trial @ Delay 50

Afbeelding 2: Geanalyseerde gegevens dorsen

Vertragingsparameter: 50-pieken:

Telling = 52

Aantal omwentelingen per minuut:

52 omwentelingen/minuut

---------------------------------------------------------------------------------------------------------

Substappen:

  1. Sluit de Arduino aan op je laptop.

    Stel de vertraging in de Arduino-code in op "50". Druk op Uploaden (in de linkerbovenhoek van de applicatie)

  2. Ga naar je Matlab-bestand HallRT [Line 37] en verander de variabele 'delayTime' naar 50.
  3. Voer het HallRT-programma uit.
  4. Sla het Matlab-bestand op onder "delay_50". (Afbeelding opslaan)
  5. Laad het delay_50.mat-bestand.
  6. Voer het programma thresh_analyze uit. (Afbeelding opslaan)

Stap 7: Proef 3: Aliasing van sensor (ii)

Proef 3: Aliasing van sensor (ii)
Proef 3: Aliasing van sensor (ii)
Proef 3: Aliasing van sensor (ii)
Proef 3: Aliasing van sensor (ii)

Afbeelding 1: Gegevensproef @ Delay 100 Afbeelding 2: Geanalyseerde drempelgegevens

Vertragingsparameter: 100-pieken:

Aantal = 54

Aantal omwentelingen per minuut:

54 omwentelingen/minuut

------------------------------------------------ -------------------------------------------------- ------- Substappen:

  1. Sluit de Arduino aan op je laptop.

    Stel de vertraging in de Arduino-code in op "100". Druk op Uploaden (in de linkerbovenhoek van de applicatie).'

  2. Ga naar je Matlab-bestand HallRT [Line 37] en verander de variabele 'delayTime' naar 100.
  3. Voer het HallRT-programma uit.
  4. Sla het Matlab-bestand op onder "delay_100". (Afbeelding opslaan)
  5. Laad het delay_100.mat-bestand.
  6. Voer het programma thresh_analyze uit. (Afbeelding opslaan)

Stap 8: Proef 4: aliasing van sensor (iii)

Proef 4: Aliasing van sensor (iii)
Proef 4: Aliasing van sensor (iii)
Proef 4: Aliasing van sensor (iii)
Proef 4: Aliasing van sensor (iii)

Afbeelding 1: Gegevensproef @ Delay 300 Afbeelding 2: Geanalyseerde drempelgegevens

-Vertragingsparameter: 300

Pieken:

Aantal = 32

Aantal omwentelingen per minuut:

32 omwentelingen/minuut

-------------------------------------------------- -------------------------------------------------- ------- Substappen:

  1. Sluit de Arduino aan op je laptop.

    Stel de vertraging in de Arduino-code in op "300". Druk op Uploaden (in de linkerbovenhoek van de applicatie)

  2. Ga naar je Matlab-bestand HallRT [Line 37] en verander de variabele 'delayTime' naar 300.
  3. Voer het HallRT-programma uit.
  4. Sla het Matlab-bestand op onder "delay_300". (Afbeelding opslaan)
  5. Laad het delay_300.mat-bestand.
  6. Voer het programma thresh_analyze uit. (Afbeelding opslaan)

Aanbevolen: