RPi-Pico RC-Oszillatoren                 


Elektronik-Labor  Projekte  Mikrocontroller  Raspberry            


Aus RPi Pico Schaltungen und Projekte Kap. 20

Das Programm Pico_RC1 realisiert einen langsamen RC-Oszillator, der als einziges externes Bauteil einen Elko mit 100 µF enthält. Die erforderlichen Widerstände sind intern und bestehen aus dem Pullup- und dem Pulldown-Widerstand des Port P26. Die Software lehnt sich an die Funktion eines Timerbausteins NE555 an und schaltet bei 1/3 und 2/3 der Betriebsspannung zwischen Laden und Entladen um. Zur Messung der Kondensatorspannung wird der AD-Wandler am Pin A0 eingesetzt.

 

//Pico_RC1

#include "pico/stdlib.h"
#include "hardware/adc.h"

void setup() {
  adc_init();
  adc_gpio_init(26);
  gpio_pull_up(26);
  adc_select_input(0);
  gpio_init(0);
  gpio_set_dir(0, true);
  while(true){
    if (adc_read() > 2730){
      gpio_pull_down(26);
      gpio_put(0, 0);
    }
    if (adc_read() < 1365){
       gpio_pull_up(26);
      
gpio_put(0, 1);
    }
  }
}

void loop() {
}

Das Programm steuert gleichzeitig den Ausgang D0 an, wo eine LED mit Vorwiderstand angeschlossen ist. Sie blinkt nun mit einer Frequenz von etwa 0,3 Hz. Die Schwingungsperiode ist proportional zur Kapazität. Deshalb kann man mit kleineren Kondensatoren höhere Frequenzen erzeugen. Mit einem Kondensator von nur 100 nF wird eine Frequenz von ca. 300 Hz erreicht. Das Oszillogramm zeigt den Spannungsverlauf am Kondensator.

Auch ohne AD-Wandler und mit nur einem Port kann man einen einfachen RC-Generator bilden. Weil jeder Port nach einem Reset als Eingang mit Hysterese arbeitet, wird keine weitere Initialisierung benötigt. Es reicht die Abfrage des Eingangs und das Umschalten zwischen Pullup und Pulldown. Man kann nun einen beliebigen Kondensator zwischen P0 und GND anschließen. Ein Kondensator mit 100 nF bringt wegen der kleineren Hysterese von ca. 0,4 V eine Frequenz von rund 0,6 kHz.

//Pico_RC2 RC-Generator P0
#include "pico/stdlib.h"

void setup() {}
void loop() {}

void setup1() {
  while (true) { 
    if (f++;gpio_pull_down(0);
    else gpio_pull_up(0);
  }
}

void loop1() {}

Das Oszillogramm zeigt die Signalspannung am Kondensator von 100 nF. Das Signal ist sehr sauber und enthält kein erkennbares Phasen-Zittern, weil die Regelschleife auf dem zweiten Kern läuft und deshalb nicht von anderen Prozessen gestört wird. Am Oszilloskop lässt sich sehr anschaulich die Temperaturabhängigkeit eines keramischen Kondensators sehen. Wenn man den Kondensator anfasst, erwärmt er sich, und die Frequenz steigt.

Statt eines Kondensators kann auch ein Piezo-Schallwandler eingesetzt werden, der dann einen Ton von rund 1 kHz abgibt. Die Piezoscheibe ist ebenfalls ein Kondensator und hat rund 20 nF. Die Eigenschaften dieses Kondensators ändern sich bei Berührung oder bei einer Reflexion des Schalls. Mit etwas Übung kann man Töne unterschiedlicher Frequenz oder sogar einfache Melodien spielen.

https://www.elektronik-labor.de/Raspberry/0322Pico143.jpg


Diese Messung entstand ganz ohne einen Kondensator, also nur mit der Kapazität des Oszilloskops und des Ports. Man sieht ein Dreiecksignal mit ca. 300 kHz. Ein leichtes Zittern entsteht durch die zeitlich endlichen Abtastpunkte irgendwo im MHz-Bereich. Mit größeren Kapazitäten ist das Signal entsprechend präziser.



Elektronik-Labor  Projekte  Mikrocontroller  Raspberry