Archiv der Kategorie: Arduino

Ein Frequenzzähler für niedrige Frequenzen mit dem Arduino Uno und der Periodendauer Messung

Über die Messung der Pulslängen HIGH und LOW kann aus einem Rechtecksignal, oder einem ähnlichen Signal, die Frequenz bestimmt werden.
Der Arduino bietet hierzu die Funktion pulseIn(pin, signal) an. Die funktioniert an jedem Digital Pin und misst, wenn man die HIGH und die LOW Zeit addiert die Periodendauer T in Mikrosekunden. Weiterlesen

Unterschiedliche Signalformen mit dem R2R DA-Wandler ausgeben. Dreieck, Impuls, Sägezahn direkt mit dem Arduino Uno.

Hier werden Sägezahn Kurven mit steigender und mit fallender Flanke erzeugt, eine Dreieckskurve und eine Impulsausgabe mit ggf. einer langen Auszeit. Es werden der Arduino Uno und der 4-bit DA-Wandler verwendet.

Wie im vorherigen Artikel beschrieben wird das byte Feld mit Werten beschrieben.

Wenn nun eine Sägezahnspannung mit kontinuierlich steigender Flanke ausgegeben werden soll, kann folgendes Feld mit 16 Stützwerten verwendet werden.

Weiterlesen

Ein Sinus Signal mit dem R2R DA-Wandler am Arduino Uno ausgeben.

Ein Sinus Signal wird mit dem DA Wandler erzeugt und ausgegeben.

Dazu werden als erstes die Sinus Stützwerte berechnet. Für schnelle Frequenzen müssen wir wenig Stützwerte verwenden. Wenn die Frequenz niedriger wird, können mehr Stützwerte genommen werden.

Bei dem 4-Bit DA-Wandler sind 16 Ausgangsspannungen einstellbar, von 0 bis 15 Binär.
Das entspricht einer Spannung von 0 bis 4,7V. Weiterlesen

Ein Rechtecksignal mit hoher Frequenz direkt aus dem Arduino Uno ausgeben

Mit der schon vorher besprochenen Funktion lassen sich hohe Rechteck Frequenzen erreichen.

while(k==10) {
  PORTB=B00111100; // 15
  asm("nop\n nop\n");
  PORTB=B00000000; // 0
}

Weiterlesen

Ein Rechteck Signal mit einstellbarer Frequenz ausgeben

Nachdem ich nun die Obergrenze des Rechtecksignals getestet habe, will ich mir jetzt mal die unteren Frequenzen ansehen. Da bieten sich die delay(ms) und delayMicroseconds(us) Funktionen an.

Ein Prozessortakt dauert bei 16 MHz Takt 62,5 Nano Sekunden. Meine while schleife mit den nops und Portausgaben benötigt 6 Takte. delayMicroseconds() lässt sich in 1 Mikrosekunden Stufen einstellen bis hin zu 16383, was hier einer Frequenz von ca. 31 Hz entspricht. Weiterlesen

Ein Rechteck Signal ausgeben mit dem R-2R DA-Wandler

Mit dem DA Wandler soll ein Rechtecksignal auf den Pins 10-13 ausgegeben werden.

Die schnelle und direkte Ausgabe erfolgt indem die Bits des PORT B direkt geschrieben werden. Hier werden die Bits 2 (MSB) bis 5 (LSB) verwendet. Weiterlesen

Ein R-2R 4-Bit Digital-Analog Ausgang wird aufgebaut mit dem Arduino Uno.

Im Arduino Uno ist kein DA Wandler enthalten. Der lässt sich mit einem R-2R Netzwerk ergänzen. Genug digitale Ausgänge sind vorhanden. Hier wird ein 4-Bit DAC aufgebaut. Weiterlesen

Frequenzzähler mit LCD Display am Arduino Uno.

Zum Frequenzzähler wird ein LCD Display 16 x 2  hinzugefügt basierend auf den beiden Projekten:
– Frequenzzähler Teil 1 & Teil 2
– LCD Display Teil 1 & Teil 2 Weiterlesen

Eine Integer Zahl in das Arduino EEPROM schreiben und wieder lesen

Eine Integer Zahl soll im Arduino EEPROM abgelegt und wieder ausgelesen werden.

Der EEPROM.write Befehl schreibt jeweils ein Byte an die Adresse.
Integer sind aber 2 Byte, sodass die Zahl zerlegt wird und beide Teile einzeln an zwei aufeinander folgende Adressen geschrieben werden. Weiterlesen