Atmega32 Erweiterungsplatine für ASURO

all about robots

Atmega32 Erweiterungsplatine für ASURO

Postby chris on Tue Jun 03, 2008 12:16 pm

In diesem Thread werden Fragen zur Atmega32 Platine von E-Robotix für den ASURO diskutiert und beantwortet.

Standartmäßig wird die Atmega32 Erweiterung von E-Robotix ohne Bootloader für die IR-Schnittstelle geliefert.
Das bedeutet, dass der Atmega32 Mikrocontroller fabrikneu ist und mit einem ISP-Programmiergerät programmiert werden muss.
Auf der Erweiterungsplatine befindet sich hierzu ein 10 poliger ISP Stecker. Die Steckerbelegung entspricht hierbei der Atmel Standartbelegung und wird von normalerweise von allen ISP-Programmiergeräten unterstützt.

Als Programmiergerät eignet sich z.B. der AVR-Dragon oder das STK500. Es gibt auch viele Programmiergeräte von kleineren Firmen im Internet, die etwas kostengünstiger sind. Allerdings kommt es hin und wieder vor, dass dies Programmiergeräte vom Betrriebssystem abhängige Treiberprobleme haben, deshalb lohnt es sich, vorher Informationen einzuholen.

Es gibt auch die Möglichkeit, die Atmega32 Erweiterung mit Bootloader zu bestellen. Hierzu muss man bei der Bestellung

Option IR

angeben. Für die Datenübertragung zum Bootloader des Atmega32 werden spezielle Programme wie JFlash oder AsuroFlash benötigt. Die Datenübertragung mit diesen Programmen ist etwas zuverlässiger als die Datenübertragung mit dem Original Asuro Programm.
Allerdings lohnt es sich aufgrund des großen Flashspeichers, einen ISP-Programmierer zu kaufen, da die Programmierung wesentlich schneller und zuverlässiger ist. Die IR-Variante des Atmega32 Prozessors kann nicht mit einem ISP-Programmiergerät programmiet werden, da FlashSpeicher einen Schreibschutz für die ISP Programmierung hat, um eine Überschreiben des Bootloaders zu verhindern.

Sonderthemen:

[*]Anschluss eines Displays an die Atmega32 Erweiterung

Bild der Atmega32 Erweiterung
Attachments
Atm32SchaltplanV3.jpg
Atm32SchaltplanV3.jpg (156.17 KiB) Viewed 11622 times
AsuroMega32.jpg
AsuroMega32.jpg (56.58 KiB) Viewed 16926 times
Last edited by chris on Thu Jul 29, 2010 6:36 am, edited 3 times in total.
chris
 
Posts: 289
Joined: Sun May 25, 2008 7:21 am

Re: Atmega32 Erweiterungsplatine für ASURO

Postby Pinsel on Tue Jul 08, 2008 2:28 pm

Hallo,

der Vollständigkeit halber möchte ich euch noch meine Erweiterung auf 2 LEDs vorstellen.

Wenn Interesse besteht kann ich gerne näher darauf eingehen.

Gruß
Pinsel
Attachments
ATMEGA32.JPG
Erweiterung
ATMEGA32.JPG (40.39 KiB) Viewed 13110 times
Gruß
Pinsel
Pinsel
 
Posts: 75
Joined: Thu Jun 12, 2008 1:01 pm
Location: Hohenems, Austria

Re: Atmega32 Erweiterungsplatine für ASURO

Postby robo.fr on Tue Jul 08, 2008 7:37 pm

Hallo Pinsel,

der ASURO mit den symmetrisch angeordneten IR-LED's sieht gut aus.

der Vollständigkeit halber möchte ich euch noch meine Erweiterung auf 2 LEDs vorstellen.


Aber klar doch :D Hast Du eventuell auch ein Filmchen, auf dem man Deine ASURO in Aktion sehen kann?

Bester Gruß,
robo.fr
robo.fr
 
Posts: 38
Joined: Sat Jun 21, 2008 6:16 am

Re: Atmega32 Erweiterungsplatine für ASURO

