-
        

Ergebnis 1 bis 8 von 8

Thema: Ultraschall

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2006
    Beiträge
    10

    Ultraschall

    Anzeige

    Hallo,

    Vor kurzem hab ich mir die Teile für die Ultraschallerweiterung bestellt. Nachdem ich etwas ratlos auf die den Schaltplan im Mehr-Spaß-mit-Asuro-Buch geschaut hab, hat mir dann ide Anleitung von Iuma weitergeholfen.

    Leider funktioniert das Ganze noch nicht so, wie ich es gerne hätte. Der Spannungskomparator meldet anscheinend kein einziges Mal eine auseichend hohe Spannung. Nachdem ich ersteinmal die Senderkapsel falschherum eingelötet hatte, bin ich mir jetzt auch ohne Katze eigentlich ziemlich sicher, dass gesendet wird. Zumindest höre ich ein ganz leises Knacken von der Kapsel, und mit einem empfindlichen Kondnesatormikrofon habn ich sogar einen Ton gehört. Hat mich zwar ein bisschen gewundert, dass ich den Ton so im Kopfhörer hören konnte und dass ich den Ton auch mit lediglich 48kHz Samplingrate aufnehmen konnte, aber ich nehm einfach mal an, dass das Mikrofon quasi einen "Unterton" afgenommen hat.

    Ich hab mich jezt mal ein bisschen schlau gemacht, wie das funktioniert, den ADC zu verwenden, und hab dann einfach mal gemessen, was den an ADC3(also dem Pin, an dem das Signal der Empfängerkapsel anleigen sollte) so reinkommt. Mehr als 0 und 1 krieg ich aber nicht rein. Hier mal der Code, da ich mir nicht so sicher bin, ob das stimmt, was ich so abgeschrieben hab:
    Code:
    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
    }
    
    volatile   unsigned   int   adc_wert; 
    
    SIGNAL (SIG_ADC) 
    { 
    	adc_wert = ADCL + (ADCH << 8); 
    	char text[6];
    	itoa(adc_wert,text,10);
    	SerWrite(text,strlen(text));
    	SerWrite("  ",2);
    
    }
    
    
    int main(void)
    {
    	
    	Init();
    	//LocalInit();
    	ADMUX = (1 << REFS0) | IR_RIGHT;
    	ADCSRA = (1<<ADEN) | (1<<ADFR) | (1<<ADSC) | (1 << ADIE)  | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2); // clk/128
    	
    	while(TRUE) {
    		
    		Ping(100); 
    	}
    	
    
    	return 0;
    }
    Für WHEEL_LEFT und RIGHT bekomm ich übrigens nur Werte im Bereich 1-5 rein, unabhängig von der Beleuchtung und von der Radstellung. Sollte das nicht mehr sein? Für die Batterie bekomm ich nur 466 rein.

    Ich wäre sehr dankbar, wenn mir jemand sagen kann, ob meine ersten Ausflüge in die Bitschubserei und den ADC richtig sind, und was ich noch überprüfen könnte, um der Fehlerquelle im US-Modul auf die schliche zu kommen.

    Ach ja, in der Anleitung von Iuma waren immer die Farbcodes für die Metallschichtwiderstände(blau) ich habe aber Kohleschichtwiderstände(besch, braun oder was auch immer) die Toleranz ist aber 5%, genau wie auf der Stückliste angegeben. Macht das was?

    Dominik

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

    klingt nach einem Problem mit V+, der Stromversorgung für die Analogsensoren (siehe Schaltplan). Mess mal diese Spannung. Evtl. hat R11 einen falschen Wert (sollte 100Ohm sein).

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2006
    Beiträge
    10
    Ok, ich zwischen Out- und V+ auf der Erweiterungsplatine messe ich 4,98V, etwa genausoviel wie zwischen Out- und Out+.

    Bei R11 hab mit µC 5,6 Oh. gemessen, als ich aber dann den Atmel rausgemacht hab, um den Widerstand mal auszulöten, hab ich dann 100 Ohm gemssen.

    Auf den Gedanken, dass etwas mit meiner Hauptplatine nicht stimmen könnte, bin ich noch gar nicht gekommen. Ich dachte da eher an Softwarefehler bei meinen Messungen oder eben an Fehler auf der US-Platine.

    Ich hab auch mal mein Multimeter auf Wechselspannung umgestellt und dann an den beiden Beinchen der Senderkapsel 1.9V gemessen.


    Dominik

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Dann überprüfe mal deine Werte, wenn die US Platine nicht steckt.
    Batterie müßte immer Werte >800 liefern.
    Odometrie sollten im Bereich 50..200 liegen (hier werden nur 8Bit benutzt).

    Wenn die Werte dann stimmen, liegt es an der US Platine (vielleicht Bauteile auf der Platinenunterseite eingelötet. Anschlüsse der Platine sind nämlich nicht symmetrisch).

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    das stimmt. die erweiterungsplatine muss unbedingt sorum verwendet werden, dass die steckbeinchen zum aufsetzen auf den asuro auf der gleichen seite sind wie die (weinigen)vorgedruckten leiterbahnen von den vorderen anschlüssen zu den ersten lötpads.

    wenn du also die erweiterung draufsteckst, und dann vorn die leiterbahnen sehen kannst, dann ist die ganze platine spiegelverkehrt... du kannst dann entweder alles auslöten und umdrehen, oder noch einmal anfangen.
    kleinschreibung ist cool!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2006
    Beiträge
    10
    Es lag wohl eher an meinen Messungen als an meiner Platine, jedenfals bekomm ich mit dem Beispielprogramm aus dem Buch zur Batteriespannungsmessung sowohl für die Batterie als auch für Odometrie plausible Werte.

    Die Platine müsste richtig herum sein, bei aufgesteckter Platine sehe ich von oben keine Leiterbahnen. Ich wäre froh, wenn meine Platine falsch herum wäre, dann wüsste ich wenigstens was ich konkret tun kann.

    Dominik

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2006
    Beiträge
    10
    Ich hab jezzt mal den OC2-Pin mit dem unbenutzen ADC2 verbunden, un hab etwa folgendes gemessen:



    Die Daten sind bikubisch niterpoliert, sieht schöner aus...

    Ich hab dann auch mal den ADC2 mit dem vom Empfängerkapsel verbundenen Eingangspin des OpAmps verbunden, aber da hab ich genau wie an ADC3 gar nichts gemessen.

    Dominik

  8. #8
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    bikubisch interpoliert... =) hilft auch nichts...

    aber die werte sehen ok aus. warte mal ab, evtl hat noch jemand ne idee...
    kleinschreibung ist cool!

Berechtigungen

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