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.
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.