Postby Pinsel on Sat Jul 12, 2008 1:19 pm

Hi robo,

zur Hardware:

- Die Kathode der rechten IR-Diode hängt mit Vorwiderstand an PIN15 (PD1)
- Die Kathode der linken IR-Diode hängt mit Vorwiderstand an PIN2 (PB1)
- Die Anoden beider IR-Dioden sind mit PIN21 (PD7) verbunden
- Die Linensensor-Lampe hängt am PIN12

und Software

PORTD |= (1 << PD1); // PD1 auf HIGH (LED ausschalten)
DDRB |= (1 << DDB1); // Port B1 als Ausgang
PORTB &= ~(1 << PB1); // PB1 auf LOW

bzw.

PORTB |= (1 << PB1); // PB1 auf HIGH (LED ausschalten)
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW

win Video habe ich hier abgelegt: http://de.youtube.com/watch?v=zOv8ilG39kc

Wenn du deine Platine um diese meiner Meinung nach sinnvolle Erweiterung ergänzen willst, habe ich nichts dagegen.

Herzlichen Gruß
Pinsel
Gruß
Pinsel
Pinsel
 
Posts: 75
Joined: Thu Jun 12, 2008 1:01 pm
Location: Hohenems, Austria

Re: Atmega32 Erweiterungsplatine für ASURO

Postby robo.fr on Sun Jul 13, 2008 9:10 am

Hallo Pinsel,

die Doppelerweiterung funktioniert ja richtig gut. Erstaunlich finde ich, dass der ASURO auch in den etwas dunkleren Ecken die Begrenzung noch gut erkennt.
Der ASURO macht auch schöne runde Bewegungen, was gut ist.

Wenn du deine Platine um diese meiner Meinung nach sinnvolle Erweiterung ergänzen willst, habe ich nichts dagegen.

Besten Dank. Falls sich ein paar Leute dafür interessieren, werde ich eine neue Platine machen.

Gruß,
robo
robo.fr
 
Posts: 38
Joined: Sat Jun 21, 2008 6:16 am

Re: Atmega32 Erweiterungsplatine für ASURO

Postby Pinsel on Sat Aug 02, 2008 9:15 am

Hallo Zusammen,

frisch aus dem Urlaub zurück und das Erste Thema: ASURO :D

Möglicherweise kann mir jemand bei folgendem Codeschnipsel meines ATMEGA32-ASUROs helfen:

Code: Select all
/*************************************************************************

   Hauptprogramm

*************************************************************************/
int main(void)

#define FSPEED   140
#define MDIST   1
#define DIST   4
#define FILTER   2

{
      uint8_t n,m;
   signed short rechts_drehen, links_drehen;
   
      Init();

   FrontLED(ON);
      while(1)
   {
         n=abstand_rechts();
         m=abstand_links();
      links_drehen = n - m;
      rechts_drehen = m - n;
            
      if(m > MDIST && n > MDIST)
      {         
         if((abs(rechts_drehen) < FILTER) || (abs(links_drehen) < FILTER))
         {
            MotorSpeed(FSPEED, FSPEED);
            if(n > DIST + FILTER)
            {
               MotorDir(RWD, RWD);
            StatusLED(YELLOW);
            BackLED(OFF,OFF);
            }
            else if(n < DIST )
            {
               MotorDir(FWD, FWD);
            StatusLED(YELLOW);
            BackLED(OFF,OFF);
            }
            else
            {
               MotorDir(BREAK, BREAK);
            StatusLED(OFF);
            BackLED(ON,ON);
            }
       }
         if(abs(links_drehen) > FILTER)
       {
            MotorSpeed(FSPEED, FSPEED);
            MotorDir(RWD, FWD);
         StatusLED(RED);
         BackLED(OFF,ON);
       }
       if(abs(rechts_drehen) > FILTER)
       {
            MotorSpeed(FSPEED, FSPEED);
            MotorDir(FWD, RWD);
         StatusLED(GREEN);
         BackLED(ON,OFF);
       }
      }
      else
      {
         MotorDir(BREAK, BREAK);
       StatusLED(OFF);
       BackLED(ON,ON);
      }

   }
return 0;

}


