-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Immer noch Problem mit der Ultraschallerweiterung!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.01.2007
    Ort
    Essen
    Alter
    35
    Beiträge
    31

    Immer noch Problem mit der Ultraschallerweiterung!

    Anzeige

    Und wieder was neues:

    Inzwischen habe ich meine US-Platine fertiggestellt und angeschlossen. Jetzt zum Test. Ich habe mit folgendem Code getestet.

    Code:
    #include "asuro.h"
    
    void LocalInit(void)
    {
    	// Change Oscillator-frequency of Timer 2
    	// to 40kHz, no toggling of IO-pin:
    	TCCR2 = (1 << WGM21) | (1 << CS20);
    	OCR2 = 0x64;						// 40kHz @8MHz crystal
    	ADCSRA = 0x00;					// ADC off
    	// Analog comparator:
    	ACSR = 0x02;						// Generate interrupt on falling edge
    	ADMUX = 0x03;						// Multiplexer for comparator to
    													// ADC pin 3
    	SFIOR |= (1 << ACME);		// Enable muliplexing of comparator
    	DDRD &= ~(1 << 6);			// Port D Pin 6 is input!
    }
    
    
    void Ping(unsigned char length)
    {
    	count72kHz = 0;
    	TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
    													// Toggling of IO-Pin on
    	
    	// generate the Chirp
    	while(count72kHz < length) {
    		OCR2 = 0x64 + length / 2 - count72kHz;
    	}
    	
    	TCCR2 = (1 << WGM21) | (1 << CS20);		// Toggling of IO-Pin off
    	OCR2 = 0x64;													// set frequency to 40kHz
    }
    
    
    int main(void)
    {
    	int pos, i;
    	int posmarker;
    	Init();
    	LocalInit();
    	while(TRUE) {
    		posmarker = 0;
    		Ping(20);
    		for(pos = 0; pos < 100; pos++) {
    			Sleep(10);
    			if((ACSR & (1 << ACI)) != 0) {
    				if(posmarker == 0) { posmarker = pos; }
    			}
    			ACSR |= (1 << ACI);
    		}
    		if(posmarker > 10) {
    			StatusLED(GREEN);
    			MotorDir(FWD, FWD);
    			MotorSpeed(200, 200);
    		}
    		else {
    			StatusLED(RED);
    			MotorDir(FWD, RWD);
    			MotorSpeed(0, 200);
    			for(i = 0; i<100; i++) { Sleep(200); }
    		}
    	}
    	
    	return 0;
    }
    Ja, schön und gut, nur dreht sich mein asuro leucht rotend im Kreis.

    Was ist passiert ? Hab ich was falsch zusammengelötet oder mach ich hier einfach nur nen Denkfehler ?

    liebe Grüße,

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    ich vermute, dass irgend etwas nicht stimmt mit der platine, er sollte ja eigentlich ausweichen wenn der us-sensor ein echo hört. scheinbar hört er das immer =) also fährt er im kreis. es könnte z.b. sein dass er dauerhaft nicht das echo, sondern das losgesendete schallsignal hört, und deshalb schon denkt dass er irgendwo davorsteht.
    fährt er rückwärts?
    kleinschreibung ist cool!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.01.2007
    Ort
    Essen
    Alter
    35
    Beiträge
    31
    Zitat Zitat von damaltor
    ich vermute, dass irgend etwas nicht stimmt mit der platine, er sollte ja eigentlich ausweichen wenn der us-sensor ein echo hört. scheinbar hört er das immer =) also fährt er im kreis. es könnte z.b. sein dass er dauerhaft nicht das echo, sondern das losgesendete schallsignal hört, und deshalb schon denkt dass er irgendwo davorsteht.
    fährt er rückwärts?
    Er hängt hier fest:

    Code:
    else {
             StatusLED(RED);
             MotorDir(FWD, RWD);
             MotorSpeed(0, 200);
             for(i = 0; i<100; i++) { Sleep(200); }
          }
    Ich schliesse, dass wirklich das Signal reflektiert wird. Mal sehen. Ich werde erstmal Sender und Empfänger ein wenig weiter auseinander legen und dann mal schauen was passiert.

    Nur mal interessehalber: Kann es denn sein, dass irgendwas mit den vorderen Konnektoren nicht stimmt ? Also T10, Con1, D11, Con2, T9 ? Will sagen vielleicht fehlerhafte Lötstellen ? Nicht dass ich glaube dass ich da was verbockt hab, aber hey, man weiß ja nie...

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo,

    wie groß ist den die Variable posmarker?

    if(posmarker > 10) {

    Ich würde mal die 10 schrittweise erhöhen, bzw. mal gross (100, 1000?) machen. Oder den Wert mit PrintInt(posmarker) über die IR-Schnittstelle senden um festzustellen ob überhaupt was erkannt wird und, wenn ja, in welchen Abstand etwas erkannt wird.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    Hast du die Erweiterungplatine richtig herum bestückt (Leiterbahnen liegen auf Lötseite). Die ist nämlich leider nicht symmetrisch.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    17.01.2007
    Ort
    Essen
    Alter
    35
    Beiträge
    31
    "Problem erkannt. Das US Modul kann so nicht mehr mit der neuen Asuro Bibliothek funktionieren."

    Das weiß ich jetzt schonmal. also original drauf und trotzdem das selbe
    er fährt weiterhin rot leuchtend gegen den Uhrzeigersinn...

    Palmström reist mit einem Herrn von Korf in ein sogenanntes böhmisches Dorf. Unverständlich bleibt ihm alles dort [...].

    aber ich hoffe ihr könnt mir ein wenig weiterhelfen...

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.01.2007
    Ort
    Essen
    Alter
    35
    Beiträge
    31
    Zitat Zitat von radbruch
    Hallo,

    wie groß ist den die Variable posmarker?

    if(posmarker > 10) {

    Ich würde mal die 10 schrittweise erhöhen, bzw. mal gross (100, 1000?) machen. Oder den Wert mit PrintInt(posmarker) über die IR-Schnittstelle senden um festzustellen ob überhaupt was erkannt wird und, wenn ja, in welchen Abstand etwas erkannt wird.

    Gruß

    mic
    das hat leider auch nix geholfen da es in dieser lib kein printint gibt...

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Mit c und dem Compilieren stehe ich auch noch auf dem Kriegsfuß, hier die Funktion aus der asuro.c (v2.0):

    Code:
    void PrintInt(int wert)
    {
        char text[16]="      ";
        itoa(wert,text,10);
        SerWrite(text,strlen(text));
    }
    Ich hoffe mal, dass ich mit diesem Posting keine Urheberrechte oder sonstiges verletze.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    PrintInt sowie serielle Ausgabe generell funktioniert nicht während der Ultraschall Modul angesprochen wird. Dazu müßte man für jede serielle Ausgabe vorher die Init Funktion aufrufen. Danach dann wieder die Ultraschall Init Funktion zum Ansprechen des Ultraschall Moduls.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    17.01.2007
    Ort
    Essen
    Alter
    35
    Beiträge
    31
    Zitat Zitat von m.a.r.v.i.n
    Hi,

    PrintInt sowie serielle Ausgabe generell funktioniert nicht während der Ultraschall Modul angesprochen wird. Dazu müßte man für jede serielle Ausgabe vorher die Init Funktion aufrufen. Danach dann wieder die Ultraschall Init Funktion zum Ansprechen des Ultraschall Moduls.
    Hi, das dachte ich mir schon. Ich denke dass warscheinlich hier:

    Code:
       while(count72kHz < length) {
          OCR2 = 0x64 + length / 2 - count72kHz;
    SerWrite("....");
       }
    nix passiert. da bleibt er zumindest auch schonmal hängen.

    Leider hab ich kein oszi oder eine Katze hier, und somit weiß ich nicht ob es überhaupt funktioniert... Weiss denn jemand von euch, welche Spannungswerte an SR und ST anliegen müssen (400sr und 400st) ? vielleicht ist ja da was falsch...

    fragen über fragen...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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