- 3D-Druck Einstieg und Tipps         
Seite 20 von 31 ErsteErste ... 10181920212230 ... LetzteLetzte
Ergebnis 191 bis 200 von 310

Thema: ASURO-Bot Bausatz: Erfahrungen und Meinungen

  1. #191
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Anzeige

    E-Bike
    Leider kriege ich es nicht hin den Interrupt von Timer1 noch zu nutzen. IN Asuro.c steht:

    Code:
    /* for working with Interrupt */
    void StartSwitch(void)
    {
    	SWITCH_OFF;
    	DDRD &= ~SWITCHES;					// Switches as Input => ext. Int 1
    	MCUCR &= ~((1 << ISC11) | (1 << ISC10));// Low level generates interrupt
    	GICR |= (1 << INT1);					// Enable external Interrupt 1 
    }
    Leider kann ich damit nix anfangen, ich wüsste gerne welche Ports wie gesetzt sind besonder portD.3 und c.4. Wenn ich das richtig verstehe reagiert er auf eine h/l-Flanke, aber ich krieg den Port mit hilfe der Bumper einfach nicht auf 0 gezogen

    @ Manf: Sorry, aber ich kann dir nicht folgen. Ist mir alles ein wenig zu hoch

    MFG Moritz

  2. #192
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also hier jetzt mal ein Script aus Sonics Code:
    + PWM von Timer1 wird verwendet (ext. interruptnoch frei)
    + Richtungen werden mit FWD,BWD wtc. angegeben
    + Odometrie läuft oder sollte zumindest
    + Linieverfolgung läuft oder sollte zumindest
    - Odometriefunktionen sollen noch als Variablen eingführt werden: a = Odorechts()
    - Linnieverfolgungsfunktionen sollen noch als Variablen eingführt werden: a = Odorechts()
    - Pollswitch läuft net, da müsste mir mal jemand den Code entschlüsseln
    - Interrupt für Pollswitch läuft noch nicht


    Code:
    '`Bereits integrierte Funktionen:
    'Motordir(x,x)    x: Fwd, Rwd, Break, Free
    'Motorspeed(x,x)  x: 0-255
    'Backled(x,x)     x: An, Aus
    'Statusled(x)     x: Aus, Green, Red, Yellow
    'Frontled(x)      x: An, Aus
    'Odometrie()
    'Linie()
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 2400
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Enable Interrupts
    
    Declare Sub Motordir(byval Mldir As Byte , Byval Mrdir As Byte)
    Declare Sub Motorspeed(byval Mlspeed As Byte , Byval Mrspeed As Byte)
    Declare Sub Backled(byval Led1 As Byte , Byval Led2 As Byte)
    Declare Sub Frontled(byval Led1 As Byte)
    Declare Sub Statusled(byval Color As Byte)
    Declare Sub Odometrie()
    Declare Sub Linie()
    '-----------Motoren-------------------
    Const Fwd = 1
    Const Rwd = 2
    Const Free = 3
    Const Brake = 4
    
    'Motor Rechts
    Config Pinb.1 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    
    'Motor Links
    Config Pinb.2 = Output
    Config Pinb.4 = Output
    Config Pinb.5 = Output
    '----------Led------------------------
    Const Aus = 0
    Const Red = 1
    Const Green = 2
    Const Yellow = 3
    Const An = 1
    'FrontLED (Odometrie)
    Config Pind.6 = Output
    
    ' ****** !!! ACHTUNG !!! *******BACKLEDs***********************************
    
    Config Pinc.0 = Output                                      'Rechts
    Config Pinc.1 = Output                                      'Links
    
    ' Die BackLEDs können nicht genutzt werden wenn die Odometrie benutzt wird.
    ' --> BackLEDs pinc.0 und pinc.1 als Ausgang definieren
    ' --> Odometrie pinc.0 und pinc.1 als Eingang bzw. ADC definieren
    ' ****** !!! ACHTUNG !!! **************************************************
    
    'StatusLED
    Config Pind.2 = Output                                      'Rot?
    Config Pinb.0 = Output                                      'Grün?
    
    '----------Odometrie-------------------
    Dim Odorechts As Word                                       'data geht nciht, da expression
    Dim Odolinks As Word
    Config Pinc.2 = Input
    Config Pinc.3 = Input
    
    '----------Line-------------------
    Dim Linerechts As Word
    Dim Linelinks As Word
    'Config Pinc.0 = Input  'Nur aktivieren wenn Backleds aus
    'Config Pinc.1 = Input
    
    'Pollswitch
    
    
    '##########################################################################
    '############################### Main #####################################
    '##########################################################################
    
    Do
    
    Loop
    End
    
    '##########################################################################
    '############################### Ende #####################################
    '##########################################################################
    
    '--------Subs-------------------------
    Sub Motorspeed(byval Mlspeed As Byte , Byval Mrspeed As Byte)
       Pwm1a = Mlspeed
       Pwm1b = Mrspeed
       End Sub
    
    Sub Frontled(byval Led1 As Byte)
       Portd.6 = Led1
       End Sub
    
    Sub Motordir(byval Mldir As Byte , Byval Mrdir As Byte)
       If Mldir = 1 Then                                        'FWD
          Portd.4 = 0
          Portd.5 = 1
       Elseif Mldir = 2 Then                                    'RWD
          Portd.4 = 1
          Portd.5 = 0
       Elseif Mldir = 3 Then                                    'FREE
          Portd.4 = 0
          Portd.5 = 0
       Elseif Mldir = 4 Then                                    'BRAKE
          Portd.4 = 1
          Portd.5 = 1
       End If
       '-----------------
       If Mrdir = 1 Then                                        'FWD
          Portb.4 = 0
          Portb.5 = 1
       Elseif Mrdir = 2 Then                                    'RWD
          Portb.4 = 1
          Portb.5 = 0
       Elseif Mrdir = 3 Then                                    'FREE
          Portb.4 = 0
          Portb.5 = 0
       Elseif Mrdir = 4 Then                                    'BRAKE
          Portb.4 = 1
          Portb.5 = 1
       End If
       End Sub
    
    Sub Backled(byval Led1 As Byte , Byval Led2 As Byte)
       Portc.1 = Led1
       Portc.0 = Led2
       End Sub
    
    Sub Statusled(byval Color As Byte)
       If Color = 0 Then                                        'Aus
       Portd.2 = 0
       Portb.0 = 0
       Elseif Color = 1 Then                                    'ROT?
       Portd.2 = 1
       Portb.0 = 0
       Elseif Color = 2 Then                                    'Green ?
       Portd.2 = 0
       Portb.0 = 1
       Elseif Color = 3 Then                                    'Yellow
       Portd.2 = 1
       Portb.0 = 1
       End If
       End Sub
    
    Sub Linie()
       Linerechts = Getadc(2)
       Linelinks = Getadc(3)
       End Sub
    
    Sub Odometrie()
       Odorechts = Getadc(0)
       Odolinks = Getadc(1)
       End Sub
    Ich würde mich freuen, wenn jemand das mal testen könnte.

    @ Sonic: wie siehts aus, bist du weitergekommen?

    MFG Moritz

  3. #193
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    24.04.2004
    Ort
    Karlsruhe
    Alter
    46
    Beiträge
    1.277
    Zitat Zitat von RCO
    ...
    @ Sonic: wie siehts aus, bist du weitergekommen?
    MFG Moritz
    Diese Woche bin ich zeitlich extrem eng, muss einen Vortrag an der Uni halten, das schlaucht extrem sowas zu machen wenns auchnoch benotet wird. Der Tag sollte 48h haben, dann wär alles kein Problem

    Aber am WE sollte ich ein "paar" Minuten haben...

    Gruß, Sonic
    Bild hier  
    If the world does not fit your needs, just compile a new one...

  4. #194
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    OK, dann gutes Gelingen, was studierst du denn?

    MFG Moritz

  5. #195
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    Also ich hatte ja Sonic's Code schon getestet und er funktionierte ganz Prima...

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  6. #196
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Ja, klar, aber ich wollte halt mit ihm zusammen versuchen ein Pendant in Bascom zu schreiben. Und ich wollte halt wenn möglich die Funktionen möglichst genauso machen, wie in C. Deshalb wollte ich hlat z.B. den Timer 1 als PWm verwenden. Allerdings ahbe ich noch ein großes Problem mit dem Pollswitch und zwar gibt es einen Interrupt für Änderungen am ADC-Port, ich weiß allerdings nciht genau wie man den einstellt, das wäre natürlich enxtrem Vorteilhaft, vielleicht kennt sich ja jemand mit ON ADC aus!?
    Außerdem müsste ich die Berechnung für die Switchvariable kappieren, denn da steht ja haargenau welcher Bumper gedrückt wurde, leider verstehe ich die Schritt hier in C aber nicht, weil ich halt kein C kann. Vielleicht könnte mir das mal jemand kommentieren.

    Code:
    unsigned char PollSwitch (void) 
    { 
       unsigned int i; 
        
       DDRD |= SWITCHES;            // Switches as Output 
       SWITCH_ON;                  // Output HIGH for measurement 
       ADMUX = (1 << REFS0) | SWITCH;   // AVCC reference with external capacitor 
       Sleep(10); 
        
       ADCSRA |= (1 << ADSC);         // Start conversion 
       while (!(ADCSRA & (1 << ADIF)));// wait for conversion complete 
       ADCSRA |= (1 << ADIF);         // clear ADCIF 
       i = ADCL + (ADCH << 8); 
        
       SWITCH_OFF; 
    
       return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5)); 
    }
    MFG Moritz

  7. #197
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    72
    Beiträge
    13.138
    Das Ultraschallinterface habe ich noch ein bischen weiter entwickelt auf der Basis des oben beschriebenen Kerns.
    Es gibt unterschiedliche Wege, ich glaube die Philisophie preiswerte Bauteile einzusetzen wie beim Motortreiberinterface ist nachvollziehbar.
    Ein einziges Stellelement zum Abgleich und ein definiertes Schalten beim Erkennen eines Echos sind auch günstig.

    So erscheint nach Eingabe eines Bursts von 16 Impulsen ein Puls am Ausgang dessen Dauer dem Abstand zum erkannten Hindernis proportional ist.
    Ich habe dazu auch eine Meßreihe aufgetragen. Die Strecke wurde mit einem Bandmaß gemessen und die Pulsdauer am Oszilloskop abgelesen, das könnte man sicher noch verbessern. Die Werte scheinen doch ganz gut linear zu sein, wie das bei einer Laufzeitmessung zu erwarten ist.
    Leider habe ich nicht aufgeschrieben bei welcher Temperatur ich gemessen habe, aber sicher läßt sich der Wert der Temperatur auch nachträglich noch ermitteln.
    Manfred
    Angehängte Dateien Angehängte Dateien

  8. #198
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Das sieht tatsächlich wunderbar aus, alle Punkte schön auf einer Linie. Hast du schon geschafft, das ganze mit einem AVR zu machen und umzurechnen? Ich weiß du bist ja eher der PICer

    MFG Moritz

  9. #199
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    72
    Beiträge
    13.138
    Ich bin noch bei der Schaltung selbst in Testumgebung, eine Sache kommt noch, das zeitunkritische Auslesen, ich schaue es mit noch einmal an. Ich denke ich bin morgen soweit. (heute)
    Manfred

  10. #200
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also ich kann ENDLICH! erste Ergebnisse meines Asuros in Bascom präsentieren. Hier findet ihr ab jetzt eine zusammengemixte Version aus Sonics und meinem Code. Die ganzen Funktionen sind verfügbar, soweit ich keine übersehen habe, bis auf den ADC-interrupt, da der einfach keinen Sinn macht, wenn noch andere ADCs verwendet werden. Die Funktionen habe ich alle mal erläutert.
    Leider ist das ganze noch etwas unkommentiert, aber ich hab jetzt echt keinen Bock mehr dadrauf, vielleicht Morgen.

    Ich würde mich freuen, wenn jemand das ganze mal testen könnte um nir zu sagen, ob es denn läuft.

    Ich hab es jetzt auch endlich geschafft die Funktion Pollswitch hinzukriegen, im Endeffekt einfach als ich angenommen habe.

    MFG Moritz

Seite 20 von 31 ErsteErste ... 10181920212230 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen