Kategorie-Archiv: Hardware

Test eines einfachen Ultraschall Sensors für 80 Cent

In diesem Video teste ich einen einfachen Ultraschallsensor, der bei Aliexpress gerade mal 80 Cent kostet. Die Ansteuerung ist sehr einfach und schnell (wenn man keine unnötigen Fehler macht) und die Ergebnisse sind erstaunlich gut.

#include <Arduino.h>

const int TRIG_PIN = 12;
const int ECHO_PIN = 13;
const int ITEM_COUNT = 50;

long simpleMultiMeasure();

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN,OUTPUT);
  digitalWrite(TRIG_PIN, LOW);

  pinMode(ECHO_PIN,INPUT);
}

void loop() {
  long duration = simpleMultiMeasure();
  long distanceMm;
 
  // convert the time into a distance
  distanceMm = duration * 100l / 582l;
 
  if (distanceMm <= 0)
  {
    Serial.println("Out of range");
  }
  else 
  {
    Serial.print(duration);
    Serial.print(" ticks, ");
    Serial.print(distanceMm);
    Serial.print(" mm");
    Serial.println();
  }
  
  delay(500);
}

long simpleMultiMeasure() {
  long sum = 0;

  for (int i = 0; i < ITEM_COUNT; i++) {
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(20);
    digitalWrite(TRIG_PIN, LOW);
    sum += pulseIn(ECHO_PIN,HIGH);
    delayMicroseconds(20000);
  }

  return sum / ITEM_COUNT;
}


Ein computergesteuerter Messplatz mit einem ESP 32, Teil 2

In diesem zweiten Teil wird die Software zu dem Projekt beschrieben. Sie besteht aus drei Teilen.

  1. Ein Platform IO Projekt mit einem C++ Programm welches auf dem ESP32 läuft.
  2. Ein Netbeans Projekt in Java welches auf dem PC ein Framework zur Verwendung des Messplatzes zur Verfügung stellt. Weiterhin enthält es einen komfortablen Weg zur Erstellung von CSV (comma separated values) Dateien.
  3. Ein Netbeans Projekt welches die Verwendung der DataIO jar Datei zeigt.

Ein computergesteuerter Messplatz mit einem ESP 32, Teil 1

Wenn man umfangreiche Messreihen aufnehmen will, ist es kaum manuell durchführbar. Ich verwende einen ESP 32 und verschiedene I2C Module für diese Aufgabe. Der Messplatz verfügt über 4 Analogeingänge mit 15 Bit Auflösung, 4 Analogausgänge mit 12 Bit Auflösung und 32 Digital Ein- und Ausgänge.


Der erste Teil beschreibt die Hardware. In einem kommenden zweiten Teil wird die Software dazu gezeigt.

Vintage Computer der 70er und 80er Jahre

In diesem Video zeige ich die Computer mit denen ich in den 70er und 80er Jahren gearbeitet habe. Da ich zu alt für ZX80 und C64 bin, tauchen hier weniger bekannte Namen wie Eurocom 1 und Nascom 2 auf. Es endet mit dem Atari 520ST, den ich bis in die späten 80er verwendet habe.

Eine 1 Bit ALU aus Relais – Teil 1 bis 3

Ich wollte schon längere Zeit mal eine Schaltung aus Relais aufbauen. Im Internet gibt es viele Beispiele für unterschiedlich komplexe Projekte bis hin zu einer kompletten CPU.

So weit wollte ich nicht gehen, ich bin mit der ALU (der zentralen Recheneinheit) zufrieden. Und die ALU ist auch nur 1 Bit breit. Aber sie kann Addieren (mit Carry) und die logischen Operationen AND, OR und XOR ausführen. Ein externer Sequencer, der die ALU verwendet könnte mit zusätzlicher Logig weiterhin eine Subtraktion, Negation oder Inversbildung durchführen.

 

Aus den Funktionen der 1 Bit ALU lassen sich dann komplexere Funktionen aufbauen: 16 AND, OR, XOR und ADD sowie zusätzlich SUB (aus XOR und ADD) sowie MUL (aus ADD).

Die Steuereinheit wird nicht aus Relais aufgebaut – hier wird ein Arduino Nano eingesetzt.

Und zum Schluss noch ein Z8000 Simulator welcher die ALU für seine Rechenoperationen verwendet.

Touchsensor TTP223 Test

Ich wollte mal ausprobieren, ob sich die Touchsensoren für den Aufbau von Stellpulten eignen. Die Verwendung ist einfach und sie funktionieren gut, es gibt aber auch ein paar Schattenseiten.

#define TOUCH_INPUT 2
#define SIGNAL 3
#define SETTLE_TIME 100

void setup() {
pinMode( TOUCH_INPUT, INPUT );
pinMode( SIGNAL, OUTPUT );
}

void loop() {
int isTriggered = digitalRead( TOUCH_INPUT );
digitalWrite( SIGNAL, switchState( isTriggered ) );
}

boolean actState = false;
boolean lastActive = false;
boolean switchState( boolean signal ) {
boolean deb = debounce( signal );
if ( deb ) {
if ( !lastActive ) {
lastActive = true;
actState = !actState;
}
} else {
lastActive = false;
}

return actState;
}

int trig = 0;
boolean debounce( boolean signal ) {
if ( signal ) {
if (trig == 0) {
trig = millis();
} else {
int now = millis();
if ( now – trig > SETTLE_TIME ) {
return true;
}
}
} else {
trig = 0;
}

return false;
}

Festspannungsnetzteil aus einem PC Netzteil

Für viele Bastelprojekte benötigt man mehrere Spannungen, z.B. 3,3 Volt oder 5 Volt für den Microcontroller und 12 Volt für den Analogteil. Ich habe zwar ein einstellbares Netzteil, das ist in diesem Rahmen aber nicht immer notwendig. Zudem ist es recht schwer und nicht besonders mobil.

Deshalb habe ich mir aus einem alten PC ein Netzteil besorgt und dieses in ein kleines Gehäuse eingebaut. Nun habe ich einfachen Zugriff auf 3,3 Volt, 5 Volt und 12 Volt.

Noch ein Hinweis für Einsteiger: ein PC Netzteil hat üblicherweise eine sehr hohe Leistung. Bei einem Kurzschluss schaltet es sich zwar automatisch ab. Wenn der Strom aber unterhalb der erlaubten Grenze bleibt, kann es passieren, dass dauerhaft sehr viel Leistung in der defekten Schaltung frei wird. Im schlimmsten Fall kann das zu einem Brand führen.

20 Jahre Computermuseum der Universität Stuttgart

Zum 20. Jahrestag des Computermuseums der Universität Stuttgart hat das Informatik Forum Stuttgart (infos) zu einem Festkolloquium eingeladen. Der Leiter des Computermuseums, Klemens Krause, hat in einer Live Präsentation einen 50er Jahre Röhrencomputer LGP-30 vorgestellt. Er besteht aus 113 Röhren und 700 Germanium-Dioden und besitzt einen Trommelspeicher von 4096 Worten à 31 Bit. Der Ton der Aufnahme ist leider nicht besonders gut, da ich nur ein Smartphone zur Verfügung hatte.