- Labornetzteil AliExpress         
Seite 8 von 8 ErsteErste ... 678
Ergebnis 71 bis 78 von 78

Thema: Tonsteuerung mit ASURO

  1. #71
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    Anzeige

    E-Bike
    hat jemand eine idee wie ich meine platien auf dem asuro befestigen kann? sie soll auf die motoren plaziert werden.

  2. #72
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    hab mich mal an des programm für die zusatzplatine rangemacht. der plan: erstmal alles festlegen wie im heft. dann eine for schleife dass er zuerst i=1 hat mit den werten von koeff und gain für den bandpass 1 und rechnet dann die 2. for schleife aus, wie im heft. nachdem er das gemacht hat is i=2 usw. bis alle eingangswerte mit jedem filter berechnet wurden.

    Code:
    #include "myasuro.h"
    #include "asuro.h"
    #include "inttypes.h"
    
    /* Teil 1. Bandpassfilter*/
    
    void bpfilter(int_8 *input,int8_t *output, uint16_t *length, int32_t koeff)
    
    int32_t a2;                                       /* a2 als Integervariable festlegen*/
    int32_t a3;                                       /* a3 als Integervariable festlegen*/
    int32_t GAIN_FRAC;                                /* GAIN_FRAC als Integervariable festlegen*/
    int32_t x0,x1,x2;                                 /* x0,x1,x2 als Integervariable festlegen*/
    int32_t y0,y1,y2;                                 /* y0,y1,y2 Integervariable festlegen*/
    uint16_t n;                                       /* n Integervariable festlegen*/
    uint16_t i;                                       /* i als Integervariable festlegen*/
    
    x1=0;                                             /* Wert für x1 festlegen*/
    x2=0;                                             /* Wert für x2 festlegen*/
    y0=0;                                             /* Wert für y0 festlegen*/
    y1=0;                                             /* Wert für y1 festlegen*/
    y2=0;                                             /* Wert für y2 festlegen*/
    x0=1;                                             /* Wert für x0 festlegen*/
    length=100;                                /* Wert für length festlegen*/
    
      for i=1;i<7;i++;                          /* Schleife zählt bis 6 hoch, um die Werte mit jedem Bandpass zu filtern*/
      {
        if i=1;                                     /* Schleife 1 mit den Werten für Bandpass 1*/
          {
           a2=2
           a3=3
           GAIN_FRAC=4
          }
       if i=2;                             /* Schleife 2 mit den Werten fü Bandpass 2*/
          {
            a2=1
           a3=2
           GAIN_FRAC=3
          }
       if i=3;                                     /* Schleife 3 mit den Werten für Bandpass 3*/
          {
            a2=3
           a3=2
           GAIN_FRAC=1
          }
        if i=4;                                     /* Schleife 4 mit den Werten für Bandpass 4*/
          {
            a2=4
           a3=2
           GAIN_FRAC=3
          }
        if i=5;                                     /* Schleife 5 mit den Werten für Bandpass 5*/
          {
            a2=1
           a3=1
           GAIN_FRAC=1
          }
        if i=6;                                     /* Schleife 6 mit den Werten für Bandpass 6*/
          {
            a2=2
           a3=4
           GAIN_FRAC=3
          }
    
            for n=0;n<length;n++;                 /* Schleife bis n alle Eingangswerte verarbeitet hat (length legt die Anzahl der Eingangswerte fest)*/
             {
             x0=input;                             /* x0 als Eingang festlegen*/
             y0=x0-x2-((a2*y1)>>16)-((a3*y2)>>16); /* Gleichung um y0 zu berechnen*/
             x2=x1;
             x1=x0;
             y2=y1;
             y1=y0;
    
             output[n]=((y0*GAIN_FRAC)>>16);       /* Gleichung um Ausgang zu berechnen*/
             }
    
        printf(output[n]);                           /* Ergebnis soll am Bildschirm angeszeigt werden*/
      }
    
    
    /* Teil 2. LEDs ANSTEUERN und Befehl erstellen*/
    
    /* Teil 3. Versenden des Befehls über IR-DIODE*/
    hab da aber ganze 17 errors drinne:

    ../ZUSATZ155.c:3:1: warning: "/*" within comment
    ../ZUSATZ155.c:4:1: warning: "/*" within comment
    ../ZUSATZ155.c:5:1: warning: "/*" within comment
    ../ZUSATZ155.c:6:1: warning: "/*" within comment
    ../ZUSATZ155.c:14: error: expected ')' before '*' token
    ../ZUSATZ155.c:20: warning: built-in function 'y0' declared as non-function
    ../ZUSATZ155.c:20: warning: built-in function 'y1' declared as non-function
    ../ZUSATZ155.c:24: warning: data definition has no type or storage class
    ../ZUSATZ155.c:24: warning: type defaults to 'int' in declaration of 'x1'
    ../ZUSATZ155.c:24: error: conflicting types for 'x1'
    ../ZUSATZ155.c:19: error: previous declaration of 'x1' was here
    ../ZUSATZ155.c:25: warning: data definition has no type or storage class
    ../ZUSATZ155.c:25: warning: type defaults to 'int' in declaration of 'x2'
    ../ZUSATZ155.c:25: error: conflicting types for 'x2'
    ../ZUSATZ155.c:19: error: previous declaration of 'x2' was here
    ../ZUSATZ155.c:26: warning: data definition has no type or storage class
    ../ZUSATZ155.c:26: warning: type defaults to 'int' in declaration of 'y0'
    ../ZUSATZ155.c:26: error: conflicting types for 'y0'
    ../ZUSATZ155.c:20: error: previous declaration of 'y0' was here
    ../ZUSATZ155.c:27: warning: data definition has no type or storage class
    ../ZUSATZ155.c:27: warning: type defaults to 'int' in declaration of 'y1'
    ../ZUSATZ155.c:27: error: conflicting types for 'y1'
    ../ZUSATZ155.c:20: error: previous declaration of 'y1' was here
    ../ZUSATZ155.c:28: warning: data definition has no type or storage class
    ../ZUSATZ155.c:28: warning: type defaults to 'int' in declaration of 'y2'
    ../ZUSATZ155.c:28: error: conflicting types for 'y2'
    ../ZUSATZ155.c:20: error: previous declaration of 'y2' was here
    ../ZUSATZ155.c:29: warning: data definition has no type or storage class
    ../ZUSATZ155.c:29: warning: type defaults to 'int' in declaration of 'x0'
    ../ZUSATZ155.c:29: error: conflicting types for 'x0'
    ../ZUSATZ155.c:19: error: previous declaration of 'x0' was here
    ../ZUSATZ155.c:30: warning: data definition has no type or storage class
    ../ZUSATZ155.c:30: warning: type defaults to 'int' in declaration of 'length'
    ../ZUSATZ155.c:32: error: expected identifier or '(' before 'for'
    ../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
    ../ZUSATZ155.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '++' token
    ../ZUSATZ155.c:33: error: expected identifier or '(' before '{' token


    kann mir helfen die erros zu beseitigen? bekomm die irgendwie net weg. außerdem: ist die grundidee richtig? TEIL 2 wäre halt dann, dass er die bestimmte LED für einen bestimmten Bandpass ansteuert der gerade aktiv ist. aber wie kann ich im programm festlegen wann welcher bandpass aktiv ist? da muss doch output dann einen bestimmten wert haben. vermutlich den wert der mittenfrequenz eines bandpasses oder???

  3. #73
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.686
    Zitat Zitat von asuro11
    ... wie ich meine platien auf dem asuro befestigen kann? sie soll auf die motoren plaziert werden.
    Zwischen dem Controller und dem Gatterbaustein IC3 CD4081 ist in der Asuroplatine ein hübsches Loch. Da passt eine Gewindestange M3 rein. Auf diese Weise habe ich (m)eine Zusatzplatine(n) befestigt. Die ragen zwar über den Controller, aber nach "hinten" ist natürlich auch noch Platz. Diese Gewindestange wird an der Platine mit zwei Muttern - eine drunter, eine oben - befestigt und hält eine ganze Menge aus. Ähnlich habe ich die Erweiterungsplatine auch mit zwei Muttern befestigt. Die Bilder zeigen die Situation nicht sehr groß, aber Du siehst sicher, wie ich das meine.
    Ciao sagt der JoeamBerg

  4. #74
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    das problem ist, dass ich dort ein kugellager hingeschraubt habe (als anternative zum tischtennisball). aber ist eine gute idee. notfalls schraube ich halt das kugellager ab. gibt es sonst noch ideen?

  5. #75
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    hallo habe noch kurz fragen zum projekt:

    1. bei der resurce relation ausm internet sind ja die koeff verdreht mit anderen vorzeichen. wenn man jetzt aber die koeff für seine filtergleichung haben will muss man doch daher die vorzeichen der koeffs wechseln und ebenso die reihenfolge oder? weil das mikrocontroller heft hat bei dem einem koeff (ich glaub a2) nicht das vorzeichen gedreht. es ist ja in der resurce relation einmal + und - , aber beide sind dann in "wirklichkeit" positv in der iir filtergleichung??? wo ist denn hier der fehler???

    2. im programm. was bedeutet denn genau void bpfilter(......) was ist dass denn???

    3. die signallänge. ist da die voraussetzung im mikrocontrollerheft das 10kHz 100 Mikrosek Abtastzeit beudeuten. woher kommt diese voraussetzung??? und dann ist klar das bei 1kHz die Zietdauer für 10 Schwingungen 10 ms dauern. aber warum teilt man dann 10ms/10mikrosek??? dass dann 100 werte rauskommen? das hab ich net ganz gerafft...

    4. was genau ist ein phasengang??

  6. #76
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    zu 2. : mit void bpfilter(...) wird ein Unterprogramm definiert. Das ist ein elementarer Teil der Sprache C.

    zu 4.: Mit Phasengang wird die Abhängigkeit der Phase von der Frequenz bezeichnet.

    In dem Programm ist ein normaler digitaler filter beschrieben. Da kommt also wieder sie Frequenz herraus. Hier ist aber mehr so etwas wie eine Bestimmung der Amplitude gebraucht. Das wäre z.B. der Goertzel-Algorithmus:
    http://de.wikipedia.org/wiki/Goertzel-Algorithmus

  7. #77
    Benutzer Stammmitglied
    Registriert seit
    31.03.2009
    Beiträge
    76
    hallo danke für deine antworten,

    hätte noch eine frage und zwar:

    mein bandpass benötigt bei 1kHz mittenfrequenz 10 Schwingungen beim Einschwingen.
    dann ist als voraussetzung festgelegt: 10 kHz entsprechen 100 Mikosekunden Abtastzeit bei 1 kHz Signalfrequenz benötigte Zeitdauer für 10 Schwingungen: 10 ms
    signallänge= 10ms/100 mikroskeunden=100 werte.

    woher kommt denn dass 10 kHz 100 Mikrosekunden entsprechen?und woher weiß ich dass bei 1kHz ich für 10 Schwinungen 10 ms benötige???
    und wie ist die rechnung 10ms/100mikrosek gemeint???

  8. #78
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn der AD wandler mit 10 kHz abtastrate arbeitet kommt halt alle 100 µs ein neuer Wert: 100µs = 1 / ( 10 kHz)

    Bei 1 kHz braucht eine Schwingung 1/ (1kHz) = 1 ms.

Seite 8 von 8 ErsteErste ... 678

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen