kramann.info
© Guido Kramann

Login: Passwort:










EmbSyst
1 day_by_day
2 Eingebettete_Systeme
..2.1 Softwareentwicklung
....2.1.1 AgileSoftwareentwicklung
....2.1.2 Verhalten
....2.1.3 Entwurfsmuster
....2.1.4 FuzzyRegler
....2.1.5 Uebung
..2.2 Arduino
....2.2.1 Uebung1
..2.3 Android
....2.3.1 UML
......2.3.1.1 Volumenberechnung
......2.3.1.2 UML_Klassendiagramm
......2.3.1.3 Konstruktor
......2.3.1.4 Statische_Variable
....2.3.2 bluej
....2.3.3 Threads
....2.3.4 Interfacedesign
....2.3.5 Android
......2.3.5.1 Getting_Started
......2.3.5.2 App
......2.3.5.3 Beispielprojekt
........2.3.5.3.1 Richtlinien
........2.3.5.3.2 Anforderungen
........2.3.5.3.3 Layout
........2.3.5.3.4 Projekt_einrichten
........2.3.5.3.5 Refactoring
........2.3.5.3.6 Icon
........2.3.5.3.7 Icon2
........2.3.5.3.8 Kurzanleitung
........2.3.5.3.9 Architektur
........2.3.5.3.10 Anwendungsklasse
......2.3.5.4 Threads
......2.3.5.5 Activities
......2.3.5.6 Was_ist_wo
......2.3.5.7 Regelungssysteme
........2.3.5.7.1 Servo
........2.3.5.7.2 Fahrzeug
......2.3.5.8 ADB_Apps
......2.3.5.9 Veroeffentlichen
......2.3.5.10 Einzelheiten
........2.3.5.10.1 Bildschirmaufloesung
........2.3.5.10.2 Parameter
........2.3.5.10.3 Permission
........2.3.5.10.4 Latenzzeit
......2.3.5.11 Tonerkennung
........2.3.5.11.1 Wahrscheinlichkeitsrechnung
........2.3.5.11.2 Kovarianz_Scilab
........2.3.5.11.3 Java_Threads
........2.3.5.11.4 Java_Reflection
....2.3.6 Processing
......2.3.6.1 Installation
......2.3.6.2 Erste_Schritte
......2.3.6.3 Mechatronik
......2.3.6.4 Bibliotheken
......2.3.6.5 Uebung
......2.3.6.6 Snippets
........2.3.6.6.1 Dateioperationen
........2.3.6.6.2 Bilder
........2.3.6.6.3 GUI
........2.3.6.6.4 Text
........2.3.6.6.5 PDF
........2.3.6.6.8 Maus
........2.3.6.6.10 Zeit
........2.3.6.6.13 Animation
........2.3.6.6.15 Simulation
......2.3.6.7 Referenzen
....2.3.7 Android_Processing
......2.3.7.1 Basics
......2.3.7.2 Einrichten
......2.3.7.3 Crossplattform
......2.3.7.4 sinus
......2.3.7.5 sample
......2.3.7.6 analyse
......2.3.7.7 synthese
......2.3.7.8 Hilfsapps
......2.3.7.9 Eigene_Library
....2.3.8 Processing_VR
....2.3.9 Shapes3D
....2.3.10 TextToSpeech
....2.3.11 Internetprogrammierung
......2.3.11.1 Codegenerierung
......2.3.11.2 PHP_Programmierung
......2.3.11.3 PHP_OOP
......2.3.11.4 Java
......2.3.11.5 UDP
......2.3.11.6 Internetkontrolle
........2.3.11.6.1 Kamerabild
....2.3.12 OSC
......2.3.12.1 Datenaustausch
......2.3.12.2 i2audiolab
......2.3.12.3 Ardour
....2.3.13 Netzwerkprogrammierung
....2.3.14 JNI
....2.3.15 Erweitern
......2.3.15.1 sprich
......2.3.15.2 spiel
....2.3.16 thbvr
....2.3.17 Reflection
....2.3.18 Script
....2.3.19 Java3D
3 Echtzeitprogrammierung
..3.1 Echtzeit
..3.2 Korrektheit
..3.2 Semaphoren
..3.3 Hardware
..3.5 Synchronprogramm
..3.6 Zustandsmaschine
..3.7 Arduino
....3.7.1 Uebung
....3.7.2 RTOS
....3.7.3 Scheduler
....3.7.4 Semaphor
......3.7.4.1 Laufkatze
......3.7.4.2 Java
......3.7.4.3 Semaphor
....3.7.5 Messages
..3.8 Android
....3.8.2 Threads
......3.8.2.1 Java
......3.8.2.2 Synchronisierung
..3.9 Petrinetze
....3.9.1 Installation
....3.9.2 Test
4 KI
..4.1 Unueberwachtes_Lernen
..4.2 Agentensysteme
....4.2.1 Architekturen
......4.2.1.1 Verhalten
......4.2.1.2 Entwurfsmuster
....4.2.2 SUMO
......4.2.2.1 GettingStarted
......4.2.2.2 Antrieb
......4.2.2.3 Sensoren
......4.2.2.4 Zeitbasis
......4.2.2.5 Fernsteuerung
......4.2.2.6 Umsetzung_Fernst
......4.2.2.7 Fernsteuerung3
......4.2.2.10 Umsetzung
......4.2.2.11 Sockelsoftware
......4.2.2.12 Plan
......4.2.2.13 Lernen
........4.2.2.13.1 Parameter
........4.2.2.13.2 Identifikation
........4.2.2.13.3 Java
..4.3 Genetische_Algorithmen
....4.3.1 Heuristiken
....4.3.2 Genalgorithmus
..4.4 Kalmanfilter
....4.4.1 Vorarbeit
....4.4.2 Minimalversion
....4.4.3 Beispiel
5 Bildverarbeitung
..5.1 Gestalttheorie
..5.2 Bildverarbeitung
6 Technische_Systeme
..6.1 Kulturgeschichte
..6.2 Technikphilosophie
..6.3 Anthropozaen
7 Literatur
kramann.info
© Guido Kramann

Login: Passwort:




Den Antrieb testen

(EN google-translate)

(PL google-translate)

Ansteuerung der Motoren gemäß RP6v2_MAINBOARD.pdf:


Richtung linker  Motor:  PC2
Richtung rechter Motor:  PC3

Geschwindigkeit linker  Motor (PWM): OC1B / PD4
Geschwindigkeit rechter Motor (PWM): OC1A / PD5

Code 0-1: Zuordnungen für die Motoransteuerung.

Testprogramm für die Motoren nur mit Hilfe von digitalen Ausgängen

#include<avr/io.h>

void initialisiereMotore()
{
    DDRC |= 0b00001100;
    DDRD |= 0b00011000;
}

void fahrt(int links, int rechts)
{
    if(links==0)    
    {
        PORTC &= ~(1<<PC2);
        PORTD &= ~(1<<PD4);
    }
    else if(links<0)
    {
        PORTC |=  (1<<PC2);
        PORTD |=  (1<<PD4);
    }
    else
    {
        PORTC &= ~(1<<PC2);
        PORTD |=  (1<<PD4);
    }

    if(rechts==0)    
    {
        PORTC &= ~(1<<PC3);
        PORTD &= ~(1<<PD5);
    }
    else if(rechts<0)
    {
        PORTC |=  (1<<PC3);
        PORTD |=  (1<<PD5);
    }
    else
    {
        PORTC &= ~(1<<PC3);
        PORTD |=  (1<<PD5);
    }

}

int main()
{
    unsigned long pause=0;
    initialisiereMotore();

    while(1)
    {
        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(1,1);  //Geradeaus
        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(-1,1);  //Links-Drehung
        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(0,0);  //stop
    }
}

Code 0-2: motortest.c - Testprogramm für die Motoren nur mit Hilfe von digitalen Ausgängen

Testprogramm für die Motoren nur mit Hilfe von digitalen Ausgängen und 10-Bit Phasenkorrekten PWM-Signalen von Timer 1

//   avr-gcc -O2 -mmcu=atmega32 motortestpwm.c -o motortestpwm.elf 
//   avr-objcopy -O ihex -j .text -j .data motortestpwm.elf motortestpwm.hex 

//   Upload über RobotLoader_20100712



#include<avr/io.h>

void initialisiereMotore()
{
    DDRC |= 0b00001100;  //Richtung

    //10-Bit Phasen-korrektes PWM-Signal.
    TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<FOC1A) | (0<<FOC1B) | (1<<WGM11) | (1<<WGM10);
    TCCR1B = (0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);
    DDRD |= (1<<PD5) | (1<<PD4); //auf Ausgang setzen.            
    OCR1A = 0; //PWM-Breite setzen (entspricht für Servo auf 0 Grad).
    OCR1B = 0; //PWM-Breite setzen (entspricht für Servo auf 0 Grad).
}

void fahrt(int links, int rechts)  //Wertebereich: +-1023
{
    if(links==0)    
    {
        PORTC &= ~(1<<PC2);
        OCR1B = 0;
    }
    else if(links<0)
    {
        PORTC |=  (1<<PC2);
        OCR1B = -links;
    }
    else
    {
        PORTC &= ~(1<<PC2);
        OCR1B = links;
    }

    if(rechts==0)    
    {
        PORTC &= ~(1<<PC3);
        OCR1A = 0;
    }
    else if(rechts<0)
    {
        PORTC |=  (1<<PC3);
        OCR1A = -rechts;
    }
    else
    {
        PORTC &= ~(1<<PC3);
        OCR1A = rechts;
    }

}

int main()
{
    unsigned long pause=0;
    initialisiereMotore();

    while(1)
    {
        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(1023,1023);  //Geradeaus

        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(0,0);  //stop

        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(200,200);  //langsame Geradeaus

        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(0,0);  //stop

        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(-1023,1023);  //Links-Drehung

        for(pause=0;pause<300000;pause++)
            DDRB|=0;
        fahrt(0,0);  //stop
    }
}

Code 0-3: motortestpwm.c - Testprogramm für die Motoren nur mit Hilfe von digitalen Ausgängen und 10-Bit Phasenkorrekten PWM-Signalen von Timer 1