kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29

9.22.8 Aufbau der Lautsprecherschaltung

9.22.8 (EN google-translate)

9.22.8 (PL google-translate)

Grundidee

  • Ein PWM-Ausgang dient dazu, die Tonhöhe sinusförmig vorzugeben, PWM 3.
  • Ein zweiter PWM-Ausgang dient dazu, eine Hüllkurve darum zu legen, PWM 13.
Stromlaufplan zur Lautspredcherschaltung.

Bild 9.22.8-1: Stromlaufplan zur Lautspredcherschaltung.

Laborplatine.

Bild 9.22.8-2: Laborplatine.

#include<avr/interrupt.h>

/*
unsigned char sinus[] = {
                             127,142,158,173,188,201,213,224,234,241,
                             247,251,253,253,251,247,241,234,224,213,
                             201,188,173,158,142,127,111,95,80,65,
                             52,40,29,19,12,6,2,0,0,2,
                             6,12,19,29,40,52,65,80,95,111
                        };
*/                      
unsigned char sinus[] = {127,166,201,229,247,254,247,229,201,166,127,87,52,24,6,0,6,24,52,87};                       
                        
unsigned char zaehler=0;
unsigned char zaehler_langsam=0;

unsigned char TON = 0;

unsigned char TONFOLGE[]={0,4,2,1,3};

ISR(TIMER1_COMPA_vect)
{
//    analogWrite(3,sinus[zaehler]);    
//    zaehler++;
//    zaehler%=20;
      digitalWrite(3,1);
      digitalWrite(3,0);
}

void setup() 
{
    DDRB=255; 
 
    TCCR1B &= ~(1<<WGM13); //Mode 4
    TCCR1B |= (1<<WGM12);
    TCCR1A &= ~(1<<WGM11);
    TCCR1A &= ~(1<<WGM10);
    
    //Vorteilung: 64, dann 250000Hz Zählung:
    TCCR1B &= ~(1<<CS12);
    TCCR1B |= (1<<CS11);
    TCCR1B |= (1<<CS10);    
    
    //Abtastrate: 50000Hz fünfzigtausend mal pro Sekunde.
    OCR1A=250;  

    TIMSK1 |= (1<<OCIE1A); //Mode 4
    sei();  
  
    //Motortreiber sicher ausgeschaltet lassen, da externe Spannung nötig!:
   //LINKER MOTOR
    //A5 als digitaler Ausgang, INPUT 3
    pinMode(23,OUTPUT);  
    //A0 als digitaler Ausgang, INPUT 4
    pinMode(18,OUTPUT);  
    digitalWrite(23,1); //1 eine Richtung
    digitalWrite(18,0); //0
    analogWrite(6,0);

    //RECHTER MOTOR
    //A4 als digitaler Ausgang, INPUT 2
    pinMode(22,OUTPUT);  
    //A1 als digitaler Ausgang, INPUT 1
    pinMode(19,OUTPUT);  
    digitalWrite(22,1); //1 eine Richtung
    digitalWrite(19,0); //0
    analogWrite(5,0);
    
    //Lautsprecher
    pinMode(3,OUTPUT);  
    
}

void loop() 
{

    analogWrite(13,210-(sinus[zaehler_langsam]>>3));    
    OCR1A=TONFOLGE[TON]*20+250-(sinus[zaehler_langsam]>>3);  
    
    zaehler_langsam++;
    if(zaehler_langsam==20)
    {
        zaehler_langsam=0;
        
        TON++;
        TON%=5;
    }    
    delay(100); //100*20==2000 2 Sekunden ist ein Zyklus.
}

Code 9.22.8-1: "Walfischgesänge"