MINT - Unterricht  mit  Arduino und anderen

ATtiny85

Der ATtiny85 ist billiger und hat geringere Abmessungen als der ATmega328p. Er ist ähnlich funktionstüchtig und kann wie der ATmega über die Arduino-IDE programmiert werden. Mit seinen acht Pins ist er aber deutlich limitiert und eher für kleine Aufgaben geeignet.

 

 

Mit Hilfe eines Motorentreibers (siehe hier) kann er beispielsweise das Arduino-Board im Boots- bzw. Robotwettbewerb ersetzen und die Steuerung der Motoren übernehmen.

Hier ein passender Code:

int mot1a = 3;

int mot1b = 4;

int mot2a = 0;

int mot2b = 1;


void motorStop() {           // Programmcode zum Stoppen

  digitalWrite(mot1a, LOW);  // der Motoren

  digitalWrite(mot1b, LOW);

  digitalWrite(mot2a, LOW);

  digitalWrite(mot2b, LOW);

  delay(1000);

}

void setup() {

  pinMode(mot1a, OUTPUT);

  pinMode(mot1b, OUTPUT);

  pinMode(mot2a, OUTPUT);

  pinMode(mot2b, OUTPUT);


  digitalWrite(mot1a, HIGH);  // Beide Motoren Vorlauf

  digitalWrite(mot1b, LOW);   // (Geradeausfahrt)

  digitalWrite(mot2a, HIGH);

  digitalWrite(mot2b, LOW);

  delay(8000);


  motorStop();               // Beide Motoren aus


  digitalWrite(mot1a, HIGH); // Ein Motor Rücklauf,

  digitalWrite(mot1b, LOW);  // der andere Vorlauf

  digitalWrite(mot2a, LOW);  // (Kurve)

  digitalWrite(mot2b, HIGH);

  delay(2300);


  motorStop();                // Beide Motoren aus

  

  digitalWrite(mot1a, HIGH);  // Beide Motoren Vorlauf

  digitalWrite(mot1b, LOW);   // (Geradeausfahrt)

  digitalWrite(mot2a, HIGH);  //

  digitalWrite(mot2b, LOW);   //

  delay(8000);


  motorStop();                 // Beide Motoren aus

}


void loop() {

}

 

Aus der Programmierung und der Abbildung wird ersichtlich, wie der ATtiny und der L293 verdrahtet werden müssen.

Die Spannungsquelle darf 5V nicht übersteigen. Geeignet wäre beispielsweise ein Set aus vier AA-Mignon-Akkus.


 

Auch beim Robino-I kann der ATiny im Zusammenspiel mit zwei N-FETs das Arduino-Board ersetzen.

Schaltplan:

Programmcode:

#define trigPin 2

#define echoPin 0

#define mot1 3

#define mot2 4

void setup() {

   pinMode(trigPin, OUTPUT);

   pinMode(echoPin, INPUT);

   pinMode(mot1, OUTPUT);

   pinMode(mot2, OUTPUT);

   }

void loop() {

   long duration, distance;

   digitalWrite(trigPin, LOW);

   delayMicroseconds(2);

   digitalWrite(trigPin, HIGH);

   delayMicroseconds(10);

   digitalWrite(trigPin, LOW);

   duration = pulseIn(echoPin, HIGH);

   distance = (duration/2) / 29.1;

   if (distance < 12) {

   digitalWrite(mot2, LOW);

   delay(2000);

   }

else {

   digitalWrite(mot1, HIGH);

   digitalWrite(mot2, HIGH);

   }

} 


 

Zum Programmieren des ATtiny ist folgender Aufbau nötig:

 

 

Wichtig ist neben der korrekten Verdrahtung, dass ein 10µF-Kondensator "Reset" und "GND" überbrückt.

Um den ATtiny über die Arduino-IDE ansprechen zu können, muss wie folgt vorgegangen werden: 

  1. Die ZIP-Datei „attiny-ide-1.6x“ hier downloaden, entpacken und den Ordner „attiny“ in den Arduino-Ordner „hardware“ (meist unter > Lokaler Datenträger > Programme(x86) > Arduino) kopieren.

  2. Die Arduino-IDE starten, das Programm „ArduinoISP“ aus den „Beispielen“ aufrufen und auf die UNO-CPU übertragen.

  3. Über „Werkzeuge“ und „Board“ den „ATtiny“ auswählen und anschließend konfigurieren (ATtiny85, Clock 1MHz).

  4. Gilt nur für fabrikneue ICs: Unter „Werkzeuge“ den Menüpunkt „Bootloader brennen“ ausführen.

  5. Das für den ATtiny gedachte Programm laden und über  auf den IC übertragen.


 

Damit die geringen Abmessungen des ATtiny zum Tragen kommen, empfiehlt es sich, die Bauteile platzsparend über eine Lochrasterplatte miteinander zu verlöten.

Kosten für eine solche Umrüstung: 

  • Transistor TIP120STM (2 St.)      0,56 €

  • ATtiny85                                       1,45 €

  • IC-Sockel                                      0,04 €

  • Buchsenleiste                               0,27 €

 

Rasterplatte, Drähte und Lötzinn nicht eingerechnet.