Der Ablauf ist folgender:

Der ASURO soll ein Objekt immer verfolgen:

Wenn ein Objekt zu nahe kommt: Zurückweichen - Funktioniert
Wenn ein Objekt sich entfernt: Verfolgen - Funktioniert
Wenn das Objekt links verloren geht: Nach links drehen - Funktioniert
Wenn das Objekt rechts verloren geht: Nach rechts drehen - Funktioniert NICHT, ASURO dreht nach links :evil:

Warum? Wäre für Tipps dankbar!
Gruß
Pinsel
Pinsel
 
Posts: 75
Joined: Thu Jun 12, 2008 1:01 pm
Location: Hohenems, Austria

Re: Atmega32 Erweiterungsplatine für ASURO

Postby robo.fr on Sat Aug 02, 2008 11:30 am

Hallo Pinsel,

hoffentlich hast Du Dich in Deinem Urlaub gut erholt. Gerade jetzt, wo der Sommer doch so richtig kommt.
Muss mir Deine Codeschnipsel mal anschauen, dazu brauch ich aber noch ein wenig Zeit.

Bis demnächst,
robo
robo.fr
 
Posts: 38
Joined: Sat Jun 21, 2008 6:16 am

Re: Atmega32 Erweiterungsplatine für ASURO

Postby robo.fr on Sun Aug 03, 2008 6:08 am

Wenn das Objekt rechts verloren geht: Nach rechts drehen - Funktioniert NICHT, ASURO dreht nach links :evil:


Kann es eventuell sein, dass es an der Objekterkennung liegt? Vielleicht reagiert Deine Reflektionsdetektion für Links früher als für rechts. Also, ich meine: wenn das Objekt nach rechts verloren geht, liefert der linke Sensor einen größeren Wert.
Man könnte so ein Szenario künstlich erzeugen, in dem man die beiden IR-Leds in die innnere Richtung verbiegt, sodass sich die beiden Strahlen überkreuzen. Dann würde der ASURO quasi rechts und links verwechseln. Wenn man nur die rechte LED verbiegt, schägt der linke Sensor eventuell immmer früher an, wenn das Objekt aus dem Fokus gerät.
robo.fr
 
Posts: 38
Joined: Sat Jun 21, 2008 6:16 am

Re: Atmega32 Erweiterungsplatine für ASURO

Postby Pinsel on Sun Aug 03, 2008 8:21 am

Hi robo,

das ist es vermutlich nicht. Wenn ich ein Objekt seitlich von rechts an die Diode führe, dreht sich der ASURO nach links weg. Die linke Diode kriegt davon gar nichts mit. Das sehe ich auch daran dass die Status LED IMMER rot leuchtet, wenn ein Objekt von rechts oder links kommt.

Gruß
pinsel
Gruß
Pinsel
Pinsel
 
Posts: 75
Joined: Thu Jun 12, 2008 1:01 pm
Location: Hohenems, Austria

Re: Atmega32 Erweiterungsplatine für ASURO

Postby robo.fr on Mon Aug 04, 2008 6:50 am

Vielleicht sollte man es mit einen sehr einfachen Test versuchen.
Hast Du schon probiert, ein kleines Programm zu schreiben, das die linke BACK-LED leuchten lässt, wenn das Objekt von links kommt und die rechte, wenn es von rechts kommt?
Meiner Meinung nach kommen die Probleme oft von der Sensorik, gar nich so sehr von der Programm Logik. Deshalb braucht man ein rudimentäres Programm, was nur die Sensorik testet und sonst wirklich nichts anderes tut. Dann kannst Du wirklich sicher sein, dass die Detektion funktioniert.

Gruß,
robo
robo.fr
 
Posts: 38
Joined: Sat Jun 21, 2008 6:16 am

Next

Return to robots

Who is online

Users browsing this forum: No registered users and 1 guest

cron