2023
HOME

Messen, Steuern und Regeln mit ATtiny und Compact
ATtiny88: PC-Interface
Ergänzung zum Buch Messen, Steuern und Regeln mit Arduino und Compact

Display mit 48x30 ZeichenAnfang 2023 erhält man ein ATtiny88-Board für unter 2 Euro. Mit seinen 30 Pins stehen im Gegensatz zu einem ATtiny85 genügend Anschlüsse zur Verfügung. Ein Compact-kompatibles PC-Interface hat zwei Analogeingänge, acht digitale Ausgänge, acht digitale Eingänge und eine Spannungs-Versorgung.

Kommuniziert wird bei diesem Board seriell leider nicht über USB. In der Summe werden 2 + 2 x 8 + 2 + 2 + 2 = 24 Anschlüsse benötigt, wenn zusätzlich auch I2C als Erweiterung mit z. B. einem DAC möglich sein soll.


  • 2 Pins Analogeingänge
  • 2 x 8 Pins digitale Ein- und Ausgänge
  • 2 Pins serielle Kommunikation
  • 2 Pins I2C
  • 2 Pins Spannungsversorgung oder über USB

Hardware Phantom-Interface und ATtiny88-Board

Die Mess-Software Compact Red Needle kann analoge und digitale Signale verarbeiten. Sie basiert auf einem Interface mit zwei analogen Eingängen, acht digitalen Ausgängen und acht digitalen Eingängen. Ein analoger Ausgang wird ebenfalls unterstützt.

Mit einem zusätzlichen USB-Seriell-Adapter entststeht ein PC-Interface. Optional kann ein I2C-DAC den analogen Ausgang bedienen.


Abbildungen von USB-TTL-Serial-Adaptern mit den vier Anschlüssen Vcc/GND und TX/RX findet man im Netzt mit dieser Suche. Auch der untere Teil eines Witty-Cloud ESP8266 oder ein alter Arduino ohne Mikrocontroller erfüllt diesen Zweck.


Software Arduino IDE

Das sogenannte MH-Tiny88 Board wird - wie ein Digispark mit ATtiny85 - über VUSB programmiert. Dadurch ist kein Arduino als ISP-Programmer erforderlich. Ein spezieller Bootloader wohnt im ATtiny88 und nennt sich Micronucleus. Das oben abgebildete Board enthält diesen Bootloader bereits und ist somit sofort einsatzbereit. Beim Einschalten über USB meldet sich der Bootloader an der roten LED mit einem Triple-Blink. Ein Windows-PC sucht dann einen Treiber (Digistump.Drivers.zip), der entsprechend installiert werden muss (DPinst64.exe). Hinweise findet man unter Digistump oder anderen Seiten in Netz.

Die Arduino-IDE-Einrichtung erfolgt in gleicher Weise wie beim ATtiny hier unter Software beschrieben. Alternativ entspricht dies der Vorgehensweise für die Verwendung eines Digispark unter der IDE. Boardmanager-Link in den Voreinstellungen:

http://digistump.com/package_digistump_index.json

Im Boardverwalter kommt der /ATTinyCore zur Anwendung. Die Version 1.5.2 führt hier dazu, dass fast alle Arduino-Sketche problemlos übernommen werden können.

Nach der Einrichtung kann das Werkzeuge-Menü wie folgt aussehen:

Nun kann der Blink-Sketch als Test dem Board hochgeladen werden.

  • Datei/Beispiele/01 Basics/Blink laden
  • Sketch hochladen

Falls der Bootloader Bereitschaft durch Tripple-Blink signalisiert erfolgt das Hochladen bei eingestecktem Board über USB wie beim Arduino ohne Probleme. Falls bereits ein Sketch läuft oder kein Tripple-Blink vorhanden ist, muss einmal der kleine Reset-Taster auf dem Board betätigt werden, wodurch der Bootloader aktiviert wird. Danach lädt der Sketch hoch und das gewünschte Ergebnis erscheint.

Am PC bleibt das Board nach einem Reset im Bootloader-Blink-Modus. Ist nur eine USB-Spannungsversorgung angeschlossen startet das Board mit achtmaligem Tripple-Blink und startet danach den Anwender-Sketch - hier also das eigene Blink-Programm.

Um das ATtiny88-Interface zu verwenden, muss ein entsprechender Sketch einmalig übertragen werden, damit sich diese mit der Hardware verbinden kann. Die Programmierung erfolgt dabei in der bekannten IDE des Arduino mit Hilfe der obigen Einstellungen.


																	

												

Anschlüsse und Pin-Festlegung
Ein Blick auf die Anschlussbelegungen der 30 Pins des Boards, die dem ATtinyCore zugrunde liegen führt unter Berücksichtigung der dortigen Festlegungen zu einer möglichen Anschlussbelegung für das PC-Interface.
  • Digitale Eingänge 0 bis 7 - GELB
  • Digitale Ausgänge 0 bis 7 - ROT
  • Analoge Eingänge A und B - GRAU
  • Serielle Leitungen RX/TX - GRAU

In Anlehnung an die Arduino-Variante des Sketches reagiert die eingebaute LED auf Digitalausgang D3 und der PWM-Ausgang auf Digitalausgang D0. Die zwei USB-Anschlüsse werden nicht verwendet und die beiden I2C-Leitungen versorgen einen DAC zur Ausgabe analoger Spannungen. Die RX/TX-Pins 6/7 gelten für den Serial.begin-Aufruf ohne Zusatzparameter in Core für den Tiny88.

Mit diesen Festlegungen gestaltet sich der Sketch für das ATtin88-Board wie folgt und kann wie der Blink-Sketch von weiter oben über USB zu Board hochgeladen werden.

