-         

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

Thema: motor beeinflußt tastsensoren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2008
    Beiträge
    20

    motor beeinflußt tastsensoren

    Anzeige

    Hallo, nun habe ich angefangen meinen asuro zu programmieren. leider bin ich auf folgendes problem gestoßen. sobald die motoren laufen wird das ergebnis der rechten tastsensoren verfälscht. irrtümlicherweise wird dort ein signal erzeugt als ob die taster gedrückt wären. was aber nicht der fall ist. lasse ich die motoren aus, dann funktionieren die tastsensoren einwandfrei.

    hat da jemand erfahrung und/oder lösungsansätze?

    danke schonmal für jeglichen input
    grüße,
    ello

  2. #2
    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

    Meist hilft schon eine einfache Überprüfung der Tastenwerte:
    Code:
    #include "asuro.h"
    
    int t1, t2;
    
    int main(void)
    {
    
    	Init();
    	MotorSpeed(200,200);
       while(1)
    	{
    	   t1=PollSwitch();
    	   t2=PollSwitch();
    	   if((t1>0) && (t1==t2))
    	   {
    			BackLED(t1 & 0b110000, t1 & 0b000011);
    			StatusLED((t1 & 0b001100) && 1);
    		}
    		else
    		{
    		   BackLED(OFF,OFF);
    		   StatusLED(0);
    		}
    	}
       return 0;
    }
    Gruß

    mic

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2008
    Beiträge
    20
    Hallo, danke für deinen Tip. Das werd ich gleich mal ausprobieren.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2008
    Beiträge
    20
    so, ich habs nun mal mit der gesicherten Abfrage der SwitchPoll probiert, das funktioniert soweit auch. Aber die Sache mit t1 & 0b110000 usw. da bekomme ich vom Programmers Notepad eine Fehlermeldung "invalid suffix "b110000" on integer constant"

    Warum dies? Und generell, was bedeutet dieses t1 & 0b110000 ?

  5. #5
    also ich habs so gemacht:

    Code:
    void int frageTastenAb()
    {
    //20 mal Tasten abfragen und Mittelwert zurrückgeben
    }

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Naja, 20 Abfragen sind vielleicht etwas viel, aber der Ansatz ist richtig. Eine weitere Verbesserung kann die "Kallibrierung" der Tasten bringen. In asuro.c, am Ende von PollSwitch(), steht die Formel nach der die gemessene Spannung in den Rückgabewert umgeformt wird. Bei mir funktioniert die letzte Zeile wunderbar:

    Code:
    	//return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5));
    	//return ((10240000L/(long)i-10000L)*61L+5000L)/10000;
    	return ((10240000L/(long)i-10000L)*63L+5000L)/10000;
    0b000011 ist die binäre Schreibweise von 3. Manche Kompilerversionen können das aber leider nicht übersetzen. Die bitweise Darstellung ist praktisch wenn man, wie hier bei der Tastenabfrage, bestimmte Bits prüfen möchte. Im Rückgabewert von PollSwitch() ist jede Taste einem Bit zugeordnet, Bit0 (mit Wert 1) ist K6, Bit5(32) ist K1. 0b000011 prüft dann auf 3 (1+2=K5+K6), 0b001100 prüft auf 12 (4+8=K3+K4) und 0b110000 auf 48 (16+32=K1+K2). Wenn dein Kompiler also mit 0bxxxxxx nichts anfangen kann, dann ändere die betreffenden Stellen auf die dezimale Darstellung der Werte. Das sollte ja eigentlich nur eine Anzeige für die eingelesenen Tastenwerte sein....

    Gruß

    mic

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

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2008
    Beiträge
    20
    danke euch, ich werd mir das mit der kalibrierung mal ansehen, aber mit der zweifachen abfrage klappt es jetzt doch schon sehr gut. und wenn ich 0b000000 in 0x000000 ändere dann gibts keine fehlermeldung, allerdings passiert damit auch nix. ich machs jetzt so wie im azuro handbuch z.b. t & 0x01...

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    0x... macht aus der folgenden Zahl ne Hexadezimal- statt Binärzahl.
    Probier mal, die Zahl auf volle acht Bit aufzufüllen, vielleicht mag das dein Compiler nicht, weil es nur 6 Bit sind.
    Also
    BackLED(t1 & 0b00110000, t1 & 0b00000011);

    Welche Version nutzt du?

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.12.2008
    Ort
    Dresden
    Alter
    30
    Beiträge
    100
    mal nen ganz anderer vorschlag:
    hast du die stromversorgungskabel der motoren verdreht?!
    falls nicht, könnte es theoretisch passieren, dass die entstehenden magnetfelder die schaltung beeinflussen, wobei e mich wundern würde, wenn davon die tastsensoren beeinflusst werden, weil das ansich ja absolut analoge schalter sind, die an und aus können und mehr nicht...

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2008
    Beiträge
    20
    Hm, auch mit 0b00110000 funzt es nicht. Gleiche Fehlermeldung. Ich benutze Version 2.0.4.2.

    Aber ich hab nun mal noch eine andere Frage. Ich hab einen relativ gut funktionierenden Code, der meinen Asuro auf Kachelboden die Fugen entlangfahren läßt und auch sonst mit einfachen Hindernissen gut klar kommt. Allerdings hab ich grad keinen Plan wie ichs nun schaffe, daß der Asuro so ein Wendemanöver macht wie beim Frontalaufprall, wenn er sich irgendwo festgefahren hat, wo die Taster keinen Kontakt haben, weil das Hindernis nicht den Boden berührt, die Taster also unter dem Hindernis sind.

    Im gegenwärtigen Programm läuft dann der Motor aber der Asuro kann nicht weiter. Ich denke mal das ich da irgendwie mit der Odometrie arbeiten muß, aber da fehlt mir noch die nötige Kenntnis.

    Hat da jemand Tips`?

    Danke auch für die bisherige Hilfe...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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