#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;

#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
#define PWM 64
#define AOUT 64
#define PWMPIN 10

// T88 Serial RX=7 TX=6 LED=0 SCL=24 SDA=23

//DIGITAL OUT PINS 0 - 7 CLAB
//byte Douts[] = {10,11,12, 0, 16,17,18,19};//Arduino Uno
  byte Douts[] = {10,11,12, 0, 13,14, 8, 9};//t88

//DIGITAL IN  PINS 0 - 7 CLAB
//byte Dins[]  = { 2, 3, 4, 5,  6, 7, 8, 9}; //Arduino Uno
  byte Dins[]  = {18,17,16,15, 25, 3, 4, 5}; //t88

//ANALOG IN PINS A - B CLAB
byte Ains[]  = {1,2}; 
//BitValues
byte Bits[]  = {1,2,4,8,16,32,64,128};


void setup()
{ Serial.begin(9600); //Special CLAB
  for(int i= 0;i<8;i++)pinMode(Douts[i],OUTPUT);
  for(int i= 0;i<2;i++)pinMode(Ains [i],INPUT);
  for(int i= 0;i<8;i++)
  {pinMode(Dins [i],INPUT_PULLUP);// OPEN IS HIGH
   //digitalWrite(Dins[i],HIGH); //WITH PULLUP Ardiuno UNO
  }
  dac.begin(96);
  for(int i=0;i<4;i++) //Kennung Version 4

  {digitalWrite(0,1);delay(100);digitalWrite(0,0);delay(400);
  }
  Serial.println("\n\n\nCLAB V4 t88");
}

void loop()
{ int i, val, inbyte; byte b;
  val = Serial.available(); //Was da?
  if (val>0)
  {inbyte=Serial.read(); //abholen
   delay(5);
   switch(inbyte)
  { case 13  : //CLAB ID nur ab Compact 1.75!
               Serial.write(3);delay(2);break; //ID
    case AOUT: b=Serial.read(); //Ausgabebyte holen
               dac.setVoltage(b<<4, false);
               analogWrite(PWMPIN,b);
               break;
           
    case DIN : for(i=0,b=0;i<8;i++) //PINS to BYTE
                b+= (digitalRead(Dins[i])==HIGH?Bits[i]:0);
               Serial.write(b);break; 
    case AIN1: 
    case 48:   Serial.write(analogRead(Ains[0])>>2);break;
    case AIN2: 
    case 49:   Serial.write(analogRead(Ains[1])>>2);break;
    case DOUT: b=Serial.read(); //Ausgabebyte holen
               for(i=0;i<8;i++)
                digitalWrite(Douts[i],b&Bits[i]?HIGH:LOW);
               break;
    default:   break;
  }
 }
 delay(10);
}

Der Digital-Analog-Converter MCP4725 liefert analoge Spannungen an seinem Ausgang und dienen im Buch zur Kennlinienaufnahme. Ohne DAC können die unterstrichenen Zeilen im Listing gelöscht werden. Der Sketch liefert dann nur quasi-analoge Ausgaben an Pin 10 (PWM).

Wenn die Leitungen RX/TX von Pin 6 und 7 der Platine mit dem eingesteckten USB-Adapter verbunden sind, kann sich Compact Red Needle seriell verbinden und reagieren.

Die Ausführen in Messen, Steuern und Regeln mit Arduino und Compact funktionieren nun ebenfalls mit dieser preiswerten Alternative. Hier ein Beispiel aus Kapitel 4.


Analoge Messungen ATtiny88 und Compact
Schaltet man zwei AA-Batterien von 1,5 Volt hintereinander bzw. in Reihe, so erhält man eine Gesamtspannung von 3 Volt. Eine Reihenschaltung von zwei gleichen Widerständen teilt die an der Reihenschaltung angelegte Spannung ebenfalls in zwei gleiche Teile auf. Der 5-Volt-Anschluss speist eine Reihenschaltung aus z. B. zwei 10.000 Ohm (braun-schwarz-orange) Widerständen gegen Masse bzw. GND. Die beiden Analog-Eingänge messen jeweils die angelegte Spannung gegen Masse bzw. GND. Es kann also nur die Gesamt- und die untere Teilspannung direkt messtechnisch erfasst werden. (Kapitel 4.2 aus dem Buch)

Die obere Teilspannung erhält man über die auftretende Differenz hier nur durch Rechnung. Ein batteriebetriebenes Multimeter kann auch die obere Teilspannung messen, wenn der negative Mess-Anschluss nicht mit der Masse der Schaltung verbunden ist. Weiter unten wird gezeigt, dass sich in einer Reihenschaltung alle Teilspannungen addieren und diese Summe der Gesamtspannung entspricht. Spannungspfeile zeigen in Richtung kleinerer Spannungen, wenn ein positiver Wert angegeben ist. Ist ein einstellbarer Widerstand, ein sogenanntes Potentiometer verfügbar, so kann man die Spannungsteilung an Eingang B kontinuierlich durch Drehen oder Schieben am Schleifer verändern.

Mit den Programmiermöglichkeiten von Compact Red Needle ist auch ein Blinken der LED am Digitalausgang auf völlig andere Art möglich.

Obige Zeilen entsprechen den Ausführungen in Kapitel 4.2 in dem die beiden Analog-Eingänge dazu verwendet werden einige Messtechnische Grundlagen zu vermitteln. Das 2022/23 erschienene Messen, Steuern und Regeln mit Arduino und Compact zeigt was mit der freien Software Compact Red Needle noch alles möglich ist.


ATtiny85 Assembler 8-Byte-Blink
ATtiny85 als Compact-Interface
ATtiny und ISP-Programmer
Mehr Software

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt